Selaa lähdekoodia

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

002637 1 vuosi sitten
vanhempi
commit
c6f4cac016

+ 2 - 11
src/api/business/spd/goal_management/annualSaleGoalDetails.js

@@ -36,18 +36,9 @@ export function updateAnnualSaleGoalDetails(data) {
 }
 
 // 删除年度销售目标明细
-export function delAnnualSaleGoalDetails(id, code) {
+export function delAnnualSaleGoalDetails(id) {
   return request({
-    url: '/goal_management/annualSaleGoalDetails/' + id + '/' + code,
+    url: '/goal_management/annualSaleGoalDetails/' + id,
     method: 'delete'
   })
 }
-
-// 根据主表code获得明细
-export function getDetailsByCode(query) {
-  return request({
-    url: 'goal_management/annualSaleGoalDetails/listDetails',
-    method: 'get',
-    params: query
-  })
-}

+ 276 - 262
src/views/business/spd/goal_management/AnnualSaleGoal.vue

@@ -9,7 +9,7 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="年度销售目标名称" prop="goalName">
+      <el-form-item label="目标名称" prop="goalName">
         <el-input
           v-model="queryParams.goalName"
           placeholder="请输入年度销售目标名称"
@@ -18,100 +18,57 @@
         />
       </el-form-item>
       <el-form-item label="单据日期" prop="documentDate">
-        <el-date-picker clearable
-                        v-model="queryParams.documentDate"
-                        type="date"
-                        value-format="yyyy-MM-dd"
-                        placeholder="请选择单据日期">
+        <el-date-picker
+          v-model="queryParams.documentDateRange"
+          type="daterange"
+          value-format="yyyy-MM-dd"
+          clearable
+          align="right"
+          unlink-panels
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          placeholder="请选择单据日期"
+          :picker-options="pickerOptions">
         </el-date-picker>
       </el-form-item>
       <el-form-item label="年度" prop="annual">
-        <el-input
+        <el-date-picker
           v-model="queryParams.annual"
-          placeholder="请输入年度"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="客户编码" prop="customCode">
-        <el-input
-          v-model="queryParams.customCode"
-          placeholder="请输入客户编码"
+          type="year"
+          value-format="yyyy"
+          placeholder="选择年度"
           clearable
-          @keyup.enter.native="handleQuery"
-        />
+          @keyup.enter.native="handleQuery">
+        </el-date-picker>
       </el-form-item>
       <el-form-item label="客户" prop="custom">
-        <el-input
-          v-model="queryParams.custom"
-          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.custom" title="客户" valueKey="name"
+                              referName="CUSTOMER_PARAM"
+                              :dataMapping="{ customCode: 'code', custom: '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="creatorCode">
-        <el-input
-          v-model="queryParams.creatorCode"
-          placeholder="请输入制单人编码"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-popover-select-v2 v-model="queryParams.saleZone" title="销售区域" valueKey="name"
+                              referName="CUSTOMER_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="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-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>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -133,18 +90,6 @@
       </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:annualSaleGoal:edit']"
-        >修改
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
           type="danger"
           plain
           icon="el-icon-delete"
@@ -170,29 +115,23 @@
     </el-row>
 
     <el-table v-loading="loading" :data="annualSaleGoalList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="唯一标识" align="center" prop="id"/>
-      <el-table-column label="编码" align="center" prop="code"/>
-      <el-table-column label="年度销售目标名称" align="center" prop="goalName"/>
+      <el-table-column type="selection" width="55" align="center" fixed/>
+      <el-table-column label="编码" align="center" prop="code" width="180"/>
+      <el-table-column label="年度销售目标名称" align="center" prop="goalName" width="180"/>
       <el-table-column label="单据日期" align="center" prop="documentDate" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.documentDate, '{y}-{m}-{d}') }}</span>
         </template>
       </el-table-column>
       <el-table-column label="年度" align="center" prop="annual"/>
-      <el-table-column label="客户编码" align="center" prop="customCode"/>
-      <el-table-column label="客户" align="center" prop="custom"/>
-      <el-table-column label="销售区域编码" align="center" prop="saleZoneCode"/>
-      <el-table-column label="销售区域" align="center" prop="saleZone"/>
-      <el-table-column label="制单人编码" align="center" prop="creatorCode"/>
+      <el-table-column label="客户" align="center" prop="custom" width="180"/>
+      <el-table-column label="销售区域" align="center" prop="saleZone" width="180"/>
       <el-table-column label="制单人" align="center" prop="creator"/>
-      <el-table-column label="部门编码" align="center" prop="deptCode"/>
-      <el-table-column label="部门" align="center" prop="dept"/>
+      <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"/>
+      <el-table-column label="备注" align="center" prop="notes" width="180"/>
       <el-table-column label="单据状态" align="center" prop="documentStatus"/>
-      <el-table-column label="删除状态" align="center" prop="deleteStatus"/>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180" fixed="right">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -260,7 +199,7 @@
           <el-col :span="6">
             <el-form-item label="销售区域" prop="saleZone">
               <el-popover-select-v2 v-model="form.saleZone" title="销售区域" valueKey="name"
-                                    referName="CONTACTS_PARAM"
+                                    referName="CUSTOMER_PARAM"
                                     :dataMapping="{ saleZoneCode: 'code', saleZone: 'name'}"
                                     :source.sync="form" placeholder="请输入销售区域">
               </el-popover-select-v2>
@@ -278,7 +217,7 @@
           <el-col :span="6">
             <el-form-item label="部门" prop="dept">
               <el-popover-select-v2 v-model="form.dept" title="部门" valueKey="name"
-                                    referName="CONTACTS_PARAM"
+                                    referName="DEPT_PARAM"
                                     :dataMapping="{ deptCode: 'code', dept: 'name'}"
                                     :source.sync="form" placeholder="请输入部门">
               </el-popover-select-v2>
@@ -298,7 +237,7 @@
           </el-col>
           <el-col :span="6">
             <el-form-item label="单据状态" prop="documentStatus">
-              <el-input v-model="form.documentStatus" placeholder="编码后端自动生成" clearable disabled/>
+              <el-input v-model="form.documentStatus" placeholder="单据状态后端自动生成" clearable disabled/>
             </el-form-item>
           </el-col>
           <el-col :span="6">
@@ -309,150 +248,152 @@
           </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-plus" size="mini" @click="handleAddDetails">增行</el-button>
