|
@@ -280,28 +280,18 @@
|
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
|
<el-button
|
|
|
- type="success"
|
|
|
- plain
|
|
|
- icon="el-icon-edit"
|
|
|
- size="mini"
|
|
|
- :disabled="single"
|
|
|
- @click="handleUpdate"
|
|
|
- v-hasPermi="['goal_management:annualSaleGoalDetails:edit']"
|
|
|
- >修改</el-button>
|
|
|
- </el-col>
|
|
|
- <el-col :span="1.5">
|
|
|
- <el-button
|
|
|
type="danger"
|
|
|
plain
|
|
|
icon="el-icon-delete"
|
|
|
size="mini"
|
|
|
:disabled="multiple"
|
|
|
- @click="handleDelete"
|
|
|
+ @click="handleDetailsDelete"
|
|
|
v-hasPermi="['goal_management:annualSaleGoalDetails:remove']"
|
|
|
>删除</el-button>
|
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
|
<el-button
|
|
|
+ disabled
|
|
|
type="warning"
|
|
|
plain
|
|
|
icon="el-icon-download"
|
|
@@ -310,11 +300,11 @@
|
|
|
v-hasPermi="['goal_management:annualSaleGoalDetails:export']"
|
|
|
>导出</el-button>
|
|
|
</el-col>
|
|
|
- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
|
|
+<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
|
|
|
</el-row>
|
|
|
|
|
|
<el-table v-loading="loading" :data="annualSaleGoalDetailsList" @selection-change="handleSelectionChange">
|
|
|
- <el-table-column type="selection" width="55" align="center" />
|
|
|
+ <el-table-column 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" />
|
|
@@ -339,20 +329,20 @@
|
|
|
<el-table-column label="十月目标" align="center" prop="octoberGoal" />
|
|
|
<el-table-column label="十一月目标" align="center" prop="novemberGoal" />
|
|
|
<el-table-column label="十二月目标" align="center" prop="decemberGoal" />
|
|
|
- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
|
|
+ <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
|
|
|
<template slot-scope="scope">
|
|
|
<el-button
|
|
|
size="mini"
|
|
|
type="text"
|
|
|
icon="el-icon-edit"
|
|
|
- @click="handleUpdate(scope.row)"
|
|
|
+ @click="handleUpdateDetails(scope.row)"
|
|
|
v-hasPermi="['goal_management:annualSaleGoalDetails:edit']"
|
|
|
>修改</el-button>
|
|
|
<el-button
|
|
|
size="mini"
|
|
|
type="text"
|
|
|
icon="el-icon-delete"
|
|
|
- @click="handleDelete(scope.row)"
|
|
|
+ @click="handleDetailsDelete(scope.row)"
|
|
|
v-hasPermi="['goal_management:annualSaleGoalDetails:remove']"
|
|
|
>删除</el-button>
|
|
|
</template>
|
|
@@ -406,21 +396,33 @@
|
|
|
</dr-popover-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="一级分类编码" prop="oneLevelClassifyCode">
|
|
|
- <el-input v-model="formDetails.oneLevelClassifyCode" placeholder="请输入一级分类编码" />
|
|
|
+ <el-input v-model="formDetails.oneLevelClassifyCode" placeholder="请输入一级分类编码" disabled />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="一级分类" prop="oneLevelClassify">
|
|
|
- <el-input v-model="formDetails.oneLevelClassify" placeholder="请输入一级分类" />
|
|
|
+ <el-select
|
|
|
+ v-model="formDetails.oneLevelClassify" clearable placeholder="请输入一级分类"
|
|
|
+ @focus="chooseTreeRefer('MATERIALCLASSIFY_PARAM', false, '一级物料分类')"
|
|
|
+ @change="changeDetailsCode" style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option v-for="item in classList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="二级分类编码" prop="twoLevelClassifyCode">
|
|
|
- <el-input v-model="formDetails.twoLevelClassifyCode" placeholder="请输入二级分类编码" />
|
|
|
+ <el-input v-model="formDetails.twoLevelClassifyCode" placeholder="请输入二级分类编码" disabled />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="二级分类编码" prop="twoLevelClassify">
|
|
|
- <el-input v-model="formDetails.twoLevelClassify" placeholder="请输入二级分类编码" />
|
|
|
+ <el-select v-model="formDetails.twoLevelClassify" placeholder="请输入二级分类编码" clearable
|
|
|
+ @focus="chooseTreeRefer('MATERIALCLASSIFY_PARAM', false, '二级物料分类')"
|
|
|
+ @change="changeDetailsCode" style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option v-for="item in classList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="物料" prop="material">
|
|
|
<dr-popover-select
|
|
|
v-model="formDetails.material"
|
|
|
title="物料"
|
|
|
+ placeholder="请输入物料"
|
|
|
type="MATERIAL_PARAM" :dataMapping="{ material: 'name', materialCode: 'code' }" :source.sync="formDetails">
|
|
|
</dr-popover-select>
|
|
|
</el-form-item>
|
|
@@ -466,8 +468,9 @@
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</el-drawer>
|
|
|
-
|
|
|
</el-drawer>
|
|
|
+
|
|
|
+ <TreeRefers ref="tree" :single="true" @doSubmit="selectionsToTreeInput"></TreeRefers>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -475,10 +478,21 @@
|
|
|
// 年度目标填报
|
|
|
import { listAnnualSaleGoal, getAnnualSaleGoal, delAnnualSaleGoal, addAnnualSaleGoal, updateAnnualSaleGoal } from "@/api/business/spd/goal_management/annualSaleGoal";
|
|
|
// 年度目标填报明细
|
|
|
-import { listAnnualSaleGoalDetails, getAnnualSaleGoalDetails, delAnnualSaleGoalDetails, addAnnualSaleGoalDetails, updateAnnualSaleGoalDetails } from "@/api/business/spd/goal_management/annualSaleGoalDetails";
|
|
|
+import {
|
|
|
+ getAnnualSaleGoalDetails,
|
|
|
+ delAnnualSaleGoalDetails,
|
|
|
+ addAnnualSaleGoalDetails,
|
|
|
+ updateAnnualSaleGoalDetails,
|
|
|
+ getDetailsByCode
|
|
|
+} from "@/api/business/spd/goal_management/annualSaleGoalDetails";
|
|
|
+// 树形参照
|
|
|
+import TreeRefers from '@/components/Refers/treeRefer.vue'
|
|
|
|
|
|
export default {
|
|
|
name: "AnnualSaleGoal",
|
|
|
+ components: {
|
|
|
+ TreeRefers
|
|
|
+ },
|
|
|
data() {
|
|
|
return {
|
|
|
// 遮罩层
|
|
@@ -651,7 +665,10 @@ export default {
|
|
|
},
|
|
|
// 年度销售目标明细
|
|
|
annualSaleGoalDetailsList: null,
|
|
|
- totalDetails: 0
|
|
|
+ totalDetails: 0,
|
|
|
+ // 参照条件
|
|
|
+ referCondition: { type: '', isPage: true, title: '' },
|
|
|
+ classList: []
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
@@ -753,8 +770,17 @@ export default {
|
|
|
getAnnualSaleGoal(id).then(response => {
|
|
|
this.form = response.data
|
|
|
this.drawEdit = true
|
|
|
+ this.getDetailList()
|
|
|
});
|
|
|
},
|
|
|
+ handleUpdateDetails(row) {
|
|
|
+ this.resetDetails()
|
|
|
+ const id = row.id || this.ids
|
|
|
+ getAnnualSaleGoalDetails(id).then(response => {
|
|
|
+ this.formDetails = response.data
|
|
|
+ this.drawerDetails = true
|
|
|
+ })
|
|
|
+ },
|
|
|
/** 提交按钮 */
|
|
|
submitForm() {
|
|
|
this.$refs["form"].validate(valid => {
|
|
@@ -781,6 +807,23 @@ export default {
|
|
|
},
|
|
|
submitFormDetails() {
|
|
|
console.log(this.formDetails);
|
|
|
+ this.$refs["formDetails"].validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ if (this.formDetails.id != null) {
|
|
|
+ updateAnnualSaleGoalDetails(this.formDetails).then(response => {
|
|
|
+ this.$modal.msgSuccess("修改成功");
|
|
|
+ this.drawerDetails = false;
|
|
|
+ this.getDetailList()
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ addAnnualSaleGoalDetails(this.formDetails).then(response => {
|
|
|
+ this.$modal.msgSuccess("新增成功");
|
|
|
+ this.drawerDetails = false;
|
|
|
+ this.getDetailList()
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
},
|
|
|
/** 删除按钮操作 */
|
|
|
handleDelete(row) {
|
|
@@ -792,6 +835,15 @@ export default {
|
|
|
this.$modal.msgSuccess("删除成功");
|
|
|
}).catch(() => {});
|
|
|
},
|
|
|
+ handleDetailsDelete(row) {
|
|
|
+ const ids = row.id || this.ids
|
|
|
+ this.$modal.confirm('是否确认删除年度销售目标编号为"' + ids + '"的数据项?').then(function () {
|
|
|
+ return delAnnualSaleGoalDetails(ids)
|
|
|
+ }).then(() => {
|
|
|
+ this.getDetailList()
|
|
|
+ this.$modal.msgSuccess('删除成功')
|
|
|
+ }).catch(() => {})
|
|
|
+ },
|
|
|
/** 导出按钮操作 */
|
|
|
handleExport() {
|
|
|
this.download('goal_management/annualSaleGoal/export', {
|
|
@@ -816,15 +868,64 @@ export default {
|
|
|
console.log(this.documentDateRange);
|
|
|
console.log(this.queryParams);
|
|
|
},
|
|
|
+ // 打开明细新增or编辑界面
|
|
|
openDetailsDrawer() {
|
|
|
this.drawerDetails = true
|
|
|
this.formDetails.code = this.form.code
|
|
|
this.formDetails.saleZone = this.form.saleZone
|
|
|
this.formDetails.custom = this.form.custom
|
|
|
this.formDetails.creator = this.form.creator
|
|
|
+ this.formDetails.saleOrg = '湖南德荣医疗健康产业有限公司'
|
|
|
|
|
|
+ this.getDetailList()
|
|
|
+ },
|
|
|
+ // 选择树形参照
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 得到明细数据
|
|
|
+ getDetailList() {
|
|
|
this.loading = true
|
|
|
- listAnnualSaleGoalDetails(this.formDetails).then(response => {
|
|
|
+ getDetailsByCode(this.form.code).then(response => {
|
|
|
this.annualSaleGoalDetailsList = response.rows
|
|
|
this.totalDetails = response.total
|
|
|
this.loading = false
|