|
@@ -1,97 +1,177 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
<BaseDialog
|
|
|
- width="1200px"
|
|
|
+ width="1400px"
|
|
|
:isShow.sync="isShow"
|
|
|
:title="['新增', '修改', '复制'][type]"
|
|
|
@close="close"
|
|
|
@submit="submitForm"
|
|
|
>
|
|
|
+ <div class="bop-tip">
|
|
|
+ <div><i class="el-icon-warning-outline"></i>说明</div>
|
|
|
+ <div>
|
|
|
+ ●
|
|
|
+ 如果提成方式是按阶梯价计算,则需设置阶梯价格区间(最高价无穷大,则填写
|
|
|
+ “ * ” )。如果无需按阶梯价计算提成,留空即可。
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
<el-form
|
|
|
inline
|
|
|
hide-required-asterisk
|
|
|
:model="form"
|
|
|
:rules="rules"
|
|
|
ref="form"
|
|
|
- label-width="100px"
|
|
|
>
|
|
|
<div>
|
|
|
- <el-form-item prop="name" label="模板名称:">
|
|
|
+ <el-form-item prop="tpName" label="模板名称:" label-width="100px">
|
|
|
<el-input
|
|
|
placeholder="请输入模板名称"
|
|
|
- v-model="form.name"
|
|
|
+ v-model="form.tpName"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item prop="tenantId" label="">
|
|
|
+ <el-select v-model="form.tenantId" placeholder="请选择关联机构">
|
|
|
+ <el-option
|
|
|
+ v-for="item in companyList"
|
|
|
+ :key="item.tenantId"
|
|
|
+ :label="item.tenantName"
|
|
|
+ :value="item.tenantId"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="">
|
|
|
+ <el-checkbox
|
|
|
+ :true-label="1"
|
|
|
+ :false-label="0"
|
|
|
+ v-model="form.defaultStatus"
|
|
|
+ >默认</el-checkbox
|
|
|
+ >
|
|
|
+ </el-form-item>
|
|
|
</div>
|
|
|
|
|
|
- <div v-for="(item, index) in form.list" :key="index">
|
|
|
+ <div v-for="(item, index) in form.itemList" :key="index">
|
|
|
<el-form-item
|
|
|
- :prop="'list.' + index + '.email'"
|
|
|
+ :prop="'itemList.' + index + '.itemName'"
|
|
|
:label="index == 0 ? '成本设置:' : ' '"
|
|
|
- :rules="rules['email']"
|
|
|
+ :rules="rules['itemName']"
|
|
|
+ label-width="100px"
|
|
|
>
|
|
|
<el-input
|
|
|
placeholder="请输入成本项名称"
|
|
|
- v-model="item.email"
|
|
|
+ v-model="item.itemName"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item
|
|
|
- style="margin-left: 10px"
|
|
|
label=""
|
|
|
- label-width="4px"
|
|
|
- :prop="'list.' + index + '.email1'"
|
|
|
- :rules="rules['email1']"
|
|
|
+ :prop="'itemList.' + index + '.itemCategory'"
|
|
|
+ :rules="rules['itemCategory']"
|
|
|
>
|
|
|
- <el-select v-model="item.email1" placeholder="请选择是否分成">
|
|
|
- <el-option label="分成成本" value="1"></el-option>
|
|
|
- <el-option label="非分成成本" value="2"></el-option>
|
|
|
+ <el-select v-model="item.itemCategory" placeholder="请选择成本类型">
|
|
|
+ <el-option label="业务类型" value="1"></el-option>
|
|
|
+ <el-option label="非分成" value="2"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
+ <template v-if="item.itemCategory == 1">
|
|
|
+ <el-form-item
|
|
|
+ label=""
|
|
|
+ :prop="'itemList.' + index + '.educationTypeId'"
|
|
|
+ :rules="rules['educationTypeId']"
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ @change="changeEdu(item)"
|
|
|
+ v-model="item.educationTypeId"
|
|
|
+ placeholder="请选择教育类型"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in eduList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="
|
|
|
+ item.schemeName +
|
|
|
+ (item.schemeName ? '-' : '') +
|
|
|
+ item.educationName
|
|
|
+ "
|
|
|
+ :value="item.id"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ label=""
|
|
|
+ :prop="'itemList.' + index + '.businessId'"
|
|
|
+ :rules="rules['businessId']"
|
|
|
+ >
|
|
|
+ <el-select v-model="item.businessId" placeholder="请选择业务层次">
|
|
|
+ <el-option
|
|
|
+ v-for="level in backbusinessList(item.educationTypeId)"
|
|
|
+ :key="level.businessId"
|
|
|
+ :label="level.aliasName"
|
|
|
+ :value="level.businessId"
|
|
|
+ @click.native="changeBus(item, level.projectId)"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
<el-form-item
|
|
|
- style="margin-left: 10px"
|
|
|
label=""
|
|
|
- label-width="4px"
|
|
|
- :prop="'list.' + index + '.email2'"
|
|
|
- :rules="rules['email2']"
|
|
|
+ :prop="'itemList.' + index + '.itemType'"
|
|
|
+ :rules="rules['itemType']"
|
|
|
>
|
|
|
- <el-select v-model="item.email2" placeholder="请选择成本类型">
|
|
|
+ <el-select v-model="item.itemType" placeholder="请选择成本类型">
|
|
|
<el-option label="百分比成本" value="1"></el-option>
|
|
|
<el-option label="固定成本" value="2"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item
|
|
|
- v-if="item.email2 == 1"
|
|
|
+ label=""
|
|
|
+ :prop="'itemList.' + index + '.email2'"
|
|
|
+ :rules="rules['email2']"
|
|
|
+ class="range"
|
|
|
+ >
|
|
|
+ <el-col :span="11">
|
|
|
+ <el-input placeholder="最低价" v-model="item.minValue"></el-input>
|
|
|
+ </el-col>
|
|
|
+ <el-col class="line" :span="2" style="magrin: 10px">-</el-col>
|
|
|
+ <el-col :span="11">
|
|
|
+ <el-input placeholder="最高价" v-model="item.maxValue"></el-input>
|
|
|
+ </el-col>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ class="ddd"
|
|
|
+ v-if="item.itemType == 1"
|
|
|
label-width="0"
|
|
|
- :prop="'list.' + index + '.email3'"
|
|
|
+ :prop="'itemList.' + index + '.typeValue'"
|
|
|
label=" "
|
|
|
- :rules="rules['email3']"
|
|
|
+ :rules="rules['typeValue']"
|
|
|
>
|
|
|
- <el-input placeholder="请输入固定成本" v-model="item.email3">
|
|
|
- <template slot="append">元</template>
|
|
|
+ <el-input placeholder="百分比成本" v-model="item.typeValue">
|
|
|
+ <template slot="append">%</template>
|
|
|
</el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item
|
|
|
- v-if="item.email2 == 2"
|
|
|
+ v-if="item.itemType == 2"
|
|
|
+ class="ddd"
|
|
|
label-width="0"
|
|
|
- :prop="'list.' + index + '.email4'"
|
|
|
+ :prop="'itemList.' + index + '.typeValue'"
|
|
|
label=" "
|
|
|
- :rules="rules['email4']"
|
|
|
+ :rules="rules['typeValue']"
|
|
|
>
|
|
|
- <el-input placeholder="请输入百分比成本" v-model="form.email4">
|
|
|
- <template slot="append">%</template>
|
|
|
+ <el-input placeholder="固定成本" v-model="item.typeValue">
|
|
|
+ <template slot="append">元</template>
|
|
|
</el-input>
|
|
|
</el-form-item>
|
|
|
- <i
|
|
|
- @click="add(index)"
|
|
|
- style="font-size: 24px; margin: 5px; cursor: pointer"
|
|
|
- class="el-icon-circle-plus-outline"
|
|
|
- ></i>
|
|
|
- <i
|
|
|
- v-if="index != 0"
|
|
|
- @click="del(index)"
|
|
|
- style="font-size: 24px; margin: 5px; cursor: pointer"
|
|
|
- class="el-icon-remove-outline"
|
|
|
- ></i>
|
|
|
+ <el-form-item label-width="0" label=" ">
|
|
|
+ <div class="btns">
|
|
|
+ <!-- <el-button type="text">复制</el-button> -->
|
|
|
+ <i @click="add(index, item)" class="el-icon-connection"></i>
|
|
|
+ <i @click="add(index)" class="el-icon-circle-plus-outline"></i>
|
|
|
+ <i
|
|
|
+ v-if="index != 0"
|
|
|
+ @click="del(index)"
|
|
|
+ class="el-icon-remove-outline"
|
|
|
+ ></i>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
</div>
|
|
|
</el-form>
|
|
|
</BaseDialog>
|
|
@@ -99,6 +179,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import { eduList, addCost, costDetal } from "@/api/financed/index";
|
|
|
export default {
|
|
|
name: "DislogSet",
|
|
|
props: {
|
|
@@ -111,8 +192,8 @@ export default {
|
|
|
type: [String, Number],
|
|
|
default: 0,
|
|
|
},
|
|
|
- id: {
|
|
|
- type: String,
|
|
|
+ tpId: {
|
|
|
+ type: [String, Number],
|
|
|
default: "",
|
|
|
},
|
|
|
},
|
|
@@ -120,73 +201,133 @@ export default {
|
|
|
return {
|
|
|
form: {},
|
|
|
rules: {
|
|
|
- name: [
|
|
|
- { required: true, message: "请输入活动名称", trigger: "blur" },
|
|
|
- { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
|
|
|
+ tpName: [
|
|
|
+ { required: true, message: "请输入模板名称", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ tenantId: [
|
|
|
+ { required: true, message: "请选择关联机构", trigger: "change" },
|
|
|
],
|
|
|
- email: [
|
|
|
+ itemName: [
|
|
|
{ required: true, message: "请输入成本项名称", trigger: "blur" },
|
|
|
- { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
|
|
|
],
|
|
|
- email1: [
|
|
|
- { required: true, message: "请选择是否分成", trigger: "change" },
|
|
|
+ businessId: [
|
|
|
+ { required: true, message: "请选择业务层次", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ educationTypeId: [
|
|
|
+ { required: true, message: "请选择教育类型", trigger: "change" },
|
|
|
+ ],
|
|
|
+ itemCategory: [
|
|
|
+ { required: true, message: "请选择业务类型", trigger: "change" },
|
|
|
],
|
|
|
- email2: [
|
|
|
+ itemType: [
|
|
|
{ required: true, message: "请选择成本类型", trigger: "change" },
|
|
|
],
|
|
|
email3: [
|
|
|
{ required: true, message: "请输入固定成本", trigger: "blur" },
|
|
|
],
|
|
|
- email4: [
|
|
|
+ typeValue: [
|
|
|
{ required: true, message: "请输入百分比成本", trigger: "blur" },
|
|
|
],
|
|
|
},
|
|
|
+ eduTypeOptions: [],
|
|
|
+ newCourTypeOptions: [],
|
|
|
+ companyList: [],
|
|
|
+ eduList: [],
|
|
|
+ courType: 0,
|
|
|
};
|
|
|
},
|
|
|
|
|
|
- mounted() {},
|
|
|
+ mounted() {
|
|
|
+ console.log(8798465465);
|
|
|
+ },
|
|
|
|
|
|
methods: {
|
|
|
init() {
|
|
|
this.resetForm();
|
|
|
- if (this.id) {
|
|
|
+ if (this.tpId) {
|
|
|
+ this.getCostDetal();
|
|
|
+ console.log(this.tpId, 666);
|
|
|
}
|
|
|
+ this.getCompanyList();
|
|
|
+ this.getEduList();
|
|
|
+ },
|
|
|
+ getCostDetal() {
|
|
|
+ costDetal({ tpId: this.tpId }).then((res) => {
|
|
|
+ console.log(res.rows, 89);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getEduList() {
|
|
|
+ if (this.eduList.length) return;
|
|
|
+ eduList({}).then((res) => {
|
|
|
+ this.eduList = res.rows;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ backbusinessList(eduId) {
|
|
|
+ if (!eduId || !this.eduList.length) return [];
|
|
|
+ let data = this.eduList.find((e) => e.id == eduId);
|
|
|
+ return data.businessList || [];
|
|
|
+ },
|
|
|
+ getCompanyList() {
|
|
|
+ if (this.companyList.length) return;
|
|
|
+ this.$api.systemtenantlist(this.formData).then((res) => {
|
|
|
+ this.companyList = res.rows;
|
|
|
+ });
|
|
|
},
|
|
|
- add(index) {
|
|
|
- this.form.list.splice(index + 1, 0, {
|
|
|
+ changeEdu(data) {
|
|
|
+ data.businessId = undefined;
|
|
|
+ data.projectId = undefined;
|
|
|
+ },
|
|
|
+ changeBus(data, projectId) {
|
|
|
+ data.projectId = projectId;
|
|
|
+ },
|
|
|
+ add(index, data) {
|
|
|
+ data = data || {
|
|
|
email: undefined,
|
|
|
- email1: undefined,
|
|
|
+ businessId: undefined,
|
|
|
email2: undefined,
|
|
|
email3: undefined,
|
|
|
email4: undefined,
|
|
|
- });
|
|
|
+ };
|
|
|
+ this.form.itemList.splice(index + 1, 0, data);
|
|
|
},
|
|
|
del(index) {
|
|
|
- this.form.list.splice(index, 1);
|
|
|
+ this.form.itemList.splice(index, 1);
|
|
|
},
|
|
|
close() {
|
|
|
this.$refs["form"].resetFields();
|
|
|
},
|
|
|
+ changeEduType() {},
|
|
|
submit() {},
|
|
|
resetForm() {
|
|
|
this.form = {
|
|
|
- list: [
|
|
|
+ itemList: [
|
|
|
{
|
|
|
- email: undefined,
|
|
|
- email1: undefined,
|
|
|
- email2: undefined,
|
|
|
- email3: undefined,
|
|
|
- email4: undefined,
|
|
|
+ projectId: undefined,
|
|
|
+ itemName: 456,
|
|
|
+ itemCategory: "1",
|
|
|
+ businessId: undefined,
|
|
|
+ educationTypeId: 21,
|
|
|
+ itemType: "1",
|
|
|
+ typeValue: undefined,
|
|
|
+ minValue: undefined,
|
|
|
+ maxValue: undefined,
|
|
|
},
|
|
|
],
|
|
|
- name: undefined,
|
|
|
+ tpName: 123,
|
|
|
+ defaultStatus: 0,
|
|
|
+ tenantId: "1",
|
|
|
};
|
|
|
},
|
|
|
submitForm() {
|
|
|
+ console.log(1232132);
|
|
|
this.$refs["form"].validate((valid) => {
|
|
|
if (valid) {
|
|
|
- this.isShow = false;
|
|
|
- this.$emit("search");
|
|
|
+ console.log(13213);
|
|
|
+ addCost(this.form).then((res) => {
|
|
|
+ console.log(res, 666);
|
|
|
+ this.isShow = false;
|
|
|
+ this.$emit("search");
|
|
|
+ });
|
|
|
} else {
|
|
|
return false;
|
|
|
}
|
|
@@ -209,4 +350,44 @@ export default {
|
|
|
};
|
|
|
</script>
|
|
|
|
|
|
-<style lang="scss" scoped></style>
|
|
|
+<style lang="scss" scoped>
|
|
|
+/deep/.el-input--medium .el-input__inner {
|
|
|
+ width: 144px;
|
|
|
+}
|
|
|
+/deep/ .range {
|
|
|
+ .el-form-item__content {
|
|
|
+ width: 170px;
|
|
|
+ }
|
|
|
+ .el-input--medium .el-input__inner {
|
|
|
+ width: 76px;
|
|
|
+ }
|
|
|
+}
|
|
|
+/deep/ .ddd {
|
|
|
+ margin-left: -10px;
|
|
|
+ .el-input--medium .el-input__inner {
|
|
|
+ width: 105px;
|
|
|
+ }
|
|
|
+}
|
|
|
+.line {
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+.btns {
|
|
|
+ height: 36px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ i {
|
|
|
+ font-size: 24px;
|
|
|
+ cursor: pointer;
|
|
|
+ margin-left: 5px;
|
|
|
+ }
|
|
|
+}
|
|
|
+.bop-tip {
|
|
|
+ background: #fff6f7;
|
|
|
+ margin: 0 0 20px 10px;
|
|
|
+ padding: 8px 10px;
|
|
|
+ i {
|
|
|
+ font-size: 16px;
|
|
|
+ color: #e6a23c;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|