Эх сурвалжийг харах

lizhuo submits AnnualSaleGoal at 2023-7-13 17:00

002637 1 жил өмнө
parent
commit
c54d998e28

+ 36 - 0
src/api/business/spd/goal_management/annualSaleMergeDetails.js

@@ -58,3 +58,39 @@ export function setGoalMergeCodeIsNotNull() {
     method: 'post'
     method: 'post'
   })
   })
 }
 }
+
+// 新增后获得数据
+export function getDetailsAfterAdding(query) {
+  return request({
+    url: '/goal_management/annualSaleMergeDetails/getDetailsAfterAdding',
+    method: 'get',
+    params: query
+  })
+}
+
+// 复制数据
+export function copyDetails(data) {
+  return request({
+    url: '/goal_management/annualSaleMergeDetails/copyDetails',
+    method: 'post',
+    data: data
+  })
+}
+
+// 根据code得到数据
+export function getMergeDetailsByCode(query, code) {
+  return request({
+    url: '/goal_management/annualSaleMergeDetails/getMergeDetailsByCode/' + code,
+    method: 'get',
+    params: query
+  })
+}
+
+// 在编辑页面合并
+export function annualGoalMergeFromEdit(query, code) {
+  return request({
+    url: '/goal_management/annualSaleMergeDetails/annualGoalMergeFromEdit/' + code,
+    method: 'get',
+    params: query
+  })
+}

+ 238 - 40
src/views/business/spd/goal_management/annualSaleGoal/AnnualSaleGoalMerge.vue

@@ -276,7 +276,7 @@
             icon="el-icon-delete"
             icon="el-icon-delete"
             size="mini"
             size="mini"
             :disabled="multiple"
             :disabled="multiple"
-            @click="handleDelete"
+            @click="handleDeleteDetails"
             v-hasPermi="['goal_management:annualSaleMergeDetails:remove']"
             v-hasPermi="['goal_management:annualSaleMergeDetails:remove']"
           >删除</el-button>
           >删除</el-button>
         </el-col>
         </el-col>
@@ -304,22 +304,23 @@
             <el-table-column label="十月目标" align="center" prop="octoberGoal" />
             <el-table-column label="十月目标" align="center" prop="octoberGoal" />
             <el-table-column label="十一月目标" align="center" prop="novemberGoal" />
             <el-table-column label="十一月目标" align="center" prop="novemberGoal" />
             <el-table-column label="十二月目标" align="center" prop="decemberGoal" />
             <el-table-column label="十二月目标" align="center" prop="decemberGoal" />
-            <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+            <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="180px">
               <template slot-scope="scope">
               <template slot-scope="scope">
                 <el-button
                 <el-button
                   size="mini"
                   size="mini"
                   type="text"
                   type="text"
                   icon="el-icon-edit"
                   icon="el-icon-edit"
-                  @click="handleUpdate(scope.row)"
+                  @click="handleUpdateDetails(scope.row)"
                   v-hasPermi="['goal_management:annualSaleMergeDetails:edit']"
                   v-hasPermi="['goal_management:annualSaleMergeDetails:edit']"
                 >修改</el-button>
                 >修改</el-button>
                 <el-button
                 <el-button
                   size="mini"
                   size="mini"
                   type="text"
                   type="text"
                   icon="el-icon-delete"
                   icon="el-icon-delete"
-                  @click="handleDelete(scope.row)"
+                  @click="handleDeleteDetails(scope.row)"
                   v-hasPermi="['goal_management:annualSaleMergeDetails:remove']"
                   v-hasPermi="['goal_management:annualSaleMergeDetails:remove']"
                 >删除</el-button>
                 >删除</el-button>
+                <el-button size="mini" type="text" icon="el-icon-paperclip" @click="copyDetails(scope.row)">复制</el-button>
               </template>
               </template>
             </el-table-column>
             </el-table-column>
           </el-table>
           </el-table>
@@ -439,9 +440,97 @@
           </el-col>
           </el-col>
         </el-row>
         </el-row>
       </el-form>
       </el-form>
