Przeglądaj źródła

营销-月销售目标填报中改变了物料参照的字段宽度;优化了界面切换卡顿;详情页中增加了明细行的批量删除;修复了批量删除接口。

DongZ 1 rok temu
rodzic
commit
7cf40b6e18

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

@@ -36,10 +36,11 @@ export function updateMonthSaleGoalDetails(data) {
 }
 
 // 删除月销售目标明细
-export function delMonthSaleGoalDetails(id) {
+export function delMonthSaleGoalDetails(ids) {
   return request({
-    url: '/goal_management/monthSaleGoalDetails/' + id,
-    method: 'delete'
+    url: '/goal_management/monthSaleGoalDetails/delete',
+    method: 'post',
+    data: ids
   })
 }
 

+ 5 - 5
src/components/popover-select/components/MATERIAL_PARAM.js

@@ -1,18 +1,18 @@
 export default [
   {
-    item: { key: "code", title: "编码", width: "auto" },
+    item: { key: "code", title: "编码", width: "150" },
     attr: {},
   },
   {
-    item: { key: "name", title: "名称", width: "auto" },
+    item: { key: "name", title: "名称", width: "160" },
     attr: {},
   },
   {
-    item: { key: "specification", title: "规格", width: "auto" },
+    item: { key: "specification", title: "规格", width: "150" },
     attr: {},
   },
   {
-    item: { key: "manufacturerIdName", title: "生产厂家", width: "auto" },
+    item: { key: "manufacturerIdName", title: "生产厂家", width: "220" },
     attr: {},
   },
   {
@@ -28,7 +28,7 @@ export default [
     attr: {},
   },
   {
-    item: { key: "registrationNo", title: "注册证号", width: "auto" },
+    item: { key: "registrationNo", title: "注册证号", width: "160" },
     attr: {
       type:'ComputedInput',
       formatter: (prop) => {

+ 216 - 173
src/views/business/spd/target/MonthSaleGoal.vue

@@ -1,160 +1,164 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="mini" :inline="true" label-width="100px">
-      <el-row :gutter="20">
-        <el-col :span="6">
-          <el-form-item label="编码" prop="code">
-            <el-input v-model="queryParams.code" placeholder="请输入编码" clearable @keyup.enter.native="handleQuery" />
-          </el-form-item>
-        </el-col>
-        <el-col :span="6">
-          <el-form-item label="目标名称" prop="goalName">
-            <el-input v-model="queryParams.goalName" placeholder="请输入目标名称" clearable
-              @keyup.enter.native="handleQuery" />
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item label="单据日期" prop="documentDate">
-            <el-date-picker v-model="documentDateRange" value-format="yyyy-MM-dd" @change="setBeginAndEnd"
-              type="daterange" align="right" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
-              :picker-options="pickerOptions">
-            </el-date-picker>
-          </el-form-item>
-        </el-col>
-        <el-col :span="4">
-          <el-form-item>
-            <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-tooltip class="item" effect="dark" :content="showSearch?'隐藏搜索':'显示搜索'" placement="top">
-              <el-button type="warning" :icon="showSearch?'el-icon-caret-top':'el-icon-caret-bottom'" circle
-                @click="showSearch = !showSearch"></el-button>
-            </el-tooltip>
-          </el-form-item>
-        </el-col>
-      </el-row>
-    </el-form>
-    <el-form :model="queryParams" ref="queryForm" size="mini" :inline="true" v-show="showSearch" label-width="100px">
-      <el-row :gutter="20">
-        <el-col :span="6">
-          <el-form-item label="年度" prop="annual">
-            <el-date-picker v-model="queryParams.annual" type="year" value-format="yyyy" placeholder="选择年度" clearable
-              @keyup.enter.native="handleQuery">
-            </el-date-picker>
-          </el-form-item>
-        </el-col>
-        <el-col :span="6">
-          <el-form-item label="客户" prop="custom" v-if="isDept && !isJiwei">
-            <el-popover-tree-select v-model="queryParams.custom" valueKey='name' title="客户" referName="PROFITCENTER"
-              :dataMapping="{ customCode: 'code', custom: 'name'}" :source.sync="queryParams" placeholder="请输入客户"
-              @keyup.enter.native="handleQuery">
-            </el-popover-tree-select>
-          </el-form-item>
-          <el-form-item label="客户" prop="custom" v-if="!(isDept && !isJiwei)">
-            <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-col>
-        <el-col :span="6">
-          <el-form-item label="销售区域" prop="saleZone">
-            <el-popover-select-v2 v-model="queryParams.saleZone" title="销售区域" valueKey="name"
-              referName="MK_SALESAREA_PARAM" :dataMapping="{ saleZoneCode: 'code', saleZone: 'name'}"
-              :source.sync="queryParams" placeholder="请输入销售区域" @keyup.enter.native="handleQuery">
-            </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="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-col>
-      </el-row>
-      <el-row :gutter="20">
-        <el-col :span="6">
-          <el-form-item label="部门" prop="dept">
-            <el-popover-select-v2 v-model="queryParams.dept" title="部门" valueKey="name" referName="DEPT_PARAM"
-              :dataMapping="{ deptCode: 'id', dept: 'name'}" :source.sync="queryParams" placeholder="请输入部门"
-              @keyup.enter.native="handleQuery">
-            </el-popover-select-v2>
-          </el-form-item>
+    <div v-if="isList">
+      <el-form :model="queryParams" ref="queryForm" size="mini" :inline="true" label-width="100px">
+        <el-row :gutter="20">
+          <el-col :span="6">
+            <el-form-item label="编码" prop="code">
+              <el-input v-model="queryParams.code" placeholder="请输入编码" clearable @keyup.enter.native="handleQuery" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="目标名称" prop="goalName">
+              <el-input v-model="queryParams.goalName" placeholder="请输入目标名称" clearable
+                @keyup.enter.native="handleQuery" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="单据日期" prop="documentDate">
+              <el-date-picker v-model="documentDateRange" value-format="yyyy-MM-dd" @change="setBeginAndEnd"
+                type="daterange" align="right" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
+                :picker-options="pickerOptions">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="4">
+            <el-form-item>
+              <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-tooltip class="item" effect="dark" :content="showSearch?'隐藏搜索':'显示搜索'" placement="top">
+                <el-button type="warning" :icon="showSearch?'el-icon-caret-top':'el-icon-caret-bottom'" circle
+                  @click="showSearch = !showSearch"></el-button>
+              </el-tooltip>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <el-form :model="queryParams" ref="queryForm" size="mini" :inline="true" v-show="showSearch" label-width="100px">
+        <el-row :gutter="20">
+          <el-col :span="6">
+            <el-form-item label="年度" prop="annual">
+              <el-date-picker v-model="queryParams.annual" type="year" value-format="yyyy" placeholder="选择年度" clearable
+                @keyup.enter.native="handleQuery">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="客户" prop="custom" v-if="isDept && !isJiwei">
+              <el-popover-tree-select v-model="queryParams.custom" valueKey='name' title="客户" referName="PROFITCENTER"
+                :dataMapping="{ customCode: 'code', custom: 'name'}" :source.sync="queryParams" placeholder="请输入客户"
+                @keyup.enter.native="handleQuery">
+              </el-popover-tree-select>
+            </el-form-item>
+            <el-form-item label="客户" prop="custom" v-if="!(isDept && !isJiwei)">
+              <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-col>
+          <el-col :span="6">
+            <el-form-item label="销售区域" prop="saleZone">
+              <el-popover-select-v2 v-model="queryParams.saleZone" title="销售区域" valueKey="name"
+                referName="MK_SALESAREA_PARAM" :dataMapping="{ saleZoneCode: 'code', saleZone: 'name'}"
+                :source.sync="queryParams" placeholder="请输入销售区域" @keyup.enter.native="handleQuery">
+              </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="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-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="6">
+            <el-form-item label="部门" prop="dept">
+              <el-popover-select-v2 v-model="queryParams.dept" title="部门" valueKey="name" referName="DEPT_PARAM"
+                :dataMapping="{ deptCode: 'id', dept: 'name'}" :source.sync="queryParams" placeholder="请输入部门"
+                @keyup.enter.native="handleQuery">
+              </el-popover-select-v2>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="单据状态" prop="status">
+              <el-select size="mini" v-model="queryParams.status" clearable>
+                <el-option v-for="dict in dict.type.sys_status" :key="dict.value" :label="dict.label"
+                  :value="dict.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+
+      <el-row :gutter="10" class="mb8" style="float: right">
+        <el-col :span="1.5">
+          <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增
+          </el-button>
         </el-col>
-        <el-col :span="6">
-          <el-form-item label="单据状态" prop="status">
-            <el-select size="mini" v-model="queryParams.status" clearable>
-              <el-option v-for="dict in dict.type.sys_status" :key="dict.value" :label="dict.label" :value="dict.value">
-              </el-option>
-            </el-select>
-          </el-form-item>
+        <el-col :span="1.5">
+          <el-dropdown @command="handleCommand">
+            <el-button type="warning" plain icon="el-icon-download" size="mini">
+              导出<i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item command="export">导出</el-dropdown-item>
+              <el-dropdown-item command="exportDetails">导出明细</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
         </el-col>
       </el-row>
-    </el-form>
 
-    <el-row :gutter="10" class="mb8" style="float: right">
-      <el-col :span="1.5">
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-dropdown @command="handleCommand">
-          <el-button type="warning" plain icon="el-icon-download" size="mini">
-            导出<i class="el-icon-arrow-down el-icon--right"></i>
-          </el-button>
-          <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item command="export">导出</el-dropdown-item>
-            <el-dropdown-item command="exportDetails">导出明细</el-dropdown-item>
-          </el-dropdown-menu>
-        </el-dropdown>
-      </el-col>
-    </el-row>
+      <el-table v-loading="loading" :data="monthSaleGoalList" @selection-change="handleSelectionChange"
+        @row-dblclick="useDoubleClick" v-horizontal-scroll max-height="560">
+        <el-table-column label="编码" align="center" prop="code" width="180" />
+        <el-table-column label="目标名称" align="center" prop="goalName" width="240" />
+        <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" width="100" />
+        <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" width="180" />
+        <el-table-column label="部门" align="center" prop="dept" width="180" />
+        <el-table-column label="销售目标合计(元)" align="center" prop="goalSum" width="180" />
+        <el-table-column label="备注" align="center" prop="notes" width="180" />
+        <el-table-column show-overflow-tooltip label="状态" align="center" width="100" prop="status">
+          <template slot-scope="scope">
+            <dict-tag :options="dict.type.sys_status" :value="scope.row.status" />
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="center" class-name="small-padding" width="180" fixed="right">
+          <template slot-scope="scope">
+            <el-button size="mini" type="text" @click="useDoubleClick(scope.row)">查看
+            </el-button>
+            <el-button v-if="scope.row.status == '0' || scope.row.status == '3'" size="mini" type="text"
+              @click="handleUpdate(scope.row)">修改
+            </el-button>
+            <el-button v-if="scope.row.status == '0' || scope.row.status == '3'" size="mini" type="text"
+              @click="handleDelete(scope.row)">删除
+            </el-button>
+            <el-button v-if="scope.row.status == '0' || scope.row.status == '3'" size="mini" type="text"
+              @click="handleSubmit(scope.row)">提交</el-button>
+            <el-button v-if="scope.row.status == '1'" size="mini" type="text" @click="handleReback(scope.row)">收回
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
 
-    <el-table v-loading="loading" :data="monthSaleGoalList" @selection-change="handleSelectionChange"
-      @row-dblclick="useDoubleClick" v-horizontal-scroll max-height="560">
-      <el-table-column label="编码" align="center" prop="code" width="180" />
-      <el-table-column label="目标名称" align="center" prop="goalName" width="240" />
-      <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" width="100" />
-      <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" width="180" />
-      <el-table-column label="部门" align="center" prop="dept" width="180" />
-      <el-table-column label="销售目标合计(元)" align="center" prop="goalSum" width="180" />
-      <el-table-column label="备注" align="center" prop="notes" width="180" />
-      <el-table-column show-overflow-tooltip label="状态" align="center" width="100" prop="status">
-        <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_status" :value="scope.row.status" />
-        </template>
-      </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding" width="180" fixed="right">
-        <template slot-scope="scope">
-          <el-button size="mini" type="text" @click="useDoubleClick(scope.row)">查看
-          </el-button>
-          <el-button v-if="scope.row.status == '0' || scope.row.status == '3'" size="mini" type="text"
-            @click="handleUpdate(scope.row)">修改
-          </el-button>
-          <el-button v-if="scope.row.status == '0' || scope.row.status == '3'" size="mini" type="text"
-            @click="handleDelete(scope.row)">删除
-          </el-button>
-          <el-button v-if="scope.row.status == '0' || scope.row.status == '3'" size="mini" type="text"
-            @click="handleSubmit(scope.row)">提交</el-button>
-          <el-button v-if="scope.row.status == '1'" size="mini" type="text" @click="handleReback(scope.row)">收回
-          </el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
-      :page-sizes="[10, 20, 50, 100]" @pagination="getList" />
+      <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+        :page-sizes="[10, 20, 50, 100]" @pagination="getList" />
+    </div>
 
-    <el-drawer :title="title" :visible.sync="open" direction="rtl" :before-close="handleClose" size="100%"
-      v-horizontal-scroll>
+    <!-- <el-drawer :title="title" :visible.sync="open" direction="rtl" :before-close="handleClose" size="100%"
+      v-horizontal-scroll> -->
+    <div v-if="!isList">
       <el-form ref="form" :model="form" :rules="rules" label-width="120px" :disabled="openStatus == 'see'" size="mini">
         <el-row :gutter="20">
           <el-col :span="6">
@@ -266,11 +270,15 @@
               <el-button type="primary" plain icon="el-icon-edit-outline" size="mini"
                 @click="dialogUpdateMore.dialogFormVisible = true">批量修改</el-button>
             </el-col>
+            <el-col :span="1.5">
+              <el-button type="danger" icon="el-icon-delete" size="mini" @click="batchRemove">批量删除</el-button>
+            </el-col>
           </el-row>
           <el-tabs v-model="activeName">
             <el-tab-pane label="月销售/月利润目标明细" name="monthSaleGoalDetails">
               <el-table max-height="560" show-summary :summary-method="getSummaries" v-loading="loading" size="mini"
                 :data="monthSaleGoalDetailsList" @selection-change="handleSelectionChange" v-horizontal-scroll>
+                <el-table-column type="selection" width="55" align="center" />
                 <el-table-column label="序号" type="index" width="70" align="center" fixed />
                 <!-- <el-table-column label="销售组织" align="center" width="180" :render-header="addRedStar">
                   <template slot-scope="scope">
@@ -385,8 +393,8 @@
                 <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="handleDeleteDetails(scope.row)">删除
+                    </el-button>
                     <el-button size="mini" type="text" icon="el-icon-delete" @click="handleCopyDetails(scope.row)">复制
                     </el-button>
                   </template>
@@ -396,11 +404,12 @@
           </el-tabs>
           <div slot="footer" class="dialog-footer" style="margin-left: 88%; margin-top: 1%">
             <el-button type="primary" @click="submitForm" size="medium">确 定</el-button>
-            <el-button @click="cancel" size="medium">返 回</el-button>
+            <el-button @click="cancel" size="medium" :disabled="false">返 回</el-button>
           </div>
         </div>
       </el-form>
-    </el-drawer>
+    </div>
+    <!-- </el-drawer> -->
 
     <!-- 用户导入对话框 -->
     <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
@@ -526,6 +535,7 @@
         // 月销售/月利润目标填报表格数据
         monthSaleGoalList: [],
         monthSaleGoalDetailsList: [],
+        delMonthSaleGoalDetailsList: [],
         // 弹出层标题
         title: "",
         // 是否显示弹出层
@@ -736,6 +746,9 @@
           index: null
         },
         index: null,
+        // 列表标识
+        isList: true,
+        selection: null,
       };
     },
     created() {
@@ -767,6 +780,7 @@
       },
       // 取消按钮
       cancel() {
+        this.isList = true;
         this.open = false;
         this.reset();
       },
@@ -833,9 +847,11 @@
         this.ids = selection.map(item => item.id)
         this.single = selection.length !== 1
         this.multiple = !selection.length
+        this.selection = selection
       },
       /** 新增按钮操作 */
       handleAdd() {
+        this.isList = false;
         this.openStatus = 'edit';
         this.reset();
         this.monthSaleGoalDetailsList = []
@@ -871,7 +887,8 @@
           num: null,
           monthly: this.form.documentDate.substring(0, 7),
           goalValue: 0,
-          profitTargetValue: 0
+          profitTargetValue: 0,
+          delFlag: '0',
         }
         this.monthSaleGoalDetailsList.push(list)
         this.computeTotal()
@@ -886,6 +903,7 @@
           this.form.goalSum = this.form.goalSum.toFixed(2)
           this.monthSaleGoalDetailsList = JSON.parse(JSON.stringify(this.form.monthDetailsList))
           this.open = true;
+          this.isList = false;
           this.title = "修改--月销售/月利润目标填报";
         });
       },
