瀏覽代碼

调整合作伙伴,回收站新增合作伙伴,任务调整

qymljy 1 年之前
父節點
當前提交
94205f46ac

+ 2 - 1
src/HDrpManagement/competitor/detail/index.vue

@@ -8,6 +8,7 @@
         :mainAreaData="mainAreaData"
         turnPageId="20221018164302"
         idname="sa_competitorid"
+        typeTask="竞争对手"
         :tags="[]"
         :tabs="['详细信息','参与竞争项目','联系人','地址管理']"
         @pageChange="pageChange"
@@ -134,4 +135,4 @@ export default {
 
 <style scoped>
 
-</style>
+</style>

+ 1 - 0
src/HDrpManagement/contractManage/modules/detail.vue

@@ -7,6 +7,7 @@
         :mainAreaData="mainAreaData"
         turnPageId="20221121201502"
         idname="sa_contractid"
+        typeTask="合同"
         ownertable="sa_contract"
         :tabs="mainData.type === '项目' ? ['产品明细折扣','产品类别折扣','详细信息'] : mainData.type === '框架' ? ['产品明细折扣','产品类别折扣','业绩目标','详细信息'] : mainData.type === '居间' ? ['详细信息'] : mainData.type === '直销' ? ['产品明细折扣','产品类别折扣','业绩目标','详细信息'] : ['工具清单','详细信息']"
 

+ 1 - 0
src/HDrpManagement/projectChange/modules/detail.vue

@@ -8,6 +8,7 @@
     :mainAreaData="mainAreaData"
     :turnPageId="20221020143502"
     idname="sa_projectid"
+    typeTask="项目商机"
     :tags="[]"
     :tabs="['详细信息','关联客户','联系人','产品配置单','报价单','竞争对手','合同','关联线索','报备进度','项目评估']"
     :status="mainData.status"

+ 249 - 0
src/HManagement/ecycle/agentManage/index.vue

@@ -0,0 +1,249 @@
+<template>
+  <div>
+    <basicLayout
+        ref="basicLayout"
+        tableName="agentTable"
+        idName="sa_agentsid"
+        :apiId="{query:20221011144903,del:''}"
+        :autoQuery="false"
+        @checkboxCallBack="checkboxCallBack"
+    >
+      <template #titleLight>
+        <batchDeletion v-if="tool.checkAuth($route.name,'batchDeletion')" ref="batchDeletion" :ownerids="selectData" :sys_object="application" @delSuccess="queryData"></batchDeletion>
+        <batchRecovery v-if="tool.checkAuth($route.name,'batchRecovery')" ref="batchRecovery" :ownerids="selectData" :sys_object="application" @recoverySuccess="queryData"></batchRecovery>
+      </template>
+      <template #custom>
+        <div class="mt-10">
+          <p class="search__label">应用:</p>
+          <el-select
+              class="inline-24"
+              size="small"
+              v-model="application"
+              placeholder="请选择范围"
+              @change="applicationChange"
+          >
+            <el-option
+                v-for="item in applicationList"
+                :key="item.index"
+                :label="item.label"
+                :value="item.value"
+            ></el-option>
+          </el-select>
+        </div>
+        <div class="mt-10">
+          <p class="search__label">合作伙伴类型:</p>
+          <el-select
+              class="inline-16"
+              ref="sle"
+              v-model="selectParam.type"
+              placeholder="请选择合作伙伴类别"
+              size="small"
+              @change="selectChange"
+              clearable
+          >
+            <el-option
+                v-for="item in agent_type"
+                :key="item.value"
+                :label="item.value"
+                :value="item.value"
+            >
+              <span style="float: left">{{ item.value }}</span>
+             <span style="float: right; color: #8492a6; font-size: 12px">{{ item.helptips?item.helptips:'暂无描述' }}</span>
+            </el-option>
+          </el-select>
+        </div>
+        <div class="mt-10">
+          <p class="search__label">合作状态:</p>
+          <el-select
+              class="inline-16"
+              ref="sle"
+              v-model="selectParam.cooperationstatus"
+              placeholder="请选择合作状态"
+              size="small"
+              @change="selectChange"
+              clearable
+          >
+            <el-option
+                v-for="item in cooperationstatus"
+                :key="item.label"
+                :label="item.label"
+                :value="item.label"
+            >
+            </el-option>
+          </el-select>
+        </div>
+      </template>
+      <template v-slot:tbList="scope">
+        <div>
+          <p v-if="scope.data.column.columnname === 'province'">
+            {{`${scope.data.column.data.province}-${scope.data.column.data.city}-${scope.data.column.data.county}`}}
+          </p>
+          <p v-else-if="scope.data.column.columnname === 'type'">
+              <span v-if="scope.data.column.data.type">
+               <span v-for="(item,index) in scope.data.column.data.type" :key="index">
+                  <span v-if="scope.data.column.data.type.length - 1 === index">
+                    {{item}}
+                  </span>
+                  <span v-else>
+                    {{item + ','}}
+                  </span>
+                </span>
+             </span>
+            <span v-else>
+               --
+             </span>
+          </p>
+          <p v-else-if="scope.data.column.columnname === 'status'">
+            <span style="color:#d90a0a" v-if="scope.data.column.data[[scope.data.column.columnname]] == '禁用'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+            <span style="color:#52C41A" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '启用'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+          </p>
+          <p v-else-if="scope.data.column.columnname === 'isservice'">
+            {{scope.data.column.data.isservice ? '是' : '否'}}
+          </p>
+          <p v-else>{{scope.data.column.data[[scope.data.column.columnname]]?scope.data.column.data[[scope.data.column.columnname]]:'--'}}</p>
+        </div>
+      </template>
+      <template v-slot:tbOpreation="scope">
+        <delData class="inline-16" :ownerid="scope.data.data.sa_agentsid" :sys_object="application" @delSuccess="queryData"></delData>
+        <recovery type="合作伙伴" class="inline-16" :ownerid="scope.data.data.sa_agentsid" :sys_object="application" @recoverySuccess="queryData"></recovery>
+      </template>
+    </basicLayout>
+  </div>
+</template>
+
+<script>
+import recovery from "@/HManagement/ecycle/modules/recovery";
+import delData from "@/HManagement/ecycle/modules/delData";
+import batchDeletion from "@/HManagement/ecycle/modules/batchDeletion";
+import batchRecovery from "@/HManagement/ecycle/modules/batchRecovery";
+
+export default {
+  name: "index",
+  data () {
+    return {
+      application:'6',
+      applicationList:[
+        {
+          label: '销售线索',
+          value: "1",
+        },
+        {
+          label: '客户',
+          value: "2",
+        },
+        {
+          label: '合同',
+          value: "3",
+        },
+        {
+          label: '项目商机',
+          value: "4",
+        },
+        {
+          label: '报价单',
+          value: "5",
+        },
+        {
+          label: '合作伙伴',
+          value: "6",
+        }
+      ],
+      dateSelect:'',
+      typeList:[],
+      area:'1',
+      tabIndex:"1",
+      condition:'',
+      selectParam: {
+        status: "",
+        type: "",
+        cooperationstatus:"",
+      },
+      selectData:[],
+      statusList:[],
+      agent_type:[],
+      cooperationstatus:[
+        {
+          label:'正式'
+        },
+        {
+          label:'意向'
+        },
+      ],
+    }
+  },
+  components:{recovery,delData,batchDeletion,batchRecovery},
+  methods:{
+    queryData(){
+      this.$refs.basicLayout.param.content.isAll = 1
+      this.$refs.basicLayout.param.content.type = 0
+      this.$refs.basicLayout.param.content.isdeleted = 1
+      this.$refs.basicLayout.param.content.containssub = 1
+      this.$refs.basicLayout.param.content.sa_saleareaids = []
+      this.$refs.basicLayout.listData()
+    },
+    applicationChange(val){
+      console.log(val)
+      this.$emit("changeApplication",val)
+    },
+    async userstatus() {
+      let param = {
+        classname: "sysmanage.develop.optiontype.optiontype",
+        method: "optiontypeselect",
+        content: {
+          pageNumber: 1,
+          pageSize: 20,
+          typename: "userstatus",
+          parameter: {},
+        },
+      };
+      const res = await this.$api.requested(param);
+      this.statusList = res.data;
+    },
+    async bindImportOrder (id) {
+      const res = await this.$api.requested({
+        "id": 20230311163004,
+        "content": {
+          "attachmentid":id
+        }
+      })
+      if (res.data !== '成功') {
+        this.errorUrl = res.data
+      }
+      this.tool.showMessage(res,() => {
+        this.$refs.basicLayout.listData()
+      })
+    },
+    /*合作伙伴类型*/
+    async queryType(){
+      const res = await this.$store.dispatch('optiontypeselect','agenttypemx')
+      this.agent_type = res.data
+      console.log(this.agent_type,'agent_type')
+    },
+    selectChange () {
+      this.$refs.basicLayout.param.content.where = this.selectParam
+      this.$refs.basicLayout.listData()
+    },
+    checkboxCallBack(val){
+      this.selectData = []
+      val.forEach((item,index) => {
+        this.selectData[index] = item.sa_contractid
+      })
+      this.$refs.batchDeletion.length = this.selectData.length
+      this.$refs.batchRecovery.length = this.selectData.length
+      console.log(this.selectData)
+    }
+  },
+  mounted() {
+    this.queryData()
+    this.userstatus()
+    this.queryType()
+  },
+  created () {
+    // this.getAgentList()
+  },
+}
+</script>
+
+<style scoped>
+
+</style>

+ 4 - 0
src/HManagement/ecycle/contract/index.vue

@@ -154,6 +154,10 @@ export default {
         {
           label: '报价单',
           value: "5",
+        },
+        {
+          label: '合作伙伴',
+          value: "6",
         }
       ],
       dateSelect:'',

+ 4 - 0
src/HManagement/ecycle/customer/index.vue

@@ -163,6 +163,10 @@ export default {
         {
           label: '报价单',
           value: "5",
+        },
+        {
+          label: '合作伙伴',
+          value: "6",
         }
       ],
       option:{

+ 18 - 3
src/HManagement/ecycle/index.vue

@@ -5,6 +5,7 @@
     <quotedPrice v-if="quotedPriceShow" @changeApplication="onChange"></quotedPrice>
     <contract v-if="contractShow" @changeApplication="onChange"></contract>
     <customer v-if="customerShow" @changeApplication="onChange"></customer>
+    <agenter v-if="agenerShow" @changeApplication="onChange"></agenter>
   </div>
 </template>
 
@@ -14,16 +15,18 @@ import projectChange from './projectChange/index'
 import quotedPrice from './quotedPrice/index'
 import contract from './contract/index'
 import customer from './customer/index'
+import agenter from './agentManage/index'
 export default {
   name: "index",
-  components:{saleClue,projectChange,quotedPrice,contract,customer},
+  components:{saleClue,projectChange,quotedPrice,contract,customer,agenter},
   data(){
     return {
       salClueShow:true,
       projectChangeShow:false,
       quotedPriceShow:false,
       contractShow:false,
-      customerShow:false
+      customerShow:false,
+      agenerShow:false
     }
   },
   methods:{
@@ -35,30 +38,42 @@ export default {
         this.quotedPriceShow = false
         this.contractShow = false
         this.customerShow = false
+        this.agenerShow = false
       }else if (val === '2') {
         this.customerShow = true
         this.salClueShow = false
         this.projectChangeShow = false
         this.quotedPriceShow = false
         this.contractShow = false
+        this.agenerShow = false
       }else if (val === '3'){
         this.contractShow = true
         this.quotedPriceShow = false
         this.salClueShow = false
         this.projectChangeShow = false
         this.customerShow = false
+        this.agenerShow = false
       }else if (val === '4'){
         this.projectChangeShow = true
         this.quotedPriceShow = false
         this.salClueShow = false
         this.contractShow = false
         this.customerShow = false
+        this.agenerShow = false
       }else if (val === '5'){
         this.quotedPriceShow = true
         this.customerShow = false
         this.contractShow = false
         this.salClueShow = false
         this.projectChangeShow = false
+        this.agenerShow = false
+      }else if (val === '6'){
+        this.agenerShow = true
+        this.customerShow = false
+        this.contractShow = false
+        this.salClueShow = false
+        this.projectChangeShow = false
+        this.quotedPriceShow = false
       }
       console.log(this.projectChangeShow,this.salClueShow)
     }
@@ -68,4 +83,4 @@ export default {
 
 <style scoped>
 
-</style>
+</style>

+ 4 - 0
src/HManagement/ecycle/projectChange/index.vue

@@ -161,6 +161,10 @@ export default {
         {
           label: '报价单',
           value: "5",
+        },
+        {
+          label: '合作伙伴',
+          value: "6",
         }
       ],
       projectType:'',

+ 4 - 0
src/HManagement/ecycle/quotedPrice/index.vue

@@ -147,6 +147,10 @@ export default {
         {
           label: '报价单',
           value: "5",
+        },
+        {
+          label: '合作伙伴',
+          value: "6",
         }
       ],
       dateSelect:'',

+ 4 - 0
src/HManagement/ecycle/saleClue/index.vue

@@ -105,6 +105,10 @@ export default {
         {
           label: '报价单',
           value: "5",
+        },
+        {
+          label: '合作伙伴',
+          value: "6",
         }
       ],
       status:'',

+ 1 - 0
src/HManagement/marketing2/agent/details/index.vue

@@ -51,6 +51,7 @@
           dialogTitle="作废原因"
           @onSuccess="$store.dispatch('changeDetailDrawer',false);$router.back()"
           class="inline-16"
+          delType="合作伙伴"
           v-if="mainData.status == '禁用' && tool.checkAuth($route.name,'delete')"
         />
     </div>

+ 3 - 4
src/HManagement/task/modules/add.vue

@@ -277,12 +277,12 @@ export default {
       this.followParam.content.ownerid = ownerid
       this.form.ownertable = ownertable
       this.form.ownerid = ownerid
-      this.form.tableName = ownertable === 'sat_orderclue'?data.name:ownertable === 'sa_customers'?data.enterprisename:ownertable === 'sa_project'?data.projectname:''
+      this.form.tableName = ownertable === 'sat_orderclue'?data.enterprisename_customer:ownertable === 'sa_customers'?data.enterprisename:ownertable === 'sa_project'?data.projectname:''
     },
     follow(content,type,contacts){
-      if (this.form.tableName === '我的客户' || this.form.tableName === '项目商机'){
+      if (this.form.ownertable === 'sa_customers' || this.form.ownertable === 'sa_project'){
         if (contacts.length === 0){
-          this.form.remarks = '跟进类型:'+type+'\n'+ content
+          this.form.remarks = '跟进类型:'+type+'\n'+ '跟进对象:'+'\n' + content
         }else {
           let obj = ''
           contacts.forEach((item,index)=>{
@@ -294,7 +294,6 @@ export default {
           })
           this.form.remarks = '跟进类型:'+type+'\n'+ '跟进对象:'+obj+'\n' + content
         }
-
       }else {
         this.form.remarks = '跟进类型:'+type+'\n'+ content
       }

+ 2 - 2
src/HManagement/task/modules/edit.vue

@@ -319,12 +319,12 @@ export default {
       this.assist = []
       this.$refs.form.resetFields()
     },
-    selectApplication(ownerid,ownertable){
+    selectApplication(ownerid,ownertable,data){
       this.followParam.content.ownertable = ownertable
       this.followParam.content.ownerid = ownerid
       this.form.ownertable = ownertable
       this.form.ownerid = ownerid
-      this.form.tableName = ownertable === 'sat_orderclue'?data.name:ownertable === 'sa_customers'?data.enterprisename:ownertable === 'sa_project'?data.projectname:''
+      this.form.tableName = ownertable === 'sat_orderclue'?data.enterprisename_customer:ownertable === 'sa_customers'?data.enterprisename:ownertable === 'sa_project'?data.projectname:''
     },
     follow(content,type,contacts){
       if (this.form.tableName === '我的客户' || this.form.tableName === '项目商机'){

+ 1 - 0
src/SDrpManagement/QuotedPrice/detail/index.vue

@@ -10,6 +10,7 @@
         delApiId="20221020165503"
         idname="sa_quotedpriceid"
         ownertable="sa_quotedprice"
+        typeTask="报价单"
         :statusCheck="[{key:'status',value:'审核'},{key:'status',value:'提交'}]"
         :tags="[]"
         :tabs="['产品明细折扣','产品类别折扣','详细信息','其他费用','历史报价']"

+ 1 - 0
src/SDrpManagement/invoicePrediction/detail/subordinate.vue

@@ -6,6 +6,7 @@
         :editData="mainData"
         :mainAreaData="mainAreaData"
         idname="sa_salesforecastbillid"
+        typeTask="我的客户"
         :pageChange="true"
         :tags="[]"
         :tabs="['订单','项目','客户']"

+ 1 - 0
src/SDrpManagement/projectPrediction/detail/index.vue

@@ -7,6 +7,7 @@
         :mainAreaData="mainAreaData"
         idname="sa_salesforecastbillid"
         :pageChange="true"
+        typeTask="我的客户"
         :tags="[]"
         :tabs="['项目产品清单']"
         @onEditSuccess="queryMainData(id)"

+ 1 - 0
src/SDrpManagement/salerPrivatecustomer/detail/index.vue

@@ -8,6 +8,7 @@
         :mainAreaData="mainAreaData"
         turnPageId="20221012164402"
         idname="sa_customersid"
+        typeTask="我的客户"
         tags=""
         :tabs="['详细信息','联系人信息','客户地址','客户财务信息','工商信息','项目商机','报价单']"
         @pageChange="pageChange"

+ 1 - 0
src/SManagement/orderclue_detail/index.vue

@@ -11,6 +11,7 @@
         tags=""
         :tabs="['跟进记录','详细信息','来源线索']"
         :justsaler="1"
+        typeTask="销售线索"
         @pageChange="pageChange"
         @onEditSuccess="queryMainData($route.query.id)"
         @detailCreate="detailCreate">

+ 20 - 5
src/components/customBtn/index.vue

@@ -26,7 +26,8 @@ export default {
     dialogTitle:String,
     dialogKey:String,
     checkContent: Boolean,
-    size: String
+    size: String,
+    delType:String
   },
   data() {
     return {
@@ -54,9 +55,23 @@ export default {
           })
           param.content[this.dialogKey] = value
           let res = await this.$api.requested(param)
-          this.tool.showMessage(res,() => {
-            this.$emit('onSuccess',res.data)
-          })
+          if (this.delType === '合作伙伴'){
+            if (res.code === 0){
+              this.$message({
+                message: res.data[0].errmsg,
+                type: 'error'
+              });
+            }else {
+              this.tool.showMessage(res,() => {
+                this.$emit('onSuccess',res.data)
+              })
+            }
+          }else {
+            this.tool.showMessage(res,() => {
+              this.$emit('onSuccess',res.data)
+            })
+          }
+
         })
       } else {
         this.$confirm(this.message,'提示',{
@@ -78,7 +93,7 @@ export default {
           })
         })
       }
-      
+
     }
   },
 };

+ 2 - 2
src/components/normal-basic-layout/details/index.vue

@@ -68,7 +68,7 @@
           <slot name="custom"></slot>
         </el-col>
         <el-col v-if="collapse" style="width:400px;" :span="6">
-          <taskTemp v-if="activeApp.istask" :status="status" :ownertable="ownertable?ownertable:idname.slice(0, this.idname.length - 2)">
+          <taskTemp v-if="activeApp.istask" :status="status" :ownertable="ownertable?ownertable:idname.slice(0, this.idname.length - 2)" :typeTask="typeTask">
             <el-button slot="collapse" type="text" icon="el-icon-s-unfold" class="inline-16" @click="onCollapse"></el-button>
           </taskTemp>
           <group v-if="activeApp.isdatateam" :status="status" ref="group" style="margin-bottom:10px" :justsaler="justsaler" :ownertable="ownertable?ownertable:idname.slice(0, this.idname.length - 2)" @onSuccess="onSuccess" @teamList="teamList">
@@ -98,7 +98,7 @@ import taskTemp from './modules/task/index.vue'
 import reportCenter from '../reportCenter/index'
 import {mapGetters} from 'vuex'
 export default {
-  props:['titleText','mainAreaData','turnPageId','delApiId','idname','ownertable','formPath','oldFormPath','editData','tags','tabs','statusCheck','pageChange','justsaler','mainData','status'],
+  props:['titleText','mainAreaData','turnPageId','delApiId','idname','ownertable','formPath','oldFormPath','editData','tags','tabs','statusCheck','pageChange','justsaler','mainData','status','typeTask'],
   data () {
     return {
       isTop:true,

+ 161 - 98
src/components/normal-basic-layout/details/modules/task/addTask.vue

@@ -3,92 +3,112 @@
     <el-button size="small" type="text" @click="onShow" :disabled="status === '已结案' || status === '已失败'">
         创建任务
     </el-button>
-    <el-dialog title="创建任务" append-to-body :visible.sync="dialogTableVisible" width="700px" :before-close="onCancel">
-			<el-alert
-				v-if="errormsg"
-				class="normal-margin"
-				:title="errormsg"
-				type="error">
-			</el-alert>
-			<el-input class="normal-margin" v-model="form.title" placeholder="输入任务标题" type="text" show-word-limit maxlength="40" size="small"></el-input>
-			<el-input  class="normal-margin" v-model="form.remarks" placeholder="输入任务内容" :autosize="{minRows:6}" type="textarea" show-word-limit maxlength="100" size="small"></el-input>
-			<div class="flex-align-center flex-between normal-margin">
-				<p class="task__label"><i class="el-icon-time"></i>&emsp;开始:</p>
-				<el-date-picker
-					v-model="form.starttime"
-					type="date"
-					placeholder="选择日期"
-					value-format="yyyy-MM-dd"
-					size="small">
-				</el-date-picker>
-				&emsp;- &emsp;
-				<p class="task__label">结束:</p>
-				<el-date-picker
-					v-model="form.endtime"
-					type="date"
-					placeholder="选择日期"
-					value-format="yyyy-MM-dd"
-					size="small">
-				</el-date-picker>
-			</div>
-			<div class="normal-margin flex-align-center">
-				<p class="task__label"><i class="el-icon-bell"></i>&emsp;提醒时间:结束前&emsp;</p>
-				<el-input :disabled="!form.endtime" v-model="form.remindday" size="small" style="width:90px"></el-input>
-				<p>&emsp;天</p>
-			</div>
-<!--			<div class="normal-margin">
-				<p class="task__label"><i class="el-icon-upload2"></i>&emsp;上传附件</p>
-				<upload
-					ref="upload"
-					:folderid="folderid"
-					:bindData="bindData"
-					type="button">
-				</upload>
-			</div>-->
-			<!-- <div class="normal-margin">
-				<p class="mt-10 task__label">关联项目/客户</p>
-				<el-input placeholder="请输入内容" disabled v-model="input3" class="input-with-select" size="small">
-					<el-select v-model="form.nat" slot="prepend" style="width:100px" placeholder="请选择">
-						<el-option label="不关联" value="1"></el-option>
-						<el-option label="项目" value="2"></el-option>
-						<el-option label="客户" value="3"></el-option>
-					</el-select>
-				</el-input>
-			</div> -->
-			<div>
-<!--				<p class="mt-10 task__label">执行人员</p>-->
-				<div class="flex-align-center flex-between">
-					<el-popover
-						placement="right"
-						trigger="manual"
-						width="400"
-						v-model="leaderShow">
-						<member ref="member" :param="param" :radio="true" @onSelect="setLeader" @onCancel="onCancel" source="task"></member>
-						<el-input placeholder="请输入内容" readonly v-model="leader.name" class="input-with-select" size="small" slot="reference" @focus="showMenber">
-							<p slot="prepend">执行人</p>
-						</el-input>
-					</el-popover>
-          <el-popover
-              placement="right"
-              trigger="manual"
-              width="400"
-              v-model="assistShow">
-            <member ref="memberAssist" :param="param" :implement="form.leaderuserid" :radio="false" @onSelect="setAssist" @onCancel="assistShow = false"></member>
-            <el-input placeholder="请输入内容" readonly v-model="assistPerson" class="input-with-select" size="small" slot="reference" @focus="showMenberAssist">
-              <p slot="prepend">协助人</p>
-            </el-input>
-          </el-popover>
-					<!-- &emsp;
-					<el-input placeholder="请输入内容" v-model="input3" class="input-with-select" size="small">
-						<p slot="prepend">协 办</p>
-					</el-input> -->
-				</div>
-			</div>
-			<div slot="footer" class="dialog-footer">
+    <el-drawer
+        title="创建任务"
+        :visible.sync="dialogTableVisible"
+        size="700px"
+        direction="rtl"
+        append-to-body
+        :show-close="false"
+        @close="onCancel">
+      <div class="drawer__panel">
+        <el-row :gutter="10">
+          <el-form :model="form" :rules="rules" ref="form" label-width="125px" label-position="right" size="mini">
+            <div v-if="typeTask == '' || typeTask == undefined">
+              <el-col :span="24" >
+                <el-form-item label="任务标题:" prop="title">
+                  <el-input v-model="form.title" placeholder="请输入任务标题" ></el-input>
+                </el-form-item>
+              </el-col>
+            </div>
+             <div v-else>
+               <el-col :span="20" >
+                 <el-form-item label="任务标题:" prop="title">
+                   <el-input v-model="form.title" placeholder="请输入任务标题" ></el-input>
+                 </el-form-item>
+               </el-col>
+               <el-col :span="4" >
+                 <el-button type="primary" size="mini" @click="$refs.followRef.dialogTableVisible = true;$refs.followRef.listData()" :disabled="followParam.content.ownerid === ''">同步跟进内容</el-button>
+               </el-col>
+             </div>
+            <el-col :span="24">
+              <el-form-item label="任务内容:" prop="remarks">
+                <el-input  class="normal-margin" v-model="form.remarks" placeholder="输入任务内容" :autosize="{minRows:6}" type="textarea" show-word-limit maxlength="500" size="small"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="开始:" prop="starttime">
+                <el-date-picker
+                    v-model="form.starttime"
+                    type="date"
+                    placeholder="选择日期"
+                    value-format="yyyy-MM-dd"
+                    size="small">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="结束:" prop="endtime">
+                <el-date-picker
+                    v-model="form.endtime"
+                    type="date"
+                    placeholder="选择日期"
+                    value-format="yyyy-MM-dd"
+                    size="small">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="提醒时间:结束前" prop="remindday">
+                <el-input :disabled="!form.endtime" v-model="form.remindday" size="small" style="width:90px"></el-input>
+                <span>&emsp;天</span>
+              </el-form-item>
+            </el-col>
+            <!--            <el-col :span="24">
+                          <el-form-item label="上传附件:" prop="remindday">
+                            <upload
+                                ref="upload"
+                                :folderid="folderid"
+                                :bindData="bindData"
+                                type="button">
+                            </upload>
+                          </el-form-item>
+                        </el-col>-->
+            <el-col :span="24">
+              <el-form-item label="执行人:" prop="leaderuserid">
+                <el-popover
+                    placement="right"
+                    trigger="manual"
+                    width="400"
+                    v-model="leaderShow">
+                  <member ref="member" :param="param" :radio="true" @onSelect="setLeader" @onCancel="leaderShow = false"></member>
+                  <el-input placeholder="请输入内容" readonly v-model="leader.name" class="input-with-select" size="small" slot="reference" @focus="showMenber">
+                  </el-input>
+                </el-popover>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="协助人:" prop="remindday">
+                <el-popover
+                    placement="right"
+                    trigger="manual"
+                    width="400"
+                    v-model="assistShow">
+                  <member ref="memberAssist" :param="param" :implement="form.leaderuserid" :radio="false" @onSelect="setAssist" @onCancel="assistShow = false"></member>
+                  <el-input placeholder="请输入内容" readonly v-model="assistPerson" class="input-with-select" size="small" slot="reference" @focus="showMenberAssist">
+                  </el-input>
+                </el-popover>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
         <el-button size="small" style="width:120px" @click="onCancel">取 消</el-button>
-        <el-button type="warning" size="small" style="width:120px" @click="validateInput">创 建</el-button>
+        <el-button type="primary" size="small" style="width:120px" @click="validateInput">确 定</el-button>
       </div>
-    </el-dialog>
+    </el-drawer>
+    <followData v-if="typeTask !== '' && typeTask !== undefined" ref="followRef" :param="followParam" @follow="follow"></followData>
   </div>
 </template>
 <script>
@@ -96,11 +116,14 @@
 import member from '@/template/menber/index'
 
 import upload from '@/components/upload/preview_upload.vue';
+
+import followData from "@/HManagement/task/components/followData";
 export default {
-	props:['ownertable','status'],
+	props:['ownertable','status','typeTask','followData'],
 	components:{
 		upload,
-		member
+		member,
+    followData
 	},
 	data () {
 		return {
@@ -124,6 +147,17 @@ export default {
           "userids":[],
         }
 			},
+      rules: {
+        title: [
+          {required: true, message: '请输入任务标题', trigger: 'blur'},
+        ],
+        starttime: [
+          {required: true, message: '请选择开始时间', trigger: 'change'},
+        ],
+        leaderuserid: [
+          {required: true, message: '请选择执行人', trigger: 'change'},
+        ],
+      },
 			// 查询团队人员参数
 			params:{
         "id": 20220930103501,
@@ -154,13 +188,24 @@ export default {
 			leader:{},
       assist:[],
       assistPerson:'',
-      implement:''
+      implement:'',
+      /*跟进列表*/
+      followParam:{
+        "id": 20231207130504,
+        "content": {
+          "ownertable": "",
+          "ownerid": ""
+        },
+      }
 		}
 	},
 	methods:{
     onShow(){
+      console.log(this.typeTask,'typeTask')
       this.dialogTableVisible = true
       this.queryTeam()
+      this.followParam.content.ownertable = this.ownertable
+      this.followParam.content.ownerid = this.$route.query.id
     },
     /*获取团队信息*/
     async queryTeam(){
@@ -188,15 +233,10 @@ export default {
       }
     },
 		validateInput () {
-			if (!this.form.title) {
-				this.errormsg = '请输入标题'
-				return false
-			} else if (!this.form.starttime) {
-				this.errormsg = '请选择开始日期'
-				return false
-			} else {
-				this.submit()
-			}
+      this.$refs.form.validate((valid)=>{
+        if (!valid) return false
+        this.submit()
+      })
 		},
 		setLeader (val) {
 			this.leader = val[0]
@@ -229,12 +269,12 @@ export default {
       })
       this.tool.showMessage(res,()=>{
 				this.param.content.ownerid = res.data.sys_taskid
-        this.bindData = {
+      /*  this.bindData = {
           "ownertable": 'sys_task',
           "ownerid": res.data.sys_taskid,
           "usetype": 'default',
         }
-        this.$refs['upload'].toUpload()
+        this.$refs['upload'].toUpload()*/
         this.$emit('onSuccess')
 				this.dialogTableVisible = false
 				this.refresh()
@@ -280,6 +320,29 @@ export default {
       this.assistShow = false
       this.leaderShow = false
       this.dialogTableVisible = false
+    },
+    follow(content,type,contacts){
+      if (this.typeTask === '我的客户' || this.typeTask === '项目商机'){
+        if (contacts.length === 0){
+          this.form.remarks = '跟进类型:'+type+'\n'+ content
+        }else {
+          let obj = ''
+          contacts.forEach((item,index)=>{
+            if (index === contacts.length -1){
+              obj = obj + item
+            }else {
+              obj = obj + item + ','
+            }
+          })
+          this.form.remarks = '跟进类型:'+type+'\n'+ '跟进对象:'+obj+'\n' + content
+        }
+
+      }else if (this.typeTask === '销售线索'){
+        this.form.remarks = '跟进类型:'+type+'\n'+ content
+      }else {
+        this.form.remarks = content
+      }
+
     }
 		/*onCancel (done) {
       console.log("关闭")

+ 298 - 0
src/components/normal-basic-layout/details/modules/task/addTaskCopy1.vue

@@ -0,0 +1,298 @@
+<template>
+  <div>
+    <el-button size="small" type="text" @click="onShow" :disabled="status === '已结案' || status === '已失败'">
+        创建任务
+    </el-button>
+    <el-dialog title="创建任务" append-to-body :visible.sync="dialogTableVisible" width="700px" :before-close="onCancel">
+			<el-alert
+				v-if="errormsg"
+				class="normal-margin"
+				:title="errormsg"
+				type="error">
+			</el-alert>
+			<el-input class="normal-margin" v-model="form.title" placeholder="输入任务标题" type="text" show-word-limit maxlength="40" size="small"></el-input>
+			<el-input  class="normal-margin" v-model="form.remarks" placeholder="输入任务内容" :autosize="{minRows:6}" type="textarea" show-word-limit maxlength="100" size="small"></el-input>
+			<div class="flex-align-center flex-between normal-margin">
+				<p class="task__label"><i class="el-icon-time"></i>&emsp;开始:</p>
+				<el-date-picker
+					v-model="form.starttime"
+					type="date"
+					placeholder="选择日期"
+					value-format="yyyy-MM-dd"
+					size="small">
+				</el-date-picker>
+				&emsp;- &emsp;
+				<p class="task__label">结束:</p>
+				<el-date-picker
+					v-model="form.endtime"
+					type="date"
+					placeholder="选择日期"
+					value-format="yyyy-MM-dd"
+					size="small">
+				</el-date-picker>
+			</div>
+			<div class="normal-margin flex-align-center">
+				<p class="task__label"><i class="el-icon-bell"></i>&emsp;提醒时间:结束前&emsp;</p>
+				<el-input :disabled="!form.endtime" v-model="form.remindday" size="small" style="width:90px"></el-input>
+				<p>&emsp;天</p>
+			</div>
+<!--			<div class="normal-margin">
+				<p class="task__label"><i class="el-icon-upload2"></i>&emsp;上传附件</p>
+				<upload
+					ref="upload"
+					:folderid="folderid"
+					:bindData="bindData"
+					type="button">
+				</upload>
+			</div>-->
+			<!-- <div class="normal-margin">
+				<p class="mt-10 task__label">关联项目/客户</p>
+				<el-input placeholder="请输入内容" disabled v-model="input3" class="input-with-select" size="small">
+					<el-select v-model="form.nat" slot="prepend" style="width:100px" placeholder="请选择">
+						<el-option label="不关联" value="1"></el-option>
+						<el-option label="项目" value="2"></el-option>
+						<el-option label="客户" value="3"></el-option>
+					</el-select>
+				</el-input>
+			</div> -->
+			<div>
+<!--				<p class="mt-10 task__label">执行人员</p>-->
+				<div class="flex-align-center flex-between">
+					<el-popover
+						placement="right"
+						trigger="manual"
+						width="400"
+						v-model="leaderShow">
+						<member ref="member" :param="param" :radio="true" @onSelect="setLeader" @onCancel="onCancel" source="task"></member>
+						<el-input placeholder="请输入内容" readonly v-model="leader.name" class="input-with-select" size="small" slot="reference" @focus="showMenber">
+							<p slot="prepend">执行人</p>
+						</el-input>
+					</el-popover>
+          <el-popover
+              placement="right"
+              trigger="manual"
+              width="400"
+              v-model="assistShow">
+            <member ref="memberAssist" :param="param" :implement="form.leaderuserid" :radio="false" @onSelect="setAssist" @onCancel="assistShow = false"></member>
+            <el-input placeholder="请输入内容" readonly v-model="assistPerson" class="input-with-select" size="small" slot="reference" @focus="showMenberAssist">
+              <p slot="prepend">协助人</p>
+            </el-input>
+          </el-popover>
+					<!-- &emsp;
+					<el-input placeholder="请输入内容" v-model="input3" class="input-with-select" size="small">
+						<p slot="prepend">协 办</p>
+					</el-input> -->
+				</div>
+			</div>
+			<div slot="footer" class="dialog-footer">
+        <el-button size="small" style="width:120px" @click="onCancel">取 消</el-button>
+        <el-button type="warning" size="small" style="width:120px" @click="validateInput">创 建</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+// import member from './groupMenber.vue'
+import member from '@/template/menber/index'
+
+import upload from '@/components/upload/preview_upload.vue';
+export default {
+	props:['ownertable','status','typeTask'],
+	components:{
+		upload,
+		member
+	},
+	data () {
+		return {
+      leaderShow:false,
+      assistShow:false,
+			dialogTableVisible:false,
+			folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
+			form:{
+				"sys_taskid":0,
+        "title":"",
+        "remarks":"",
+        "starttime":"",
+        "remindday":0,
+        "ownertable":"",
+        "ownerid":this.$route.query.id,
+        "endtime":"",
+				"leaderuserid":"",
+        "systemappid":JSON.parse(sessionStorage.getItem('activeApp')).systemappid,
+        "team":{
+          "justuserids":true,
+          "userids":[],
+        }
+			},
+			// 查询团队人员参数
+			params:{
+        "id": 20220930103501,
+        "content": {
+          "ownertable":this.ownertable,
+          "ownerid":this.$route.query.id,
+					"where":{
+						condition:''
+					}
+        }
+      },
+      // 查询可选择人员参数
+      param:{
+        id:'20221018122201',
+        content: {
+          "ownertable":'sys_task',
+          "ownerid":0,
+          "pageSize":20,
+          "where":{
+            "condition":"",
+            "withoutselect":0,
+
+          }
+        }
+      },
+			errormsg:'',
+			bindData:{},
+			leader:{},
+      assist:[],
+      assistPerson:'',
+      implement:''
+		}
+	},
+	methods:{
+    onShow(){
+      this.dialogTableVisible = true
+      this.queryTeam()
+    },
+    /*获取团队信息*/
+    async queryTeam(){
+      const res = await this.$api.requested(this.params)
+      console.log(res,"团队信息")
+      if (res.data.length !== 0){
+        this.leader = res.data[0].teamleader[0]
+        this.implement = res.data[0].teamleader[0].userid
+        this.form.leaderuserid = res.data[0].teamleader[0].userid
+        this.assistPerson = ''
+        this.assist = []
+        res.data[0].team.forEach((item,index)=>{
+          console.log(index,item,"获取协助")
+          console.log(res.data.length)
+          if (res.data.length !== 1){
+            if (index === 1){
+              this.assistPerson = item.name
+            }else {
+              this.assistPerson = this.assistPerson + ',' + item.name
+            }
+            this.assist[index] = item.userid
+          }
+
+        })
+      }
+    },
+		validateInput () {
+			if (!this.form.title) {
+				this.errormsg = '请输入标题'
+				return false
+			} else if (!this.form.starttime) {
+				this.errormsg = '请选择开始日期'
+				return false
+			} else {
+				this.submit()
+			}
+		},
+		setLeader (val) {
+			this.leader = val[0]
+			this.form.leaderuserid = val[0].userid
+      this.implement = this.form.leaderuserid
+			this.leaderShow = false
+		},
+    setAssist (val) {
+      console.log(val)
+      this.assistPerson = ''
+      this.assist = []
+      val.forEach((item,index)=>{
+
+        if (index === 0){
+          this.assistPerson = item.name
+        }else {
+          this.assistPerson = this.assistPerson + ',' + item.name
+        }
+        this.assist[index] = item.userid
+      })
+      console.log(this.assistPerson)
+      this.assistShow = false
+    },
+		async submit () {
+			this.form.ownertable = this.ownertable
+      this.form.team.userids = this.assist
+			const res = await this.$api.requested({
+        "id": 20221211112101,
+        "content":this.form
+      })
+      this.tool.showMessage(res,()=>{
+				this.param.content.ownerid = res.data.sys_taskid
+        this.bindData = {
+          "ownertable": 'sys_task',
+          "ownerid": res.data.sys_taskid,
+          "usetype": 'default',
+        }
+        this.$refs['upload'].toUpload()
+        this.$emit('onSuccess')
+				this.dialogTableVisible = false
+				this.refresh()
+				this.errormsg = ''
+     /*   this.insertAssist(res.data.sys_taskid)*/
+      })
+		},
+		refresh () {
+			this.form = {
+				"sys_taskid":0,
+        "title":"任务标题",
+        "remarks":"任务说明",
+        "starttime":"",
+        "remindday":0,
+        "ownertable":"",
+        "ownerid":this.$route.query.id,
+        "endtime":""
+			}
+		},
+		showMenber () {
+			this.leaderShow = true
+      this.assistShow = false
+			// this.validateInput()
+		},
+    showMenberAssist () {
+      this.assistShow = true
+      this.leaderShow = false
+      this.$refs.memberAssist.listData()
+      // this.validateInput()
+    },
+    async insertAssist(id){
+      const res = await this.$api.requested({
+        "id": 20220930103601,
+        "content": {
+          "ownertable":"sys_task",
+          "ownerid":id,
+          "userids":this.assist,
+          "justuserids":true
+        }
+      })
+    },
+    onCancel(){
+      this.assistShow = false
+      this.leaderShow = false
+      this.dialogTableVisible = false
+    }
+		/*onCancel (done) {
+      console.log("关闭")
+      this.assistShow = false
+      this.leaderShow = false
+			done?done():""
+		}*/
+	}
+}
+
+</script>
+<style scoped>
+.task__label{
+	color:rgb(173, 172, 172);
+}
+</style>

+ 2 - 2
src/components/normal-basic-layout/details/modules/task/index.vue

@@ -6,7 +6,7 @@
           <slot name="collapse"></slot>
           任务事项
         </div>
-        <addTask :ownertable="ownertable" @onSuccess="listData" :status="status"></addTask>
+        <addTask :ownertable="ownertable" @onSuccess="listData" :status="status" :typeTask="typeTask"></addTask>
       </div>
       <div v-if="list.length === 0">
         <el-empty description="暂无记录" :image-size="40"></el-empty>
@@ -27,7 +27,7 @@
 
   import addTask from './addTask.vue'
   export default {
-    props:['ownertable','status'],
+    props:['ownertable','status','typeTask'],
     components:{
       addTask
     },