-        </el-col>
-      </el-row>
-      <el-table v-loading="loading" :data="annualSaleGoalDetailsList" @selection-change="handleSelectionChange">
-        <el-table-column type="selection" width="55" align="center" fixed />
-        <el-table-column label="销售组织" align="center" prop="saleOrg" width="180">
-          <template slot-scope="scope">
-            <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].saleOrg" title="销售组织" valueKey="name"
-                                  referName="CUSTOMER_PARAM"
-                                  :dataMapping="{ saleOrgCode: 'code', saleOrg: 'name'}"
-                                  :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入销售组织">
-            </el-popover-select-v2>
-          </template>
-        </el-table-column>
-        <el-table-column label="销售区域" align="center" prop="saleZone" width="180">
-          <template slot-scope="scope">
-            <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].saleZone" title="销售区域" valueKey="name"
-                                  referName="CUSTOMER_PARAM"
-                                  :dataMapping="{ saleZoneCode: 'code', saleZone: 'name'}"
-                                  :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入销售区域">
-            </el-popover-select-v2>
-          </template>
-        </el-table-column>
-        <el-table-column label="客户" align="center" prop="custom" width="180">
-          <template slot-scope="scope">
-            <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].custom" title="客户" valueKey="name"
-                                  referName="CUSTOMER_PARAM"
-                                  :dataMapping="{ customCode: 'code', custom: 'name'}"
-                                  :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入客户">
-            </el-popover-select-v2>
-          </template>
-        </el-table-column>
-        <el-table-column label="负责人" align="center" prop="creator" width="180">
-          <template slot-scope="scope">
-            <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].creator" title="负责人" valueKey="name"
-                                  referName="CONTACTS_PARAM"
-                                  :dataMapping="{ creatorCode: 'code', creator: 'name'}"
-                                  :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入负责人">
-            </el-popover-select-v2>
-          </template>
-        </el-table-column>
-        <el-table-column label="一级分类" align="center" prop="oneLevelClassify" width="180">
-          <template slot-scope="scope">
-            <el-input v-model="annualSaleGoalDetailsList[scope.$index].oneLevelClassify" disabled></el-input>
-          </template>
-        </el-table-column>
-        <el-table-column label="二级分类" align="center" prop="twoLevelClassify" width="180">
-          <template slot-scope="scope">
-            <el-input v-model="annualSaleGoalDetailsList[scope.$index].twoLevelClassify" disabled></el-input>
-          </template>
-        </el-table-column>
-        <el-table-column label="物料" align="center" prop="material" width="180">
-          <template slot-scope="scope">
-            <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].material" title="物料" valueKey="name"
-                                  referName="MATERIAL_PARAM"
-                                  :dataMapping="{ materialCode: 'code', material: 'name'}"
-                                  :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入物料">
-            </el-popover-select-v2>
-          </template>
-        </el-table-column>
-        <el-table-column label="合计" align="center" prop="totalGoal" width="180">
-          <template slot-scope="scope">
-            <el-input v-model="annualSaleGoalDetailsList[scope.$index].goalTotal" disabled></el-input>
-          </template>
-        </el-table-column>
-        <el-table-column label="一月" align="center" prop="januaryGoal" width="220">
-          <template slot-scope="scope">
-            <el-input-number v-model="annualSaleGoalDetailsList[scope.$index].januaryGoal" :precision="6" :step="0.1" :min="0"></el-input-number>
-          </template>
-        </el-table-column>
-        <el-table-column label="二月" align="center" prop="februaryGoal" width="220">
-          <template slot-scope="scope">
-            <el-input-number v-model="annualSaleGoalDetailsList[scope.$index].februaryGoal" :precision="6" :step="0.1" :min="0"></el-input-number>
-          </template>
-        </el-table-column>
-        <el-table-column label="三月" align="center" prop="marchGoal" width="220">
-          <template slot-scope="scope">
-            <el-input-number v-model="annualSaleGoalDetailsList[scope.$index].marchGoal" :precision="6" :step="0.1" :min="0"></el-input-number>
-          </template>
-        </el-table-column>
-        <el-table-column label="四月" align="center" prop="aprilGoal" width="220">
-          <template slot-scope="scope">
-            <el-input-number v-model="annualSaleGoalDetailsList[scope.$index].aprilGoal" :precision="6" :step="0.1" :min="0"></el-input-number>
-          </template>
-        </el-table-column>
-        <el-table-column label="五月" align="center" prop="mayGoal" width="220">
-          <template slot-scope="scope">
-            <el-input-number v-model="annualSaleGoalDetailsList[scope.$index].mayGoal" :precision="6" :step="0.1" :min="0"></el-input-number>
-          </template>
-        </el-table-column>
-        <el-table-column label="六月" align="center" prop="juneGoal" width="220">
-          <template slot-scope="scope">
-            <el-input-number v-model="annualSaleGoalDetailsList[scope.$index].juneGoal" :precision="6" :step="0.1" :min="0"></el-input-number>
-          </template>
-        </el-table-column>
-        <el-table-column label="七月" align="center" prop="julyGoal" width="220">
-          <template slot-scope="scope">
-            <el-input-number v-model="annualSaleGoalDetailsList[scope.$index].julyGoal" :precision="6" :step="0.1" :min="0"></el-input-number>
-          </template>
-        </el-table-column>
-        <el-table-column label="八月" align="center" prop="augustGoal" width="220">
-          <template slot-scope="scope">
-            <el-input-number v-model="annualSaleGoalDetailsList[scope.$index].augustGoal" :precision="6" :step="0.1" :min="0"></el-input-number>
-          </template>
-        </el-table-column>
-        <el-table-column label="九月" align="center" prop="septemberGoal" width="220">
-          <template slot-scope="scope">
-            <el-input-number v-model="annualSaleGoalDetailsList[scope.$index].septemberGoal" :precision="6" :step="0.1" :min="0"></el-input-number>
-          </template>
-        </el-table-column>
-        <el-table-column label="十月" align="center" prop="octoberGoal" width="220">
-          <template slot-scope="scope">
-            <el-input-number v-model="annualSaleGoalDetailsList[scope.$index].octoberGoal" :precision="6" :step="0.1" :min="0"></el-input-number>
-          </template>
-        </el-table-column>
-        <el-table-column label="十一月" align="center" prop="novemberGoal" width="220">
-          <template slot-scope="scope">
-            <el-input-number v-model="annualSaleGoalDetailsList[scope.$index].novemberGoal" :precision="6" :step="0.1" :min="0"></el-input-number>
-          </template>
-        </el-table-column>
-        <el-table-column label="十二月" align="center" prop="decemberGoal" width="220">
-          <template slot-scope="scope">
-            <el-input-number v-model="annualSaleGoalDetailsList[scope.$index].decemberGoal" :precision="6" :step="0.1" :min="0"></el-input-number>
-          </template>
-        </el-table-column>
-        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120px" fixed="right">
-          <template slot-scope="scope">
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-delete"
-              @click="handleDeleteDetails(scope.$index, scope.row)"
-            >删除</el-button>
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-delete"
-              @click="handleCopyDetails(scope.row)"
-            >复制</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
+      <div id="addDetails">
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAddDetails">增行</el-button>
+          </el-col>
+        </el-row>
+        <el-table v-loading="loading" :data="annualSaleGoalDetailsList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center" fixed />
+          <el-table-column label="销售组织" align="center" prop="saleOrg" width="180">
+            <template slot-scope="scope">
+              <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].saleOrg" title="销售组织" valueKey="name"
+                                    referName="CUSTOMER_PARAM"
+                                    :dataMapping="{ saleOrgCode: 'code', saleOrg: 'name'}"
+                                    :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入销售组织">
+              </el-popover-select-v2>
+            </template>
+          </el-table-column>
+          <el-table-column label="销售区域" align="center" prop="saleZone" width="180">
+            <template slot-scope="scope">
+              <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].saleZone" title="销售区域" valueKey="name"
+                                    referName="CUSTOMER_PARAM"
+                                    :dataMapping="{ saleZoneCode: 'code', saleZone: 'name'}"
+                                    :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入销售区域">
+              </el-popover-select-v2>
+            </template>
+          </el-table-column>
+          <el-table-column label="客户" align="center" prop="custom" width="180">
+            <template slot-scope="scope">
+              <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].custom" title="客户" valueKey="name"
+                                    referName="CUSTOMER_PARAM"
+                                    :dataMapping="{ customCode: 'code', custom: 'name'}"
+                                    :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入客户">
+              </el-popover-select-v2>
+            </template>
+          </el-table-column>
+          <el-table-column label="负责人" align="center" prop="creator" width="180">
+            <template slot-scope="scope">
+              <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].creator" title="负责人" valueKey="name"
+                                    referName="CONTACTS_PARAM"
+                                    :dataMapping="{ creatorCode: 'code', creator: 'name'}"
+                                    :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入负责人">
+              </el-popover-select-v2>
+            </template>
+          </el-table-column>
+          <el-table-column label="一级分类" align="center" prop="oneLevelClassify" width="180">
+            <template slot-scope="scope">
+              <el-input v-model="annualSaleGoalDetailsList[scope.$index].oneLevelClassify" disabled></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column label="二级分类" align="center" prop="twoLevelClassify" width="180">
+            <template slot-scope="scope">
+              <el-input v-model="annualSaleGoalDetailsList[scope.$index].twoLevelClassify" disabled></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column label="物料" align="center" prop="material" width="180">
+            <template slot-scope="scope">
+              <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].material" title="物料" valueKey="name"
+                                    referName="MATERIAL_PARAM"
+                                    :dataMapping="{ materialCode: 'code', material: 'name'}"
+                                    :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入物料">
+              </el-popover-select-v2>
+            </template>
+          </el-table-column>
+          <el-table-column label="合计" align="center" prop="totalGoal" width="180">
+            <template slot-scope="scope">
+              <el-input v-model="annualSaleGoalDetailsList[scope.$index].totalGoal" disabled></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column label="一月" align="center" prop="januaryGoal" width="220">
+            <template slot-scope="scope">
+              <el-input-number @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])" v-model="annualSaleGoalDetailsList[scope.$index].januaryGoal" :precision="2" :step="0.1" :min="0"></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column label="二月" align="center" prop="februaryGoal" width="220">
+            <template slot-scope="scope">
+              <el-input-number @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])" v-model="annualSaleGoalDetailsList[scope.$index].februaryGoal" :precision="2" :step="0.1" :min="0"></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column label="三月" align="center" prop="marchGoal" width="220">
+            <template slot-scope="scope">
+              <el-input-number @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])" v-model="annualSaleGoalDetailsList[scope.$index].marchGoal" :precision="2" :step="0.1" :min="0"></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column label="四月" align="center" prop="aprilGoal" width="220">
+            <template slot-scope="scope">
+              <el-input-number @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])" v-model="annualSaleGoalDetailsList[scope.$index].aprilGoal" :precision="2" :step="0.1" :min="0"></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column label="五月" align="center" prop="mayGoal" width="220">
+            <template slot-scope="scope">
+              <el-input-number @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])" v-model="annualSaleGoalDetailsList[scope.$index].mayGoal" :precision="2" :step="0.1" :min="0"></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column label="六月" align="center" prop="juneGoal" width="220">
+            <template slot-scope="scope">
+              <el-input-number @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])" v-model="annualSaleGoalDetailsList[scope.$index].juneGoal" :precision="2" :step="0.1" :min="0"></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column label="七月" align="center" prop="julyGoal" width="220">
+            <template slot-scope="scope">
+              <el-input-number @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])" v-model="annualSaleGoalDetailsList[scope.$index].julyGoal" :precision="2" :step="0.1" :min="0"></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column label="八月" align="center" prop="augustGoal" width="220">
+            <template slot-scope="scope">
+              <el-input-number @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])" v-model="annualSaleGoalDetailsList[scope.$index].augustGoal" :precision="2" :step="0.1" :min="0"></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column label="九月" align="center" prop="septemberGoal" width="220">
+            <template slot-scope="scope">
+              <el-input-number @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])" v-model="annualSaleGoalDetailsList[scope.$index].septemberGoal" :precision="2" :step="0.1" :min="0"></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column label="十月" align="center" prop="octoberGoal" width="220">
+            <template slot-scope="scope">
+              <el-input-number @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])" v-model="annualSaleGoalDetailsList[scope.$index].octoberGoal" :precision="2" :step="0.1" :min="0"></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column label="十一月" align="center" prop="novemberGoal" width="220">
+            <template slot-scope="scope">
+              <el-input-number @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])" v-model="annualSaleGoalDetailsList[scope.$index].novemberGoal" :precision="2" :step="0.1" :min="0"></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column label="十二月" align="center" prop="decemberGoal" width="220">
+            <template slot-scope="scope">
+              <el-input-number @change="computeTotalDetails(scope.$index, annualSaleGoalDetailsList[scope.$index])" v-model="annualSaleGoalDetailsList[scope.$index].decemberGoal" :precision="2" :step="0.1" :min="0"></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120px" fixed="right">
+            <template slot-scope="scope">
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-delete"
+                @click="handleDeleteDetails(scope.$index, scope.row)"
+              >删除</el-button>
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-delete"
+                @click="handleCopyDetails(scope.row)"
+              >复制</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
     </el-drawer>
   </div>
 </template>
