7 changed files with 211 additions and 25 deletions
@ -0,0 +1,155 @@ |
|||||
|
<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 { |
||||
|
token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3NTI2NDY1NDUsIm5iZiI6MTc1MjY0NjU0NSwiZXhwIjoxNzU1MjM4NTQ1LCJ1c2VyIjoic3VidXNlciIsImxvZ2luX3R5cGUiOjAsImFpZCI6IjEifQ.G-Is-x9qPMiV_urOlDPQVRjfAIozySxL5EK2k82d46k', |
||||
|
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, |
||||
|
},{ |
||||
|
headers:{ |
||||
|
'Auth': that.token |
||||
|
} |
||||
|
}).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 |
||||
|
}, { |
||||
|
headers: { |
||||
|
'Auth': this.token |
||||
|
} |
||||
|
}).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> |
Loading…
Reference in new issue