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.
146 lines
4.9 KiB
146 lines
4.9 KiB
<template>
|
|
<GuipButton type="ignore" @click="syncPriceClick" size="medium">
|
|
同步价格
|
|
<GuipDialog width="800px" :dialogVisible="dialogSyncPrice" :title="'同步价格_'+type_name" confirmText="保存价格"
|
|
@confirm="handleSavePrice" @close="handleSyncPriceClose"
|
|
:show-cancel-button="priceDesc!==''" :cancelText="priceDesc" @cancel="handleSyncPrice">
|
|
<GuipTable :tableData="siteList" ref="multipleTable" autoColumn="true" :loading="tableLoading">
|
|
<el-table-column prop="site_name" label="站点"></el-table-column>
|
|
<el-table-column prop="price" label="当前价格">
|
|
<template slot-scope="scope">
|
|
{{scope.row.price}}元/{{scope.row.unit_format}}
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="price_set" label="设置价格">
|
|
<template slot-scope="scope">
|
|
<div class="flex mr12">
|
|
<GuipInput v-if="scope.row.unit_num === '1'" v-model="scope.row.price"
|
|
ref="GuipInput" :unit="'元/'+scope.row.unit_name"></GuipInput>
|
|
<template v-else>
|
|
<GuipInput v-model="scope.row.price" ref="GuipInput" unit="元">
|
|
</GuipInput>
|
|
<GuipInput v-model="scope.row.unit_num" ref="GuipInput" :unit="scope.row.unit_name">
|
|
</GuipInput>
|
|
</template>
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
</GuipTable>
|
|
</GuipDialog>
|
|
</GuipButton>
|
|
</template>
|
|
<script>
|
|
|
|
import GuipButton from "@/components/GuipButton.vue";
|
|
import GuipDialog from "@/components/GuipDialog.vue";
|
|
import GuipTable from "@/components/GuipTable.vue";
|
|
import GuipInput from "@/components/GuipInput.vue";
|
|
|
|
export default {
|
|
name: 'syncPrice',
|
|
props: ['type', 'type_name', 'price', 'unit_num', 'unit_name'],
|
|
components: {
|
|
GuipInput,
|
|
GuipTable,
|
|
GuipDialog,
|
|
GuipButton
|
|
},
|
|
data(){
|
|
return {
|
|
dialogSyncPrice: false,
|
|
tableLoading: false,
|
|
siteList:[] ,
|
|
}
|
|
},
|
|
computed:{
|
|
priceDesc(){
|
|
if(this.price) {
|
|
let priceDesc = '同步为'+this.price+'元/'+this.unit_num+this.unit_name;
|
|
if(this.unit_num === '1') priceDesc = '同步为'+this.price+'元/'+this.unit_name;
|
|
return priceDesc
|
|
}
|
|
return "";
|
|
}
|
|
},
|
|
mounted() {
|
|
this.getSiteList()
|
|
},
|
|
methods:{
|
|
getSiteList(){
|
|
this.tableLoading = true
|
|
const that = this
|
|
that.serviceList = []
|
|
this.$http('POST', '/agentnew/ajax_get_service_sites', {
|
|
type: that.type,
|
|
}).then(response => {
|
|
that.tableLoading = false
|
|
if(response.status){
|
|
that.$nextTick(() => {
|
|
that.siteList = response.data
|
|
})
|
|
}
|
|
}).catch(error => {
|
|
console.error(error, 'error')
|
|
})
|
|
},
|
|
syncPriceClick(){
|
|
this.dialogSyncPrice = true
|
|
},
|
|
handleSyncPriceClose(){
|
|
this.dialogSyncPrice = false
|
|
},
|
|
handleSavePrice(){
|
|
this.dialogSyncPrice = false
|
|
console.log(this.siteList)
|
|
this.savePrice(0)
|
|
},
|
|
handleSyncPrice(){
|
|
this.dialogSyncPrice = false
|
|
console.log(this.siteList)
|
|
this.savePrice(1)
|
|
},
|
|
savePrice(sync){
|
|
let price_config = []
|
|
this.siteList.forEach((item)=>{
|
|
let config = {
|
|
'id' : item.id,
|
|
'price' : sync === 1 ? this.price : item.price,
|
|
'unit_num' : sync === 1 ? this.unit_num : item.unit_num
|
|
}
|
|
price_config.push(config)
|
|
})
|
|
const that = this
|
|
this.$http('POST', "/agentnew/ajax_update_services_price", {
|
|
type: that.type,
|
|
price_config: price_config,
|
|
is_sync: sync
|
|
}).then(response => {
|
|
if (response.status) {
|
|
that.$message.success('保存成功');
|
|
if(sync === 1){
|
|
that.$nextTick(() => {
|
|
that.siteList.forEach((item)=>{
|
|
item.price = this.price
|
|
item.unit_num = this.unit_num
|
|
})
|
|
})
|
|
}
|
|
return true;
|
|
}
|
|
that.$message.error(response.info);
|
|
}).catch(error => {
|
|
console.error(error, 'error')
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
.mr12{
|
|
margin-right: 12px;
|
|
}
|
|
::v-deep .el-table__body-wrapper{
|
|
height: 300px;
|
|
overflow-y: auto;
|
|
}
|
|
</style>
|