DongZ il y a 1 an
Parent
commit
df9767a905

+ 2 - 2
src/api/business/spd/task_management/visitingPlan/visitingPlan.js

@@ -60,7 +60,7 @@ export function delPlanItem(id) {
         method: 'delete'
     })
 }
-// 采购需求单导出
+//拜访计划导出
 export function exportPlan(data) {
     return request({
       url: `/mk/bo/plan/export`,
@@ -68,4 +68,4 @@ export function exportPlan(data) {
       data: data,
       responseType: 'blob'
     })
-}
+}

+ 122 - 78
src/views/business/spd/task_management/visitingPlan/add.vue

@@ -28,7 +28,7 @@
          </el-col>
 
          <el-col :span="1.5">
-            <el-form-item label="线路类型" prop="type">
+            <el-form-item label="线路类型" prop="type" :rules="{ required: true, message: '请选择线路类型', trigger: 'blur' }">
               <el-select :disabled="sonDisable" v-model="basicForm.type" size="mini" style="width: 200px">
                 <el-option v-for="dict in dict.type.mk_plan_route_type" :key="dict.value" :label="dict.label" :value="dict.value">
                 </el-option>
@@ -37,7 +37,7 @@
           </el-col>
 
           <el-col :span="1.5">
-            <el-form-item label="执行人" prop="chargerName">
+            <el-form-item label="执行人" prop="chargerName" :rules="{ required: true, message: '请选择执行人', trigger: 'blur' }">
                 <el-select clearable size="mini" v-model="basicForm.chargerName" :disabled="sonDisable" @focus="choose('CONTACTS_PARAM', true, '执行人')" style="width: 200px">
                   <el-option v-for="item in personOptions" :key="item.id" :label="item.name" :value="item.code" />
                 </el-select>
@@ -70,9 +70,9 @@
               >
               </el-date-picker>
             </el-form-item>
-         </el-col>
+          </el-col>
 
-         <el-col :span="1.5">
+          <el-col :span="1.5">
             <el-form-item label="截止时间" prop="deadlineTime" :rules="{ required: true, message: '请选择截止时间', trigger: 'blur' }">
               <el-date-picker
                 v-model="basicForm.deadlineTime"
@@ -85,10 +85,10 @@
               >
               </el-date-picker>
             </el-form-item>
-         </el-col>
+          </el-col>
 
          <el-col :span="1.5">
-            <el-form-item label="销售区域" prop="marketingAreaName">
+            <el-form-item label="销售区域" prop="marketingAreaName" :rules="{ required: true, message: '请选择销售区域', trigger: 'blur' }">
               <el-select clearable v-model="basicForm.marketingAreaName" size="mini" :disabled="sonDisable" @focus="choose('MK_SALESAREA_PARAM', true, '销售区域')" style="width: 200px">
                 <el-option
                   v-for="item in deptOptions"
@@ -118,6 +118,7 @@
         <span>明细信息</span>
         <div class="btn_grooup">
           <el-button type="primary" size="mini" @click="addLine" v-if="!sonDisable">增行</el-button>
+          <el-button type="primary" size="mini"  @click="copy" v-if="sonPageStu == 'check'">复制</el-button>
           <el-button type="primary" size="mini" @click="delItems" v-if="sonPageStu == 'edit'">批量删除</el-button>
           <el-button type="primary" size="mini" @click="edit" v-if="sonPageStu == 'check'">编辑</el-button>
         </div>
@@ -125,7 +126,7 @@
         <el-table 
           :data="basicForm.mkBoPlanItemList" 
           fit
-          max-height="300"
+          max-height="600"
           style="font-size: 12px;"
           @selection-change="handleSelectionChange"
           :cell-class-name="cellClassName"
@@ -151,7 +152,7 @@
 
           <el-table-column show-overflow-tooltip label="客户名称" prop="customerName" min-width="230">
             <template slot-scope="scope">
-              <el-form-item class="hang">
+              <el-form-item class="hang" :prop="'mkBoPlanItemList.' + scope.$index + '.' + 'customerName'" :rules="{ required: true, message: '请选择客户', trigger: 'blur' }">
                 <el-select clearable size="mini" v-model="scope.row.customerName" :disabled="sonDisable" @focus="chooseSon(scope.$index, 'CUSTOMER_PARAM_ZT', true, '客户')" style="width: 200px">
                   <el-option v-for="item in customerOptions" :key="item.id" :label="item.name" :value="item.code" />
                 </el-select>
