qymljy 2 лет назад
Родитель
Сommit
bd4fabd377

+ 1 - 1
src/HDrpManagement/projectChange/modules/modules/clue/index.vue

@@ -118,7 +118,7 @@ export default {
       this.listData()
     },
     goDetail(row){
-      if (row.isprivate ===1){
+      if (row.allocationstatus ==='已分配'){
         let route = this.$route
         if (route.path !== '/orderclue_detail') {
           this.oldRoute = {path:route.path,query:route.query}

+ 13 - 4
src/HManagement/clueManage/clue_private/index.vue

@@ -16,10 +16,12 @@
       :specialKey="[{key:'leader',value:'name'}]"
       @listCreate="list"
       @listData="listdata"
+      @checkboxCallBack="checkboxCallBack"
     >
       <div slot="titleRight" >
         <!-- <distribution class="inline-16" v-if="tool.checkAuth($route.name,'distributionAgent')" @onSuccess="$refs.basicLayout.listData()"></distribution> -->
-        <distributionSaler v-if="tool.checkAuth($route.name,'distributionSaler')" @onSuccess="$refs.basicLayout.listData()"></distributionSaler>
+        <distributionSaler v-if="tool.checkAuth($route.name,'distributionSaler')" @onSuccess="$refs.basicLayout.listData($refs.basicLayout.param.content.pageNumber = 1)" class="inline-16"></distributionSaler>
+        <changeSite v-if="tool.checkAuth($route.name,'changeSite')" class="inline-16" :selectList="selectList" @onSuccess="$refs.basicLayout.listData($refs.basicLayout.param.content.pageNumber = 1)"></changeSite>
       </div>
       <div slot="custom" style="display:flex">
         <!-- <div class="label_center" style="display:flex;margin-right:10px">
@@ -99,10 +101,12 @@
 <script>
 import distribution from '@/HManagement/clueManage/clue_public/modules/distribution'
 import distributionSaler from '@/HManagement/clueManage/clue_public/modules/distribution_saler.vue'
+import changeSite from '@/HManagement/clueManage/clue_private/modules/changeSite.vue'
 export default {
   components:{
     distribution,
-    distributionSaler
+    distributionSaler,
+    changeSite
   },
   data () {
     return {
@@ -117,7 +121,8 @@ export default {
       status:'',
       allocationstatus:'',
       arealist:[],
-      tradefields:[]
+      tradefields:[],
+      selectList:[]
     }
   },
   provide() {
@@ -142,6 +147,10 @@ export default {
       this.$refs.basicLayout.param.content.pageNumber = 1
       this.$refs.basicLayout.listData()
     },
+    checkboxCallBack(row){
+      console.log(row,'已选数据')
+      this.selectList = row
+    },
     async query_arealist() {
       const res = await this.$api.requested({
         "classname": "system.tools",
@@ -152,7 +161,7 @@ export default {
 
       this.arealist = this.tool.createMenu(res.data)
     },
-        listdata(data) {
+    listdata(data) {
       console.log(data);
 
     }

+ 83 - 0
src/HManagement/clueManage/clue_private/modules/changeSite.vue

@@ -0,0 +1,83 @@
+<template>
+  <div>
+    <el-button :type="selectList.length === 0?'':'primary'" size="small" @click="visible = true" :disabled="selectList.length === 0">转站点</el-button>
+    <el-dialog  :visible.sync="visible" append-to-body width="600px">
+      <span slot="title">
+        <span style="font-weight: bold">转站点</span>
+        &nbsp;
+        <span style="color: #b0b0b0;font-size: 14px">线索流转至新站点公海线索池</span>
+      </span>
+      <div  class="drawer__panel2">
+        <el-form :model="form">
+          <el-form-item label="选择站点" label-width="120" :rules="{required:true,message:'请选择站点',trigger:'change'}">
+            <el-select v-model="form.siteName" placeholder="请选择站点" style="width: 80%">
+              <el-option label="班尼戈海盐" value="HY"></el-option>
+              <el-option label="班尼戈宁波" value="NB"></el-option>
+              <el-option label="班尼戈台州" value="TZ"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="drawer__panel3">
+        <div slot="footer" class="dialog-footer1">
+          <el-button @click="visible = false">取 消</el-button>
+          <el-button type="primary" @click="onSite">确 定</el-button>
+        </div>
+      </div>
+
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "changeSite",
+  props:['selectList'],
+  data(){
+    return {
+      visible:false,
+      form:{
+        siteName:JSON.parse(sessionStorage.getItem('active_account')).siteid
+      }
+    }
+  },
+  methods:{
+    async onSite(){
+      let sat_orderclueids = []
+      sat_orderclueids = this.selectList.map(item=>item.sat_orderclueid)
+      const res = await this.$api.requested({
+        "id": 20230809144804,
+        "content": {
+          "toSiteid": this.form.siteName,
+          "sat_orderclueid": sat_orderclueids
+        }
+      })
+      this.tool.showMessage(res,()=>{
+        console.log(res)
+        this.visible = false
+        this.$emit('onSuccess')
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+  .drawer__panel2{
+    border-top:1px solid #eeeeee;
+    padding:40px 0 10px 0;
+    margin-bottom:10px
+  }
+  .drawer__panel3{
+    border-top:1px solid #eeeeee;
+    padding:10px 0 0 0;
+    margin-bottom:0px
+  }
+  /deep/.el-dialog__header {
+    padding: 20px 10px 0 20px;
+  }
+  .dialog-footer1{
+     margin-top: 5px;
+    text-align: right;
+  }
+</style>

+ 81 - 0
src/HManagement/clueManage/clue_private/modules/changeToSite.vue

@@ -0,0 +1,81 @@
+<template>
+  <div>
+    <el-button type="primary" size="mini" @click="visible = true" >转站点</el-button>
+    <el-dialog  :visible.sync="visible" append-to-body width="600px">
+      <span slot="title">
+        <span style="font-weight: bold">转站点</span>
+        &nbsp;
+        <span style="color: #b0b0b0;font-size: 14px">线索流转至新站点公海线索池</span>
+      </span>
+      <div  class="drawer__panel2">
+        <el-form :model="form">
+          <el-form-item label="选择站点" label-width="120" :rules="{required:true,message:'请选择站点',trigger:'change'}">
+            <el-select v-model="form.siteName" placeholder="请选择站点" style="width: 80%">
+              <el-option label="班尼戈海盐" value="HY"></el-option>
+              <el-option label="班尼戈宁波" value="NB"></el-option>
+              <el-option label="班尼戈台州" value="TZ"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="drawer__panel3">
+        <div slot="footer" class="dialog-footer1">
+          <el-button @click="visible = false">取 消</el-button>
+          <el-button type="primary" @click="onSite">确 定</el-button>
+        </div>
+      </div>
+
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "changeSite",
+  props:[],
+  data(){
+    return {
+      visible:false,
+      form:{
+        siteName:JSON.parse(sessionStorage.getItem('active_account')).siteid
+      }
+    }
+  },
+  methods:{
+    async onSite(){
+      const res = await this.$api.requested({
+        "id": 20230809144804,
+        "content": {
+          "toSiteid": this.form.siteName,
+          "sat_orderclueid": [this.$route.query.id]
+        }
+      })
+      this.tool.showMessage(res,()=>{
+        console.log(res)
+        this.visible = false
+        this.$emit('onSuccess')
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+  .drawer__panel2{
+    border-top:1px solid #eeeeee;
+    padding:40px 0 10px 0;
+    margin-bottom:10px
+  }
+  .drawer__panel3{
+    border-top:1px solid #eeeeee;
+    padding:10px 0 0 0;
+    margin-bottom:0px
+  }
+  /deep/.el-dialog__header {
+    padding: 20px 10px 0 20px;
+  }
+  .dialog-footer1{
+     margin-top: 5px;
+    text-align: right;
+  }
+</style>

+ 8 - 2
src/HManagement/clueManage/clue_private/modules/detail.vue

@@ -9,7 +9,7 @@
         delApiId="20221101100502"
         idname="sat_orderclueid"
         :justsaler="1"
-        :tabs="['跟进记录','详细信息']"
+        :tabs="['跟进记录','详细信息','来源线索']"
         :statusCheck="[{key:'allocationstatus',value:'已分配'}]"
         @pageChange="pageChange"
         @onEditSuccess="queryMainData($route.query.id)">
@@ -19,6 +19,7 @@
         <edit class="inline-16" :data="mainData" @onSuccess="queryMainData" v-if="tool.checkAuth($route.name,'update') && mainData.allocationstatus == '待分配'"/>
         <distobutionOne v-if="tool.checkAuth($route.name,'oneDistribution') && mainData.allocationstatus == '待分配'" :status="mainData.status"  @onSuccess="$store.dispatch('changeDetailDrawer',false),$router.back()" />
         <recall class="inline-16" v-if="mainData.allocationstatus != '待分配' && mainData.status === '待跟进' || mainData.status === '跟进中' && mainData.isTeam !== '团队' && tool.checkAuth($route.name,'recall')" :data="mainData" @onSuccess="queryMainData"></recall>
+        <changeSite v-if="tool.checkAuth($route.name,'changeSite')" class="inline-16"></changeSite>
       </div>
       <div slot="slot1" class="container normal-panel">
         <BaseInfo :detailInfo="detailInfo"/>
@@ -74,6 +75,9 @@
           </el-pagination>
         </div>
       </div>
+      <div slot="slot2" class="container normal-panel">
+        <sourceClues></sourceClues>
+      </div>
     </basicDetails>
   </div>
 </template>
@@ -84,6 +88,8 @@ import recall from './recall.vue'
 import edit from './edit'
 import distobutionOne from './distobutionOne'
 import FileItem from '@/SManagement/orderclue/components/file/index2'
+import sourceClues from '@/HManagement/clueManage/clue_public/modules/sourceClues'
+import changeSite from '@/HManagement/clueManage/clue_private/modules/changeToSite.vue'
 export default {
   name: "detail",
   data() {
@@ -125,7 +131,7 @@ export default {
     }
   },
   components:{
-    BaseInfo,recall,edit,distobutionOne,FileItem
+    BaseInfo,recall,edit,distobutionOne,FileItem,sourceClues,changeSite
   },
   methods:{
     async followRecord () {

+ 11 - 2
src/HManagement/clueManage/clue_public/index.vue

@@ -13,6 +13,7 @@
       :options="options"
       :detailPath="{path:'/clueDetail'}"
       @listCreate="list"
+      @checkboxCallBack="checkboxCallBack"
     >
     <div slot="custom" style="display:flex">
       <div class="label_center">
@@ -32,7 +33,8 @@
     </div>
       <div slot="titleRight" >
         <!-- <distribution class="inline-16" v-if="tool.checkAuth($route.name,'distribution')" @onSuccess="$refs.basicLayout.listData()"></distribution> -->
-        <distributionSaler v-if="tool.checkAuth($route.name,'distributionSaler')" @onSuccess="$refs.basicLayout.listData()"></distributionSaler>
+        <distributionSaler v-if="tool.checkAuth($route.name,'distributionSaler')" @onSuccess="$refs.basicLayout.listData()" class="inline-16"></distributionSaler>
+        <changeSite v-if="tool.checkAuth($route.name,'changeSite')" class="inline-16" :selectList="selectList" @onSuccess="$refs.basicLayout.listData($refs.basicLayout.param.content.pageNumber = 1)"></changeSite>
       </div>
       <template v-slot:tbList="scope">
         <div v-if="scope.data.column.columnname == 'status'">
@@ -69,10 +71,12 @@ import {mapGetters} from 'vuex'
 
 import distribution from './modules/distribution.vue'
 import distributionSaler from './modules/distribution_saler.vue'
+import changeSite from '@/HManagement/clueManage/clue_private/modules/changeSite.vue'
 export default {
   components:{
     distribution,
     distributionSaler,
+    changeSite
   },
   ...mapGetters({
     sys_options:'sys_options'
@@ -87,7 +91,8 @@ export default {
       status:'',
       arealist:[],
       tradefield:'',
-      tradefields:[]
+      tradefields:[],
+      selectList:[]
     }
   },
   provide() {
@@ -122,6 +127,10 @@ export default {
       })
       this.arealist = this.tool.createMenu(res.data)
     },
+    checkboxCallBack(row){
+      console.log(row,'已选数据')
+      this.selectList = row
+    },
 
   }
 }

+ 14 - 3
src/HManagement/clueManage/clue_public/modules/detail.vue

@@ -11,14 +11,15 @@
         turnPageId="20221101094402"
         idname="sat_orderclueid"
         tags=""
-        :tabs="['跟进记录','详细信息']"
+        :tabs="['跟进记录','详细信息','来源线索']"
         @pageChange="pageChange"
         delApiId="20221101100502"
         @onEditSuccess="queryMainData($route.query.id)">
       <div slot="tags">
       </div>
       <div slot="customOperation">
-        <distobutionOne v-if="tool.checkAuth($route.name,'oneDistribution')" :status="mainData.status" @onSuccess="$store.dispatch('changeDetailDrawer',false),$router.back()" />
+        <distobutionOne v-if="tool.checkAuth($route.name,'oneDistribution')" :status="mainData.status" @onSuccess="$store.dispatch('changeDetailDrawer',false),$router.back()" class="inline-16" />
+        <changeSite v-if="tool.checkAuth($route.name,'changeSite')"  class="inline-16"></changeSite>
         <!-- <recall v-if="tool.checkAuth($route.name,'recall')" :data="mainData" @onSuccess="queryMainData"></recall> -->
       </div>
       <div slot="slot1" class="container normal-panel">
@@ -75,6 +76,9 @@
           </el-pagination>
         </div>
       </div>
+      <div slot="slot2" class="container normal-panel">
+        <sourceClues></sourceClues>
+      </div>
     </basicDetails>
   </div>
 </template>
@@ -84,6 +88,8 @@ import FileItem from '@/SManagement/orderclue/components/file/index2'
 import BaseInfo from '@/HDrpManagement/projectChange/modules/modules/baseInfo/baseInfo'
 import recall from './recall.vue'
 import distobutionOne from './distobutionOne'
+import sourceClues from '@/HManagement/clueManage/clue_public/modules/sourceClues'
+import changeSite from '@/HManagement/clueManage/clue_private/modules/changeToSite.vue'
 export default {
   name: "detail",
   data() {
@@ -127,7 +133,9 @@ export default {
   components:{
     BaseInfo,recall,
     FileItem,
-    distobutionOne
+    distobutionOne,
+    sourceClues,
+    changeSite
   },
   methods:{
     handleSizeChange(val) {
@@ -169,6 +177,9 @@ export default {
         }
       })
       this.mainData = res.data
+      console.log(this.$route.query.id,'111')
+      this.selectList[0] = this.$route.query.id
+      console.log(this.selectList[0])
       console.log(this.mainData);
 
       this.changeDataStructure()

+ 90 - 0
src/HManagement/clueManage/clue_public/modules/sourceClues.vue

@@ -0,0 +1,90 @@
+<template>
+  <div>
+    <tableLayout :layout="tablecols" :data="list" :opwidth="200" :custom="true"  >
+      <template v-slot:customcol="scope">
+        <div v-if="scope.column.columnname == 'status'">
+          <span style="color:#999999" v-if="scope.column.data[[scope.column.columnname]] == '已过期'">{{scope.column.data[[scope.column.columnname]]}}</span>
+          <span style="color:#52c41a" v-else-if="scope.column.data[[scope.column.columnname]] == '跟进中'">{{scope.column.data[[scope.column.columnname]]}}</span>
+          <span style="color:#3874f6" v-else-if="scope.column.data[[scope.column.columnname]] == '待跟进'">{{scope.column.data[[scope.column.columnname]]}}</span>
+          <span style="color:#333333" v-else-if="scope.column.data[[scope.column.columnname]] == '已无效'">{{scope.column.data[[scope.column.columnname]]}}</span>
+          <span style="color:#fa8c16" v-else-if="scope.column.data[[scope.column.columnname]] == '已转化'">{{scope.column.data[[scope.column.columnname]]}}</span>
+          <span v-else>{{scope.column.data[[scope.column.columnname]]}}</span>
+        </div>
+        <div v-else-if="scope.column.columnname == 'scale'">
+          <p>{{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname] + scope.column.data.unitname:'--'}}</p>
+        </div>
+        <div v-else-if="scope.column.columnname == 'leader'">
+          <span>
+            {{scope.column.data.allocationstatus === '已分配'?scope.column.data.leader[0] && scope.column.data.leader[0].name:'--'}}
+          </span>
+        </div>
+        <div v-else-if="scope.column.columnname == 'operation'"></div>
+        <p v-else>{{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:'--'}}</p>
+      </template>
+    </tableLayout>
+    <div style="margin-top:16px;text-align:right">
+      <el-pagination
+          background
+          small
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="param.content.pageNumber"
+          :page-size="param.content.pageSize"
+          layout="total, prev, pager, next, jumper"
+          :total="total">
+      </el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "sourceClues",
+  data(){
+    return {
+      tablecols:[],
+      list:[],
+      total:0,
+      param:{
+        "id": 20230811165204,
+        "content": {
+          "sat_orderclueid":"",
+          "pageNumber": 1,
+          "pageSize": 20,
+          "where": {
+            "condition": ""
+          }
+        }
+      }
+    }
+  },
+  methods:{
+    async listData(){
+      this.param.content.sat_orderclueid = this.$route.query.id
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+      this.total = res.total
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+  },
+  mounted() {
+    this.listData()
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).sourceCluesTable.tablecols
+  },
+}
+</script>
+
+<style scoped>
+
+</style>

+ 13 - 2
src/SManagement/orderclue/index.vue

@@ -14,7 +14,11 @@
       :apiId="{query:20221101094502,del:''}"
       :options="options"
       :detailPath="{path:'/orderclue_detail',param:{tabIndex:tabIndex}}"
+      @checkboxCallBack="checkboxCallBack"
     >
+      <div slot="titleRight" >
+        <changeSite class="inline-16" v-if="tool.checkAuth($route.name,'changeSite')" :selectList="selectList" @onSuccess="$refs.list.listData($refs.list.param.content.pageNumber = 1)"></changeSite>
+      </div>
     <template #custom>
       <div class="mt-10">
         <p class="search__label">范围:</p>
@@ -81,8 +85,10 @@
 </template>
 
 <script>
+import changeSite from '@/HManagement/clueManage/clue_private/modules/changeSite.vue'
 export default {
   components:{
+    changeSite
   },
   data () {
     return {
@@ -96,7 +102,8 @@ export default {
       status:'',
       statusList:[],
       tradefield:'',
-      tradefields:[]
+      tradefields:[],
+      selectList:[]
     }
   },
   provide() {
@@ -196,7 +203,11 @@ export default {
         }
       }
       this.areaChange()
-    }
+    },
+    checkboxCallBack(row){
+      console.log(row,'已选数据')
+      this.selectList = row
+    },
   }
 }
 

+ 10 - 2
src/SManagement/orderclue_detail/index.vue

@@ -9,7 +9,7 @@
         turnPageId="20221101094502"
         idname="sat_orderclueid"
         tags=""
-        :tabs="['跟进记录','详细信息']"
+        :tabs="['跟进记录','详细信息','来源线索']"
         :justsaler="1"
         @pageChange="pageChange"
         @onEditSuccess="queryMainData($route.query.id)"
@@ -29,6 +29,7 @@
         <el-button :type="!isHandle || mainData.status === '已无效'?'':'primary'" v-if="tool.checkAuth($route.name,'goBack') && mainData.status != '已转化' && mainData.isprivate !== 1" :disabled="!isHandle || mainData.status === '已无效'" class="inline-16" size="mini" @click="goBack">退 回</el-button>
         <noNull v-if="tool.checkAuth($route.name,'noNull') && mainData.status != '已转化' " class="inline-16" :data="mainData" :disabled="!isHandle" @onSuccess="$store.dispatch('changeDetailDrawer',false);$router.replace('/orderclue')" :id="mainData.sat_orderclueid"/>
         <Del v-if="tool.checkAuth($route.name,'toVoid') " class="inline-16" :data="mainData" :disabled="!isHandle" :idName="20221123193702" @onSuccess="$store.dispatch('changeDetailDrawer',false);$router.replace('/orderclue')" :id="mainData.sat_orderclueid" idKey="sat_orderclueids"/>
+        <changeSite v-if="tool.checkAuth($route.name,'changeSite')" class="inline-16"></changeSite>
       </div>
       <div slot="slot1" class="container normal-panel">
         <BaseInfo :detailInfo="detailInfo"/>
@@ -36,6 +37,9 @@
       <div slot="slot0">
         <followDetail ref="followDetail"/>
       </div>
+      <div slot="slot2" class="container normal-panel">
+        <sourceClues></sourceClues>
+      </div>
     </basicDetails>
   </div>
 </template>
@@ -50,6 +54,8 @@ import Del from './components/delete'
 import noNull from './components/noNull'
 import changeProject from './components/changeProject'
 import changeCustomer from './components/changeCustomer'
+import sourceClues from '@/HManagement/clueManage/clue_public/modules/sourceClues'
+import changeSite from '@/HManagement/clueManage/clue_private/modules/changeToSite.vue'
 export default {
   name: "detail",
   inject:['teamList'],
@@ -71,7 +77,9 @@ export default {
     noNull,
     changeProject,
     changeCustomer,
-    edit
+    edit,
+    sourceClues,
+    changeSite
   },
   watch: {
    async mainData(val) {