+
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button
+            type="primary"
+            plain
+            icon="el-icon-lollipop"
+            size="mini"
+            @click="annualGoalMergeFromEdit"
+          >合并</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="primary"
+            plain
+            icon="el-icon-plus"
+            size="mini"
+            @click="openDetailsAddDrawer"
+            v-hasPermi="['goal_management:annualSaleMergeDetails:add']"
+          >新增</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="danger"
+            plain
+            icon="el-icon-delete"
+            size="mini"
+            :disabled="multiple"
+            @click="handleDeleteDetails"
+            v-hasPermi="['goal_management:annualSaleMergeDetails:remove']"
+          >删除</el-button>
+        </el-col>
+      </el-row>
+      <el-tabs v-model="activeName">
+        <el-tab-pane label="年销售目标合并明细" name="年销售目标合并明细">
+          <el-table v-loading="loading" :data="annualSaleMergeDetailsList1" @selection-change="handleSelectionChange" size="mini">
+            <el-table-column type="selection" width="55" align="center" />
+            <el-table-column label="销售组织" align="center" prop="saleOrg" />
+            <el-table-column label="销售区域" align="center" prop="saleZone" />
+            <el-table-column label="客户" align="center" prop="custom" />
+            <el-table-column label="负责人" align="center" prop="creator" />
+            <el-table-column label="一级分类" align="center" prop="oneLevelClassify" />
+            <el-table-column label="二级分类" align="center" prop="twoLevelClassify" />
+            <el-table-column label="目标合计" align="center" prop="goalSum" />
+            <el-table-column label="一月目标" align="center" prop="januaryGoal" />
+            <el-table-column label="二月目标" align="center" prop="februaryGoal" />
+            <el-table-column label="三月目标" align="center" prop="marchGoal" />
+            <el-table-column label="四月目标" align="center" prop="aprilGoal" />
+            <el-table-column label="五月目标" align="center" prop="mayGoal" />
+            <el-table-column label="六月目标" align="center" prop="juneGoal" />
+            <el-table-column label="七月目标" align="center" prop="julyGoal" />
+            <el-table-column label="八月目标" align="center" prop="augustGoal" />
+            <el-table-column label="九月目标" align="center" prop="septemberGoal" />
+            <el-table-column label="十月目标" align="center" prop="octoberGoal" />
+            <el-table-column label="十一月目标" align="center" prop="novemberGoal" />
+            <el-table-column label="十二月目标" align="center" prop="decemberGoal" />
+            <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="180px">
+              <template slot-scope="scope">
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-edit"
+                  @click="handleUpdateDetails(scope.row)"
+                  v-hasPermi="['goal_management:annualSaleMergeDetails:edit']"
+                >修改</el-button>
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-delete"
+                  @click="handleDeleteDetails(scope.row)"
+                  v-hasPermi="['goal_management:annualSaleMergeDetails:remove']"
+                >删除</el-button>
+                <el-button size="mini" type="text" icon="el-icon-paperclip" @click="copyDetails(scope.row)">复制</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+          <pagination
+            v-show="totalDetails1>0"
+            :total="totalDetails1"
+            :page.sync="queryDetailsParam1.pageNum"
+            :limit.sync="queryDetailsParam1.pageSize"
+            @pagination="getDetailsListFromEdit"
+          />
+        </el-tab-pane>
+        <el-tab-pane label="区域目标汇总(年)" name="区域目标汇总(年)">配置管理</el-tab-pane>
+        <el-tab-pane label="客户目标汇总(年)" name="客户目标汇总(年)">角色管理</el-tab-pane>
+
+      </el-tabs>
     </el-drawer>
     </el-drawer>
 
 
-    <el-drawer title="年销售目标合并--新增" :visible.sync="drawerInnerAdd" :direction="direction" :before-close="handleDrawerClose" :append-to-body="true">
+    <el-drawer title="年销售目标合并--子表部分" :visible.sync="drawerInnerAdd" :direction="direction" :before-close="handleDrawerClose" :append-to-body="true">
       <el-form :rules="rulesDetails" :model="formDetails" ref="formDetails" :inline="true" label-width="110px">
       <el-form :rules="rulesDetails" :model="formDetails" ref="formDetails" :inline="true" label-width="110px">
         <el-form-item label="明细编码" prop="mergeCode">
         <el-form-item label="明细编码" prop="mergeCode">
           <el-input v-model="formDetails.mergeCode" placeholder="编码后端自动生成" disabled />
           <el-input v-model="formDetails.mergeCode" placeholder="编码后端自动生成" disabled />
@@ -517,13 +606,12 @@
           <el-input v-model="formDetails.decemberGoal" placeholder="请输入十二月目标" />
           <el-input v-model="formDetails.decemberGoal" placeholder="请输入十二月目标" />
         </el-form-item>
         </el-form-item>
         <el-form-item style="margin-left: 115px">
         <el-form-item style="margin-left: 115px">
-          <el-button type="primary" icon="el-icon-search" size="mini" @click="submitFormDetails" v-hasPermi="['goal_management:annualSaleMergeDetails:add']">新增</el-button>
+          <el-button type="primary" icon="el-icon-search" size="mini" @click="submitFormDetails">确 认</el-button>
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
     </el-drawer>
     </el-drawer>
 
 
     <TreeRefers ref="tree" :single="true" @doSubmit="selectionsToTreeInput"></TreeRefers>
     <TreeRefers ref="tree" :single="true" @doSubmit="selectionsToTreeInput"></TreeRefers>