@@ -514,7 +455,35 @@ export default {
         goalTotal: null,
         notes: null,
         documentStatus: null,
-        deleteStatus: null
+        deleteStatus: null,
+        documentDateRange: null
+      },
+      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]);
+          }
+        }]
       },
       // 表单参数
       form: {
@@ -577,7 +546,9 @@ export default {
       referCondition: {type: '', isPage: true, title: ''},
       classList: [],
       // 子表数组
-      annualSaleGoalDetailsList: []
+      annualSaleGoalDetailsList: [],
+      // 按钮使用权
+      buttonUseful: false
     };
   },
   created() {
@@ -591,6 +562,16 @@ export default {
         this.annualSaleGoalList = response.rows;
         this.total = response.total;
         this.loading = false;
+        console.log(this.annualSaleGoalList);
+        for (const element of this.annualSaleGoalList) {
+          if (element.documentStatus === '0') {
+            element.documentStatus = '未提交'
+          } else if (element.documentStatus === '1') {
+            element.documentStatus = '审核中'
+          } else {
+            element.documentStatus = '已审核'
+          }
+        }
       });
     },
     // 取消按钮
@@ -640,9 +621,9 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
-      this.open = true;
       this.title = "添加年度销售目标";
       this.annualSaleGoalDetailsList = []