@@ -161,7 +162,7 @@
 
           <el-table-column show-overflow-tooltip label="联系人" prop="contactName" min-width="230">
             <template slot-scope="scope">
-              <el-form-item class="hang">
+              <el-form-item class="hang" :prop="'mkBoPlanItemList.' + scope.$index + '.' + 'contactName'" :rules="{ required: true, message: '请选择联系人', trigger: 'blur' }">
                 <el-select clearable size="mini" v-model="scope.row.contactName" :disabled="sonDisable" @focus="chooseSon(scope.$index, 'LINKMAN_PARAM', true, '联系人', {})" style="width: 200px">
                   <el-option v-for="item in linkOptions" :key="item.id" :label="item.name" :value="item.code" />
                 </el-select>
@@ -171,7 +172,7 @@
 
           <el-table-column show-overflow-tooltip label="详细地址" prop="address" min-width="200">
             <template slot-scope="scope">
-              <el-form-item class="hang">
+              <el-form-item class="hang" :prop="'mkBoPlanItemList.' + scope.$index + '.' + 'address'">
                 <el-input clearable :readonly="sonDisable" size="mini" v-model="scope.row.address"/>
               </el-form-item>
             </template>
@@ -179,7 +180,7 @@
 
           <el-table-column show-overflow-tooltip label="拜访目的" prop="purpose" min-width="200">
             <template slot-scope="scope">
-              <el-form-item class="hang">
+              <el-form-item class="hang" :prop="'mkBoPlanItemList.' + scope.$index + '.' + 'purpose'" :rules="{ required: true, message: '请选择拜访目的', trigger: 'blur' }">
                 <el-select clearable :disabled="sonDisable" v-model="scope.row.purpose" size="mini">
                   <el-option v-for=" dict in dict.type.mk_bo_behavior_goal" :key="dict.value" :label="dict.label" :value="dict.value">
                   </el-option>
@@ -188,10 +189,17 @@
             </template>
           </el-table-column>
 
-          <el-table-column :readonly="sonDisable" show-overflow-tooltip label="商机" prop="boName" min-width="200"/>
+          <el-table-column :readonly="sonDisable" show-overflow-tooltip label="商机" prop="boName" min-width="200">
+            <template slot-scope="scope">
+              <el-form-item class="hang" :prop="'mkBoPlanItemList.' + scope.$index + '.' + 'boName'">
+                <el-input clearable :readonly="sonDisable" size="mini" v-model="scope.row.boName"/>
+              </el-form-item>
+            </template>
+          </el-table-column>
+
           <el-table-column :readonly="sonDisable" show-overflow-tooltip label="营销活动" prop="marketingCampaign" min-width="200">
             <template slot-scope="scope">
-              <el-form-item class="hang">
+              <el-form-item class="hang" :prop="'mkBoPlanItemList.' + scope.$index + '.' + 'marketingCampaign'">
                 <el-input clearable :readonly="sonDisable" size="mini" v-model="scope.row.marketingCampaign"/>
               </el-form-item>
             </template>
@@ -214,10 +222,10 @@
       <el-col :span="1.5">
         <el-button type="primary" size="mini" plain @click="save" v-if="sonPageStu == 'add' || sonPageStu == 'edit'">保存</el-button>
       </el-col>
-      <el-col :span="1.5" style="margin: 0 10px;">
+      <!-- <el-col :span="1.5" style="margin: 0 10px;">
         <el-button type="primary" size="mini" plain @click="submit" v-if="sonPageStu == 'check' && (row.status == '0' || row.status == '3')">提交</el-button>
-      </el-col>
-      <el-col :span="1.5">
+      </el-col> -->
+      <el-col :span="1.5" style="margin: 0 10px;">
         <el-button size="mini" plain @click="back">返回</el-button>
       </el-col>
 
