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

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

002637 1 жил өмнө
parent
commit
3b34cc43ad

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

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询年度销售目标明细列表
+export function listAnnualSaleGoalDetails(query) {
+  return request({
+    url: '/goal_management/annualSaleGoalDetails/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询年度销售目标明细详细
+export function getAnnualSaleGoalDetails(id) {
+  return request({
+    url: '/goal_management/annualSaleGoalDetails/' + id,
+    method: 'get'
+  })
+}
+
+// 新增年度销售目标明细
+export function addAnnualSaleGoalDetails(data) {
+  return request({
+    url: '/goal_management/annualSaleGoalDetails',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改年度销售目标明细
+export function updateAnnualSaleGoalDetails(data) {
+  return request({
+    url: '/goal_management/annualSaleGoalDetails',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除年度销售目标明细
+export function delAnnualSaleGoalDetails(id) {
+  return request({
+    url: '/goal_management/annualSaleGoalDetails/' + id,
+    method: 'delete'
+  })
+}

+ 343 - 47
src/views/business/spd/goal_management/annualSaleGoal/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
       <el-form-item label="编码" prop="code">
         <el-input
           v-model="queryParams.code"
@@ -17,13 +17,7 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="单据日期" prop="documentDateRange">
-<!--        <el-date-picker clearable
-          v-model="queryParams.documentDate"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择单据日期">
-        </el-date-picker>-->
+      <el-form-item label="单据日期" prop="documentDateRange" style="margin-left: 44px">
         <el-date-picker
           v-model="queryParams.documentDateRange"
           type="daterange"
@@ -34,50 +28,47 @@
           end-placeholder="结束日期"
           :picker-options="pickerOptions"
           value-format="yyyy-MM-dd"
-          @change="lookValue">
+          @change="lookValue"
+          @keyup.enter.native="handleQuery">
         </el-date-picker>
       </el-form-item>
       <el-form-item label="年度" prop="annual">
-        <el-input
-          v-model="queryParams.annual"
-          placeholder="请输入年度"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-select v-model="queryParams.annual" filterable placeholder="请输入年度" clearable>
+          <el-option v-for="item1 in annualList" :key="item1.value" :label="item1.label" :value="item1.value"></el-option>
+        </el-select>
       </el-form-item>
       <el-form-item label="客户" prop="custom">
-        <el-input
-          v-model="queryParams.custom"
-          placeholder="请输入客户"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <dr-popover-select placeholder="请输入客户" clearable @keyup.enter.native="handleQuery" v-model="queryParams.custom" title="客户" type="CUSTOMER_PARAM" :dataMapping="{
+          // customCode: 'code',
+          custom: 'name'
+        }" :source.sync="queryParams"></dr-popover-select>
       </el-form-item>
       <el-form-item label="销售区域" prop="saleZone">
-        <el-input
-          v-model="queryParams.saleZone"
-          placeholder="请输入销售区域"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <dr-popover-select placeholder="请输入销售区域" clearable @keyup.enter.native="handleQuery" v-model="queryParams.saleZone" title="销售区域" type="ORG_PARAM" :dataMapping="{
+          saleZone: 'name'
+        }" :source.sync="queryParams"></dr-popover-select>
       </el-form-item>
       <el-form-item label="制单人" prop="creator">
-        <el-input
-          v-model="queryParams.creator"
+        <dr-popover-select
           placeholder="请输入制单人"
           clearable
           @keyup.enter.native="handleQuery"
-        />
+          v-model="queryParams.creator"
+          title="制单人"
+          type="CONTACTS_PARAM" :dataMapping="{ creator: 'name' }" :source.sync="queryParams">
+        </dr-popover-select>
       </el-form-item>
-      <el-form-item label="部门" prop="dept">
-        <el-input
-          v-model="queryParams.dept"
+      <el-form-item label="部门" prop="dept" style="margin-left: -43px">
+        <dr-popover-select
           placeholder="请输入部门"
           clearable
           @keyup.enter.native="handleQuery"
-        />
+          v-model="queryParams.dept"
+          title="制单人"
+          type="DEPT_PARAM" :dataMapping="{ dept: 'name' }" :source.sync="queryParams">
+        </dr-popover-select>
       </el-form-item>
-      <el-form-item>
+      <el-form-item style="margin-left: 34px">
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
@@ -87,9 +78,9 @@
       <el-col :span="1.5">
         <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['goal_management:annualSaleGoal:add']">新增</el-button>
       </el-col>
-      <el-col :span="1.5">
+<!--      <el-col :span="1.5">
         <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['goal_management:annualSaleGoal:edit']">修改</el-button>
-      </el-col>
+      </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:annualSaleGoal:remove']">删除</el-button>
       </el-col>
@@ -180,8 +171,8 @@
             custom: 'name',
           }" :source.sync="form"></dr-popover-select>
         </el-form-item>
-        <el-form-item label="销售组织" prop="saleZone">
-          <dr-popover-select v-model="form.saleZone" title="销售组织" type="ORG_PARAM" :dataMapping="{
+        <el-form-item label="销售区域" prop="saleZone">
+          <dr-popover-select v-model="form.saleZone" title="销售区域" type="ORG_PARAM" :dataMapping="{
             saleZoneCode: 'code',
             saleZone: 'name',
           }" :source.sync="form"></dr-popover-select>
@@ -276,12 +267,215 @@
           <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-col :span="1.5">
+          <el-button
+            type="primary"
+            plain
+            icon="el-icon-plus"
+            size="mini"
+            @click="openDetailsDrawer"
+            v-hasPermi="['goal_management:annualSaleGoalDetails:add']"
+          >新增</el-button>
+        </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"
+            v-hasPermi="['goal_management:annualSaleGoalDetails:remove']"
+          >删除</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="warning"
+            plain
+            icon="el-icon-download"
+            size="mini"
+            @click="handleExport"
+            v-hasPermi="['goal_management:annualSaleGoalDetails:export']"
+          >导出</el-button>
+        </el-col>
+        <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 label="id唯一标识" align="center" prop="id" />
+        <el-table-column label="编码" align="center" prop="code" />
+        <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="oneLevelClassifyCode" />
+        <el-table-column label="一级分类" align="center" prop="oneLevelClassify" />
+        <el-table-column label="二级分类编码" align="center" prop="twoLevelClassifyCode" />
+        <el-table-column label="二级分类编码" align="center" prop="twoLevelClassify" />
+        <el-table-column label="物料编码" align="center" prop="materialCode" />
+        <el-table-column label="物料" align="center" prop="material" />
+        <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">
+          <template slot-scope="scope">
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-edit"
+              @click="handleUpdate(scope.row)"
+              v-hasPermi="['goal_management:annualSaleGoalDetails:edit']"
+            >修改</el-button>
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-delete"
+              @click="handleDelete(scope.row)"
+              v-hasPermi="['goal_management:annualSaleGoalDetails: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
+        title="年度销售目标细节"
+        :visible.sync="drawerDetails"
+        :direction="direction"
+        :append-to-body="true"
+        :before-close="handleCloseDetails">
+        <el-form ref="formDetails" :model="formDetails" :rules="ruleDetails" label-width="120px">
+          <el-form-item label="主表编码" prop="code">
+            <el-input v-model="formDetails.code" placeholder="请输入编码" disabled />
+          </el-form-item>
+          <el-form-item label="销售组织" prop="saleOrg">
+            <dr-popover-select
+              v-model="formDetails.saleOrg"
+              title="销售组织"
+              type="ORG_PARAM" :dataMapping="{ saleOrg: 'name' }" :source.sync="formDetails">
+            </dr-popover-select>
+          </el-form-item>
+          <el-form-item label="销售区域" prop="saleZone">
+            <dr-popover-select
+              v-model="formDetails.saleZone"
+              title="销售区域"
+              type="ORG_PARAM" :dataMapping="{ saleZone: 'name' }" :source.sync="formDetails">
+            </dr-popover-select>
+          </el-form-item>
+          <el-form-item label="客户" prop="custom">
+            <dr-popover-select
+              v-model="formDetails.custom"
+              title="客户"
+              type="CUSTOMER_PARAM" :dataMapping="{ custom: 'name' }" :source.sync="formDetails">
+            </dr-popover-select>
+          </el-form-item>
+          <el-form-item label="负责人" prop="creator">
+            <dr-popover-select
+              v-model="formDetails.creator"
+              title="负责人"
+              type="CONTACTS_PARAM" :dataMapping="{ creator: 'name' }" :source.sync="formDetails">
+            </dr-popover-select>
+          </el-form-item>
+          <el-form-item label="一级分类编码" prop="oneLevelClassifyCode">
+            <el-input v-model="formDetails.oneLevelClassifyCode" placeholder="请输入一级分类编码" />
+          </el-form-item>
+          <el-form-item label="一级分类" prop="oneLevelClassify">
+            <el-input v-model="formDetails.oneLevelClassify" placeholder="请输入一级分类" />
+          </el-form-item>
+          <el-form-item label="二级分类编码" prop="twoLevelClassifyCode">
+            <el-input v-model="formDetails.twoLevelClassifyCode" placeholder="请输入二级分类编码" />
+          </el-form-item>
+          <el-form-item label="二级分类编码" prop="twoLevelClassify">
+            <el-input v-model="formDetails.twoLevelClassify" placeholder="请输入二级分类编码" />
+          </el-form-item>
+          <el-form-item label="物料" prop="material">
+            <dr-popover-select
+              v-model="formDetails.material"
+              title="物料"
+              type="MATERIAL_PARAM" :dataMapping="{ material: 'name', materialCode: 'code' }" :source.sync="formDetails">
+            </dr-popover-select>
+          </el-form-item>
+          <el-form-item label="一月目标" prop="januaryGoal">
+            <el-input v-model="formDetails.januaryGoal" placeholder="请输入一月目标" />
+          </el-form-item>
+          <el-form-item label="二月目标" prop="februaryGoal">
+            <el-input v-model="formDetails.februaryGoal" placeholder="请输入二月目标" />
+          </el-form-item>
+          <el-form-item label="三月目标" prop="marchGoal">
+            <el-input v-model="formDetails.marchGoal" placeholder="请输入三月目标" />
+          </el-form-item>
+          <el-form-item label="四月目标" prop="aprilGoal">
+            <el-input v-model="formDetails.aprilGoal" placeholder="请输入四月目标" />
+          </el-form-item>
+          <el-form-item label="五月目标" prop="mayGoal">
+            <el-input v-model="formDetails.mayGoal" placeholder="请输入五月目标" />
+          </el-form-item>
+          <el-form-item label="六月目标" prop="juneGoal">
+            <el-input v-model="formDetails.juneGoal" placeholder="请输入六月目标" />
+          </el-form-item>
+          <el-form-item label="七月目标" prop="julyGoal">
+            <el-input v-model="formDetails.julyGoal" placeholder="请输入七月目标" />
+          </el-form-item>
+          <el-form-item label="八月目标" prop="augustGoal">
+            <el-input v-model="formDetails.augustGoal" placeholder="请输入八月目标" />
+          </el-form-item>
+          <el-form-item label="九月目标" prop="septemberGoal">
+            <el-input v-model="formDetails.septemberGoal" placeholder="请输入九月目标" />
+          </el-form-item>
+          <el-form-item label="十月目标" prop="octoberGoal">
+            <el-input v-model="formDetails.octoberGoal" placeholder="请输入十月目标" />
+          </el-form-item>
+          <el-form-item label="十一月目标" prop="novemberGoal">
+            <el-input v-model="formDetails.novemberGoal" placeholder="请输入十一月目标" />
+          </el-form-item>
+          <el-form-item label="十二月目标" prop="decemberGoal">
+            <el-input v-model="formDetails.decemberGoal" placeholder="请输入十二月目标" />
+          </el-form-item>
+          <el-form-item style="margin-left: 140px">
+            <el-button type="primary" @click="submitFormDetails">确 定</el-button>
+            <el-button @click="cancel">取 消</el-button>
+          </el-form-item>
+        </el-form>
+      </el-drawer>
+
     </el-drawer>
   </div>
 </template>
 
 <script>
+// 年度目标填报
 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";
 
 export default {
   name: "AnnualSaleGoal",
@@ -302,7 +496,7 @@ export default {
       // 年度销售目标表格数据
       annualSaleGoalList: [],
       // 弹出层标题
-      title: "",
+      title: "年度销售目标明细",
       // 是否显示弹出层
       open: false,
       // 查询参数
@@ -325,7 +519,7 @@ export default {
         notes: null,
         documentStatus: null,
         deleteStatus: 0,
-        documentDateRange: ['1949-01-01', '2999-12-31']
+        documentDateRange: null
       },
       // 表单参数
       form: {
@@ -351,6 +545,32 @@ export default {
         updateBy: null,
         updateTime: null
       },
+      formDetails: {
+        id: null,
+        code: null,
+        saleOrg: null,
+        saleZone: null,
+        custom: null,
+        creator: null,
+        oneLevelClassifyCode: null,
+        oneLevelClassify: null,
+        twoLevelClassifyCode: null,
+        twoLevelClassify: null,
+        materialCode: null,
+        material: null,
+        januaryGoal: null,
+        februaryGoal: null,
+        marchGoal: null,
+        aprilGoal: null,
+        mayGoal: null,
+        juneGoal: null,
+        julyGoal: null,
+        augustGoal: null,
+        septemberGoal: null,
+        octoberGoal: null,
+        novemberGoal: null,
+        decemberGoal: null
+      },
       // 表单校验
       rules: {
         documentDate: [{required: true, message: '单据日期不能为空', trigger: 'blur'}],
@@ -360,10 +580,21 @@ export default {
         creator: [{required: true, message: '制单人不能为空', trigger: 'blur'}],
         dept: [{required: true, message: '部门不能为空', trigger: 'blur'}]
       },
+      ruleDetails: {
+        saleOrg: [{ required: true, message: '销售组织不能为空', trigger: 'blur' }],
+        saleZone: [{ required: true, message: '销售组织不能为空', trigger: 'blur' }],
+        custom: [{ required: true, message: '销售组织不能为空', trigger: 'blur' }],
+        creator: [{ required: true, message: '销售组织不能为空', trigger: 'blur' }],
+        oneLevelClassify: [{ required: true, message: '销售组织不能为空', trigger: 'blur' }],
+        twoLevelClassify: [{ required: true, message: '销售组织不能为空', trigger: 'blur' }],
+        material: [{ required: true, message: '销售组织不能为空', trigger: 'blur' }]
+      },
       // 添加抽屉
       drawerAdd: false,
       // 修改抽屉
       drawEdit: false,
+      // 细节抽屉
+      drawerDetails: false,
       // 抽屉打开方向
       direction: 'rtl',
       // 年度列表
@@ -377,7 +608,18 @@ export default {
         { value: '2029', label: '2029' },
         { value: '2030', label: '2030' },
         { value: '2031', label: '2031' },
-        { value: '2032', label: '2032' }
+        { value: '2034', label: '2034' },
+        { value: '2035', label: '2035' },
+        { value: '2036', label: '2036' },
+        { value: '2037', label: '2037' },
+        { value: '2038', label: '2038' },
+        { value: '2039', label: '2039' },
+        { value: '2040', label: '2040' },
+        { value: '2041', label: '2041' },
+        { value: '2042', label: '2042' },
+        { value: '2043', label: '2043' },
+        { value: '2044', label: '2044' },
+        { value: '2045', label: '2045' },
       ],
       // 时间选择器:一周内,一个月内,三个月内
       pickerOptions: {
@@ -407,8 +649,9 @@ export default {
           }
         }]
       },
-      // 单据时间范围
-      documentDateRange: '',
+      // 年度销售目标明细
+      annualSaleGoalDetailsList: null,
+      totalDetails: 0
     };
   },
   created() {
@@ -427,8 +670,8 @@ export default {
     },
     // 取消按钮
     cancel() {
-      this.open = false;
-      this.reset();
+      this.drawerDetails = false;
+      this.resetDetails();
     },
     // 表单重置
     reset() {
@@ -453,6 +696,35 @@ export default {
       };
       this.resetForm("form");
     },
+    resetDetails() {
+      this.formDetails = {
+        id: null,
+        code: null,
+        saleOrg: null,
+        saleZone: null,
+        custom: null,
+        creator: null,
+        oneLevelClassifyCode: null,
+        oneLevelClassify: null,
+        twoLevelClassifyCode: null,
+        twoLevelClassify: null,
+        materialCode: null,
+        material: null,
+        januaryGoal: null,
+        februaryGoal: null,
+        marchGoal: null,
+        aprilGoal: null,
+        mayGoal: null,
+        juneGoal: null,
+        julyGoal: null,
+        augustGoal: null,
+        septemberGoal: null,
+        octoberGoal: null,
+        novemberGoal: null,
+        decemberGoal: null
+      };
+      this.resetForm("formDetails");
+    },
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.pageNum = 1;
@@ -507,6 +779,9 @@ export default {
       console.log(this.form);
       this.submitForm()
     },
+    submitFormDetails() {
+      console.log(this.formDetails);
+    },
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
@@ -530,10 +805,31 @@ export default {
         this.reset()
       }).catch(_ => {})
     },
-    /** 查看时间范围,范围是个时间戳数组*/
+    handleCloseDetails(done) {
+      this.$confirm('确认关闭?').then(_ => {
+        done();
+        this.resetDetails()
+      }).catch(_ => {})
+    },
+    /** 查看时间范围,范围是个数组*/
     lookValue() {
       console.log(this.documentDateRange);
       console.log(this.queryParams);
+    },
+    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.loading = true
+      listAnnualSaleGoalDetails(this.formDetails).then(response => {
+        this.annualSaleGoalDetailsList = response.rows
+        this.totalDetails = response.total
+        this.loading = false
+        console.log(this.annualSaleGoalDetailsList);
+      })
     }
   }
 };