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

lizhuo submits AnnualSaleGoal at 2023-7-6 17:20

002637 1 жил өмнө
parent
commit
39b906a8f6

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

@@ -42,3 +42,11 @@ export function delAnnualSaleGoalDetails(id) {
     method: 'delete'
   })
 }
+
+// 根据主表code获得明细
+export function getDetailsByCode(code) {
+  return request({
+    url: 'goal_management/annualSaleGoalDetails/listDetails/' + code,
+    method: 'get'
+  })
+}

+ 126 - 25
src/views/business/spd/goal_management/annualSaleGoal/index.vue

@@ -280,28 +280,18 @@
         </el-col>
         <el-col :span="1.5">
           <el-button
-            type="success"
-            plain
-            icon="el-icon-edit"
-            size="mini"
-            :disabled="single"
-            @click="handleUpdate"
-            v-hasPermi="['goal_management:annualSaleGoalDetails:edit']"
-          >修改</el-button>
-        </el-col>
-        <el-col :span="1.5">
-          <el-button
             type="danger"
             plain
             icon="el-icon-delete"
             size="mini"
             :disabled="multiple"
-            @click="handleDelete"
+            @click="handleDetailsDelete"
             v-hasPermi="['goal_management:annualSaleGoalDetails:remove']"
           >删除</el-button>
         </el-col>
         <el-col :span="1.5">
           <el-button
+            disabled
             type="warning"
             plain
             icon="el-icon-download"
@@ -310,11 +300,11 @@
             v-hasPermi="['goal_management:annualSaleGoalDetails:export']"
           >导出</el-button>
         </el-col>
-        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+<!--        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
       </el-row>
 
       <el-table v-loading="loading" :data="annualSaleGoalDetailsList" @selection-change="handleSelectionChange">
-        <el-table-column type="selection" width="55" align="center" />
+        <el-table-column type="selection" width="55" align="center" fixed />
         <el-table-column label="id唯一标识" align="center" prop="id" />
         <el-table-column label="编码" align="center" prop="code" />
         <el-table-column label="销售组织" align="center" prop="saleOrg" />
@@ -339,20 +329,20 @@
         <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">
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
           <template slot-scope="scope">
             <el-button
               size="mini"
               type="text"
               icon="el-icon-edit"
-              @click="handleUpdate(scope.row)"
+              @click="handleUpdateDetails(scope.row)"
               v-hasPermi="['goal_management:annualSaleGoalDetails:edit']"
             >修改</el-button>
             <el-button
               size="mini"
               type="text"
               icon="el-icon-delete"
-              @click="handleDelete(scope.row)"
+              @click="handleDetailsDelete(scope.row)"
               v-hasPermi="['goal_management:annualSaleGoalDetails:remove']"
             >删除</el-button>
           </template>
@@ -406,21 +396,33 @@
             </dr-popover-select>
           </el-form-item>
           <el-form-item label="一级分类编码" prop="oneLevelClassifyCode">
-            <el-input v-model="formDetails.oneLevelClassifyCode" placeholder="请输入一级分类编码" />
+            <el-input v-model="formDetails.oneLevelClassifyCode" placeholder="请输入一级分类编码" disabled />
           </el-form-item>
           <el-form-item label="一级分类" prop="oneLevelClassify">
-            <el-input v-model="formDetails.oneLevelClassify" placeholder="请输入一级分类" />
+            <el-select
+              v-model="formDetails.oneLevelClassify" clearable placeholder="请输入一级分类"
+              @focus="chooseTreeRefer('MATERIALCLASSIFY_PARAM', false, '一级物料分类')"
+              @change="changeDetailsCode" style="width: 100%"
+            >
+              <el-option v-for="item in classList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+            </el-select>
           </el-form-item>
           <el-form-item label="二级分类编码" prop="twoLevelClassifyCode">
-            <el-input v-model="formDetails.twoLevelClassifyCode" placeholder="请输入二级分类编码" />
+            <el-input v-model="formDetails.twoLevelClassifyCode" placeholder="请输入二级分类编码" disabled />
           </el-form-item>
           <el-form-item label="二级分类编码" prop="twoLevelClassify">
-            <el-input v-model="formDetails.twoLevelClassify" placeholder="请输入二级分类编码" />
+            <el-select v-model="formDetails.twoLevelClassify" placeholder="请输入二级分类编码" clearable
+              @focus="chooseTreeRefer('MATERIALCLASSIFY_PARAM', false, '二级物料分类')"
+              @change="changeDetailsCode" style="width: 100%"
+            >
+              <el-option v-for="item in classList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+            </el-select>
           </el-form-item>
           <el-form-item label="物料" prop="material">
             <dr-popover-select
               v-model="formDetails.material"
               title="物料"
+              placeholder="请输入物料"
               type="MATERIAL_PARAM" :dataMapping="{ material: 'name', materialCode: 'code' }" :source.sync="formDetails">
             </dr-popover-select>
           </el-form-item>
@@ -466,8 +468,9 @@
           </el-form-item>
         </el-form>
       </el-drawer>
-
     </el-drawer>
+
+    <TreeRefers ref="tree" :single="true" @doSubmit="selectionsToTreeInput"></TreeRefers>
   </div>
 </template>
 
@@ -475,10 +478,21 @@
 // 年度目标填报
 import { listAnnualSaleGoal, getAnnualSaleGoal, delAnnualSaleGoal, addAnnualSaleGoal, updateAnnualSaleGoal } from "@/api/business/spd/goal_management/annualSaleGoal";
 // 年度目标填报明细