+      this.open = true;
     },
     handleAddDetails() {
       let list = {
@@ -680,6 +661,13 @@ export default {
       const id = row.id || this.ids
       getAnnualSaleGoal(id).then(response => {
         this.form = response.data;
+        if (this.form.documentStatus === '0') {
+          this.form.documentStatus = '未提交'
+        } else if (this.form.documentStatus === '1') {
+          this.form.documentStatus = '审批中'
+        } else {
+          this.form.documentStatus = '已审核'
+        }
         this.open = true;
         this.title = "修改年度销售目标";
       });
@@ -689,6 +677,14 @@ export default {
       this.$refs["form"].validate(valid => {
         if (valid) {
           if (this.form.id != null) {
+            if (this.form.documentStatus === '未提交') {
+              this.form.documentStatus = 0
+            } else if (this.form.documentStatus === '审批中') {
+              this.form.documentStatus = 1
+            } else {
+              this.form.documentStatus = 2
+            }
+            this.form.annualGoalMergeDetails = this.annualSaleGoalDetailsList
             updateAnnualSaleGoal(this.form).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
@@ -717,9 +713,8 @@ export default {
       });
     },
     handleDeleteDetails(index, row) {
-      console.log(index);
-      console.log(row);
       this.annualSaleGoalDetailsList.splice(index, 1)
+      this.computeTotal()
     },
     /** 导出按钮操作 */
     handleExport() {
@@ -751,7 +746,7 @@ export default {
         twoLevelClassify: row.twoLevelClassify,
         materialCode: row.materialCode,
         material: row.material,
-        totalGoal: row.goalTotal,
+        totalGoal: row.totalGoal,
         januaryGoal: row.januaryGoal,
         februaryGoal: row.februaryGoal,
         marchGoal: row.marchGoal,
@@ -766,7 +761,26 @@ export default {
         decemberGoal: row.decemberGoal
       }
       this.annualSaleGoalDetailsList.push(list)
-      console.log(this.annualSaleGoalDetailsList);
+      this.computeTotal()
+    },
+    // 计算子表合计
+    computeTotalDetails(index, row) {
+      let array = [row.januaryGoal, row.februaryGoal, row.marchGoal, row.aprilGoal, row.mayGoal, row.juneGoal, row.julyGoal, row.augustGoal, row.septemberGoal, row.octoberGoal, row.novemberGoal, row.decemberGoal]
+      let sum = 0
+      for (const element of array) {
+        sum = (sum * 1000000 + element * 1000000) / 1000000
+      }
+      this.annualSaleGoalDetailsList[index].totalGoal = sum
+      this.computeTotal()
+    },
+    // 计算主表合计
+    computeTotal() {
+      let list = this.annualSaleGoalDetailsList
+      let sum = 0
+      for (const listElement of list) {
+        sum = (sum * 1000000 + listElement.totalGoal * 1000000) / 1000000
+      }
+      this.form.goalTotal = sum
     }
   }
 };

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 170 - 693
src/views/business/spd/goal_management/AnnualSaleGoalMerge.vue


+ 25 - 526
src/views/business/spd/goal_management/MonthSaleGoal.vue

@@ -110,7 +110,8 @@
     </el-row>
 
     <el-table v-loading="loading" :data="monthSaleGoalList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" fixed/>
+      <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="goalName"/>
       <el-table-column label="单据日期" align="center" prop="documentDate" width="180">
@@ -119,14 +120,19 @@
         </template>
       </el-table-column>
       <el-table-column label="年度" align="center" prop="annual"/>
+      <el-table-column label="客户编码" align="center" prop="customCode"/>
       <el-table-column label="客户" align="center" prop="custom"/>
+      <el-table-column label="销售区域编码" align="center" prop="saleZoneCode"/>
       <el-table-column label="销售区域" align="center" prop="saleZone"/>
+      <el-table-column label="制单人编码" align="center" prop="creatorCode"/>
       <el-table-column label="制单人" align="center" prop="creator"/>
+      <el-table-column label="部门编码" align="center" prop="deptCode"/>
       <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 label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="130px">
+      <el-table-column label="删除状态" align="center" prop="deleteStatus"/>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="140" fixed="right">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -156,259 +162,15 @@
       @pagination="getList"
     />
 
-    <el-drawer :title="title" :visible.sync="drawerAddOrEdit" :direction="direction" :before-close="handleClose"
-               size="100%">
-      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
-        <el-row :gutter="10">
-          <el-col :span="1.5">
-            <el-form-item label="编码" prop="code">
-              <el-input v-model="form.code" placeholder="编码自动生成" disabled/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="1.5">
-            <el-form-item label="目标名称" prop="goalName">
-              <el-input v-model="form.goalName" placeholder="目标名称自动生成" disabled/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="1.5">
-            <el-form-item label="单据日期" prop="documentDate">
-              <el-date-picker clearable
-                              v-model="form.documentDate"
-                              type="date"
-                              value-format="yyyy-MM-dd"
-                              placeholder="请选择单据日期">
-              </el-date-picker>
-            </el-form-item>
-          </el-col>
-          <el-col :span="1.5">
-            <el-form-item label="年度" prop="annual">
-              <el-select v-model="form.annual" filterable placeholder="请选择年度">
-                <el-option
-                  v-for="item in annualList"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value">
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="10">
-          <el-col :span="1.5">
-            <el-form-item label="客户" prop="custom">
-              <el-popover-select-v2 v-model="form.custom" title="客户" valueKey="name" referName="CUSTOMER_PARAM"
-                                    :dataMapping="{
-                customCode: 'code', custom: 'name'
-              }" :source.sync="form" placeholder="请输入客户"></el-popover-select-v2>
-            </el-form-item>
-          </el-col>
-          <el-col :span="1.5">
-            <el-form-item label="销售区域" prop="saleZone">
-              <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>
-            </el-form-item>
-          </el-col>
-          <el-col :span="1.5">
-            <el-form-item label="制单人" prop="creator">
-              <el-popover-select-v2 v-model="form.creator" title="制单人" valueKey="name" referName="CONTACTS_PARAM"
-                                    :dataMapping="{
-                creatorCode: 'code', creator: 'name'
-              }" :source.sync="form" placeholder="请输入制单人"></el-popover-select-v2>
-            </el-form-item>
-          </el-col>
-          <el-col :span="1.5">
-            <el-form-item label="部门" prop="dept">
-              <el-popover-select-v2 v-model="form.dept" title="制单人" valueKey="name" referName="DEPT_PARAM"
-                                    :dataMapping="{
-                deptCode: 'code', dept: 'name'
-              }" :source.sync="form" placeholder="请输入部门"></el-popover-select-v2>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="10">
-          <el-col :span="1.5">
-            <el-form-item label="目标合计" prop="goalSum">
-              <el-input v-model="form.goalSum" placeholder="请输入目标合计" disabled/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="1.5">
-            <el-form-item label="备注" prop="notes">
-              <el-input v-model="form.notes" placeholder="请输入备注"/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="1.5">
-            <el-form-item>
-              <el-button type="primary" @click="submitForm">确 定</el-button>
-              <el-button @click="cancel">取 消</el-button>
-            </el-form-item>
-          </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-plus"
-            size="mini"
-            @click="handleAddDetails"
-            v-hasPermi="['goal_management:monthSaleGoalDetails: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:monthSaleGoalDetails:remove']"
-          >删除
-          </el-button>
-        </el-col>
-      </el-row>
-      <el-table v-loading="loading" :data="monthSaleGoalDetailsList" @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"/>
-        <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="dept"/>
-        <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="department"/>
-        <el-table-column label="数量" align="center" prop="num"/>
-        <el-table-column label="月份" align="center" prop="monthly"/>
-        <el-table-column label="目标值" align="center" prop="goalValue"/>
-        <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:monthSaleGoalDetails:edit']"
-            >修改
-            </el-button>
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-delete"
-              @click="handleDeleteDetails(scope.row)"
-              v-hasPermi="['goal_management:monthSaleGoalDetails:remove']"
-            >删除
-            </el-button>
-            <el-button size="mini" type="text" icon="el-icon-paperclip" @click="copyGoalDetails(scope.row)">
-              复制
-            </el-button>
-          </template>
-        </el-table-column>
-      </el-table>
+    <el-drawer :title="title" :visible.sync="open" direction="rtl" :before-close="handleClose" size="100%">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
 
-      <pagination
-        v-show="totalDetails>0"
-        :total="totalDetails"
-        :page.sync="queryParamsDetails.pageNum"
-        :limit.sync="queryParamsDetails.pageSize"
-        @pagination="getListDetails"
-      />
-
-    </el-drawer>
-
-    <el-drawer :title="titleDetails" :append-to-body="true" :before-close="handleCloseDetails"
-               :visible.sync="innerDrawer">
-      <el-form ref="formDetails" :model="formDetails" :rules="rulesDetails" :inline="true" label-width="100px">
-        <el-form-item label="编码" prop="code">
-          <el-input v-model="formDetails.code" placeholder="编码自动生成" disabled/>
-        </el-form-item>
-        <el-form-item label="销售组织" prop="saleOrg">
-          <el-popover-select-v2 v-model="formDetails.saleOrg" title="销售组织" valueKey="name" referName="ORG_PARAM"
-                                :dataMapping="{
-            saleOrg: 'name'
-          }" :source.sync="formDetails" placeholder="请输入销售组织">
-          </el-popover-select-v2>
-        </el-form-item>
-        <el-form-item label="销售区域" prop="saleZone">
-          <el-popover-select-v2 v-model="formDetails.saleZone" title="销售区域" valueKey="name" referName="ORG_PARAM"
-                                :dataMapping="{
-            saleZone: 'name'
-          }" :source.sync="formDetails" placeholder="请输入销售区域">
-          </el-popover-select-v2>
-        </el-form-item>
-        <el-form-item label="客户" prop="custom">
-          <el-popover-select-v2 v-model="formDetails.custom" title="客户" valueKey="name" referName="CUSTOMER_PARAM"
-                                :dataMapping="{
-            custom: 'name'
-          }" :source.sync="formDetails" placeholder="请输入客户">
-          </el-popover-select-v2>
-        </el-form-item>
-        <el-form-item label="部门" prop="dept">
-          <el-popover-select-v2 v-model="formDetails.dept" title="部门" valueKey="name" referName="DEPT_PARAM"
-                                :dataMapping="{
-            dept: 'name'
-          }" :source.sync="formDetails" placeholder="请输入部门">
-          </el-popover-select-v2>
-        </el-form-item>
-        <el-form-item label="制单人" prop="creator">
-          <el-popover-select-v2 v-model="formDetails.creator" title="制单人" valueKey="name" referName="CONTACTS_PARAM"
-                                :dataMapping="{
-            creator: 'name'
-          }" :source.sync="formDetails" placeholder="请输入部门">
-          </el-popover-select-v2>
-        </el-form-item>
-        <el-form-item label="一级分类" prop="oneLevelClassify">
-          <el-select v-model="formDetails.oneLevelClassify" placeholder="请输入一级物料" clearable
-                     @focus="chooseTreeRefer('MATERIALCLASSIFY_PARAM', false, '一级物料分类')"
-          ></el-select>
-        </el-form-item>
-        <el-form-item label="二级分类" prop="twoLevelClassify">
-          <el-select v-model="formDetails.twoLevelClassify" placeholder="请输入二级物料" clearable
-                     @focus="chooseTreeRefer('MATERIALCLASSIFY_PARAM', false, '二级物料分类')"
-          ></el-select>
-        </el-form-item>
-        <el-form-item label="物料" prop="material">
-          <el-popover-select-v2 v-model="formDetails.material" title="物料" valueKey="name" referName="MATERIAL_PARAM"
-                                :dataMapping="{
-            material: 'name', materialCode: 'code'
-          }" :source.sync="formDetails" placeholder="请输入物料">
-          </el-popover-select-v2>
-        </el-form-item>
-        <el-form-item label="科室" prop="department">
-          <el-input v-model="formDetails.department" placeholder="请输入科室"/>
-        </el-form-item>
-        <el-form-item label="数量" prop="num">
-          <el-input-number v-model="formDetails.num" :min="0" label="请输入数量"></el-input-number>
-        </el-form-item>
-        <el-form-item label="月份" prop="monthly">
-          <el-select v-model="formDetails.monthly" placeholder="请选择">
-            <el-option
-              v-for="item in monthList"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="目标值">
-          <el-input-number v-model="formDetails.goalValue" :precision="6" :step="0.1" :min="0"></el-input-number>
-        </el-form-item>
-        <el-form-item>
-          <el-button type="primary" @click="submitFormDetails">确 定</el-button>
-        </el-form-item>
       </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
     </el-drawer>
