소스 검색

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

002637 1 년 전
부모
커밋
73e77366b5

+ 4 - 3
src/api/business/spd/goal_management/annualSaleGoalDetails.js

@@ -44,9 +44,10 @@ export function delAnnualSaleGoalDetails(id, code) {
 }
 
 // 根据主表code获得明细
-export function getDetailsByCode(code) {
+export function getDetailsByCode(query) {
   return request({
-    url: 'goal_management/annualSaleGoalDetails/listDetails/' + code,
-    method: 'get'
+    url: 'goal_management/annualSaleGoalDetails/listDetails',
+    method: 'get',
+    params: query
   })
 }

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

@@ -0,0 +1,52 @@
+import request from '@/utils/request'
+
+// 查询年销售目标合并明细列表
+export function listAnnualSaleMergeDetails(query) {
+  return request({
+    url: '/goal_management/annualSaleMergeDetails/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询年销售目标合并明细详细
+export function getAnnualSaleMergeDetails(id) {
+  return request({
+    url: '/goal_management/annualSaleMergeDetails/' + id,
+    method: 'get'
+  })
+}
+
+// 新增年销售目标合并明细
+export function addAnnualSaleMergeDetails(data) {
+  return request({
+    url: '/goal_management/annualSaleMergeDetails',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改年销售目标合并明细
+export function updateAnnualSaleMergeDetails(data) {
+  return request({
+    url: '/goal_management/annualSaleMergeDetails',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除年销售目标合并明细
+export function delAnnualSaleMergeDetails(id) {
+  return request({
+    url: '/goal_management/annualSaleMergeDetails/' + id,
+    method: 'delete'
+  })
+}
+
+// 根据目标分类合并,在年度销售目标明细查找
+export function mergeAnnualSaleGoalDetailsByCate(goalCategory) {
+  return request({
+    url: '/goal_management/annualGoalMergeDetails/' + goalCategory,
+    method: 'get'
+  })
+}

+ 107 - 88
src/views/business/spd/goal_management/annualSaleGoal/AnnualSaleGoalMerge.vue

@@ -25,101 +25,32 @@
                         placeholder="请选择单据日期">
         </el-date-picker>
       </el-form-item>
-      <el-form-item label="制单人编码" prop="creatorCode">
-        <el-input
-          v-model="queryParams.creatorCode"
-          placeholder="请输入制单人编码"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
       <el-form-item label="制单人" prop="creator">
-        <el-input
-          v-model="queryParams.creator"
-          placeholder="请输入制单人"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="部门编码" prop="deptCode">
-        <el-input
-          v-model="queryParams.deptCode"
-          placeholder="请输入部门编码"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-popover-select-v2 v-model="queryParams.creator" title="制单人" valueKey="name" referName="CONTACTS_PARAM" :dataMapping="{
+          creatorCode: 'code',
+          creator: 'name'
+        }" :source.sync="queryParams" placeholder="请输入制单人" @keyup.enter.native="handleQuery">
+        </el-popover-select-v2>
       </el-form-item>
       <el-form-item label="部门" prop="dept">
-        <el-input
-          v-model="queryParams.dept"
-          placeholder="请输入部门"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="目标值汇总" prop="goalTotal">
-        <el-input
-          v-model="queryParams.goalTotal"
-          placeholder="请输入目标值汇总"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="备注" prop="notes">
-        <el-input
-          v-model="queryParams.notes"
-          placeholder="请输入备注"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="销售区域编码" prop="saleZoneCode">
-        <el-input
-          v-model="queryParams.saleZoneCode"
-          placeholder="请输入销售区域编码"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-popover-select-v2 v-model="queryParams.dept" title="部门" valueKey="name" referName="DEPT_PARAM" :dataMapping="{
+          deptCode: 'code', dept: 'name'
+        }" :source.sync="queryParams" placeholder="请输入部门" @keyup.enter.native="handleQuery"></el-popover-select-v2>
       </el-form-item>
       <el-form-item label="销售区域" prop="saleZone">
-        <el-input
-          v-model="queryParams.saleZone"
-          placeholder="请输入销售区域"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="一级物料编码" prop="oneLevelClassifyCode">
-        <el-input
-          v-model="queryParams.oneLevelClassifyCode"
-          placeholder="请输入一级物料编码"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-popover-select-v2 v-model="queryParams.dept" title="销售区域" valueKey="name" referName="ORG_PARAM" :dataMapping="{
+          saleZoneCode: 'code', saleZone: 'name'
+        }" :source.sync="queryParams" placeholder="请输入销售区域" @keyup.enter.native="handleQuery"></el-popover-select-v2>
       </el-form-item>
       <el-form-item label="一级物料" prop="oneLevelClassify">
-        <el-input
-          v-model="queryParams.oneLevelClassify"
-          placeholder="请输入一级物料"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="二级物料编码" prop="twoLevelClassifyCode">
-        <el-input
-          v-model="queryParams.twoLevelClassifyCode"
-          placeholder="请输入二级物料编码"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-select v-model="queryParams.oneLevelClassify" placeholder="请输入一级物料" clearable @keyup.enter.native="handleQuery"
+                   @focus="chooseTreeRefer('MATERIALCLASSIFY_PARAM', false, '一级物料分类')"
+        ></el-select>
       </el-form-item>
       <el-form-item label="二级物料" prop="twoLevelClassify">
-        <el-input
-          v-model="queryParams.twoLevelClassify"
-          placeholder="请输入二级物料"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-select v-model="queryParams.twoLevelClassify" placeholder="请输入一级物料" clearable @keyup.enter.native="handleQuery"
+                   @focus="chooseTreeRefer('MATERIALCLASSIFY_PARAM', false, '二级物料分类')"
+        ></el-select>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -316,6 +247,83 @@
           </el-col>
         </el-row>
       </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="annualGoalMerge"
+            v-hasPermi="['goal_management:annualSaleMergeDetails:merge']"
+          >合并</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="danger"
+            plain
+            icon="el-icon-delete"
+            size="mini"
+            :disabled="multiple"
+            @click="handleDelete"
+            v-hasPermi="['goal_management:annualSaleMergeDetails:remove']"
+          >删除</el-button>
+        </el-col>
+<!--        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
+      </el-row>
+
+      <el-table v-loading="loading" :data="annualSaleMergeDetailsList" @selection-change="handleSelectionChange">
+        <el-table-column type="selection" width="55" align="center" />
+        <el-table-column label="id唯一标识" align="center" prop="id" />
+        <el-table-column label="合并编码" align="center" prop="mergeCode" />
+        <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="juanaryGoal" />
+        <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="steptemberGoal" />
+        <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">
+          <template slot-scope="scope">
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-edit"
+              @click="handleUpdate(scope.row)"
+              v-hasPermi="['goal_management:annualSaleMergeDetails:edit']"
+            >修改</el-button>
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-delete"
+              @click="handleDelete(scope.row)"
+              v-hasPermi="['goal_management:annualSaleMergeDetails:remove']"
+            >删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <pagination
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+
     </el-drawer>
 
     <el-drawer title="年销售目标合并--修改" :visible.sync="drawerEdit" :direction="direction" :before-close="handleClose" size="100%">
@@ -397,7 +405,7 @@
           </el-col>
           <el-col :span="1.5">
             <el-form-item v-if="form.goalCategory === '销售区域'" label="销售区域" prop="saleZone" id="saleZone1">
-              <el-popover-select-v2 v-model="form.saleZone" title="销售区域" referName="ORG_PARAM" :dataMapping="{
+              <el-popover-select-v2 v-model="form.saleZone" title="销售区域" valueKey="name" referName="ORG_PARAM" :dataMapping="{
                 saleZoneCode: 'code',
                 saleZone: 'name',
             }" :source.sync="form" placeholder="请输入销售区域"></el-popover-select-v2>
@@ -428,6 +436,7 @@
 
 <script>
 import { listAnnualSaleGoalMerge, getAnnualSaleGoalMerge, delAnnualSaleGoalMerge, addAnnualSaleGoalMerge, updateAnnualSaleGoalMerge } from "@/api/business/spd/goal_management/annualSaleGoalMerge";
+import { delAnnualSaleMergeDetails, updateAnnualSaleMergeDetails, getAnnualSaleMergeDetails } from "@/api/business/spd/goal_management/annualSaleMergeDetails"
 
 // 树形参照
 import TreeRefers from "@/components/Refers/treeRefer.vue"
@@ -550,7 +559,9 @@ export default {
       ],
       // 参照条件 & 参照列表
       referCondition: { type: '', isPage: true, title: '' },
-      classList: []
+      classList: [],
+      // 合并子表明细
+      annualSaleMergeDetailsList: []
     };
   },
   created() {
@@ -599,6 +610,7 @@ export default {
     },
     /** 搜索按钮操作 */
     handleQuery() {
+      console.log(this.queryParams);
       this.queryParams.pageNum = 1;
       this.getList();
     },
@@ -751,6 +763,13 @@ export default {
         this.form.twoLevelClassify = selection.name
         this.form.twoLevelClassifyCode = selection.code
       }
+    },
+    // 根据目标分类合并数据
+    annualGoalMerge() {
+      const goalCategory = this.form.goalCategory
+      if (goalCategory === null || goalCategory === '') {
+        return this.$message.info('请在主表输入“目标分类”')
+      }
     }
   }
 };

+ 22 - 15
src/views/business/spd/goal_management/annualSaleGoal/index.vue

@@ -274,7 +274,8 @@
           <el-button type="primary" icon="el-icon-search" size="mini" @click="addOrEdit">修改</el-button>
         </el-form-item>
       </el-form>
-      <el-row :gutter="10" class="mb8">
+      <el-row :gutter="10" class="mb8" type="flex" justify="end">
+        <el-col :span="1.5" style="margin-right: 73%"><span>年度销售目标填报</span></el-col>
         <el-col :span="1.5">
           <el-button
             type="primary"
@@ -307,10 +308,10 @@
             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 size="small" v-loading="loading" :data="annualSaleGoalDetailsList" @selection-change="handleSelectionChange">
         <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" />
@@ -358,11 +359,11 @@
       </el-table>
 
       <pagination
-        v-show="total>0"
-        :total="total"
-        :page.sync="queryParams.pageNum"
-        :limit.sync="queryParams.pageSize"
-        @pagination="getList"
+        v-show="totalDetails>0"
+        :total="totalDetails"
+        :page.sync="queryDetailsParams.pageNum"
+        :limit.sync="queryDetailsParams.pageSize"
+        @pagination="getDetailList"
       />
 
       <el-drawer
@@ -595,11 +596,11 @@
         <el-table-column label="十二月目标" align="center" prop="decemberGoal" />
       </el-table>
       <pagination
-        v-show="total>0"
-        :total="total"
-        :page.sync="queryParams.pageNum"
-        :limit.sync="queryParams.pageSize"
-        @pagination="getList"
+        v-show="totalDetails>0"
+        :total="totalDetails"
+        :page.sync="queryDetailsParams.pageNum"
+        :limit.sync="queryDetailsParams.pageSize"
+        @pagination="getDetailList"
       />
     </el-drawer>
 
@@ -668,6 +669,11 @@ export default {
         deleteStatus: 0,
         documentDateRange: null
       },
+      queryDetailsParams: {
+        pageNum: 1,
+        pageSize: 10,
+        code: null
+      },
       // 表单参数
       form: {
         id: null,
@@ -1019,7 +1025,6 @@ export default {
     openDetailsDrawer() {
       this.resetDetails()
 
-      this.drawerDetails = true
       this.formDetails.code = this.form.code
       this.formDetails.saleZone = this.form.saleZone
       this.formDetails.custom = this.form.custom
@@ -1027,6 +1032,7 @@ export default {
       this.formDetails.saleOrg = '湖南德荣医疗健康产业有限公司'
 
       this.getDetailList()
+      this.drawerDetails = true
     },
     // 选择树形参照
     chooseTreeRefer(type, isPage, title) {
@@ -1074,7 +1080,8 @@ export default {
     // 得到明细数据
     getDetailList() {
       this.loading = true
-      getDetailsByCode(this.form.code).then(response => {
+      this.queryDetailsParams.code = this.form.code
+      getDetailsByCode(this.queryDetailsParams).then(response => {
         this.annualSaleGoalDetailsList = response.rows
         this.totalDetails = response.total
         this.loading = false