|
@@ -29,6 +29,7 @@
|
|
.rows .row {
|
|
.rows .row {
|
|
float: left;
|
|
float: left;
|
|
width: 33.3333%;
|
|
width: 33.3333%;
|
|
|
|
+ min-width: 25rem;
|
|
}
|
|
}
|
|
|
|
|
|
.rows .row .out {
|
|
.rows .row .out {
|
|
@@ -59,31 +60,42 @@
|
|
</el-col>
|
|
</el-col>
|
|
</el-row>
|
|
</el-row>
|
|
<div>
|
|
<div>
|
|
- <div><el-button type="primary" icon="el-icon-plus" @click="addRules">添加规则</el-button></div>
|
|
|
|
|
|
+ <div><el-button type="primary" icon="el-icon-plus" @click="addRules">收费规则</el-button></div>
|
|
</div>
|
|
</div>
|
|
<div class="rows">
|
|
<div class="rows">
|
|
- <div v-for="(rule,index) in rules" class="row">
|
|
|
|
- <div class="out">
|
|
|
|
- <el-divider content-position="left">规则{{index+1}}
|
|
|
|
- <i class="el-icon-delete" style="color: red;margin-left: 20px;cursor: pointer;"
|
|
|
|
- @click="delRules(rule.index)"></i>
|
|
|
|
- </el-divider>
|
|
|
|
- <div class="c-item br">
|
|
|
|
- <label class="c-label"><label style="color: red">*</label>选择品目:</label>
|
|
|
|
- <el-select multiple v-model="rule.goodsCodes" placeholder="请选择" filterable
|
|
|
|
- size="mini">
|
|
|
|
- <el-option v-for="(item,index) in goodsList" :key="index" :label="item.name"
|
|
|
|
- :value="item.code"> </el-option>
|
|
|
|
- </el-select>
|
|
|
|
|
|
+ <el-form ref="dynamicValidateForm" :model="form" label-width="100px" class="demo-dynamic">
|
|
|
|
+ <div v-for="(rule,index) in form.rules" class="row">
|
|
|
|
+ <div class="out">
|
|
|
|
+ <el-divider content-position="left">规则{{index+1}}
|
|
|
|
+ <i class="el-icon-delete"
|
|
|
|
+ style="color: red;margin-left: 20px;cursor: pointer;"
|
|
|
|
+ @click="delRules(rule.index)"></i>
|
|
|
|
+ </el-divider>
|
|
|
|
+ <div class="c-item br">
|
|
|
|
+ <el-form-item :prop="'rules.' + index + '.goodsCodes'" label="选择品目:" :rules="[
|
|
|
|
+ { required: true, message: '请输入选择品目', trigger: 'blur' }
|
|
|
|
+ ]">
|
|
|
|
+ <el-select multiple v-model="rule.goodsCodes" placeholder="请选择"
|
|
|
|
+ filterable size="mini">
|
|
|
|
+ <el-option v-for="(item,index) in goodsList" :key="index"
|
|
|
|
+ :label="item.name" :value="item.code"> </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ <label @click="addAllGoods(rule)" v-if="rule.goodsCodes.length==0"
|
|
|
|
+ style="font-size: 10px;cursor: pointer;padding: 5px 5px; color: white;background-color: #1890ff;border-radius: 2px;">全部</label>
|
|
|
|
+ <label @click="rule.goodsCodes=[]" v-else
|
|
|
|
+ style="font-size: 10px;cursor: pointer;padding: 5px 5px; color: white;background-color: red;border-radius: 2px;">清除</label>
|
|
|
|
+
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </div>
|
|
|
|
+ <sa-item type="enum" name="类型" v-model="rule.feeType"
|
|
|
|
+ :jv="{2: '固定金额',1: '按交易额', 3:'按吨收费'}" jtype="3" br></sa-item>
|
|
|
|
+ <sa-item type="num" v-if="rule.feeType==1||rule.feeType==3" name="百分比(%)"
|
|
|
|
+ v-model="rule.percent" br></sa-item>
|
|
|
|
+ <sa-item type="num" v-if="rule.feeType==2" name="金额(元)" v-model="rule.feeMoney"
|
|
|
|
+ br></sa-item>
|
|
</div>
|
|
</div>
|
|
- <sa-item type="enum" name="类型" v-model="rule.feeType"
|
|
|
|
- :jv="{2: '固定金额',1: '按交易额', 3:'按吨收费'}" jtype="3" br></sa-item>
|
|
|
|
- <sa-item type="num" v-if="rule.feeType==1||rule.feeType==3" name="百分比(%)"
|
|
|
|
- v-model="rule.percent" br></sa-item>
|
|
|
|
- <sa-item type="num" v-if="rule.feeType==2" name="金额(元)" v-model="rule.feeMoney"
|
|
|
|
- br></sa-item>
|
|
|
|
</div>
|
|
</div>
|
|
- </div>
|
|
|
|
|
|
+ </el-form>
|
|
</div>
|
|
</div>
|
|
</el-form>
|
|
</el-form>
|
|
</div>
|
|
</div>
|
|
@@ -103,13 +115,16 @@
|
|
data: {
|
|
data: {
|
|
id: sa.p('id', 0), // 获取超链接中的id参数(0=添加,非0=修改)
|
|
id: sa.p('id', 0), // 获取超链接中的id参数(0=添加,非0=修改)
|
|
m: null, // 实体对象
|
|
m: null, // 实体对象
|
|
- rules: [{
|
|
|
|
- index: 0,
|
|
|
|
- goodsCodes: [],
|
|
|
|
- feeType: 2,
|
|
|
|
- percent: 10,
|
|
|
|
- feeMoney: 30
|
|
|
|
- }],
|
|
|
|
|
|
+ form: {
|
|
|
|
+ rules: [{
|
|
|
|
+ index: 0,
|
|
|
|
+ goodsCodes: [],
|
|
|
|
+ feeType: 2,
|
|
|
|
+ percent: 10,
|
|
|
|
+ feeMoney: 30
|
|
|
|
+ }],
|
|
|
|
+ },
|
|
|
|
+
|
|
companyList: [],
|
|
companyList: [],
|
|
goodsList: []
|
|
goodsList: []
|
|
},
|
|
},
|
|
@@ -122,10 +137,10 @@
|
|
percent: 10,
|
|
percent: 10,
|
|
feeMoney: 30
|
|
feeMoney: 30
|
|
}
|
|
}
|
|
- this.rules.push(rule);
|
|
|
|
|
|
+ this.form.rules.push(rule);
|
|
},
|
|
},
|
|
delRules(index) {
|
|
delRules(index) {
|
|
- let rules = this.rules;
|
|
|
|
|
|
+ let rules = this.form.rules;
|
|
if (rules.length == 1) {
|
|
if (rules.length == 1) {
|
|
sa.error('只是保留一条规则')
|
|
sa.error('只是保留一条规则')
|
|
return;
|
|
return;
|
|
@@ -133,6 +148,9 @@
|
|
let i = rules.map(obj => obj.index).indexOf(index);
|
|
let i = rules.map(obj => obj.index).indexOf(index);
|
|
rules.splice(i, 1);
|
|
rules.splice(i, 1);
|
|
},
|
|
},
|
|
|
|
+ addAllGoods(rule) {
|
|
|
|
+ rule.goodsCodes = this.goodsList.map(obj => obj.code);
|
|
|
|
+ },
|
|
getGoodsList: function() {
|
|
getGoodsList: function() {
|
|
sa.ajax('/level-one-server/TbGoods/getList', {
|
|
sa.ajax('/level-one-server/TbGoods/getList', {
|
|
pageSize: 100
|
|
pageSize: 100
|
|
@@ -164,37 +182,52 @@
|
|
},
|
|
},
|
|
// 提交数据
|
|
// 提交数据
|
|
ok: function() {
|
|
ok: function() {
|
|
- // 表单校验
|
|
|
|
|
|
+ // 表单校验
|
|
let m = this.m;
|
|
let m = this.m;
|
|
- sa.checkNull(m.name, '请输入 [名称]');
|
|
|
|
|
|
+ sa.checkNull(m.name, '请输入 [费项名称]');
|
|
sa.checkNull(m.companyId, '请选择 [收费企业]');
|
|
sa.checkNull(m.companyId, '请选择 [收费企业]');
|
|
- if (m.feeType == 1 && !m.percent) {
|
|
|
|
- sa.error('请输入百分比')
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- if (m.feeType == 2 && !m.feeMoney) {
|
|
|
|
- sa.error('请输入金额')
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- if (m.feeType == 1) {
|
|
|
|
- m.feeMoney = 0;
|
|
|
|
- }
|
|
|
|
- if (m.feeType == 2) {
|
|
|
|
- m.percent = 0;
|
|
|
|
- }
|
|
|
|
m.companyName = this.companyList.filter(obj => obj.id == m.companyId).pop().name;
|
|
m.companyName = this.companyList.filter(obj => obj.id == m.companyId).pop().name;
|
|
- // 开始增加或修改
|
|
|
|
- this.m.createTime = undefined; // 不提交属性:创建时间
|
|
|
|
- this.m.updateTime = undefined; // 不提交属性:更新时间
|
|
|
|
- if (this.id <= 0) { // 添加
|
|
|
|
- sa.ajax('/level-two-server/TbFeeItem/add', m, function(res) {
|
|
|
|
- sa.alert('增加成功', this.clean);
|
|
|
|
- }.bind(this));
|
|
|
|
- } else { // 修改
|
|
|
|
- sa.ajax('/level-two-server/TbFeeItem/update', m, function(res) {
|
|
|
|
- sa.alert('修改成功', this.clean);
|
|
|
|
- }.bind(this));
|
|
|
|
- }
|
|
|
|
|
|
+ this.$refs.dynamicValidateForm.validate((valid) => {
|
|
|
|
+ if (valid) {
|
|
|
|
+ let rules = JSON.parse(JSON.stringify(this.form.rules));
|
|
|
|
+ for (let i in rules) {
|
|
|
|
+ let rule = rules[i];
|
|
|
|
+ if (rule.feeType == 1 && !rule.percent) {
|
|
|
|
+ sa.error('请输入百分比')
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (rule.feeType == 2 && !rule.feeMoney) {
|
|
|
|
+ sa.error('请输入金额')
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (rule.feeType == 1) {
|
|
|
|
+ rule.feeMoney = 0;
|
|
|
|
+ }
|
|
|
|
+ if (rule.feeType == 2) {
|
|
|
|
+ rule.percent = 0;
|
|
|
|
+ }
|
|
|
|
+ rule.goodsCodes = rule.goodsCodes.join(',');
|
|
|
|
+ }
|
|
|
|
+ // 开始增加或修改
|
|
|
|
+ m.rules = rules;
|
|
|
|
+ console.log(m);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if (this.id <= 0) { // 添加
|
|
|
|
+ sa.ajaxJson('/level-two-server/TbFeeItem/add', sa.removeNull(m),
|
|
|
|
+ function(res) {
|
|
|
|
+ sa.alert('增加成功', this.clean);
|
|
|
|
+ }.bind(this));
|
|
|
|
+ } else { // 修改
|
|
|
|
+ sa.ajaxJson('/level-two-server/TbFeeItem/update', sa.removeNull(m),
|
|
|
|
+ function(res) {
|
|
|
|
+ sa.alert('修改成功', this.clean);
|
|
|
|
+ }.bind(this));
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ });
|
|
},
|
|
},
|
|
// 添加/修改 完成后的动作
|
|
// 添加/修改 完成后的动作
|
|
clean: function() {
|
|
clean: function() {
|
|
@@ -214,6 +247,22 @@
|
|
this.m = this.createModel();
|
|
this.m = this.createModel();
|
|
} else {
|
|
} else {
|
|
sa.ajax('/level-two-server/TbFeeItem/getById?id=' + this.id, function(res) {
|
|
sa.ajax('/level-two-server/TbFeeItem/getById?id=' + this.id, function(res) {
|
|
|
|
+ let data = res.data;
|
|
|
|
+ let rules = data.rules;
|
|
|
|
+ let list=[];
|
|
|
|
+ for (let i in rules) {
|
|
|
|
+ let rule = rules[i];
|
|
|
|
+ let obj = {
|
|
|
|
+ index: sa.randomString(),
|
|
|
|
+ goodsCodes: rule.goodsCodes.split(','),
|
|
|
|
+ feeType: rule.feeType,
|
|
|
|
+ percent: rule.percent,
|
|
|
|
+ feeMoney: rule.feeMoney
|
|
|
|
+ }
|
|
|
|
+ list.push(obj);
|
|
|
|
+ }
|
|
|
|
+ console.log(list);
|
|
|
|
+ this.form.rules=list;
|
|
this.m = res.data;
|
|
this.m = res.data;
|
|
if (res.data == null) {
|
|
if (res.data == null) {
|
|
sa.alert('未能查找到 id=' + this.id + " 详细数据");
|
|
sa.alert('未能查找到 id=' + this.id + " 详细数据");
|