-
-    <TreeRefers ref="tree" :single="true" @doSubmit="selectionsToTreeInput"></TreeRefers>
   </div>
 </template>
 
@@ -420,26 +182,9 @@ import {
   addMonthSaleGoal,
   updateMonthSaleGoal
 } from "@/api/business/spd/goal_management/monthSaleGoal";
-import {
-  listMonthSaleGoalDetails,
-  getMonthSaleGoalDetails,
-  addMonthSaleGoalDetails,
-  updateMonthSaleGoalDetails,
-  delMonthSaleGoalDetails,
-  setCodeIsNotNull,
-  copyGoalDetails,
-  listMonthSaleGoalDetailsByCode,
-  updateMainGoalSum
-} from "@/api/business/spd/goal_management/monthSaleGoalDetails"
-
-import TreeRefers from '@/components/Refers/treeRefer.vue'
-import ElPopoverSelectV2 from "@/components/popover-select-v2"
 
 export default {
   name: "MonthSaleGoal",
-  components: {
-    TreeRefers, ElPopoverSelectV2
-  },
   data() {
     return {
       // 遮罩层
@@ -454,16 +199,12 @@ export default {
       showSearch: true,
       // 总条数
       total: 0,
-      totalDetails: 0,
       // 月销售目标填报表格数据
       monthSaleGoalList: [],
       // 弹出层标题
       title: "",
-      titleDetails: '',
       // 是否显示弹出层
-      drawerAddOrEdit: false,
-      direction: 'rtl', // 抽屉打开方向
-      innerDrawer: false,
+      open: false,
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -485,7 +226,6 @@ export default {
         documentStatus: null,
         deleteStatus: null,
       },
-      queryParamsDetails: { numPage: 1, numSize: 10 },
       // 表单参数
       form: {
         id: null,
@@ -505,6 +245,7 @@ export default {
         notes: null,
         documentStatus: null,
         deleteStatus: null,
+        monthDetailsList: null
       },
       formDetails: {
         id: null,
@@ -522,55 +263,11 @@ export default {
         material: null,
         department: null,
         num: null,
-        monthly: null,
-        goalValue: null,
+        month: null,
+        goalValue: null
       },
       // 表单校验
-      rules: {},
-      rulesDetails: {},
-      // 参照条件
-      referCondition: {type: '', isPage: true, title: ''},
-      classList: [],
-      // 年度列表
-      annualList: [
-        {value: '2023', label: '2023'},
-        {value: '2024', label: '2024'},
-        {value: '2025', label: '2025'},
-        {value: '2026', label: '2026'},
-        {value: '2027', label: '2027'},
-        {value: '2028', label: '2028'},
-        {value: '2029', label: '2029'},
-        {value: '2030', label: '2030'},
-        {value: '2031', label: '2031'},
-        {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'},
-      ],
-      monthList: [
-        {value: '1', label: '1'},
-        {value: '2', label: '2'},
-        {value: '3', label: '3'},
-        {value: '4', label: '4'},
-        {value: '5', label: '5'},
-        {value: '6', label: '6'},
-        {value: '7', label: '7'},
-        {value: '8', label: '8'},
-        {value: '9', label: '9'},
-        {value: '10', label: '10'},
-        {value: '11', label: '11'},
-        {value: '12', label: '12'},
-      ],
-      // 月销售目标明细列表
-      monthSaleGoalDetailsList: []
+      rules: {}
     };
   },
   created() {
@@ -586,36 +283,9 @@ export default {
         this.loading = false;
       });
     },
-    getListDetails() {
-      this.loading = true;
-      this.queryParamsDetails.numPage = 1
-      this.queryParamsDetails.numSize = 10
-      if (this.form.id === null || this.form.id === '') {
-        listMonthSaleGoalDetails(this.queryParamsDetails).then(response => {
-          this.monthSaleGoalDetailsList = response.rows;
-          this.totalDetails = response.total;
-          this.loading = false;
-          this.form.goalSum = 0
-          for (const element of response.rows) {
-            this.form.goalSum = this.form.goalSum + element.goalValue
-          }
-        });
-      } else {
-        listMonthSaleGoalDetailsByCode(this.queryParamsDetails, this.form.code).then(response => {
-          this.monthSaleGoalDetailsList = response.rows
-          this.totalDetails = response.total
-          this.loading = false
-          // 仅仅页面变了,在后端通过操作也变了
-          this.form.goalSum = 0
-          for (const element of response.rows) {
-            this.form.goalSum = this.form.goalSum + element.goalValue
-          }
-        })
-      }
-    },
     // 取消按钮
     cancel() {
-      this.drawerAddOrEdit = false;
+      this.open = false;
       this.reset();
     },
     // 表单重置
@@ -638,31 +308,10 @@ export default {
         notes: null,
         documentStatus: null,
         deleteStatus: null,
+        monthDetailsList: null
       };
       this.resetForm("form");
     },
-    resetDetails() {
-      this.formDetails = {
-        id: null,
-        code: null,
-        saleOrg: null,
-        saleZone: null,
-        custom: null,
-        dept: null,
-        creator: null,
-        oneLevelClassifyCode: null,
-        oneLevelClassify: null,
-        twoLevelClassifyCode: null,
-        twoLevelClassify: null,
-        materialCode: null,
-        material: null,
-        department: null,
-        num: null,
-        monthly: null,
-        goalValue: null,
-      };
-      this.resetForm("formDetails");
-    },
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.pageNum = 1;
@@ -682,95 +331,39 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
-      this.drawerAddOrEdit = true;
+      this.open = true;
       this.title = "添加月销售目标填报";
     },
-    handleAddDetails() {
-      if (this.form.saleZone !== null && this.form.saleZone !== '') {
-        this.formDetails.saleOrg = this.form.saleZone
-        this.formDetails.saleZone = this.form.saleZone
-      }
-      if (this.form.custom !== null && this.form.custom !== '') {
-        this.formDetails.custom = this.form.custom
-      }
-      if (this.form.dept !== null && this.form.dept !== '') {
-        this.formDetails.dept = this.form.dept
-      }
-      if (this.form.creator !== null && this.form.creator !== '') {
-        this.formDetails.creator = this.form.creator
-      }
-      if (this.form.code !== null && this.form.code !== '') {
-        this.formDetails.code = this.form.code
-      }
-      this.titleDetails = '月销售目标明细--新增'
-      this.innerDrawer = !this.innerDrawer
-    },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
       const id = row.id || this.ids
       getMonthSaleGoal(id).then(response => {
         this.form = response.data;
-        this.getListDetails()
-        this.drawerAddOrEdit = true;
+        this.open = true;
         this.title = "修改月销售目标填报";
       });
     },
-    handleUpdateDetails(row) {
-      this.resetDetails()
-      const id = row.id || this.ids
-      getMonthSaleGoalDetails(id).then(response => {
-        this.formDetails = response.data
-        this.innerDrawer = !this.innerDrawer
-        this.titleDetails = '月销售目标明细--修改'
-      })
-    },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate(valid => {
-        console.log(this.form);
         if (valid) {
           if (this.form.id != null) {
             updateMonthSaleGoal(this.form).then(response => {
               this.$modal.msgSuccess("修改成功");
-              this.drawerAddOrEdit = false;
+              this.open = false;
               this.getList();
             });
           } else {
-            this.form.deleteStatus = 0
-            this.form.documentStatus = '开立态'
-            this.form.goalSum = 0.000000
             addMonthSaleGoal(this.form).then(response => {
               this.$modal.msgSuccess("新增成功");
-              this.drawerAddOrEdit = false;
+              this.open = false;
               this.getList();
             });
           }
         }
       });
     },
