|
@@ -247,6 +247,7 @@
|
|
|
</el-row>
|
|
|
<el-tabs v-model="activeName">
|
|
|
<el-tab-pane label="年销售目标填报明细" name="annualSaleGoalDetails">
|
|
|
+
|
|
|
<el-table max-height="560" show-summary :summary-method="getSummaries" v-loading="loading"
|
|
|
:data="annualSaleGoalDetailsList" @selection-change="handleSelectionChange" v-horizontal-scroll>
|
|
|
<el-table-column label="序号" type="index" width="70" align="center" fixed />
|
|
@@ -287,22 +288,19 @@
|
|
|
</el-popover-select-v2>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="一级分类" align="center" width="180"
|
|
|
- :render-header="(h, obj) => addRedStar(h, obj, '0')">
|
|
|
+ <el-table-column label="一级分类" align="center" width="180">
|
|
|
<template slot-scope="scope">
|
|
|
<el-input v-model="annualSaleGoalDetailsList[scope.$index].oneLevelClassify" placeholder="请输入一级分类"
|
|
|
disabled></el-input>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="二级分类" align="center" width="180"
|
|
|
- :render-header="(h, obj) => addRedStar(h, obj, '0')">
|
|
|
+ <el-table-column label="二级分类" align="center" width="180">
|
|
|
<template slot-scope="scope">
|
|
|
<el-input v-model="annualSaleGoalDetailsList[scope.$index].twoLevelClassify" placeholder="请输入二级分类"
|
|
|
disabled></el-input>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="物料" align="center" width="220"
|
|
|
- :render-header="(h, obj) => addRedStar(h, obj, '0')">
|
|
|
+ <el-table-column label="物料" align="center" width="220">
|
|
|
<template slot-scope="scope">
|
|
|
<el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].material" title="物料"
|
|
|
valueKey="name" referName="MATERIAL_PARAM"
|
|
@@ -427,6 +425,186 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
+
|
|
|
+ <!-- <ux-grid max-height="560" show-summary :summary-method="getSummaries" v-loading="loading"
|
|
|
+ :data="annualSaleGoalDetailsList" @selection-change="handleSelectionChange" v-horizontal-scroll>
|
|
|
+ <ux-table-column title="序号" type="index" width="70" align="center" fixed />
|
|
|
+ <ux-table-column title="销售组织" align="center" width="180"
|
|
|
+ :render-header="(h, obj) => addRedStar(h, obj, '0')">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].saleOrg" title="销售组织"
|
|
|
+ valueKey="name" referName="ORG_PARAM" :dataMapping="{ saleOrgCode: 'code', saleOrg: 'name'}"
|
|
|
+ :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入销售组织">
|
|
|
+ </el-popover-select-v2>
|
|
|
+ </template>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="销售区域" align="center" width="180"
|
|
|
+ :render-header="(h, obj) => addRedStar(h, obj, '0')">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].saleZone" title="销售区域"
|
|
|
+ valueKey="name" referName="MK_SALESAREA_PARAM"
|
|
|
+ :dataMapping="{ saleZoneCode: 'code', saleZone: 'name'}"
|
|
|
+ :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入销售区域">
|
|
|
+ </el-popover-select-v2>
|
|
|
+ </template>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="客户" align="center" width="180"
|
|
|
+ :render-header="(h, obj) => addRedStar(h, obj, '0')">
|
|
|
+ <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>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="负责人" align="center" width="180"
|
|
|
+ :render-header="(h, obj) => addRedStar(h, obj, '0')">
|
|
|
+ <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>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="一级分类" align="center" width="180">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-input v-model="annualSaleGoalDetailsList[scope.$index].oneLevelClassify" placeholder="请输入一级分类"
|
|
|
+ disabled></el-input>
|
|
|
+ </template>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="二级分类" align="center" width="180">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-input v-model="annualSaleGoalDetailsList[scope.$index].twoLevelClassify" placeholder="请输入二级分类"
|
|
|
+ disabled></el-input>
|
|
|
+ </template>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="物料" align="center" width="220">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-popover-select-v2 v-model="annualSaleGoalDetailsList[scope.$index].material" title="物料"
|
|
|
+ valueKey="name" referName="MATERIAL_PARAM"
|
|
|
+ @change="setClassify(scope.row.oneLevelClassify, scope.row.twoLevelClassify, annualSaleGoalDetailsList[scope.$index])"
|
|
|
+ @clear=""
|
|
|
+ :dataMapping="{ materialCode: 'code', material: 'name', oneLevelClassify: 'oneClass', twoLevelClassify: 'twoClass'}"
|
|
|
+ :source.sync="annualSaleGoalDetailsList[scope.$index]" placeholder="请输入物料">
|
|
|
+ </el-popover-select-v2>
|
|
|
+ </template>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="合计(元)" align="center" field="totalGoal" width="180">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-input v-model="annualSaleGoalDetailsList[scope.$index].totalGoal" disabled></el-input>
|
|
|
+ </template>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="一月(元)" align="center" field="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>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="二月(元)" align="center" field="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>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="三月(元)" align="center" field="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>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="四月(元)" align="center" field="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>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="五月(元)" align="center" field="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>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="六月(元)" align="center" field="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>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="七月(元)" align="center" field="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>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="八月(元)" align="center" field="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>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="九月(元)" align="center" field="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>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="十月(元)" align="center" field="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>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="十一月(元)" align="center" field="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>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="十二月(元)" align="center" field="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>
|
|
|
+ </ux-table-column>
|
|
|
+ <ux-table-column title="操作" 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>
|
|
|
+ </ux-table-column>
|
|
|
+ </ux-grid> -->
|
|
|
+
|
|
|
</el-tab-pane>
|
|
|
</el-tabs>
|
|
|
<div slot="footer" class="dialog-footer" style="margin-left: 88%; margin-top: 1%">
|
|
@@ -889,11 +1067,23 @@
|
|
|
}
|
|
|
for (let i = 0; i < this.annualSaleGoalDetailsList.length; i++) {
|
|
|
for (let j = i + 1; j < this.annualSaleGoalDetailsList.length; j++) {
|
|
|
- if (this.annualSaleGoalDetailsList[i].materialCode == this.annualSaleGoalDetailsList[j].materialCode) {
|
|
|
+ if (this.annualSaleGoalDetailsList[i].materialCode == this.annualSaleGoalDetailsList[j].materialCode &&
|
|
|
+ this.annualSaleGoalDetailsList[i].materialCode != null &&
|
|
|
+ this.annualSaleGoalDetailsList[j].materialCode != null &&
|
|
|
+ this.annualSaleGoalDetailsList[i].materialCode != "" &&
|
|
|
+ this.annualSaleGoalDetailsList[j].materialCode != "") {
|
|
|
return this.$message.error('子表存在重复物料');
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ this.annualSaleGoalDetailsList.forEach(item => {
|
|
|
+ if (item.oneLevelClassify == null || item.oneLevelClassify == "") {
|
|
|
+ item.oneLevelClassifyCode = null;
|
|
|
+ }
|
|
|
+ if (item.twoLevelClassify == null || item.twoLevelClassify == "") {
|
|
|
+ item.twoLevelClassifyCode = null;
|
|
|
+ }
|
|
|
+ })
|
|
|
this.$refs["form"].validate(valid => {
|
|
|
if (valid) {
|
|
|
if (this.form.id != null) {
|
|
@@ -1044,11 +1234,9 @@
|
|
|
const arr = JSON.parse(JSON.stringify(this.annualSaleGoalDetailsList))
|
|
|
for (const element of arr) {
|
|
|
const flag1 = (element.saleZone !== null) && (element.saleOrg !== null) && (element.custom !== null) && (
|
|
|
- element.creator !== null) && (element.materialCode !== null) && (element.material !== null) &&
|
|
|
- (element.goalValue !== 0)
|
|
|
+ element.creator !== null) && (element.goalValue !== 0)
|
|
|
const flag2 = (element.saleOrg !== undefined) && (element.saleZone !== undefined) && (element.custom !==
|
|
|
- undefined) && (element.creator !== undefined) && (element.materialCode != undefined) && (element
|
|
|
- .material !== undefined)
|
|
|
+ undefined) && (element.creator !== undefined)
|
|
|
if (flag1 && flag2) {
|
|
|
isFlag.push(true);
|
|
|
} else {
|
|
@@ -1079,7 +1267,7 @@
|
|
|
obj.oneLevelClassify = oneArray[0]
|
|
|
obj.twoLevelClassifyCode = twoArray[1]
|
|
|
obj.twoLevelClassify = twoArray[0]
|
|
|
- console.log(obj);
|
|
|
+ console.log(obj, 'obj');
|
|
|
},
|
|
|
// 批量修改对话框的方法
|
|
|
dialogUpdateMoreSave() {
|