浏览代码

目标管理-问题处理;

001295 1 年之前
父节点
当前提交
95878e220f

+ 9 - 0
src/api/business/spd/goal_management/annualSaleGoal.js

@@ -42,3 +42,12 @@ export function delAnnualSaleGoal(id) {
     method: 'delete'
   })
 }
+
+//提交
+export function submit(id) {
+  return request({
+    url: '/goal_management/annualSaleGoal/submit',
+    method: 'post',
+    data: id
+  })
+}

+ 12 - 0
src/api/business/spd/goal_management/annualSaleGoalDetails.js

@@ -42,3 +42,15 @@ export function delAnnualSaleGoalDetails(id) {
     method: 'delete'
   })
 }
+
+//导入明细
+export function importData(data) {
+  return request({
+    url: `/goal_management/annualSaleGoalDetails/importData`,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}

+ 9 - 0
src/api/business/spd/goal_management/annualSaleGoalMerge.js

@@ -42,3 +42,12 @@ export function delAnnualSaleGoalMerge(id) {
     method: 'delete'
   })
 }
+
+//提交
+export function submit(id) {
+  return request({
+    url: '/goal_management/annualSaleGoalMerge/submit',
+    method: 'post',
+    data: id
+  })
+}

+ 9 - 0
src/api/business/spd/goal_management/monthGoalMerge.js

@@ -42,3 +42,12 @@ export function delMonthGoalMerge(id) {
     method: 'delete'
   })
 }
+
+//提交
+export function submit(id) {
+  return request({
+    url: '/goal_management/monthGoalMerge/submit',
+    method: 'post',
+    data: id
+  })
+}

+ 9 - 0
src/api/business/spd/goal_management/monthReturnGoal.js

@@ -42,3 +42,12 @@ export function delMonthReturnGoal(id) {
     method: 'delete'
   })
 }
+
+//提交
+export function submit(id) {
+  return request({
+    url: '/mk/monthReturnGoal/submit',
+    method: 'post',
+    data: id
+  })
+}

+ 12 - 0
src/api/business/spd/goal_management/monthReturnGoalDetails.js

@@ -42,3 +42,15 @@ export function delMonthReturnGoalDetails(id) {
     method: 'delete'
   })
 }
+
+//导入明细
+export function importData(data) {
+  return request({
+    url: `/mk/monthReturnGoalDetails/importData`,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}

+ 9 - 0
src/api/business/spd/goal_management/monthReturnMerge.js

@@ -42,3 +42,12 @@ export function delMonthReturnMerge(id) {
     method: 'delete'
   })
 }
+
+//提交
+export function submit(id) {
+  return request({
+    url: '/mk/monthReturnMerge/submit',
+    method: 'post',
+    data: id
+  })
+}

+ 9 - 0
src/api/business/spd/goal_management/monthSaleGoal.js

@@ -42,3 +42,12 @@ export function delMonthSaleGoal(id) {
     method: 'delete'
   })
 }
+
+//提交
+export function submit(id) {
+  return request({
+    url: '/goal_management/monthSaleGoal/submit',
+    method: 'post',
+    data: id
+  })
+}

+ 12 - 0
src/api/business/spd/goal_management/monthSaleGoalDetails.js

@@ -42,3 +42,15 @@ export function delMonthSaleGoalDetails(id) {
     method: 'delete'
   })
 }
+
+//导入明细
+export function importData(data) {
+  return request({
+    url: `/goal_management/monthSaleGoalDetails/importData`,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}

+ 8 - 0
src/api/business/spd/starget/target.js

@@ -50,3 +50,11 @@ export function delTarget(id) {
     method: 'delete'
   })
 }
+
+// 提交营销目标
+export function submitTarget(id) {
+  return request({
+    url: '/mk/target/submit/' + id,
+    method: 'get',
+  })
+}

+ 36 - 10
src/views/business/spd/bo/basic/index.vue

@@ -38,6 +38,7 @@
           size="mini"
           v-model="queryParams.boType"
           @change="boTypeChange"
+          placeholder=""
           clearable
         >
           <el-option
@@ -49,7 +50,7 @@
         </el-select>
       </el-form-item>
       <el-form-item label="商机阶段" prop="boStage">
-        <el-select size="mini" v-model="queryParams.boStage" clearable>
+        <el-select size="mini" v-model="queryParams.boStage" placeholder="" clearable>
           <el-option
             v-for="item in mk_bo_stage"
             :key="item.code"
@@ -58,7 +59,7 @@
           ></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="商机状态" prop="boState" clearable>
+      <!-- <el-form-item label="商机状态" prop="boState" clearable>
         <el-select size="mini" v-model="queryParams.boState" clearable>
           <el-option
             v-for="dict in dict.type.mk_bo_state"
@@ -67,9 +68,9 @@
             :value="dict.value"
           ></el-option>
         </el-select>
-      </el-form-item>
+      </el-form-item> -->
       <el-form-item size="mini" label="商机来源" prop="boSource">
-        <el-select v-model="queryParams.boSource" clearable>
+        <el-select v-model="queryParams.boSource" placeholder="" clearable>
           <el-option
             v-for="dict in dict.type.mk_bo_source"
             :key="dict.value"
@@ -78,8 +79,8 @@
           ></el-option>
         </el-select>
       </el-form-item>
-      <!-- <el-form-item label="赢单状态" prop="winningState">
-        <el-select v-model="queryParams.winningState" placeholder="请输入赢单状态" clearable>
+      <el-form-item label="赢单状态" prop="winningState">
+        <el-select v-model="queryParams.winningState" placeholder="" clearable>
           <el-option
             v-for="dict in dict.type.mk_bo_winstate"
             :key="dict.value"
@@ -87,7 +88,7 @@
             :value="dict.value"
           ></el-option>
         </el-select>
-      </el-form-item> -->
+      </el-form-item>
       <el-form-item label="创建时间">
         <el-date-picker
           size="mini"
@@ -96,8 +97,7 @@
           value-format="yyyy-MM-dd"
           type="daterange"
           range-separator="-"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
+          :picker-options="pickerOptions"
         ></el-date-picker>
       </el-form-item>
       <el-form-item>
@@ -132,7 +132,6 @@
       @cell-dblclick="enterDetails"
       height="700px"
     >
-      <el-table-column type="selection" align="center" />
       <el-table-column
         width="150"
         label="编号"