@@ -253,32 +261,21 @@ export default {
       // },
       basicForm: {
         id: '',
-        planId: '',
         planCode: '',
         planName :'',
         charger: '',
-        chargerName: '',
-        type: '0',
+        chargerName: this.$store.state.user.nickName,
         dept: '',
-        deptName: '',
-        startDate: this.getWeek(1),
-        deadlineTime: this.getWeek(7),
-        date: '',
+        deptName: this.$store.state.user.deptName,
+        startDate: this.getNextWeek(1),
+        deadlineTime: this.getNextWeek(7),
+        type: '0',
+        state: '0',
         marketingArea: '',
         marketingAreaName: '',
-        state: '0',
-        customer: '',
-        customerName: '',
-        contact: '',
-        contactName: '',
-        address: '',
-        purpose: '',
-        bo: '',
-        boName: '',
-        marketingCampaign: '',
         mkBoPlanItemList: []
       },
-      delDemandItemList: [],
+      delPlanItemList: [],
       basicRules: {},
       tableList: [],
       referCondition: {
@@ -298,43 +295,67 @@ export default {
       personOptions: [],
       deptOptions: [],
       customerOptions: [],
-      pickerOptionsEnd: {
-        disabledDate: (time) => {
-          return time.getTime() < Date.now() - 1 * 24 * 60 * 60 * 1000
-        }
-      },
-      isBDXQ: false,
-      isYl: false,
+      salesAreaOptions: [],
+      //判断默认明细行带出完毕后日期等于当前日期的标识
+      isFlag: false
     }
   },
   updated() {},
   mounted() {},
   created() {
+    //查看系统数据
+    // console.log(this.$store.state.user, 'this.$store.state.user')
     if(this.pageStu == 'check') {
       console.log('数据', this.row)
       this.getDetails(this.row)
-    } else if(this.pageStu == 'edit') {
+    } else if (this.pageStu == 'edit') {
       this.getDetails(this.row)
+    } else if (this.pageStu == 'add') {
+    //新增时默认带出7条明细行
+    this.defaultDetailLine(7)
     }
   },
   methods:{
+    copy() {
+      this.isFlag = true;
+      this.$modal.notifySuccess("复制成功");
+      this.sonPageStu = 'add'
+      this.sonDisable = false
+      // this.getDetails(this.row)
+      this.basicForm.id = ''
+      this.basicForm.code = ''
+      this.basicForm.createBy = ''
+      this.basicForm.chargerName = this.$store.state.user.name
+      this.basicForm.deptName = this.$store.state.user.deptId
+      if (this.basicForm.chargerName) { this.reBackRefer('CONTACTS_PARAM', this.basicForm.chargerName) }
+      if (this.basicForm.marketingAreaName) { this.reBackRefer('MK_SALESAREA_PARAM', this.basicForm.marketingAreaName) }
+      if (this.basicForm.deptName) { this.reBackRefer('DEPT_PARAM', this.basicForm.deptName) }
+      // this.basicForm.mkBoPlanItemList.forEach(item => {
+        // item.date = ''
+        // item.customer = ''
+        // item.customerName = ''
+        // item.contact = ''
+        // item.contactName = ''
+        // item.address = ''
+        // item.purpose = ''
+        // item.bo = ''
+        // item.boName = ''
+        // item.marketingCampaign = ''
+      // })
+    },
     handleData() {
       console.log('222')
       // 复制新增把id,编码,创建人置为空,子表去掉id
       this.basicForm.id = ''
-      this.basicForm.code = ''
+      this.basicForm.planCode = ''
       this.basicForm.createBy = ''
-      this.basicForm.source = '4'
       if (this.basicForm.mkBoPlanItemList.length !== 0) {
         this.basicForm.mkBoPlanItemList.forEach(item => {
           if (item.id) {
             delete item.id
           }
-          if (item.demandId) {
-            delete item.demandId
-          }
-          if (item.allotCode) {
-            delete item.allotCode
+          if (item.planId) {
+            delete item.planId
           }
         })
       }
@@ -367,12 +388,12 @@ export default {
               })
             } else if (this.sonPageStu == 'edit') {
               let list = []
-              list.push(...this.basicForm.mkBoPlanItemList, ...this.delDemandItemList)
+              list.push(...this.basicForm.mkBoPlanItemList, ...this.delPlanItemList)
               // 深拷贝一下参数对象
               let param = JSON.parse(JSON.stringify(this.basicForm))
               console.log('深拷贝对象',param);
               param.mkBoPlanItemList = list
-              // this.basicForm.mkBoPlanItemList.push(...this.delDemandItemList)
+              // this.basicForm.mkBoPlanItemList.push(...this.delPlanItemList)
               editPlan(param).then(res => {
                 if (res.code === 200) {
                   this.$modal.msgSuccess("编辑成功");
@@ -389,26 +410,29 @@ export default {
         this.$modal.msgWarning("明细信息不能为空!");
       }
     },
-    submit() {
-      this.$modal.loading("提交中...");
-      submitDemand(this.basicForm).then(res => {
-        if (res.code === 200) {
-          this.$modal.msgSuccess("提交成功");
-          this.$modal.closeLoading();
-          this.back()
-        }
-      }).catch(err => {
-        this.$modal.closeLoading();
-      })
-    },
+    // submit() {
+    //   this.$modal.loading("提交中...");
+    //   submitDemand(this.basicForm).then(res => {
+    //     if (res.code === 200) {
+    //       this.$modal.msgSuccess("提交成功");
+    //       this.$modal.closeLoading();
+    //       this.back()
+    //     }
+    //   }).catch(err => {
+    //     this.$modal.closeLoading();
+    //   })
+    // },
     // 增行
-    addLine() {
+    addLine(date) {
+      if (this.isFlag) {
+        date = this.getCurrentTime();
+      }
       const newLine = {
         contacts: null,
         id: null,
         planId: null,
         planCode: null,
-        date: this.getCurrentTime(),
+        date: date,
         customer: null,
         customerName: null,
         contact: null,
@@ -457,14 +481,16 @@ export default {
       this.basicForm.mkBoPlanItemList = this.basicForm.mkBoPlanItemList.filter(item => {
         return item.delFlag == '0'
       })
-      this.delDemandItemList.push(...delList)
-      console.log('删除的数组',this.delDemandItemList)
+      this.delPlanItemList.push(...delList)
+      console.log('删除的数组',this.delPlanItemList)
     },
     edit() {
-      // this.isList = false
-      // this.page = 'edit'
-      // this.rowDetail = row
-      // this.disable = false
+      this.isFlag = true;
+      this.sonPageStu = 'edit'
+      this.sonDisable = false
+      this.basicForm.mkBoPlanItemList.forEach(item => {
+        item.planCode = this.basicForm.planCode
+      })
     },
     back() {
       this.$emit('jugislist', true)
@@ -474,6 +500,17 @@ export default {
       // }
       this.$emit('refresh')
     },
+    // 如果需要回显则调用详情接口
+    getDetails(row) {
+      getPlanDetail(row.id).then(res => {
+        if (res.code === 200) {
+          this.basicForm = res.data
+          for (let i = 0; i < this.basicForm.mkBoPlanItemList.length; i++) {
+            this.basicForm.mkBoPlanItemList[i].planCode = res.data.planCode
+          }
+        }
+      })
+    },
     // 单元格标红
     cellClassName({row, column, rowIndex, columnIndex}) {
       if(this.basicForm.isSpeical == 'N' && column.label == '需求可用周期' && Number(row.demandPeriod) > 1.5 && Number(row.demandPeriod) > Number(row.minOrderQty)) {
@@ -494,8 +531,8 @@ export default {
     // 回显参照框
     reBackRefer(type, id, title) {
       getRefer({type: type, id: id}).then(res => {
-        if(type == 'LINKMAN_PARAM') {
-          this.linkOptions = res.rows
+        if(type == 'MK_SALESAREA_PARAM') {
+          this.salesAreaOptions = res.rows
         }
         if (type == 'CUSTOMER_PARAM_ZT') {
           this.customerOptions = res.rows
@@ -503,10 +540,10 @@ export default {
         if (type == 'CONTACTS_PARAM') {
           this.personOptions = res.rows
         }
-        if (type == 'DEPT_PARAM') {
-          this.deptOptions = res.rows
+        if (type == 'LINKMAN_PARAM') {
+          this.linkOptions = res.rows
         }
-        if (type == 'MK_SALESAREA_PARAM') {
+        if (type == 'DEPT_PARAM') {
           this.deptOptions = res.rows
         }
       })
@@ -539,7 +576,7 @@ export default {
         this.basicForm.chargerName = selection[0].name
       }
       if(this.referCondition.type == 'MK_SALESAREA_PARAM') {
-        this.personOptions = selection
+        this.salesAreaOptions = selection
         this.basicForm.marketingArea = selection[0].id
         this.basicForm.marketingAreaName = selection[0].name
       }
@@ -560,7 +597,7 @@ export default {
       return date;
     },
     //获取下周七天日期,day表示想要星期几
-    getWeek(day) {
+    getNextWeek(day) {
       const week = [];
       for (let i = 0; i < 7; i++) {
         let Stamp = new Date();
@@ -569,6 +606,13 @@ export default {
         week[i] = Stamp.getFullYear() + '-' + (Stamp.getMonth() + 1) + '-' + Stamp.getDate();
       }
       return week[day - 1];
+    },
+    //新增时默认带出num条明细行
+    defaultDetailLine(num) {
+      for (let i = 0; i < num; i++) {
+        this.addLine(this.getNextWeek(i + 1));
+      }
+      this.isFlag = true;
     }
   }
 }

+ 44 - 33
src/views/business/spd/task_management/visitingPlan/index.vue

@@ -172,6 +172,8 @@
         max-height="550"
         style="font-size: 12px;"
         @selection-change="handleSelectionChange"
+        :row-class-name="tableRowClassName"
+        @row-dblclick="getEmpDetail"
         >
           <el-table-column type="selection" align="center" min-width="55" />
           <el-table-column type="index" label="序号" min-width="50" align="center"/>
@@ -192,7 +194,7 @@
               <el-button type="text" size="mini" @click="check(scope.row)">查看</el-button>
               <el-button type="text" size="mini" v-if="scope.row.state == '0'" @click="edit(scope.row)">编辑</el-button>
               <el-button type="text" size="mini" v-if="scope.row.state == '0'" @click="commit(scope.row)">提交</el-button>
-              <el-button type="text" size="mini" @click="deleteids(scope.row)">删除</el-button>
+              <el-button type="text" size="mini" v-if="scope.row.state == '0'" @click="deleteids(scope.row)">删除</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -356,38 +358,38 @@ export default {
       this.ids = selection.map(item => item.id)
       console.log('选中数组', this.ids.join())
     },
-    mbDownload() {
-      downLoadDemand(this.download).then(res => {
-        console.log('下载的文件流', res)
-        const blob = new Blob([res], {
-          type: "application/vnd.ms-excel;charset=UTF-8",
-        });// 创建一个类文件对象:Blob对象表示一个不可变的、原始数据的类文件对象
-        const downloadElement = document.createElement("a"); //创建a标签
-        const href = window.URL.createObjectURL(blob); // 创建下载的链接
-        // var temp = res.headers["content-disposition"]; 
-        // var fileName = decodeURIComponent(temp.split("filename=")[1]); // 中文需要转码 (前端乱码)
-        // var name = fileName.split(";")[0]; //切割成文件名
-        downloadElement.href = href;  //下载地址
-        downloadElement.download = '模板'; // 下载后文件名
-        document.body.appendChild(downloadElement);
-        downloadElement.click(); // 点击下载
-        document.body.removeChild(downloadElement); // 下载完成移除元素
-        window.URL.revokeObjectURL(href); // 释放blob对象
-        this.download.open = false
-      })
-    },
-    // 关闭模板下载弹窗清空参数
-    clearDownload() {
-      // 模板下载参数
-      this.download =  {
-        open: false,
-        customer: '',
-        warehouse: '',
-        warehouseId: '',
-        cargoSpace: '',
-        category: ''
-      }
-    },
+    // mbDownload() {
+    //   downLoadDemand(this.download).then(res => {
+    //     console.log('下载的文件流', res)
+    //     const blob = new Blob([res], {
+    //       type: "application/vnd.ms-excel;charset=UTF-8",
+    //     });// 创建一个类文件对象:Blob对象表示一个不可变的、原始数据的类文件对象
+    //     const downloadElement = document.createElement("a"); //创建a标签
+    //     const href = window.URL.createObjectURL(blob); // 创建下载的链接
+    //     // var temp = res.headers["content-disposition"]; 
+    //     // var fileName = decodeURIComponent(temp.split("filename=")[1]); // 中文需要转码 (前端乱码)
+    //     // var name = fileName.split(";")[0]; //切割成文件名
+    //     downloadElement.href = href;  //下载地址
+    //     downloadElement.download = '模板'; // 下载后文件名
+    //     document.body.appendChild(downloadElement);
+    //     downloadElement.click(); // 点击下载
+    //     document.body.removeChild(downloadElement); // 下载完成移除元素
+    //     window.URL.revokeObjectURL(href); // 释放blob对象
+    //     this.download.open = false
+    //   })
+    // },
+    // // 关闭模板下载弹窗清空参数
+    // clearDownload() {
+    //   // 模板下载参数
+    //   this.download =  {
+    //     open: false,
+    //     customer: '',
+    //     warehouse: '',
+    //     warehouseId: '',
+    //     cargoSpace: '',
+    //     category: ''
+    //   }
+    // },
     handleCommand(command) {
       // alert(command)
       if(command == '模板下载') {
@@ -580,6 +582,15 @@ export default {
       this.classOptions.push(selection)
       this.download.category = selection.code
     },
+    tableRowClassName({ row, rowIndex }) {
+      row.index = rowIndex;
+    },
+    getEmpDetail(row, event, column) {
+      let index = row.index;
+      console.log(index) //此时的index就是单选行的下标
+      this.check(row)
+      //this.index = row.index;  也可以直接在data()定义一个值来存放下标
+    },
   }
 }
 </script>