261 lines
6.6 KiB
JavaScript
261 lines
6.6 KiB
JavaScript
import * as API from 'api/virtual/flow_pools';
|
|
|
|
export default {
|
|
props: {
|
|
show: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
data: {
|
|
type: Object,
|
|
default () {
|
|
return null;
|
|
}
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
listStyle: {
|
|
width: '230px',
|
|
height: '300px'
|
|
},
|
|
companies: [],
|
|
packages: [],
|
|
packageFilters: [],
|
|
package_ids: [],
|
|
reals: [],
|
|
realFilters: [],
|
|
real_pool_ids: [],
|
|
my_show: false,
|
|
isUpdate: false,
|
|
loading: false,
|
|
params: {
|
|
name: '',
|
|
carrier_operator: '',
|
|
company_id: '',
|
|
real_pool_ids: [],
|
|
package_ids: [],
|
|
status: 0,
|
|
remark: '',
|
|
start_at: this.moment().subtract('1', 'months').format('YYYY-MM')
|
|
}
|
|
};
|
|
},
|
|
watch: {
|
|
show(bool) {
|
|
this.my_show = bool;
|
|
if (bool) {
|
|
if (this.data) {
|
|
for (let k in this.data) {
|
|
if (k in this.params) {
|
|
this.params[k] = this.data[k];
|
|
}
|
|
}
|
|
|
|
this.package_ids = this.data.package_ids;
|
|
this.real_pool_ids = this.data.real_pool_ids;
|
|
}
|
|
|
|
this.initCompleteCompanies().then(companies => {
|
|
this.companies = companies.filter(item => {
|
|
return item.status === 0;
|
|
});
|
|
});
|
|
|
|
if (!this.reals.length) {
|
|
API.real().then(res => {
|
|
if (res.code == 0) {
|
|
this.reals = res.data.map(item => {
|
|
return {
|
|
'key': item.id,
|
|
'label': item.sn + ' - ' + item.name,
|
|
'disabled': false,
|
|
'virtual_pool_id': item.virtual_pool_id,
|
|
'carrier_operator': item.carrier_operator
|
|
};
|
|
});
|
|
|
|
this.filterReals();
|
|
}
|
|
});
|
|
} else {
|
|
this.filterReals();
|
|
}
|
|
|
|
if (!this.packages.length) {
|
|
API.packages().then(res => {
|
|
if (res.code == 0) {
|
|
this.packages = res.data.map(item => {
|
|
return {
|
|
'key': item.id,
|
|
'label': item.name + (item.type === 0 ? '(基础)' : '(续费包)'),
|
|
'disabled': false,
|
|
'company_ids': item.company_ids,
|
|
'virtual_pool_id': item.virtual_pool_id,
|
|
'carrier_operator': item.carrier_operator
|
|
};
|
|
});
|
|
|
|
this.filterPackages();
|
|
}
|
|
});
|
|
} else {
|
|
this.filterPackages();
|
|
}
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
filterReals() {
|
|
this.realFilters = this.reals.filter(item => {
|
|
if ((this.params.carrier_operator !== '' && this.params.carrier_operator !== undefined) && this.params.carrier_operator !== item.carrier_operator) {
|
|
return false;
|
|
}
|
|
|
|
if (item.virtual_pool_id === 0) {
|
|
return true;
|
|
}
|
|
|
|
if (this.data && item.virtual_pool_id === this.data.id) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
});
|
|
},
|
|
filterPackages() {
|
|
this.packageFilters = this.packages.filter(item => {
|
|
if ((this.params.carrier_operator !== '' && this.params.carrier_operator !== undefined) && this.params.carrier_operator !== item.carrier_operator) {
|
|
return false;
|
|
}
|
|
|
|
if (item.company_ids.length === 0) {
|
|
return true;
|
|
}
|
|
|
|
if (this.data && item.company_ids.indexOf(this.data.company_id) !== -1) {
|
|
return true;
|
|
}
|
|
|
|
if ((this.params.company_id !== '' && this.params.company_id !== undefined) && item.company_ids.indexOf(this.params.company_id) !== -1) {
|
|
let index = this.params.package_ids.indexOf(item.id);
|
|
|
|
if (index !== -1) {
|
|
this.params.package_ids.splice(index, 1);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
});
|
|
},
|
|
selectCO() {
|
|
this.filterReals();
|
|
this.filterPackages();
|
|
},
|
|
ok() {
|
|
if (this.params.company_id === '') {
|
|
this.$Message.info('请选择企业');
|
|
}
|
|
|
|
if (this.params.carrier_operator === '') {
|
|
this.$Message.info('请选择运营商');
|
|
}
|
|
|
|
this.params.start_at = this.moment(this.params.start_at).format('YYYY-MM');
|
|
|
|
if (this.data) {
|
|
// 编辑
|
|
API.update(this.params, this.data.id).then(res => {
|
|
this.loading = false;
|
|
if (res.code == 0) {
|
|
this.$emit('update-success');
|
|
this.$Message.success('更新成功');
|
|
this.clear();
|
|
}
|
|
}).catch(err => {
|
|
this.loading = false;
|
|
});
|
|
} else {
|
|
// 添加
|
|
API.create(this.params).then(res => {
|
|
this.loading = false;
|
|
if (res.code == 0) {
|
|
this.$emit('add-success');
|
|
this.$Message.success('添加成功');
|
|
this.clear();
|
|
}
|
|
}).catch(err => {
|
|
this.loading = false;
|
|
});
|
|
}
|
|
},
|
|
|
|
visibleChange(bool) {
|
|
if (!bool) {
|
|
this.$emit('update:show', false);
|
|
}
|
|
},
|
|
clear() {
|
|
for (let k in this.params) {
|
|
if (k == 'status') {
|
|
this.params[k] = 0;
|
|
} else if (k == 'real_pool_ids' || k == 'package_ids') {
|
|
this.params[k] = [];
|
|
} else if (k == 'start_at') {
|
|
this.params[k] = this.moment().subtract('1', 'months').format('YYYY-MM');
|
|
} else {
|
|
this.params[k] = '';
|
|
}
|
|
}
|
|
|
|
this.my_show = false;
|
|
this.package_ids = [];
|
|
this.real_pool_ids = [];
|
|
this.packages = [];
|
|
},
|
|
transferPackages(ids) {
|
|
if (ids.length) {
|
|
this.packages.map(item => {
|
|
if (item.key === ids[0]) {
|
|
this.params.carrier_operator = item.carrier_operator;
|
|
}
|
|
});
|
|
}
|
|
|
|
if (this.package_ids.length > ids.length) {
|
|
this.$Modal.confirm({
|
|
title: '请谨慎操作!',
|
|
content: '移除已选套餐,可能会引起已有数据的变化。',
|
|
onOk: () => {
|
|
this.package_ids = ids;
|
|
this.params.package_ids = ids;
|
|
}
|
|
});
|
|
} else {
|
|
this.package_ids = ids;
|
|
this.params.package_ids = ids;
|
|
}
|
|
|
|
this.filterReals();
|
|
this.filterPackages();
|
|
},
|
|
transferRealFlowPools(ids) {
|
|
if (ids.length) {
|
|
this.reals.filter(item => {
|
|
if (item.key === ids[0]) {
|
|
this.params.carrier_operator = item.carrier_operator;
|
|
}
|
|
});
|
|
}
|
|
|
|
this.real_pool_ids = ids;
|
|
this.params.real_pool_ids = ids;
|
|
|
|
this.filterReals();
|
|
this.filterPackages();
|
|
}
|
|
}
|
|
};
|