-    submitFormDetails() {
-      console.log(this.formDetails);
-      this.$refs["formDetails"].validate(valid => {
-        if (valid) {
-          if (this.formDetails.id != null) {
-            updateMonthSaleGoalDetails(this.formDetails).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.innerDrawer = false;
-              this.getListDetails();
-              this.updateMainGoalSum(this.form.code)
-            });
-          } else {
-            addMonthSaleGoalDetails(this.formDetails).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.innerDrawer = false;
-              this.getListDetails();
-            });
-          }
-          this.resetDetails()
-        }
-      })
-    },
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
@@ -782,106 +375,12 @@ export default {
       }).catch(() => {
       });
     },
-    handleDeleteDetails(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除月销售目标填报编号为"' + ids + '"的数据项?').then(function () {
-        return delMonthSaleGoalDetails(ids);
-      }).then(() => {
-        this.getListDetails();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {
-      });
-    },
     /** 导出按钮操作 */
     handleExport() {
       this.download('goal_management/monthSaleGoal/export', {
         ...this.queryParams
       }, `monthSaleGoal_${new Date().getTime()}.xlsx`)
-    },
-    // 关闭抽屉
-    handleClose(done) {
-      this.$confirm('确认关闭?')
-        .then(_ => {
-          done();
-          if (this.monthSaleGoalDetailsList.length !== 0 && (this.form.id === null || this.form.id === '')) {
-            this.setCodeIsNotNull()
-            this.monthSaleGoalDetailsList = []
-          }
-          this.reset()
-        })
-        .catch(_ => {
-        });
-    },
-    handleCloseDetails(done) {
-      this.$confirm('确认关闭?')
-        .then(_ => {
-          done();
-          this.resetDetails()
-        })
-        .catch(_ => {
-        });
-    },
-    // 选择树形参照
-    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
-      }
-    },
-    setCodeIsNotNull() {
-      setCodeIsNotNull().then(response => {
-        console.log(response);
-      })
-    },
-    // 复制单据
-    copyGoalDetails(row) {
-      copyGoalDetails(row).then(response => {
-        this.getListDetails()
-      })
-    },
-    // 在修改页中修改明细时,修改数据库的数据
-    updateMainGoalSum(code) {
-      updateMainGoalSum(code).then(response => {
-        console.log(response);
-      })
     }
   }
 };
 </script>