@@ -898,7 +916,8 @@
           this.form.goalSum = this.form.goalSum.toFixed(2)
           this.monthSaleGoalDetailsList = JSON.parse(JSON.stringify(this.form.monthDetailsList))
           this.open = true;
-          this.title = "修改--月销售/月利润目标填报";
+          this.isList = false;
+          this.title = "查看--月销售/月利润目标填报";
         });
       },
       // 复制按钮
@@ -957,10 +976,21 @@
           if (valid) {
             if (this.form.id != null) {
               this.form.monthDetailsList = JSON.parse(JSON.stringify(this.monthSaleGoalDetailsList))
+              let ids = this.delMonthSaleGoalDetailsList.map((item) => {
+                return item.id;
+              })
+              ids = ids.filter((item) => {
+                return item != null;
+              })
+              console.log(ids, 'ids')
               this.$modal.loading("保存中...");
               updateMonthSaleGoal(this.form).then(response => {
+                if (ids != null && ids.length != 0) {
+                  delMonthSaleGoalDetails(ids);
+                }
                 this.$modal.msgSuccess("修改成功");
                 this.open = false;
+                this.isList = true;
                 this.getList();
               }).finally(e => {
                 this.$modal.closeLoading();
@@ -973,6 +1003,7 @@
               addMonthSaleGoal(this.form).then(response => {
                 this.$modal.msgSuccess("新增成功");
                 this.open = false;
+                this.isList = true;
                 this.getList();
               }).finally(e => {
                 this.$modal.closeLoading();
@@ -991,24 +1022,15 @@
           this.$modal.msgSuccess("删除成功");
         }).catch(() => {});
       },
-      handleDeleteDetails(index, row) {
-        if (this.form.id === null) {
-          this.monthSaleGoalDetailsList.splice(index, 1)
-          this.computeTotal()
-        } else {
-          if (row.id !== null) {
-            this.$modal.confirm('是否确认删除月销售/月利润目标填报明细序号为"' + (index + 1) + '"的数据项?').then(function () {
-              return delMonthSaleGoalDetails(row.id);
-            }).then(() => {
-              this.getListDetails();
-              this.$modal.msgSuccess("删除成功");
-            }).catch(() => {});
-          } else {
-            this.monthSaleGoalDetailsList.splice(index, 1)
-            this.$message.success('删除成功')
-            this.computeTotal()
-          }
-        }
+      // 详情页明细行删除
+      handleDeleteDetails(row) {
+        this.$confirm('是否确认删除?').then(_ => {
+          row.delFlag = '2';
+          this.delMonthSaleGoalDetailsList.push(row);
+          this.monthSaleGoalDetailsList = this.monthSaleGoalDetailsList.filter((item) => {
+            return item.delFlag == '0';
+          })
+        }).catch(_ => {});
       },
       /** 导出按钮操作 */
       handleExport() {
@@ -1415,6 +1437,27 @@
           this.monthSaleGoalDetailsList[i].monthly = this.form.documentDate.substring(0, 7);
         }
       },
+      // 详情页批量删除
+      batchRemove() {
+        if (this.selection == null || this.selection == undefined || this.selection.length == 0) {
+          this.$modal.notifyWarning("请至少选择一条明细!");
+        } else {
+          this.$confirm('是否确认批量删除?').then(_ => {
+            this.selection.forEach((item) => {
+              item.delFlag = "2";
+            });
+            let delList = [];
+            delList = this.monthSaleGoalDetailsList.filter((item) => {
+              return item.delFlag == "2";
+            });
+            this.monthSaleGoalDetailsList =
+              this.monthSaleGoalDetailsList.filter((item) => {
+                return item.delFlag == "0";
+              });
+            this.delMonthSaleGoalDetailsList.push(...delList);
+          }).catch(_ => {});
+        }
+      },
     }
   }