-    <TreeRefers ref="tree" :single="true" @doSubmit="selectionsToTreeInputDetails"></TreeRefers>
   </div>
   </div>
 </template>
 </template>
 
 
@@ -540,7 +628,13 @@ import {
   mergeAnnualSaleGoalDetails,
   mergeAnnualSaleGoalDetails,
   setGoalMergeCodeIsNotNull,
   setGoalMergeCodeIsNotNull,
   updateAnnualSaleMergeDetails,
   updateAnnualSaleMergeDetails,
-  addAnnualSaleMergeDetails
+  addAnnualSaleMergeDetails,
+  getDetailsAfterAdding,
+  delAnnualSaleMergeDetails,
+  getAnnualSaleMergeDetails,
+  copyDetails,
+  getMergeDetailsByCode,
+  annualGoalMergeFromEdit
 } from "@/api/business/spd/goal_management/annualSaleMergeDetails";
 } from "@/api/business/spd/goal_management/annualSaleMergeDetails";
 
 
 // 树形参照
 // 树形参照
@@ -714,12 +808,35 @@ export default {
     },
     },
     getDetailsList() {
     getDetailsList() {
       this.loading = true;
       this.loading = true;
-      addAnnualSaleMergeDetails(this.queryDetailsParam1).then(response => {
+      this.queryDetailsParam1.pageNum = 1
+      this.queryDetailsParam1.pageSize = 10
+      this.form.goalTotal = 0
+      getDetailsAfterAdding(this.queryDetailsParam1).then(response => {
+        console.log(response);
         this.annualSaleMergeDetailsList1 = response.rows;
         this.annualSaleMergeDetailsList1 = response.rows;
         this.totalDetails1 = response.total;
         this.totalDetails1 = response.total;
         this.loading = false;
         this.loading = false;
+        const list = response.rows
+        for (const listElement of list) {
+          this.form.goalTotal = this.form.goalTotal + listElement.goalSum
+        }
       });
       });
     },
     },
+    getDetailsListFromEdit(code) {
+      this.loading = true;
+      this.queryDetailsParam1.pageNum = 1
+      this.queryDetailsParam1.pageSize = 10
+      this.form.goalTotal = 0
+      getMergeDetailsByCode(this.queryDetailsParam1, code).then(response => {
+        this.annualSaleMergeDetailsList1 = response.rows
+        this.totalDetails1 = response.total
+        this.loading = false;
+        const list = response.rows
+        for (const listElement of list) {
+          this.form.goalTotal = this.form.goalTotal + listElement.goalSum
+        }
+      })
+    },
     // 取消按钮
     // 取消按钮
     cancel() {
     cancel() {
       this.open = false;
       this.open = false;
@@ -796,16 +913,29 @@ export default {
     },
     },
     /** 新增按钮操作 */
     /** 新增按钮操作 */
     handleAdd() {
     handleAdd() {
+      this.activeName = '年销售目标合并明细'
       this.reset();
       this.reset();
       this.drawerAdd = true;
       this.drawerAdd = true;
     },
     },
     /** 修改按钮操作 */
     /** 修改按钮操作 */
     handleUpdate(row) {
     handleUpdate(row) {
+      this.activeName = '年销售目标合并明细'
       this.reset();
       this.reset();
       const id = row.id || this.ids
       const id = row.id || this.ids
       getAnnualSaleGoalMerge(id).then(response => {
       getAnnualSaleGoalMerge(id).then(response => {
+        console.log(response);
         this.form = response.data;
         this.form = response.data;
         this.drawerEdit = true;
         this.drawerEdit = true;
+        this.getDetailsListFromEdit(this.form.code)
+      });
+    },
+    handleUpdateDetails(row) {
+      this.resetDetails();
+      const id = row.id || this.ids
+      getAnnualSaleMergeDetails(id).then(response => {
+        console.log(response);
+        this.formDetails = response.data;
+        this.drawerInnerAdd = true;
       });
       });
     },
     },
     /** 提交按钮 */
     /** 提交按钮 */
@@ -854,6 +984,7 @@ export default {
               this.$modal.msgSuccess("新增成功");
               this.$modal.msgSuccess("新增成功");
               this.drawerAdd = false;
               this.drawerAdd = false;
               this.getList();
               this.getList();
+              this.annualSaleMergeDetailsList1 = []
             });
             });
           }
           }
           this.rules.saleZone = [{required: true, message: '销售区域不能为空', trigger: 'blur'}]
           this.rules.saleZone = [{required: true, message: '销售区域不能为空', trigger: 'blur'}]