-

+ 0 - 706
src/views/business/spd/goal_management/index.vue

@@ -1,706 +0,0 @@
-<template>
-  <div class="app-container">
-    <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"
-          placeholder="请输入编码"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="目标名称" prop="goalName">
-        <el-input
-          v-model="queryParams.goalName"
-          placeholder="请输入年度销售目标名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="单据日期" prop="documentDateRange" style="margin-left: 44px">
-        <el-date-picker
-          v-model="queryParams.documentDateRange"
-          type="daterange"
-          align="right"
-          unlink-panels
-          range-separator="至"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-          :picker-options="pickerOptions"
-          value-format="yyyy-MM-dd"
-          @keyup.enter.native="handleQuery">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="年度" prop="annual">
-        <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">
-        <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">
-        <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">
-        <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" 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 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>
-    </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="handleAdd" v-hasPermi="['goal_management:annualSaleGoal:add']">新增</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:annualSaleGoal: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:annualSaleGoal:export']">导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="annualSaleGoalList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" fixed />
-      <el-table-column label="编码" align="center" prop="code" width="180" />
-      <el-table-column label="目标名称" align="center" prop="goalName" width="180" />
-      <el-table-column label="单据日期" align="center" prop="documentDate" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.documentDate, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="年度" align="center" prop="annual" />
-      <el-table-column label="客户" align="center" prop="custom" width="180" />
-      <el-table-column label="销售区域" align="center" prop="saleZone" width="180" />
-      <el-table-column label="制单人" align="center" prop="creator" />
-      <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 label="创建人" align="center" prop="createBy"></el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180"></el-table-column>
-      <el-table-column label="修改人" align="center" prop="updateBy"></el-table-column>
-      <el-table-column label="修改时间" align="center" prop="updateTime" width="180"></el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180px" fixed="right">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['goal_management:annualSaleGoal:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['goal_management:annualSaleGoal: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="title" :visible.sync="drawerAddAndEdit" :direction="direction" :before-close="handleClose" size="100%">
-      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
-        <el-row :gutter="20">
-          <el-col :span="6">
-            <el-form-item label="编码" prop="code">
-              <el-input v-model="form.code" placeholder="编码后端自动生成" clearable disabled />
-            </el-form-item>
-          </el-col>
-          <el-col :span="6">
-            <el-form-item label="目标名称" prop="goalName">
-              <el-input v-model="form.goalName" placeholder="目标名称后端自动生成" clearable disabled />
-            </el-form-item>
-          </el-col>
-          <el-col :span="6">
-            <el-form-item label="单据日期" prop="documentDate">
-              <el-date-picker v-model="form.documentDate" type="date" format="yyyy-MM-dd" placeholder="选择日期"></el-date-picker>
-            </el-form-item>
-          </el-col>
-          <el-col :span="6">
-            <el-form-item label="年度" prop="annual">
-              <el-date-picker v-model="form.annual" type="year" format="yyyy" placeholder="选择年度"></el-date-picker>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="20">
-          <el-col :span="6">
-            <el-form-item label="客户" prop="custom">
-              <el-popover-select-v2 v-model="form.custom" title="客户" valueKey="name"
-                                    referName="CUSTOMER_PARAM"
-                                    :dataMapping="{ customCode: 'code', custom: 'name'}"
-                                    :source.sync="form" placeholder="请输入客户">
-              </el-popover-select-v2>
-            </el-form-item>
-          </el-col>
-          <el-col :span="6">
-            <el-form-item label="销售区域" prop="saleZone">
-              <el-popover-select-v2 v-model="form.saleZone" title="销售区域" valueKey="name"
-                                    referName="CONTACTS_PARAM"
-                                    :dataMapping="{ saleZoneCode: 'code', saleZone: 'name'}"
-                                    :source.sync="form" placeholder="请输入销售区域">
-              </el-popover-select-v2>
-            </el-form-item>
-          </el-col>
-          <el-col :span="6">
-            <el-form-item label="制单人" prop="creator">
-              <el-popover-select-v2 v-model="form.creator" title="制单人" valueKey="name"
-                                    referName="CONTACTS_PARAM"
-                                    :dataMapping="{ creatorCode: 'code', creator: 'name'}"
-                                    :source.sync="form" placeholder="请输入制单人">
-              </el-popover-select-v2>
-            </el-form-item>
-          </el-col>
-          <el-col :span="6">
-            <el-form-item label="部门" prop="dept">
-              <el-popover-select-v2 v-model="form.dept" title="部门" valueKey="name"
-                                    referName="CONTACTS_PARAM"
-                                    :dataMapping="{ deptCode: 'code', dept: 'name'}"
-                                    :source.sync="form" placeholder="请输入部门">
-              </el-popover-select-v2>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="20">
-          <el-col :span="6">
-            <el-form-item label="目标合计" prop="goalTotal">
-              <el-input v-model="form.goalTotal" placeholder="目标合计自动计算" clearable disabled />
-            </el-form-item>
-          </el-col>
-          <el-col :span="6">
-            <el-form-item label="备注" prop="notes">
-              <el-input v-model="form.notes" placeholder="请输入备注" clearable />
-            </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>
-          </el-col>
-          <el-col :span="6">
-            <el-form-item label="操作">
-              <el-button type="primary" @click="submitForm" size="medium">确 定</el-button>
-              <el-button @click="cancel" size="medium">返 回</el-button>
-            </el-form-item>
-          </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-plus" size="mini" @click="handleAddDetails">增行</el-button>
-        </el-col>
-        <el-col :span="1.5">
-          <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">删行</el-button>
-        </el-col>
-      </el-row>
-      <el-table v-loading="loading" :data="annualSaleGoalDetailsList" @selection-change="handleSelectionChange">
-        <el-table-column type="selection" width="55" align="center" fixed />
-        <el-table-column label="编号" align="center" type="index" ></el-table-column>
-        <el-table-column label="编码" align="center" prop="code" width="180" />
-        <el-table-column label="销售组织" align="center" prop="saleOrg" width="180" />
-        <el-table-column label="销售区域" align="center" prop="saleZone" />
-        <el-table-column label="客户" align="center" prop="custom" width="180" />
-        <el-table-column label="负责人" align="center" prop="creator" width="180" />
-        <el-table-column label="一级分类" align="center" prop="oneLevelClassify" />
-        <el-table-column label="二级分类" align="center" prop="twoLevelClassify" width="180" />
-        <el-table-column label="物料" align="center" prop="material" />
-        <el-table-column label="合计" align="center" prop="totalGoal" width="180" />
-        <el-table-column label="一月" align="center" prop="januaryGoal" />
-        <el-table-column label="二月" align="center" prop="februaryGoal"></el-table-column>
-        <el-table-column label="三月" align="center" prop="marchGoal" width="180"></el-table-column>
-        <el-table-column label="四月" align="center" prop="aprilGoal"></el-table-column>
-        <el-table-column label="五月" align="center" prop="mayGoal" width="180"></el-table-column>
-        <el-table-column label="六月" align="center" prop="juneGoal" width="180"></el-table-column>
-        <el-table-column label="七月" align="center" prop="julyGoal" width="180"></el-table-column>
-        <el-table-column label="八月" align="center" prop="augustGoal" width="180"></el-table-column>
-        <el-table-column label="九月" align="center" prop="septemberGoal" width="180"></el-table-column>
-        <el-table-column label="十月" align="center" prop="octoberGoal" width="180"></el-table-column>
-        <el-table-column label="十一月" align="center" prop="novemberGoal" width="180"></el-table-column>
-        <el-table-column label="十二月" align="center" prop="decemberGoal" width="180"></el-table-column>
-        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180px" fixed="right">
-          <template slot-scope="scope">
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-edit"
-              @click="handleUpdateDetails(scope.row)"
-              v-hasPermi="['goal_management:annualSaleGoal:edit']"
-            >修改</el-button>
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-delete"
-              @click="handleDelete(scope.row)"
-              v-hasPermi="['goal_management:annualSaleGoal:remove']"
-            >删除</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-    </el-drawer>
-
-    <TreeRefers ref="tree" :single="true" @doSubmit="selectionsToTreeInput"></TreeRefers>
-  </div>
-</template>
-
-<script>
-// 年度目标填报
-import { listAnnualSaleGoal, getAnnualSaleGoal, delAnnualSaleGoal, addAnnualSaleGoal, updateAnnualSaleGoal } from "@/api/business/spd/goal_management/annualSaleGoal";
-// 年度目标填报明细
-import {
-
-} from "@/api/business/spd/goal_management/annualSaleGoalDetails";
-// 树形参照
-import TreeRefers from '@/components/Refers/treeRefer.vue'
-import ElPopoverSelectV2 from "@/components/popover-select-v2"
-
-export default {
-  name: "AnnualSaleGoal",
-  components: {
-    TreeRefers, ElPopoverSelectV2
-  },
-  data() {
-    return {
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 年度销售目标表格数据
-      annualSaleGoalList: [],
-      // 弹出层标题
-      title: '',
-      titleDetails: '',
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        code: null,
-        goalName: null,
-        documentDate: null,
-        annual: null,
-        customCode: null,
-        custom: null,
-        saleZoneCode: null,
-        saleZone: null,
-        creatorCode: null,
-        creator: null,
-        deptCode: null,
-        dept: null,
-        goalTotal: null,
-        notes: null,
-        documentStatus: null,
-        deleteStatus: 0,
-        documentDateRange: null
-      },
-      queryDetailsParams: {
-        pageNum: 1,
-        pageSize: 10,
-        code: null
-      },
-      // 表单参数
-      form: {
-        id: null,
-        code: null,
-        goalName: null,
-        documentDate: null,
-        annual: null,
-        customCode: null,
-        custom: null,
-        saleZoneCode: null,
-        saleZone: null,
-        creatorCode: null,
-        creator: null,
-        deptCode: null,
-        dept: null,
-        goalTotal: null,
-        notes: null,
-        documentStatus: '开立态',
-        deleteStatus: 0,
-        createBy: null,
-        createTime: null,
-        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,
-        totalGoal: 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'}],
-        annual: [{required: true, message: '年度不能为空', trigger: 'blur'}],
-        custom: [{required: true, message: '客户不能为空', trigger: 'blur'}],
-        saleZone: [{required: true, message: '销售区域不能为空', trigger: 'blur'}],
-        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' }]
-      },
-      // 添加抽屉
-      drawerAddAndEdit: false,
-      // 抽屉打开方向
-      direction: 'rtl',
-      // 年度列表
-      annualList: [
-        { value: '2023', label: '2023' },
-        { value: '2024', label: '2024' },
-        { value: '2025', label: '2025' },
-        { value: '2026', label: '2026' },
-        { value: '2027', label: '2027' },
-        { value: '2028', label: '2028' },
-        { value: '2029', label: '2029' },
-        { value: '2030', label: '2030' },
-        { value: '2031', label: '2031' },
-        { 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: {
-        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]);
-          }
-        }]
-      },
-      // 年度销售目标明细
-      annualSaleGoalDetailsList: [],
-      totalDetails: 0,
-      // 参照条件
-      referCondition: { type: '', isPage: true, title: '' },
-      classList: []
-    };
-  },
-  created() {
-    this.getList();
-  },
-  methods: {
-    /** 查询年度销售目标列表 */
-    getList() {
-      this.loading = true;
-      listAnnualSaleGoal(this.queryParams).then(response => {
-        this.annualSaleGoalList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-        console.log(this.annualSaleGoalList);
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.drawerDetails = false;
-      this.resetDetails();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        id: null,
-        code: null,
-        goalName: null,
-        documentDate: null,
-        annual: null,
-        customCode: null,
-        custom: null,
-        saleZoneCode: null,
-        saleZone: null,
-        creatorCode: null,
-        creator: null,
-        deptCode: null,
-        dept: null,
-        goalTotal: null,
-        notes: null,
-        documentStatus: '开立态',
-        deleteStatus: 0,
-        createBy: null,
-        createTime: null,
-        updateBy: null,
-        updateTime: null
-      };
-      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,
-        totalGoal: 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;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset()
-      this.title = '年销售目标新增'
-      this.annualSaleGoalDetailsList = []
-      this.drawerAddAndEdit = true
-    },
-    handleAddDetails() {
-      this.titleDetails = '年销售目标明细新增'
-      this.drawerInner = !this.drawerInner
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset();
-      const id = row.id || this.ids
-      getAnnualSaleGoal(id).then(response => {
-        this.form = response.data
-        this.drawEdit = true
-        // this.getDetailList()
-      });
-    },
-    handleUpdateDetails(row) {
-      console.log(row);
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          if (this.form.id != null) {
-            updateAnnualSaleGoal(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.drawerAddAndEdit = false;
-              this.getList();
-            });
-          } else {
-            addAnnualSaleGoal(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.drawerAddAndEdit = false;
-              this.getList();
-            });
-          }
-        }
-      });
-    },
-    submitFormDetails() {
-      this.$refs["formDetails"].validate(valid => {
-        if (valid) {
-          if (this.formDetails.id != null) {
-            updateAnnualSaleGoal(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.drawerInner = false;
-            });
-          } else {
-            const formDetails = this.formDetails
-            this.annualSaleGoalDetailsList.push(formDetails)
-            console.log(this.annualSaleGoalDetailsList);
-            this.drawerInner = false
-          }
-        }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除年度销售目标编号为"' + ids + '"的数据项?').then(function() {
-        return delAnnualSaleGoal(ids);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('goal_management/annualSaleGoal/export', {
-        ...this.queryParams
-      }, `annualSaleGoal_${new Date().getTime()}.xlsx`)
-    },
-    /** 关闭添加抽屉*/
-    handleClose(done) {
-      this.$confirm('确认关闭?').then(_ => {
-        done();
-        this.reset()
-        this.getList()
-      }).catch(_ => {})
-    },
-    handleCloseDetails(done) {
-      this.$confirm('确认关闭?').then(_ => {
-        done();
-        this.resetDetails()
-      }).catch(_ => {})
-    },
-    // 选择树形参照
-    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
-      }
-    }
-  }
-};
-</script>

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä