|
@@ -163,7 +163,7 @@
|
|
</el-col>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
<el-form-item label="单据日期" prop="documentDate">
|
|
<el-form-item label="单据日期" prop="documentDate">
|
|
- <el-date-picker clearable v-model="form.documentDate" type="date" value-format="yyyy-MM-dd"
|
|
|
|
|
|
+ <el-date-picker clearable v-model="form.documentDate" type="date" value-format="yyyy-MM-dd" @change="setItemMonthly"
|
|
placeholder="请选择单据日期">
|
|
placeholder="请选择单据日期">
|
|
</el-date-picker>
|
|
</el-date-picker>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -305,7 +305,8 @@
|
|
<el-table-column label="一级分类" align="center" min-width="200" :render-header="addRedStar">
|
|
<el-table-column label="一级分类" align="center" min-width="200" :render-header="addRedStar">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-select v-model="monthSaleGoalDetailsList[scope.$index].oneLevelClassify" clearable
|
|
<el-select v-model="monthSaleGoalDetailsList[scope.$index].oneLevelClassify" clearable
|
|
- @focus="chooseTreeReferForMain('MATERIALCLASSIFY_PARAM', false, '一级物料分类', scope.$index)" :disabled="!isDept">
|
|
|
|
|
|
+ @focus="chooseTreeReferForMain('MATERIALCLASSIFY_PARAM', false, '一级物料分类', scope.$index)"
|
|
|
|
+ :disabled="!isDept">
|
|
<el-option v-for="item in classOptions" :key="item.id" :label="item.name" :value="item.code" />
|
|
<el-option v-for="item in classOptions" :key="item.id" :label="item.name" :value="item.code" />
|
|
</el-select>
|
|
</el-select>
|
|
</template>
|
|
</template>
|
|
@@ -313,7 +314,8 @@
|
|
<el-table-column label="二级分类" align="center" min-width="200" :render-header="addRedStar">
|
|
<el-table-column label="二级分类" align="center" min-width="200" :render-header="addRedStar">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-select v-model="monthSaleGoalDetailsList[scope.$index].twoLevelClassify" clearable
|
|
<el-select v-model="monthSaleGoalDetailsList[scope.$index].twoLevelClassify" clearable
|
|
- @focus="chooseTreeReferForMain('MATERIALCLASSIFY_PARAM', false, '二级物料分类', scope.$index)" :disabled="!isDept">
|
|
|
|
|
|
+ @focus="chooseTreeReferForMain('MATERIALCLASSIFY_PARAM', false, '二级物料分类', scope.$index)"
|
|
|
|
+ :disabled="!isDept">
|
|
<el-option v-for="item in classOptions" :key="item.id" :label="item.name" :value="item.code" />
|
|
<el-option v-for="item in classOptions" :key="item.id" :label="item.name" :value="item.code" />
|
|
</el-select>
|
|
</el-select>
|
|
</template>
|
|
</template>
|
|
@@ -332,10 +334,12 @@
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="科室" align="center" prop="department" min-width="200">
|
|
|
|
|
|
+ <el-table-column label="科室" align="center" min-width="200">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-select v-model.trim="monthSaleGoalDetailsList[scope.$index].department" placeholder="请选择科室" filterable>
|
|
|
|
- <el-option v-for="dict in dict.type.mk_bo_section" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
|
|
|
|
|
+ <el-select v-model.trim="monthSaleGoalDetailsList[scope.$index].department" placeholder="请选择科室"
|
|
|
|
+ filterable>
|
|
|
|
+ <el-option v-for="dict in dict.type.mk_bo_section" :key="dict.value" :label="dict.label"
|
|
|
|
+ :value="dict.value"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
@@ -347,21 +351,24 @@
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column label="月份" align="center" min-width="250">
|
|
<el-table-column label="月份" align="center" min-width="250">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-date-picker v-model="monthSaleGoalDetailsList[scope.$index].monthly" value-format="yyyy-MM" disabled
|
|
|
|
- type="month" placeholder="选择月份">
|
|
|
|
|
|
+ <el-date-picker v-model="monthSaleGoalDetailsList[scope.$index].monthly" value-format="yyyy-MM"
|
|
|
|
+ disabled type="month" placeholder="选择月份">
|
|
</el-date-picker>
|
|
</el-date-picker>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="销售目标值(元)" align="center" prop="goalValue" min-width="220" :render-header="addRedStar">
|
|
|
|
|
|
+ <el-table-column label="销售目标值(元)" align="center" prop="goalValue" min-width="220"
|
|
|
|
+ :render-header="addRedStar">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-input-number @change="computeTotal" v-model="monthSaleGoalDetailsList[scope.$index].goalValue"
|
|
<el-input-number @change="computeTotal" v-model="monthSaleGoalDetailsList[scope.$index].goalValue"
|
|
:precision="2" :step="1" :min="0"></el-input-number>
|
|
:precision="2" :step="1" :min="0"></el-input-number>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="利润目标值(元)" align="center" prop="profitTargetValue" min-width="220" :render-header="addRedStar" v-if="isDept">
|
|
|
|
|
|
+ <el-table-column label="利润目标值(元)" align="center" prop="profitTargetValue" min-width="220"
|
|
|
|
+ :render-header="addRedStar" v-if="isDept">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-input-number @change="computeTotal" v-model="monthSaleGoalDetailsList[scope.$index].profitTargetValue"
|
|
|
|
- :precision="2" :step="1" :min="0"></el-input-number>
|
|
|
|
|
|
+ <el-input-number @change="computeTotal"
|
|
|
|
+ v-model="monthSaleGoalDetailsList[scope.$index].profitTargetValue" :precision="2" :step="1"
|
|
|
|
+ :min="0"></el-input-number>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120px"
|
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120px"
|
|
@@ -448,7 +455,7 @@
|
|
<el-button type="primary" @click="dialogUpdateMoreSave">确 定</el-button>
|
|
<el-button type="primary" @click="dialogUpdateMoreSave">确 定</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
- <TreeRefers ref="treeMain" @doSubmit="selectionsToInputForMain" :single="true" />
|
|
|
|
|
|
+ <TreeRefers ref="treeMain" @doSubmit="selectionsToInputForMain" :single="true" />
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
@@ -465,7 +472,8 @@
|
|
getMonthSaleGoalDetails,
|
|
getMonthSaleGoalDetails,
|
|
delMonthSaleGoalDetails,
|
|
delMonthSaleGoalDetails,
|
|
importData,
|
|
importData,
|
|
- getMaterialRangeList
|
|
|
|
|
|
+ getMaterialRangeList,
|
|
|
|
+ getDeptIds
|
|
} from "@/api/business/spd/goal_management/monthSaleGoalDetails"
|
|
} from "@/api/business/spd/goal_management/monthSaleGoalDetails"
|
|
import {
|
|
import {
|
|
getToken
|
|
getToken
|
|
@@ -844,9 +852,9 @@
|
|
material: null,
|
|
material: null,
|
|
department: null,
|
|
department: null,
|
|
num: null,
|
|
num: null,
|
|
- monthly: new Date().getFullYear().toString() + '-' + (new Date().getMonth() + 1).toString().padStart(2,
|
|
|
|
- '0'),
|
|
|
|
- goalValue: 0
|
|
|
|
|
|
+ monthly: this.form.documentDate.substring(0, 7),
|
|
|
|
+ goalValue: 0,
|
|
|
|
+ profitTargetValue: 0
|
|
}
|
|
}
|
|
this.monthSaleGoalDetailsList.push(list)
|
|
this.monthSaleGoalDetailsList.push(list)
|
|
this.computeTotal()
|
|
this.computeTotal()
|
|
@@ -906,6 +914,11 @@
|
|
this.monthSaleGoalDetailsList[i].dept = this.form.dept;
|
|
this.monthSaleGoalDetailsList[i].dept = this.form.dept;
|
|
this.monthSaleGoalDetailsList[i].creator = this.form.creator;
|
|
this.monthSaleGoalDetailsList[i].creator = this.form.creator;
|
|
}
|
|
}
|
|
|
|
+ console.log(this.form, 'form');
|
|
|
|
+ if (this.form.saleZone == null || this.form.saleZone == undefined || this.form.saleZone == '' || this.form
|
|
|
|
+ .custom == null || this.form.custom == undefined) {
|
|
|
|
+ return this.$message.error('主表中有必填字段未填!')
|
|
|
|
+ }
|
|
if (this.justiceDetailsList()) {
|
|
if (this.justiceDetailsList()) {
|
|
return this.$message.error('子表中第' + this.text + '行有必填字段未填,或者目标值为0')
|
|
return this.$message.error('子表中第' + this.text + '行有必填字段未填,或者目标值为0')
|
|
}
|
|
}
|
|
@@ -927,7 +940,7 @@
|
|
this.$modal.msgSuccess("修改成功");
|
|
this.$modal.msgSuccess("修改成功");
|
|
this.open = false;
|
|
this.open = false;
|
|
this.getList();
|
|
this.getList();
|
|
- }).finally( e =>{
|
|
|
|
|
|
+ }).finally(e => {
|
|
this.$modal.closeLoading();
|
|
this.$modal.closeLoading();
|
|
});
|
|
});
|
|
} else {
|
|
} else {
|
|
@@ -939,7 +952,7 @@
|
|
this.$modal.msgSuccess("新增成功");
|
|
this.$modal.msgSuccess("新增成功");
|
|
this.open = false;
|
|
this.open = false;
|
|
this.getList();
|
|
this.getList();
|
|
- }).finally( e =>{
|
|
|
|
|
|
+ }).finally(e => {
|
|
this.$modal.closeLoading();
|
|
this.$modal.closeLoading();
|
|
});
|
|
});
|
|
}
|
|
}
|
|
@@ -1012,7 +1025,8 @@
|
|
department: row.department,
|
|
department: row.department,
|
|
num: row.num,
|
|
num: row.num,
|
|
monthly: row.monthly,
|
|
monthly: row.monthly,
|
|
- goalValue: row.goalValue
|
|
|
|
|
|
+ goalValue: row.goalValue,
|
|
|
|
+ profitTargetValue: row.profitTargetValue
|
|
}
|
|
}
|
|
this.monthSaleGoalDetailsList.push(list)
|
|
this.monthSaleGoalDetailsList.push(list)
|
|
this.computeTotal()
|
|
this.computeTotal()
|
|
@@ -1045,11 +1059,11 @@
|
|
column
|
|
column
|
|
}) {
|
|
}) {
|
|
if (this.isDept) {
|
|
if (this.isDept) {
|
|
- return[
|
|
|
|
|
|
+ return [
|
|
h('span', '' + column.label)
|
|
h('span', '' + column.label)
|
|
]
|
|
]
|
|
} else {
|
|
} else {
|
|
- return [
|
|
|
|
|
|
+ return [
|
|
h('span', {
|
|
h('span', {
|
|
style: 'color: #F56C6C'
|
|
style: 'color: #F56C6C'
|
|
}, '*'),
|
|
}, '*'),
|
|
@@ -1068,7 +1082,8 @@
|
|
element.dept !== null) && (element.creator !== null) && (element.oneLevelClassify !== null) && (element
|
|
element.dept !== null) && (element.creator !== null) && (element.oneLevelClassify !== null) && (element
|
|
.oneLevelClassifyCode !== null) && (element.monthly !== null) && (element.goalValue !== 0);
|
|
.oneLevelClassifyCode !== null) && (element.monthly !== null) && (element.goalValue !== 0);
|
|
const flag2 = (element.saleOrg !== undefined) && (element.saleZone !== undefined) && (element.custom !==
|
|
const flag2 = (element.saleOrg !== undefined) && (element.saleZone !== undefined) && (element.custom !==
|
|
- undefined) && (element.dept !== undefined) && (element.creator !== undefined) && (element.oneLevelClassify !==
|
|
|
|
|
|
+ undefined) && (element.dept !== undefined) && (element.creator !== undefined) && (element
|
|
|
|
+ .oneLevelClassify !==
|
|
undefined) && (element.oneLevelClassifyCode !== undefined) && (element.monthly !== undefined);
|
|
undefined) && (element.oneLevelClassifyCode !== undefined) && (element.monthly !== undefined);
|
|
if (flag1 && flag2) {
|
|
if (flag1 && flag2) {
|
|
isFlag.push(true);
|
|
isFlag.push(true);
|
|
@@ -1089,7 +1104,8 @@
|
|
element.dept !== null) && (element.creator !== null) && (element.materialCode !== null) && (element
|
|
element.dept !== null) && (element.creator !== null) && (element.materialCode !== null) && (element
|
|
.material !== null) && (element.monthly !== null) && (element.goalValue !== 0);
|
|
.material !== null) && (element.monthly !== null) && (element.goalValue !== 0);
|
|
const flag2 = (element.saleOrg !== undefined) && (element.saleZone !== undefined) && (element.custom !==
|
|
const flag2 = (element.saleOrg !== undefined) && (element.saleZone !== undefined) && (element.custom !==
|
|
- undefined) && (element.dept !== undefined) && (element.creator !== undefined) && (element.materialCode !==
|
|
|
|
|
|
+ undefined) && (element.dept !== undefined) && (element.creator !== undefined) && (element
|
|
|
|
+ .materialCode !==
|
|
undefined) && (element.material !== undefined) && (element.monthly !== undefined);
|
|
undefined) && (element.material !== undefined) && (element.monthly !== undefined);
|
|
if (flag1 && flag2) {
|
|
if (flag1 && flag2) {
|
|
isFlag.push(true);
|
|
isFlag.push(true);
|
|
@@ -1180,7 +1196,8 @@
|
|
const oneArray = one.split("&")
|
|
const oneArray = one.split("&")
|
|
const twoArray = two.split("&")
|
|
const twoArray = two.split("&")
|
|
// 物料提醒文本
|
|
// 物料提醒文本
|
|
- const memo = '名称:' + row.material + '; 编码:' + row.materialCode + '; 规格:' + row.specification + '; 包装:' + row.packExplain + '; 型号:' + row.model + '。';
|
|
|
|
|
|
+ const memo = '名称:' + row.material + '; 编码:' + row.materialCode + '; 规格:' + row.specification + '; 包装:' + row
|
|
|
|
+ .packExplain + '; 型号:' + row.model + '。';
|
|
obj.memo = memo;
|
|
obj.memo = memo;
|
|
obj.oneLevelClassifyCode = oneArray[1]
|
|
obj.oneLevelClassifyCode = oneArray[1]
|
|
obj.oneLevelClassify = oneArray[0]
|
|
obj.oneLevelClassify = oneArray[0]
|
|
@@ -1309,8 +1326,7 @@
|
|
item.custom = this.form.custom;
|
|
item.custom = this.form.custom;
|
|
item.dept = this.form.dept;
|
|
item.dept = this.form.dept;
|
|
item.creator = this.form.creator;
|
|
item.creator = this.form.creator;
|
|
- item.monthly = new Date().getFullYear().toString() + '-' + (new Date().getMonth() + 1).toString()
|
|
|
|
- .padStart(2, '0');
|
|
|
|
|
|
+ item.monthly = this.form.documentDate.substring(0, 7);
|
|
}
|
|
}
|
|
}).catch((e) => {
|
|
}).catch((e) => {
|
|
this.$message.error(e.message)
|
|
this.$message.error(e.message)
|
|
@@ -1319,13 +1335,21 @@
|
|
})
|
|
})
|
|
},
|
|
},
|
|
calculate(row) {
|
|
calculate(row) {
|
|
- row.goalValue = row.num * row.price;
|
|
|
|
|
|
+ if (!(row.price == 0 || row.price == null || row.price == undefined)) {
|
|
|
|
+ row.goalValue = row.num * row.price;
|
|
|
|
+ }
|
|
},
|
|
},
|
|
|
|
+ // 判断操作人部门是否属于湖南公司、湖南公司本部
|
|
judge() {
|
|
judge() {
|
|
- this.isDept = false;
|
|
|
|
- if (this.$store.state.user.deptName.indexOf('湖南公司') >= 0) {
|
|
|
|
- this.isDept = true;
|
|
|
|
- }
|
|
|
|
|
|
+ let that = this;
|
|
|
|
+ that.isDept = false;
|
|
|
|
+ getDeptIds().then(res => {
|
|
|
|
+ for (const r of res) {
|
|
|
|
+ if (that.$store.state.user.deptId === r) {
|
|
|
|
+ that.isDept = true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
},
|
|
},
|
|
// 树形参照
|
|
// 树形参照
|
|
chooseTreeReferForMain(type, isPage, title, index) {
|
|
chooseTreeReferForMain(type, isPage, title, index) {
|
|
@@ -1355,6 +1379,12 @@
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ // 当单据日期改变时改变明细月份
|
|
|
|
+ setItemMonthly() {
|
|
|
|
+ for (let i = 0; i < this.monthSaleGoalDetailsList.length; i++) {
|
|
|
|
+ this.monthSaleGoalDetailsList[i].monthly = this.form.documentDate.substring(0, 7);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|