@@ -598,6 +597,33 @@ export default {
       totalRevenue:"***营收总额",
       //预估额
       estimate:"***预估额(万元)",
+      pickerOptions: {
+        shortcuts: [{
+          text: '最近一周',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '最近一个月',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '最近三个月',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+            picker.$emit('pick', [start, end]);
+          }
+        }]
+      },
     };
   },
   watch: {

+ 28 - 0
src/views/business/spd/bo/behavior/index.vue

@@ -37,6 +37,7 @@
           value-format="yyyy-MM-dd"
           type="daterange"
           range-separator="-"
+          :picker-options="pickerOptions"
         ></el-date-picker>
       </el-form-item>
       <el-form-item size="mini" label="拜访目的" prop="purpose">
@@ -417,6 +418,33 @@ export default {
       },
       //当前操作状态
       operatingState: '',
+      pickerOptions: {
+        shortcuts: [{
+          text: '最近一周',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '最近一个月',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '最近三个月',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+            picker.$emit('pick', [start, end]);
+          }
+        }]
+      },
     };
   },
   created() {

+ 120 - 124
src/views/business/spd/target/AnnualSaleGoal.vue

@@ -102,14 +102,18 @@
           </el-form-item>
         </el-col>
         <el-col :span="6">
-          <el-form-item label="单据状态" prop="documentStatus">
-            <el-select v-model="queryParams.documentStatus" placeholder="请选择">
+          <el-form-item label="单据状态" prop="status">
+            <el-select
+              size="mini"
+              v-model="queryParams.status"
+              clearable
+            >
               <el-option
-                v-for="item in [{value: '未提交', label: '未提交'}, {value: '审核中', label: '审核中'}, {value: '已审核', label: '已审核'}]"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value">
-              </el-option>
+                v-for="dict in dict.type.sys_status"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              ></el-option>
             </el-select>
           </el-form-item>
         </el-col>
@@ -155,42 +159,49 @@
       <el-table-column label="部门" align="center" prop="dept" width="180"/>
       <el-table-column label="目标合计" align="center" prop="goalTotal"/>
       <el-table-column label="备注" align="center" prop="notes" width="180"/>
-      <el-table-column label="单据状态" align="center" prop="documentStatus"/>
+      <el-table-column show-overflow-tooltip label="状态" align="center" width="200" prop="status">
+        <template slot-scope="scope">
+          <dict-tag
+            :options="dict.type.sys_status"
+            :value="scope.row.status"
+          />
+        </template>
+      </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180" fixed="right">
         <template slot-scope="scope">
-          <el-button
+          <div v-if="scope.row.status == '0' || scope.row.status == '3'">
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleUpdate(scope.row)"
+            >修改
+            </el-button>
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleDelete(scope.row)"
+            >删除
+            </el-button>
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleSubmit(scope.row)"
+            >提交</el-button>
+          </div>
+          <div v-if="scope.row.status == '1'">
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleReback(scope.row)"
+            >收回</el-button>
+          </div>
+          <!-- <el-button
             size="mini"
             type="text"
             icon="el-icon-document-copy"
             @click="handleCopy(scope.row.id)"
           >复制
-          </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-          >修改
-          </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-          >删除
-          </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleSubmit(scope.row)"
-          >提交</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleReback(scope.row)"
-          >收回</el-button>
+          </el-button> -->
         </template>
       </el-table-column>
     </el-table>
@@ -279,8 +290,15 @@
             </el-form-item>
           </el-col>
           <el-col :span="6">
-            <el-form-item label="单据状态" prop="documentStatus">
-              <el-input v-model="form.documentStatus" placeholder="未提交" clearable disabled/>
+            <el-form-item label="单据状态" prop="type">
+              <el-select v-model="form.status" placeholder="" disabled>
+                <el-option
+                  v-for="dict in dict.type.sys_status"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
         </el-row>
@@ -288,7 +306,12 @@
       <div id="addDetails">
         <el-row :gutter="10" class="mb8" style="margin-left: 80%">
           <el-col :span="1.5">
-            <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport">导入明细</el-button>
+            <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleTemplateDownload">模板下载</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-upload ref="upload" action="" :http-request="handleImport">
+              <el-button size="mini" type="primary">导入明细</el-button>
+            </el-upload>
           </el-col>
           <el-col :span="1.5">
             <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAddDetails">增行</el-button>
@@ -447,36 +470,6 @@
         </div>
       </div>
     </el-drawer>
-
-    <!-- 用户导入对话框 -->
-    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
-      <el-upload
-        ref="upload"
-        :limit="1"
-        accept=".xlsx, .xls"
-        :headers="upload.headers"
-        :action="upload.url + '?updateSupport=' + upload.updateSupport"
-        :disabled="upload.isUploading"
-        :on-progress="handleFileUploadProgress"
-        :on-success="handleFileSuccess"
-        :auto-upload="false"
-        drag
-      >
-        <i class="el-icon-upload"></i>
-        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-        <div class="el-upload__tip text-center" slot="tip">
-          <div class="el-upload__tip" slot="tip">
-            <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据
-          </div>
-          <span>仅允许导入xls、xlsx格式文件。</span>
-          <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
-        </div>
-      </el-upload>
-      <div slot="footer">
-        <el-button type="primary" @click="submitFileForm">确 定</el-button>
-        <el-button @click="upload.open = false">取 消</el-button>
-      </div>
-    </el-dialog>
     <!-- 批量修改对话框-->
     <el-dialog title="批量修改" width="30%" :visible.sync="dialogUpdateMore.dialogFormVisible" append-to-body @closed="resetDialogUpdateMore">
       <el-form>
@@ -526,11 +519,13 @@ import {
   getAnnualSaleGoal,
   delAnnualSaleGoal,
   addAnnualSaleGoal,
-  updateAnnualSaleGoal
+  updateAnnualSaleGoal,
+  submit,
 } from "@/api/business/spd/goal_management/annualSaleGoal";
 import {
   delAnnualSaleGoalDetails,
-  getAnnualSaleGoalDetails
+  getAnnualSaleGoalDetails,
+  importData
 } from "@/api/business/spd/goal_management/annualSaleGoalDetails"
 import { getToken } from "@/utils/auth";
 import { getSummary } from "@/api/business/spd/goal_management/commonWays";
@@ -541,6 +536,7 @@ import ElPopoverSelectV2 from "@/components/popover-select-v2"
 
 export default {
   name: "AnnualSaleGoal",
+  dicts: ["sys_status"],
   components: {
     TreeRefers, ElPopoverSelectV2
   },
@@ -582,7 +578,7 @@ export default {
         dept: null,
         goalTotal: null,
         notes: null,
-        documentStatus: null,
+        status: null,
         delFlag: null,
         documentDateRange: null
       },
@@ -630,7 +626,7 @@ export default {
         dept: null,
         goalTotal: null,
         notes: null,
-        documentStatus: '开立态',
+        status: '开立态',
         deleteStatus: 0,
         annualGoalMergeDetails: []
       },
@@ -744,7 +740,7 @@ export default {
         dept: null,
         goalTotal: null,
         notes: null,
-        documentStatus: null,
+        status: null,
         deleteStatus: null
       };
       this.resetForm("form");
@@ -773,7 +769,7 @@ export default {
         dept: null,
         goalTotal: null,
         notes: null,
-        documentStatus: null,
+        status: null,
         delFlag: null,
         documentDateRange: null
       }
@@ -885,7 +881,7 @@ export default {
               this.getList();
             });
           } else {
-            this.form.documentStatus = '未提交'
+            this.form.status = '0'
             this.form.annualGoalMergeDetails = JSON.parse(JSON.stringify(this.annualSaleGoalDetailsList))
             console.log(this.form);
             addAnnualSaleGoal(this.form).then(response => {
@@ -1037,53 +1033,6 @@ export default {
         this.handleExportDetails()
       }
     },
-    /** 导入按钮操作 */
-    handleImport() {
-      this.upload.open = true;
-      if (this.open) {
-        this.upload.title = "年销售目标填报明细导入"
-        this.upload.url = process.env.VUE_APP_BASE_API + "goal_management/annualSaleGoalDetails/importData/" + this.form.id
-      } else {
-        this.upload.title = "年销售目标填报导入";
-        this.upload.url = process.env.VUE_APP_BASE_API + "goal_management/annualSaleGoal/importData"
-      }
-    },
-    /** 下载模板操作 */
-    importTemplate() {
-      if (this.open) {
-        this.download('goal_management/annualSaleGoalDetails/importTemplate', {
-        }, `annualSaleGoalDetails_${new Date().getTime()}.xlsx`)
-      } else {
-        this.download('goal_management/annualSaleGoal/importTemplate', {
-        }, `annualSaleGoal_${new Date().getTime()}.xlsx`)
-      }
-    },
-    // 文件上传中处理
-    handleFileUploadProgress(event, file, fileList) {
-      this.upload.isUploading = true;
-    },
-    // 文件上传成功处理
-    handleFileSuccess(response, file, fileList) {
-      console.log(response);
-      this.upload.open = false;
-      this.upload.isUploading = false;
-      this.$refs.upload.clearFiles();
-      this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
-      if (this.open) {
-        const array = response.data
-        for (const arrayElement of array) {
-          arrayElement.id = null
-          this.annualSaleGoalDetailsList.push(arrayElement)
-        }
-        this.computeTotal()
-      } else {
-        this.getList();
-      }
-    },
-    // 提交上传文件
-    submitFileForm() {
-      this.$refs.upload.submit();
-    },
     // 选择物料后,给一级分类和二级分类复赋值
     setClassify(one, two, obj) {
       const oneArray = one.split("&")
@@ -1126,7 +1075,54 @@ export default {
     resetDialogUpdateMore() {
       this.dialogUpdateMore.updateName = null
       this.dialogUpdateMore.updateData = null
-    }
+    },
+    //提交
+    async handleSubmit(row){
+      this.$modal.loading("提交中...");
+      try {
+        const {msg, code} = await submit(row.id);
+        if (code === 200) {
+          this.$modal.notifySuccess("提交成功");
+          this.$modal.closeLoading();
+          row.status = '1'
+          // this.getList(this.queryParams)
+        }
+      }catch (err) {
+        console.error(err);
+        this.$modal.closeLoading();
+      }
+    },
+    //收回
+    handleReback(){
+
+    },
+    //模板下载
+    handleTemplateDownload(){
+      this.download('/goal_management/annualSaleGoalDetails/importTemplate', {
+      }, `AnnualSaleGoal_${new Date().getTime()}.xlsx`)
+    },
+    //导入
+    handleImport(file){
+      this.loading = true;
+      let formData = new FormData()
+      formData.append('file',file.file)
+      importData(formData).then((res) => {
+        console.log('res',res);
+        if(res.code == '200'){
+          this.form.annualGoalMergeDetails.push.apply(this.form.annualGoalMergeDetails,res.data);
+          this.$message.success(res.msg);
+        }else{
+          this.$message.success(res.msg);
+        }
+        this.loading = false;
+      }).catch((e) => {
+        this.$message.error(e.message)
+      }).finally((e) => {
+        this.$refs['upload'].clearFiles();
+        this.resetList();
+        this.loading = false;
+      })
+    },
   }
 };
 </script>

+ 83 - 49
src/views/business/spd/target/AnnualSaleGoalMerge.vue

@@ -113,14 +113,18 @@
           </el-form-item>
         </el-col>
         <el-col :span="6">
-          <el-form-item label="单据状态" prop="documentStatus">
-            <el-select v-model="queryParams.documentStatus" placeholder="请选择">
+          <el-form-item label="单据状态" prop="status">
+            <el-select
+              size="mini"
+              v-model="queryParams.status"
+              clearable
+            >
               <el-option
-                v-for="item in [{value: '未提交', label: '未提交'}, {value: '审核中', label: '审核中'}, {value: '已审核', label: '已审核'}]"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value">
-              </el-option>
+                v-for="dict in dict.type.sys_status"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              ></el-option>
             </el-select>
           </el-form-item>
         </el-col>
@@ -162,6 +166,14 @@
         </template>
       </el-table-column>
       <el-table-column label="年度" align="center" prop="annual" width="180"/>
+      <el-table-column show-overflow-tooltip label="状态" align="center" width="200" prop="status">
+        <template slot-scope="scope">
+          <dict-tag
+            :options="dict.type.sys_status"
+            :value="scope.row.status"
+          />
+        </template>
+      </el-table-column>
       <el-table-column label="制单人" align="center" prop="creator" width="180"/>
       <el-table-column label="部门" align="center" prop="dept" width="180"/>
       <el-table-column label="目标类型" align="center" prop="goalCategory" width="180"/>
@@ -172,39 +184,32 @@
       <el-table-column label="备注" align="center" prop="notes" width="180"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180" fixed="right">
         <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-document-copy"
-            @click="handleCopy(scope.row.id)"
-          >复制
-          </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-          >修改
-          </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-          >删除
-          </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleSubmit(scope.row)"
-          >提交</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleReback(scope.row)"
-          >收回</el-button>
+          <div v-if="scope.row.status == '0' || scope.row.status == '3'">
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleUpdate(scope.row)"
+            >修改
+            </el-button>
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleDelete(scope.row)"
+            >删除
+            </el-button>
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleSubmit(scope.row)"
+            >提交</el-button>
+          </div>
+          <div v-if="scope.row.status == '1'">
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleReback(scope.row)"
+            >收回</el-button>
+          </div>
         </template>
       </el-table-column>
     </el-table>
@@ -312,8 +317,15 @@
             </el-form-item>
           </el-col>
           <el-col :span="6">
-            <el-form-item label="单据状态" prop="documentStatus">
-              <el-input v-model="form.documentStatus" placeholder="未提交" disabled />
+            <el-form-item label="单据状态" prop="type">
+              <el-select v-model="form.status" placeholder="" disabled>
+                <el-option
+                  v-for="dict in dict.type.sys_status"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
         </el-row>
@@ -693,7 +705,8 @@ import {
   delAnnualSaleGoalMerge,
   getAnnualSaleGoalMerge,
   listAnnualSaleGoalMerge,
-  updateAnnualSaleGoalMerge
+  updateAnnualSaleGoalMerge,
+  submit
 } from "@/api/business/spd/goal_management/annualSaleGoalMerge";
 import {
   mergeAnnualSaleMergeDetails,
@@ -713,6 +726,7 @@ export default {
   components: {
     TreeRefers, ElPopoverSelectV2
   },
+    dicts: ["sys_status"],
   data() {
     return {
       // 遮罩层
@@ -751,7 +765,7 @@ export default {
         goalCategory: null,
         goalTotal: null,
         notes: null,
-        documentStatus: null,
+        status: null,
         delFlag: null,
         saleZoneCode: null,
         saleZone: null,
@@ -803,7 +817,7 @@ export default {
         goalCategory: null,
         goalTotal: null,
         notes: null,
-        documentStatus: null,
+        status: null,
         delFlag: null,
         saleZoneCode: null,
         saleZone: null,
@@ -927,7 +941,7 @@ export default {
         goalCategory: null,
         goalTotal: null,
         notes: null,
-        documentStatus: null,
+        status: null,
         delFlag: null,
         saleZoneCode: null,
         saleZone: null,
@@ -961,7 +975,7 @@ export default {
         goalCategory: null,
         goalTotal: null,
         notes: null,
-        documentStatus: null,
+        status: null,
         delFlag: null,
         saleZoneCode: null,
         saleZone: null,
@@ -1079,7 +1093,7 @@ export default {
             });
           } else {
             this.form.annualGoalMergeDetailsList = this.annualSaleGoalMergeDetailsList
-            this.form.documentStatus = '未提交'
+            this.form.status = '0'
             console.log(this.form);
             addAnnualSaleGoalMerge(this.form).then(response => {
               this.$modal.msgSuccess("新增成功");
@@ -1460,7 +1474,27 @@ export default {
     // 提交上传文件
     submitFileForm() {
       this.$refs.upload.submit();
-    }
+    },
+    //提交
+    async handleSubmit(row){
+      this.$modal.loading("提交中...");
+      try {
+        const {msg, code} = await submit(row.id);
+        if (code === 200) {
+          this.$modal.notifySuccess("提交成功");
+          this.$modal.closeLoading();
+          row.status = '1'
+          // this.getList(this.queryParams)
+        }
+      }catch (err) {
+        console.error(err);
+        this.$modal.closeLoading();
+      }
+    },
+    //收回
+    handleReback(){
+
+    },
   }
 };
 </script>

+ 82 - 50
src/views/business/spd/target/MonthGoalMerge.vue

@@ -128,14 +128,18 @@
           </el-form-item>
         </el-col>
         <el-col :span="6">
-          <el-form-item label="单据状态" prop="documentStatus">
-            <el-select v-model="queryParams.documentStatus" placeholder="请选择">
+          <el-form-item label="单据状态" prop="status">
+            <el-select
+              size="mini"
+              v-model="queryParams.status"
+              clearable
+            >
               <el-option
-                v-for="item in [{value: '未提交', label: '未提交'}, {value: '审核中', label: '审核中'}, {value: '已审核', label: '已审核'}]"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value">
-              </el-option>
+                v-for="dict in dict.type.sys_status"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              ></el-option>
             </el-select>
           </el-form-item>
         </el-col>
@@ -181,42 +185,42 @@
       <el-table-column label="部门" align="center" prop="dept"/>
       <el-table-column label="目标类型" align="center" prop="goalCategory"/>
       <el-table-column label="目标值合计" align="center" prop="goalSum"/>
-      <el-table-column label="单据状态" align="center" prop="documentStatus"/>
+      <el-table-column show-overflow-tooltip label="状态" align="center" width="200" prop="status">
+        <template slot-scope="scope">
+          <dict-tag
+            :options="dict.type.sys_status"
+            :value="scope.row.status"
+          />
+        </template>
+      </el-table-column>
       <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
         <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-document-copy"
-            @click="handleCopy(scope.row.id)"
-          >复制
-          </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-          >修改
-          </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-          >删除
-          </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleSubmit(scope.row)"
-          >提交</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleReback(scope.row)"
-          >收回</el-button>
+          <div v-if="scope.row.status == '0' || scope.row.status == '3'">
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleUpdate(scope.row)"
+            >修改
+            </el-button>
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleDelete(scope.row)"
+            >删除
+            </el-button>
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleSubmit(scope.row)"
+            >提交</el-button>
+          </div>
+          <div v-if="scope.row.status == '1'">
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleReback(scope.row)"
+            >收回</el-button>
+          </div>
         </template>
       </el-table-column>
     </el-table>
@@ -344,8 +348,15 @@
             </el-form-item>
           </el-col>
           <el-col :span="6">
-            <el-form-item label="单据状态" prop="documentStatus">
-              <el-input v-model="form.documentStatus" placeholder="未提交" disabled/>
+            <el-form-item label="单据状态" prop="type">
+              <el-select v-model="form.status" placeholder="" disabled>
+                <el-option
+                  v-for="dict in dict.type.sys_status"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
         </el-row>
@@ -578,7 +589,8 @@ import {
   getMonthGoalMerge,
   delMonthGoalMerge,
   addMonthGoalMerge,
-  updateMonthGoalMerge
+  updateMonthGoalMerge,
+  submit
 } from "@/api/business/spd/goal_management/monthGoalMerge";
 import {
   getMonthGoalMergeDetails,
@@ -597,6 +609,7 @@ export default {
   components: {
     TreeRefers, ElPopoverSelectV2
   },
+  dicts: ["sys_status"],
   data() {
     return {
       // 遮罩层
@@ -637,7 +650,7 @@ export default {
         dept: null,
         goalCategory: null,
         goalSum: null,
-        documentStatus: null,
+        status: null,
         saleZoneCode: null,
         saleZone: null,
         oneLevelClassifyCode: null,
@@ -690,7 +703,7 @@ export default {
         dept: null,
         goalCategory: null,
         goalSum: null,
-        documentStatus: null,
+        status: null,
         saleZoneCode: null,
         saleZone: null,
         oneLevelClassifyCode: null,
@@ -804,7 +817,7 @@ export default {
         dept: null,
         goalCategory: null,
         goalSum: null,
-        documentStatus: null,
+        status: null,
         saleZoneCode: null,
         saleZone: null,
         oneLevelClassifyCode: null,
@@ -839,7 +852,7 @@ export default {
         dept: null,
         goalCategory: null,
         goalSum: null,
-        documentStatus: null,
+        status: null,
         saleZoneCode: null,
         saleZone: null,
         oneLevelClassifyCode: null,
@@ -944,7 +957,7 @@ export default {
               this.getList();
             });
           } else {
-            this.form.documentStatus = '未提交'
+            this.form.status = '0'
             this.form.monthMergeDetailsList = this.monthGoalMergeDetailsList
             console.log(this.form);
             addMonthGoalMerge(this.form).then(response => {
@@ -1346,7 +1359,26 @@ export default {
     // 提交上传文件
     submitFileForm() {
       this.$refs.upload.submit();
-    }
+    },
+    async handleSubmit(row){
+      this.$modal.loading("提交中...");
+      try {
+        const {msg, code} = await submit(row.id);
+        if (code === 200) {
+          this.$modal.notifySuccess("提交成功");
+          this.$modal.closeLoading();
+          row.status = '1'
+          // this.getList(this.queryParams)
+        }
+      }catch (err) {
+        console.error(err);
+        this.$modal.closeLoading();
+      }
+    },
+    //收回
+    handleReback(){
+
+    },
   }
 };
 </script>

+ 117 - 52
src/views/business/spd/target/MonthReturnGoal.vue

@@ -101,14 +101,18 @@
           </el-form-item>
         </el-col>
         <el-col :span="6">
-          <el-form-item label="单据状态" prop="documentStatus">
-            <el-select v-model="queryParams.documentStatus" placeholder="请选择">
+          <el-form-item label="单据状态" prop="status">
+            <el-select
+              size="mini"
+              v-model="queryParams.status"
+              clearable
+            >
               <el-option
-                v-for="item in [{value: '未提交', label: '未提交'}, {value: '审核中', label: '审核中'}, {value: '已审核', label: '已审核'}]"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value">
-              </el-option>
+                v-for="dict in dict.type.sys_status"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              ></el-option>
             </el-select>
           </el-form-item>
         </el-col>
@@ -152,42 +156,42 @@
       <el-table-column label="部门" align="center" prop="dept"/>
       <el-table-column label="目标合计" align="center" prop="goalSum"/>
       <el-table-column label="备注" align="center" prop="notes"/>
-      <el-table-column label="单据状态" align="center" prop="documentStatus"/>
+      <el-table-column show-overflow-tooltip label="状态" align="center" width="200" prop="status">
+        <template slot-scope="scope">
+          <dict-tag
+            :options="dict.type.sys_status"
+            :value="scope.row.status"
+          />
+        </template>
+      </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180" fixed="right">
         <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-document-copy"
-            @click="handleCopy(scope.row.id)"
-          >复制
-          </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-          >修改
-          </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-          >删除
-          </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleSubmit(scope.row)"
-          >提交</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleReback(scope.row)"
-          >收回</el-button>
+          <div v-if="scope.row.status == '0' || scope.row.status == '3'">
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleUpdate(scope.row)"
+            >修改
+            </el-button>
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleDelete(scope.row)"
+            >删除
+            </el-button>
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleSubmit(scope.row)"
+            >提交</el-button>
+          </div>
+          <div v-if="scope.row.status == '1'">
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleReback(scope.row)"
+            >收回</el-button>
+          </div>
         </template>
       </el-table-column>
     </el-table>
@@ -284,8 +288,15 @@
             </el-form-item>
           </el-col>
           <el-col :span="6">
-            <el-form-item label="单据状态" prop="documentStatus">
-              <el-input v-model="form.documentStatus" placeholder="未提交" disabled/>
+            <el-form-item label="单据状态" prop="type">
+              <el-select v-model="form.status" placeholder="" disabled>
+                <el-option
+                  v-for="dict in dict.type.sys_status"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
         </el-row>
@@ -293,7 +304,12 @@
       <div>
         <el-row :gutter="10" class="mb8" style="margin-left: 80%">
           <el-col :span="1.5">
-            <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport">导入明细</el-button>
+            <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleTemplateDownload">模板下载</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-upload ref="upload" action="" :http-request="handleImport">
+              <el-button size="mini" type="primary">导入明细</el-button>
+            </el-upload>
           </el-col>
           <el-col :span="1.5">
             <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAddDetails">增行</el-button>
@@ -480,11 +496,13 @@ import {
   getMonthReturnGoal,
   addMonthReturnGoal,
   updateMonthReturnGoal,
-  delMonthReturnGoal
+  delMonthReturnGoal,
+  submit
 } from "@/api/business/spd/goal_management/monthReturnGoal";
 import {
   getMonthReturnGoalDetails,
-  delMonthReturnGoalDetails
+  delMonthReturnGoalDetails,
+  importData
 } from "@/api/business/spd/goal_management/monthReturnGoalDetails"
 import { getToken } from "@/utils/auth";
 import { getSummary } from "../../../../api/business/spd/goal_management/commonWays";
@@ -498,6 +516,7 @@ export default {
   components: {
     TreeRefers, ElPopoverSelectV2
   },
+  dicts: ["sys_status"],
   data() {
     return {
       // 遮罩层
@@ -537,7 +556,7 @@ export default {
         dept: null,
         goalSum: null,
         notes: null,
-        documentStatus: null,
+        status: null,
         params: { beginTime: null, endTime: null,}
       },
       // 表单参数
@@ -557,7 +576,7 @@ export default {
         dept: null,
         goalSum: null,
         notes: null,
-        documentStatus: null,
+        status: null,
         monthReturnGoalDetailsList: null,
       },
       formDetails: {
@@ -680,7 +699,7 @@ export default {
         dept: null,
         goalSum: null,
         notes: null,
-        documentStatus: null,
+        status: null,
         monthReturnGoalDetailsList: null,
       };
       this.resetForm("form");
@@ -709,7 +728,7 @@ export default {
         dept: null,
         goalSum: null,
         notes: null,
-        documentStatus: null,
+        status: null,
         params: { beginTime: null, endTime: null,}
       }
       this.documentDateRange = null
@@ -794,7 +813,7 @@ export default {
               this.getList();
             });
           } else {
-            this.form.documentStatus = '未提交'
+            this.form.status = '0'
             this.form.monthReturnGoalDetailsList = JSON.parse(JSON.stringify(this.monthReturnGoalDetailsList))
             console.log(this.form);
             addMonthReturnGoal(this.form).then(response => {
@@ -1011,7 +1030,53 @@ export default {
     resetDialogUpdateMore() {
       this.dialogUpdateMore.updateName = null
       this.dialogUpdateMore.updateData = null
-    }
+    },
+    async handleSubmit(row){
+      this.$modal.loading("提交中...");
+      try {
+        const {msg, code} = await submit(row.id);
+        if (code === 200) {
+          this.$modal.notifySuccess("提交成功");
+          this.$modal.closeLoading();
+          row.status = '1'
+          // this.getList(this.queryParams)
+        }
+      }catch (err) {
+        console.error(err);
+        this.$modal.closeLoading();
+      }
+    },
+    //收回
+    handleReback(){
+
+    },
+    //模板下载
+    handleTemplateDownload(){
+      this.download('/mk/monthReturnGoalDetails/importTemplate', {
+      }, `MonthReturnGoal_${new Date().getTime()}.xlsx`)
+    },
+    //导入
+    handleImport(file){
+      this.loading = true;
+      let formData = new FormData()
+      formData.append('file',file.file)
+      importData(formData).then((res) => {
+        console.log('res',res);
+        if(res.code == '200'){
+          this.form.monthReturnGoalDetailsList.push.apply(this.form.monthReturnGoalDetailsList,res.data);
+          this.$message.success(res.msg);
+        }else{
+          this.$message.success(res.msg);
+        }
+        this.loading = false;
+      }).catch((e) => {
+        this.$message.error(e.message)
+      }).finally((e) => {
+        this.$refs['upload'].clearFiles();
+        this.resetList();
+        this.loading = false;
+      })
+    },
   }
 }
 </script>

+ 73 - 41
src/views/business/spd/target/MonthReturnMerge.vue

@@ -104,14 +104,18 @@
         </el-form-item>
       </el-col>
       <el-col :span="6">
-        <el-form-item label="单据状态" prop="documentStatus">
-          <el-select v-model="queryParams.documentStatus" placeholder="请选择">
+        <el-form-item label="单据状态" prop="status">
+          <el-select
+            size="mini"
+            v-model="queryParams.status"
+            clearable
+          >
             <el-option
-              v-for="item in [{value: '未提交', label: '未提交'}, {value: '审核中', label: '审核中'}, {value: '已审核', label: '已审核'}]"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value">
-            </el-option>
+              v-for="dict in dict.type.sys_status"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
           </el-select>
         </el-form-item>
       </el-col>
@@ -157,42 +161,42 @@
     <el-table-column label="部门" align="center" prop="dept" width="180"/>
     <el-table-column label="目标类型" align="center" prop="goalCategory" width="180"/>
     <el-table-column label="目标值合计" align="center" prop="goalSum" width="180"/>
-    <el-table-column label="单据状态" align="center" prop="documentStatus" width="180"/>
+    <el-table-column show-overflow-tooltip label="状态" align="center" width="200" prop="status">
+      <template slot-scope="scope">
+        <dict-tag
+          :options="dict.type.sys_status"
+          :value="scope.row.status"
+        />
+      </template>
+    </el-table-column>
     <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180" fixed="right">
       <template slot-scope="scope">
-        <el-button
-          size="mini"
-          type="text"
-          icon="el-icon-document-copy"
-          @click="handleCopy(scope.row.id)"
-        >复制
-        </el-button>
-        <el-button
-          size="mini"
-          type="text"
-          icon="el-icon-edit"
-          @click="handleUpdate(scope.row)"
-        >修改
-        </el-button>
-        <el-button
-          size="mini"
-          type="text"
-          icon="el-icon-delete"
-          @click="handleDelete(scope.row)"
-        >删除
-        </el-button>
-        <el-button
+        <div v-if="scope.row.status == '0' || scope.row.status == '3'">
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleUpdate(scope.row)"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleDelete(scope.row)"
+          >删除
+          </el-button>
+          <el-button
             size="mini"
             type="text"
-            icon="el-icon-delete"
             @click="handleSubmit(scope.row)"
           >提交</el-button>
+        </div>
+        <div v-if="scope.row.status == '1'">
           <el-button
             size="mini"
             type="text"
-            icon="el-icon-delete"
             @click="handleReback(scope.row)"
           >收回</el-button>
+        </div>
       </template>
     </el-table-column>
   </el-table>
@@ -302,8 +306,15 @@
       </el-row>
       <el-row :gutter="20">
         <el-col :span="6">
-          <el-form-item label="单据状态" prop="goalSum">
-            <el-input v-model="form.documentStatus" placeholder="未提交" disabled/>
+          <el-form-item label="单据状态" prop="type">
+            <el-select v-model="form.status" placeholder="" disabled>
+              <el-option
+                v-for="dict in dict.type.sys_status"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              ></el-option>
+            </el-select>
           </el-form-item>
         </el-col>
       </el-row>
@@ -474,7 +485,8 @@ import {
   delMonthReturnMerge,
   getMonthReturnMerge,
   listMonthReturnMerge,
-  updateMonthReturnMerge
+  updateMonthReturnMerge,
+  submit
 } from "@/api/business/spd/goal_management/monthReturnMerge";
 import {
   delMonthReturnMergeDetails,
@@ -494,6 +506,7 @@ export default {
   components: {
     TreeRefers, ElPopoverSelectV2
   },
+  dicts: ["sys_status"],
   data () {
     return {
       // 遮罩层
@@ -535,7 +548,7 @@ export default {
         dept: null,
         goalCategory: null,
         goalSum: null,
-        documentStatus: null,
+        status: null,
         params: { beginTime: null, endTime: null }
       },
       // 表单参数
@@ -556,7 +569,7 @@ export default {
         dept: null,
         goalCategory: null,
         goalSum: null,
-        documentStatus: null,
+        status: null,
         delFlag: null,
         monthReturnMergeDetailsList: null,
         oldMonthReturnMergeDetailsList: null
@@ -676,7 +689,7 @@ export default {
         dept: null,
         goalCategory: null,
         goalSum: null,
-        documentStatus: null,
+        status: null,
         delFlag: null
       };
       this.resetForm("form");
@@ -706,7 +719,7 @@ export default {
         dept: null,
         goalCategory: null,
         goalSum: null,
-        documentStatus: null,
+        status: null,
         params: { beginTime: null, endTime: null }
       }
       this.documentDateRange = null
@@ -792,7 +805,7 @@ export default {
               this.getList();
             });
           } else {
-            this.form.documentStatus = '未提交'
+            this.form.status = '0'
             this.form.goalCategory = '客户维度'
             this.form.monthReturnMergeDetailsList = JSON.parse(JSON.stringify(this.monthReturnMergeDetailsList))
             console.log(this.form);
@@ -985,7 +998,26 @@ export default {
     // 提交上传文件
     submitFileForm() {
       this.$refs.upload.submit();
-    }
+    },
+    async handleSubmit(row){
+      this.$modal.loading("提交中...");
+      try {
+        const {msg, code} = await submit(row.id);
+        if (code === 200) {
+          this.$modal.notifySuccess("提交成功");
+          this.$modal.closeLoading();
+          row.status = '1'
+          // this.getList(this.queryParams)
+        }
+      }catch (err) {
+        console.error(err);
+        this.$modal.closeLoading();
+      }
+    },
+    //收回
+    handleReback(){
+
+    },
   }
 }
 </script>

+ 144 - 52
src/views/business/spd/target/MonthSaleGoal.vue

@@ -101,14 +101,18 @@
           </el-form-item>
         </el-col>
         <el-col :span="6">
-          <el-form-item label="单据状态" prop="documentStatus">
-            <el-select v-model="queryParams.documentStatus" placeholder="请选择">
+          <el-form-item label="单据状态" prop="status">
+            <el-select
+              size="mini"
+              v-model="queryParams.status"
+              clearable
+            >
               <el-option
-                v-for="item in [{value: '未提交', label: '未提交'}, {value: '审核中', label: '审核中'}, {value: '已审核', label: '已审核'}]"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value">
-              </el-option>
+                v-for="dict in dict.type.sys_status"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              ></el-option>
             </el-select>
           </el-form-item>
         </el-col>
@@ -154,42 +158,42 @@
       <el-table-column label="部门" align="center" prop="dept"/>
       <el-table-column label="目标合计" align="center" prop="goalSum"/>
       <el-table-column label="备注" align="center" prop="notes"/>
-      <el-table-column label="单据状态" align="center" prop="documentStatus"/>
+      <el-table-column show-overflow-tooltip label="状态" align="center" width="200" prop="status">
+        <template slot-scope="scope">
+          <dict-tag
+            :options="dict.type.sys_status"
+            :value="scope.row.status"
+          />
+        </template>
+      </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180" fixed="right">
         <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-document-copy"
-            @click="handleCopy(scope.row.id)"
-          >复制
-          </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-          >修改
-          </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-          >删除
-          </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleSubmit(scope.row)"
-          >提交</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleReback(scope.row)"
-          >收回</el-button>
+          <div v-if="scope.row.status == '0' || scope.row.status == '3'">
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleUpdate(scope.row)"
+            >修改
+            </el-button>
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleDelete(scope.row)"
+            >删除
+            </el-button>
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleSubmit(scope.row)"
+            >提交</el-button>
+          </div>
+          <div v-if="scope.row.status == '1'">
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleReback(scope.row)"
+            >收回</el-button>
+          </div>
         </template>
       </el-table-column>
     </el-table>
@@ -286,8 +290,15 @@
             </el-form-item>
           </el-col>
           <el-col :span="6">
-            <el-form-item label="单据状态" prop="documentStatus">
-              <el-input v-model="form.documentStatus" placeholder="未提交" disabled/>
+            <el-form-item label="单据状态" prop="type">
+              <el-select v-model="form.status" placeholder="" disabled>
+                <el-option
+                  v-for="dict in dict.type.sys_status"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
         </el-row>
@@ -295,7 +306,12 @@
       <div>
         <el-row :gutter="10" class="mb8" style="margin-left: 80%">
           <el-col :span="1.5">
-            <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport">导入明细</el-button>
+            <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleTemplateDownload">模板下载</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-upload ref="upload" action="" :http-request="handleImport">
+              <el-button size="mini" type="primary">导入明细</el-button>
+            </el-upload>
           </el-col>
           <el-col :span="1.5">
             <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAddDetails">增行</el-button>
@@ -512,11 +528,13 @@ import {
   getMonthSaleGoal,
   delMonthSaleGoal,
   addMonthSaleGoal,
-  updateMonthSaleGoal
+  updateMonthSaleGoal,
+  submit
 } from "@/api/business/spd/goal_management/monthSaleGoal";
 import {
   getMonthSaleGoalDetails,
-  delMonthSaleGoalDetails
+  delMonthSaleGoalDetails,
+  importData
 } from "@/api/business/spd/goal_management/monthSaleGoalDetails"
 import { getToken } from "@/utils/auth";
 import { getSummary } from "../../../../api/business/spd/goal_management/commonWays";
@@ -530,6 +548,7 @@ export default {
   components: {
     TreeRefers, ElPopoverSelectV2
   },
+  dicts: ["sys_status"],
   data() {
     return {
       // 遮罩层
@@ -569,7 +588,7 @@ export default {
         dept: null,
         goalSum: null,
         notes: null,
-        documentStatus: null,
+        status: null,
         params: { beginTime: null, endTime: null }
       },
       documentDateRange: null,
@@ -617,7 +636,7 @@ export default {
         dept: null,
         goalSum: null,
         notes: null,
-        documentStatus: null,
+        status: null,
         monthDetailsList: null
       },
       formDetails: {
@@ -720,7 +739,7 @@ export default {
         dept: null,
         goalSum: null,
         notes: null,
-        documentStatus: null,
+        status: null,
         monthDetailsList: null
       };
       this.resetForm("form");
@@ -749,7 +768,7 @@ export default {
         dept: null,
         goalSum: null,
         notes: null,
-        documentStatus: null,
+        status: null,
         params: { beginTime: null, endTime: null }
       }
       this.documentDateRange = null
@@ -842,7 +861,7 @@ export default {
               this.getList();
             });
           } else {
-            this.form.documentStatus = '未提交'
+            this.form.status = '0'
             this.form.monthDetailsList = JSON.parse(JSON.stringify(this.monthSaleGoalDetailsList))
             console.log(this.form);
             addMonthSaleGoal(this.form).then(response => {
@@ -1068,7 +1087,80 @@ export default {
     resetDialogUpdateMore() {
       this.dialogUpdateMore.updateName = null
       this.dialogUpdateMore.updateData = null
-    }
+    },
+    async handleSubmit(row){
+      this.$modal.loading("提交中...");
+      try {
+        const {msg, code} = await submit(row.id);
+        if (code === 200) {
+          this.$modal.notifySuccess("提交成功");
+          this.$modal.closeLoading();
+          row.status = '1'
+          // this.getList(this.queryParams)
+        }
+      }catch (err) {
+        console.error(err);
+        this.$modal.closeLoading();
+      }
+    },
+    //收回
+    handleReback(){
+
+    },
+    //模板下载
+    handleTemplateDownload(){
+      this.download('/goal_management/annualSaleGoalDetails/importTemplate', {
+      }, `AnnualSaleGoal_${new Date().getTime()}.xlsx`)
+    },
+    //导入
+    handleImport(file){
+      this.loading = true;
+      let formData = new FormData()
+      formData.append('file',file.file)
+      importData(formData).then((res) => {
+        console.log('res',res);
+        if(res.code == '200'){
+          this.form.annualGoalMergeDetails.push.apply(this.form.annualGoalMergeDetails,res.data);
+          this.$message.success(res.msg);
+        }else{
+          this.$message.success(res.msg);
+        }
+        this.loading = false;
+      }).catch((e) => {
+        this.$message.error(e.message)
+      }).finally((e) => {
+        this.$refs['upload'].clearFiles();
+        this.resetList();
+        this.loading = false;
+      })
+    },
+    //模板下载
+    handleTemplateDownload(){
+      this.download('/goal_management/monthSaleGoalDetails/importTemplate', {
+      }, `MonthSaleGoal_${new Date().getTime()}.xlsx`)
+    },
+    //导入
+    handleImport(file){
+      this.loading = true;
+      let formData = new FormData()
+      formData.append('file',file.file)
+      importData(formData).then((res) => {
+        console.log('res',res);
+        if(res.code == '200'){
+          this.form.monthDetailsList.push.apply(this.form.monthDetailsList,res.data);
+          this.$message.success(res.msg);
+        }else{
+          this.$message.success(res.msg);
+        }
+        this.loading = false;
+      }).catch((e) => {
+        this.$message.error(e.message)
+      }).finally((e) => {
+        this.$refs['upload'].clearFiles();
+        this.resetList();
+        this.loading = false;
+      })
+    },
   }
 }
 </script>

+ 44 - 13
src/views/business/spd/target/targetMk/index.vue

@@ -106,13 +106,13 @@
         </div>
 
         <el-table 
+          v-loading="loading"
           :data="tableList"
           @selection-change="useSelectionRow"
           @row-dblclick="useDoubleClick"
           height="600px"
           v-horizontal-scroll
         >
-          <el-table-column show-overflow-tooltip type="selection" width="55" />
           <el-table-column label="序号" type="index" width="50" align="center" fixed/>
           <el-table-column show-overflow-tooltip label="单据编号" align="center" width="200" prop="code"/>
           <el-table-column show-overflow-tooltip label="单据日期" align="center" width="200" prop="date"/>
@@ -199,15 +199,18 @@
 import Add from './add.vue'
 import TemplateDownload from './templateDownload.vue'
 import CollapseTransition from '@/components/MyCollapse/collapse.vue'
-import { listTarget,delTarget } from "@/api/business/spd/starget/target";
+import { listTarget,delTarget,submitTarget } from "@/api/business/spd/starget/target";
+import { rebacktWork } from '@/api/purchase/workSpace.js'
 export default {
   name: 'target',
   dicts: [
-    "sys_status","mk_periodic_unit","mk_dimensionality","mk_index_type"
+    "sys_status","mk_periodic_unit","mk_dimensionality","mk_index_type",'oa_templete_id'
   ],
   components: { Add,TemplateDownload,CollapseTransition},
   data() {
     return {
+      // 遮罩层
+      loading: true,
       expanded: false,
       // 页面配置
       isList: true,
@@ -245,17 +248,43 @@ export default {
       this.page = 'add'
       this.disable = false
     },
-    //导入
-    useUpload(){
-
-    },
     //提交
-    useSubmit(){
-      
+    async useSubmit(row){
+      this.$modal.loading("提交中...");
+      try {
+        const {msg, code} = await submitTarget(row.id);
+        if (code === 200) {
+          this.$modal.notifySuccess("提交成功");
+          this.$modal.closeLoading();
+          row.status = '1'
+          // this.getList(this.queryParams)
+        }
+      }catch (err) {
+        console.error(err);
+        this.$modal.closeLoading();
+      }
     },
     //撤回
-    useRevocation(){
-
+    useRevocation(row){
+      this.$modal.loading("收回中...");
+      let params = {
+        billCode: row.code, 
+        fdId: row.flowId, 
+        fdTemplateId: this.dict.type.oa_templete_id.find(item => {
+          return item.label == "营销目标"
+        }).value,
+        billMaker: row.createBy 
+      }
+      rebacktWork(params).then(res => {
+        if (res.code === 200) {
+          this.$modal.notifySuccess("收回成功");
+          this.$modal.closeLoading();
+          row.status = '0'
+          // this.getList(this.queryParams)
+        }
+      }).catch(err => {
+        this.$modal.closeLoading();
+      })
     },
     //修改
     useEdit(row){
@@ -320,10 +349,12 @@ export default {
     },
     //查询列表
     getList(params){
+      this.loading = true;
       listTarget(this.addDateRange(params, this.dateRange)).then(res => {
         if (res.code === 200) {
-          this.tableList = res.rows
-          this.total = res.total
+          this.tableList = res.rows;
+          this.total = res.total;
+          this.loading = false;
         }
       })
     },