@@ -866,22 +997,36 @@ export default {
       console.log(this.formDetails);
       console.log(this.formDetails);
       this.$refs["formDetails"].validate(valid => {
       this.$refs["formDetails"].validate(valid => {
         if (valid) {
         if (valid) {
-          if (this.formDetails.id != null) {
-            updateAnnualSaleMergeDetails(this.formDetails).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.drawerInnerAdd = false;
-              this.getDetailsList();
-            });
+          if (this.form.id === null && this.form.id === '') {
+            if (this.formDetails.id != null) {
+              updateAnnualSaleMergeDetails(this.formDetails).then(response => {
+                this.$modal.msgSuccess("修改成功");
+                this.drawerInnerAdd = false;
+                this.getDetailsList();
+              });
+            } else {
+              addAnnualSaleMergeDetails(this.formDetails).then(response => {
+                this.$modal.msgSuccess("新增成功");
+                this.drawerInnerAdd = false;
+                this.getDetailsList();
+              });
+            }
           } else {
           } else {
-            addAnnualSaleMergeDetails(this.formDetails).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.drawerInnerAdd = false;
-              this.getDetailsList();
-            });
+            if (this.formDetails.id != null) {
+              updateAnnualSaleMergeDetails(this.formDetails).then(response => {
+                this.$modal.msgSuccess("修改成功");
+                this.drawerInnerAdd = false;
+                this.getDetailsListFromEdit(this.form.code);
+              });
+            } else {
+              this.formDetails.mergeCode = this.form.code
+              addAnnualSaleMergeDetails(this.formDetails).then(response => {
+                this.$modal.msgSuccess("新增成功");
+                this.drawerInnerAdd = false;
+                this.getDetailsListFromEdit(this.form.code);
+              });
+            }
           }
           }
-          this.rules.saleZone = [{required: true, message: '销售区域不能为空', trigger: 'blur'}]
-          this.rules.oneLevelClassify = [{required: true, message: '一级分类不能为空', trigger: 'blur'}]
-          this.rules.twoLevelClassify = [{required: true, message: '二级分类不能为空', trigger: 'blur'}]
         }
         }
       });
       });
     },
     },
@@ -895,6 +1040,19 @@ export default {
         this.$modal.msgSuccess("删除成功");
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
       }).catch(() => {});
     },
     },
+    handleDeleteDetails(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除年销售目标合并编号为"' + ids + '"的数据项?').then(function() {
+        return delAnnualSaleMergeDetails(ids);
+      }).then(() => {
+        if (this.form.id === null || this.form.id === '') {
+          this.getDetailsList();
+        } else {
+          this.getDetailsListFromEdit(this.form.code)
+        }
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
     /** 导出按钮操作 */
     /** 导出按钮操作 */
     handleExport() {
     handleExport() {
       this.download('goal_management/annualSaleGoalMerge/export', {
       this.download('goal_management/annualSaleGoalMerge/export', {
@@ -905,9 +1063,13 @@ export default {
     handleClose(done) {
     handleClose(done) {
       this.$confirm('确认关闭?').then(_ => {
       this.$confirm('确认关闭?').then(_ => {
         done();
         done();
+        this.annualSaleMergeDetailsList1 = []
         this.reset()
         this.reset()
         this.getList()
         this.getList()
-        this.setGoalMergeCodeIsNotNull()
+        if (this.annualSaleMergeDetailsList1.length !== 0) {
+          this.setGoalMergeCodeIsNotNull()
+          this.annualSaleMergeDetailsList1 = []
+        }
       }).catch(_ => {})
       }).catch(_ => {})
     },
     },
     handleDrawerClose(done) {
     handleDrawerClose(done) {
@@ -955,29 +1117,17 @@ export default {
         }
         }
         this.form.oneLevelClassify = selection.name
         this.form.oneLevelClassify = selection.name
         this.form.oneLevelClassifyCode = selection.code
         this.form.oneLevelClassifyCode = selection.code
+        this.formDetails.oneLevelClassify = selection.name
       } else if (this.referCondition.title === '二级物料分类') {
       } else if (this.referCondition.title === '二级物料分类') {
         if (selection.code.length !== 4) {
         if (selection.code.length !== 4) {
           return this.$message.error('请在二级物料分类中选择数据')
           return this.$message.error('请在二级物料分类中选择数据')
         }
         }
         this.form.twoLevelClassify = selection.name
         this.form.twoLevelClassify = selection.name
         this.form.twoLevelClassifyCode = selection.code
         this.form.twoLevelClassifyCode = selection.code
-      }
-    },
-    selectionsToTreeInputDetails(selection) {
-      this.classList.push(selection)
-      if (this.referCondition.title === '一级物料分类') {
-        if (selection.code.length !== 1) {
-          return this.$message.error('请在一级物料分类中选择数据')
-        }
-        this.formDetails.oneLevelClassify = selection.name
-      } else if (this.referCondition.title === '二级物料分类') {
-        if (selection.code.length !== 4) {
-          return this.$message.error('请在二级物料分类中选择数据')
-        }
         this.formDetails.twoLevelClassify = selection.name
         this.formDetails.twoLevelClassify = selection.name
       }
       }
     },
     },
-    // 根据目标分类合并数据
+    // 在新增页根据目标分类合并数据
     annualGoalMerge() {
     annualGoalMerge() {
       if (this.activeName !== '年销售目标合并明细') {
       if (this.activeName !== '年销售目标合并明细') {
         return this.$message.info(this.activeName + '不支持新增、合并、删除操作')
         return this.$message.info(this.activeName + '不支持新增、合并、删除操作')
@@ -1009,7 +1159,7 @@ export default {
         this.loading = false
         this.loading = false
         const list = response.rows
         const list = response.rows
         for (const listElement of list) {
         for (const listElement of list) {
-          this.form.goalTotal = this.form.goalTotal + listElement.totalGoal
+          this.form.goalTotal = this.form.goalTotal + listElement.goalSum
         }
         }
       })
       })
     },
     },
@@ -1017,13 +1167,61 @@ export default {
     setGoalMergeCodeIsNotNull() {
     setGoalMergeCodeIsNotNull() {
       setGoalMergeCodeIsNotNull().then(response => {
       setGoalMergeCodeIsNotNull().then(response => {
         console.log(response);
         console.log(response);
-        this.annualSaleMergeDetailsList1 = []
       })
       })
     },
     },
     // 打开新增细节抽屉
     // 打开新增细节抽屉
     openDetailsAddDrawer() {
     openDetailsAddDrawer() {
       this.resetDetails()
       this.resetDetails()
       this.drawerInnerAdd = !this.drawerInnerAdd
       this.drawerInnerAdd = !this.drawerInnerAdd
+    },
+    // 复制单据
+    copyDetails(row) {
+      copyDetails(row).then(response => {
+        console.log(response);
+        this.$message.success('复制成功')
+        if (this.form.id === null || this.form.id === '') {
+          this.getDetailsList()
+        } else {
+         this.getDetailsListFromEdit(this.form.code)
+        }
+      })
+    },
+    // 在编辑页中合并数据
+    annualGoalMergeFromEdit() {
+      if (this.activeName !== '年销售目标合并明细') {
+        return this.$message.info(this.activeName + '不支持新增、合并、删除操作')
+      }
+      this.queryDetailsParam1.goalCategory = this.form.goalCategory
+      if (this.queryDetailsParam1.goalCategory === null || this.queryDetailsParam1.goalCategory === '') {
+        return this.$message.info('请在主表输入“目标分类”')
+      } else if (this.queryDetailsParam1.goalCategory === '销售区域') {
+        this.queryDetailsParam1.condition = this.form.saleZone
+        if (this.queryDetailsParam1.condition === null || this.queryDetailsParam1.condition === '') {
+          return this.$message.info('请在主表输入“销售区域”')
+        }
+      } else if (this.queryDetailsParam1.goalCategory === '一级分类') {
+        this.queryDetailsParam1.condition = this.form.oneLevelClassify
+        if (this.queryDetailsParam1.condition === null || this.queryDetailsParam1.condition === '') {
+          return this.$message.info('请在主表输入“一级分类”')
+        }
+      } else if (this.queryDetailsParam1.goalCategory === '二级分类') {
+        this.queryDetailsParam1.condition = this.form.twoLevelClassify
+        if (this.queryDetailsParam1.condition === null || this.queryDetailsParam1.condition === '') {
+          return this.$message.info('请在主表输入“二级分类”')
+        }
+      }
+      this.loading = true
+      const code = this.form.code
+      annualGoalMergeFromEdit(this.queryDetailsParam1, code).then(response => {
+        console.log(response);
+        this.annualSaleMergeDetailsList1 = response.rows
+        this.totalDetails1 = response.total
+        this.loading = false
+        const list = response.rows
+        for (const listElement of list) {
+          this.form.goalTotal = this.form.goalTotal + listElement.goalSum
+        }
+      })
     }
     }
   }
   }
 };
 };