You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

179 lines
5.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div>
<xy-dialog
ref="dialog"
:form="form"
:is-show.sync="isShow"
:rules="rules"
:title="type === 'add' ? '新增业务板块' : '编辑业务板块'"
type="form"
@submit="submit">
<template v-slot:name>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>名称
</div>
<div class="xy-table-item-content">
<el-input v-model="form.name" clearable placeholder="请输入产品名称" style="width: 300px;"></el-input>
</div>
</div>
</template>
<template v-slot:buy_name>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>服务购买方:
</div>
<div class="xy-table-item-content">
<el-input v-model="form.buy_name" clearable placeholder="请输入服务购买方" style="width: 300px;"></el-input>
</div>
</div>
</template>
<template v-slot:cycle>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>结算周期:
</div>
<div class="xy-table-item-content">
<el-select v-model="form.cycle" clearable placeholder="请选择服务周期" style="width: 300px;">
<el-option
v-for="item in [{id:1,value:'月度结算'},{id:2,value:'季度结算'},{id:3,value:'年度结算'}]"
:key="item.id"
:label="item.value"
:value="item.id"></el-option>
</el-select>
</div>
</div>
</template>
<template v-slot:flow>
<div class="xy-table-item">
<div class="xy-table-item-label">
服务流程:
</div>
<div class="xy-table-item-content">
<el-input v-model="form.flow" :autosize="{minRows:2}" clearable placeholder="请输入服务流程" style="width: 300px;"
type="textarea"></el-input>
</div>
</div>
</template>
<template v-slot:sortnumber>
<div class="xy-table-item">
<div class="xy-table-item-label">
排序:
</div>
<div class="xy-table-item-content">
<el-input-number v-model="form.sortnumber" :controls="false" :precision="0" clearable placeholder="请输入排序"
style="width: 300px;"></el-input-number>
</div>
</div>
</template>
<template v-slot:product_sku_list>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>关联服务:
</div>
<div class="xy-table-item-content">
<el-select v-model="form.product_sku_list" style="width: 300px;" placeholder="请选择关联服务" multiple value-key="sku_id">
<el-option v-for="(item,index) in skus" :value="{sku_id:item.id}" :label="item.name" :key="item.id"></el-option>
</el-select>
</div>
</div>
</template>
</xy-dialog>
</div>
</template>
<script>
import {getForm, save} from '@/api/productType'
export default {
props:{
skus:{
type:Array,
default:()=>[]
}
},
data() {
return {
id: '',
isShow: false,
type: 'add',
form: {
name: '',
buy_name: '',
cycle: '',
flow: '',
sortnumber: 0,
product_sku_list:[]
},
rules: {
name: [
{required: true, message: '请填写名称'}
],
buy_name: [
{required: true, message: '请填写服务购买方'}
],
cycle: [
{required: true, message: '请填写结算周期'}
]
},
}
},
methods: {
async getDetail() {
const res = await getForm(this.id)
this.$integrateData(this.form, res)
this.form.product_sku_list = res.product_skus.map(item => {
return {
sku_id:item.sku_id
}
})
console.log(res)
},
submit() {
if (this.type === 'editor') {
Object.defineProperty(this.form, 'id', {
value: this.id,
enumerable: true,
writable: false,
configurable: true
})
}
save(this.form).then(res => {
this.$successMessage(this.type, '业务类型')
this.isShow = false
this.$emit('refresh')
})
}
},
watch: {
isShow(val) {
if (val) {
if (this.type === 'editor') {
this.getDetail()
}
} else {
this.id = ''
this.type = ''
delete this.form.id
this.$refs['dialog'].reset()
}
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .el-input__inner {
text-align: left;
}
</style>