-import { listAnnualSaleGoalDetails, getAnnualSaleGoalDetails, delAnnualSaleGoalDetails, addAnnualSaleGoalDetails, updateAnnualSaleGoalDetails } from "@/api/business/spd/goal_management/annualSaleGoalDetails";
+import {
+  getAnnualSaleGoalDetails,
+  delAnnualSaleGoalDetails,
+  addAnnualSaleGoalDetails,
+  updateAnnualSaleGoalDetails,
+  getDetailsByCode
+} from "@/api/business/spd/goal_management/annualSaleGoalDetails";
+// 树形参照
+import TreeRefers from '@/components/Refers/treeRefer.vue'
 
 export default {
   name: "AnnualSaleGoal",
+  components: {
+    TreeRefers
+  },
   data() {
     return {
       // 遮罩层
@@ -651,7 +665,10 @@ export default {
       },
       // 年度销售目标明细
       annualSaleGoalDetailsList: null,
-      totalDetails: 0
+      totalDetails: 0,
+      // 参照条件
+      referCondition: { type: '', isPage: true, title: '' },
+      classList: []
     };
   },
   created() {
@@ -753,8 +770,17 @@ export default {
       getAnnualSaleGoal(id).then(response => {
         this.form = response.data
         this.drawEdit = true
+        this.getDetailList()
       });
     },
+    handleUpdateDetails(row) {
+      this.resetDetails()
+      const id = row.id || this.ids
+      getAnnualSaleGoalDetails(id).then(response => {
+        this.formDetails = response.data
+        this.drawerDetails = true
+      })
+    },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate(valid => {
@@ -781,6 +807,23 @@ export default {
     },
     submitFormDetails() {
       console.log(this.formDetails);
+      this.$refs["formDetails"].validate(valid => {
+        if (valid) {
+          if (this.formDetails.id != null) {
+            updateAnnualSaleGoalDetails(this.formDetails).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.drawerDetails = false;
+              this.getDetailList()
+            });
+          } else {
+            addAnnualSaleGoalDetails(this.formDetails).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.drawerDetails = false;
+              this.getDetailList()
+            });
+          }
+        }
+      });
     },
     /** 删除按钮操作 */
     handleDelete(row) {
@@ -792,6 +835,15 @@ export default {
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
     },
+    handleDetailsDelete(row) {
+      const ids = row.id || this.ids
+      this.$modal.confirm('是否确认删除年度销售目标编号为"' + ids + '"的数据项?').then(function () {
+        return delAnnualSaleGoalDetails(ids)
+      }).then(() => {
+        this.getDetailList()
+        this.$modal.msgSuccess('删除成功')
+      }).catch(() => {})
+    },
     /** 导出按钮操作 */
     handleExport() {
       this.download('goal_management/annualSaleGoal/export', {
@@ -816,15 +868,64 @@ export default {
       console.log(this.documentDateRange);
       console.log(this.queryParams);
     },
+    // 打开明细新增or编辑界面
     openDetailsDrawer() {
       this.drawerDetails = true
       this.formDetails.code = this.form.code
       this.formDetails.saleZone = this.form.saleZone
       this.formDetails.custom = this.form.custom
       this.formDetails.creator = this.form.creator
+      this.formDetails.saleOrg = '湖南德荣医疗健康产业有限公司'
 
+      this.getDetailList()
+    },
+    // 选择树形参照
+    chooseTreeRefer(type, isPage, title) {
+      this.referCondition.type = type
+      this.referCondition.isPage = isPage
+      this.referCondition.title = title
+      this.$refs.tree.init(this.referCondition)
+    },
+    // 给参照字段赋值
+    selectionsToTreeInput(selection) {
+      this.classList.push(selection)
+      if (this.referCondition.title === '一级物料分类') {
+        if (selection.code.length !== 1) {
+          return this.$message.error('请在一级分类里面选择')
+        }
+        this.formDetails.oneLevelClassifyCode = selection.code
+        this.formDetails.oneLevelClassify = selection.name
+        this.formDetails.twoLevelClassifyCode = null
+        this.formDetails.twoLevelClassify = null
+      } else if (this.referCondition.title === '二级物料分类') {
+        if (this.formDetails.oneLevelClassifyCode === null || this.formDetails.oneLevelClassifyCode === '') {
+          return this.$message.error('请先填写一级分类')
+        }
+        if (selection.code.length !== 4) {
+          return this.$message.error('请在二级分类里面选择')
+        }
+        if (selection.code[0] !== this.formDetails.oneLevelClassifyCode) {
+          return this.$message.error('所选择的二级分类不属于已选的一级分类')
+        }
+        this.formDetails.twoLevelClassifyCode = selection.code
+        this.formDetails.twoLevelClassify = selection.name
+      }
+    },
+    // 当值为null时,设置编码为0
+    changeDetailsCode() {
+      const one = this.formDetails.oneLevelClassify
+      const two = this.formDetails.twoLevelClassify
+      if (one.length === 0 || one === '') {
+        this.formDetails.oneLevelClassifyCode = null
+      }
+      if (two.length === 0 || two === '') {
+        this.formDetails.twoLevelClassifyCode = null
+      }
+    },
+    // 得到明细数据
+    getDetailList() {
       this.loading = true
-      listAnnualSaleGoalDetails(this.formDetails).then(response => {
+      getDetailsByCode(this.form.code).then(response => {
         this.annualSaleGoalDetailsList = response.rows
         this.totalDetails = response.total
         this.loading = false