main^2
fanfan 6 months ago
parent 9f59bac136
commit c0811b12c6
  1. 32
      src/views/dataCenter/goods/Index.vue
  2. 114
      src/views/dataCenter/goods/modules/Update.vue

@ -346,7 +346,7 @@
<a @click="handleDelete([item.goods_id])">删除</a> <a @click="handleDelete([item.goods_id])">删除</a>
</div> </div>
</s-table> </s-table>
<Update ref="UpdateRef" /> <Update ref="UpdateRef" @refresh="refreshParentMethod" />
</a-card> </a-card>
</template> </template>
<script> <script>
@ -364,26 +364,26 @@ Vue.use(DatePicker)
const columns = [ const columns = [
{ {
title: '商品ID', title: '商品ID',
width: '100px', width: '90px',
dataIndex: 'goods_id', dataIndex: 'goods_id',
sorter: true, sorter: true,
}, },
{ {
title: '商品', title: '商品',
dataIndex: 'goods_name', dataIndex: 'goods_name',
width: '320px', width: '300px',
scopedSlots: { customRender: 'goods_name' }, scopedSlots: { customRender: 'goods_name' },
}, },
{ {
title: '成本价', title: '成本价',
width: '120px', width: '100px',
dataIndex: 'cost_price_min', dataIndex: 'cost_price_min',
scopedSlots: { customRender: 'cost_price_min' }, scopedSlots: { customRender: 'cost_price_min' },
sorter: true, sorter: true,
}, },
{ {
title: '前台价', title: '前台价',
width: '100px', width: '95px',
dataIndex: 'goods_price_min', dataIndex: 'goods_price_min',
scopedSlots: { customRender: 'goods_price_min' }, scopedSlots: { customRender: 'goods_price_min' },
sorter: true, sorter: true,
@ -396,7 +396,7 @@ const columns = [
}, },
{ {
title: '利润率', title: '利润率',
width: '110px', width: '95px',
dataIndex: 'profit_rate', dataIndex: 'profit_rate',
sorter: true, sorter: true,
scopedSlots: { customRender: 'profit_rate' }, scopedSlots: { customRender: 'profit_rate' },
@ -416,14 +416,14 @@ const columns = [
}, },
{ {
title: '商品池', title: '商品池',
width: '100px', width: '95px',
dataIndex: 'is_pool', dataIndex: 'is_pool',
sorter: true, sorter: true,
scopedSlots: { customRender: 'is_pool' }, scopedSlots: { customRender: 'is_pool' },
}, },
{ {
title: '状态', title: '状态',
width: '60px', width: '50px',
dataIndex: 'is_sale', dataIndex: 'is_sale',
scopedSlots: { customRender: 'is_sale' }, scopedSlots: { customRender: 'is_sale' },
}, },
@ -433,6 +433,12 @@ const columns = [
dataIndex: 'create_time', dataIndex: 'create_time',
sorter: true, sorter: true,
}, },
{
title: '最后更新时间',
width: '150px',
dataIndex: 'update_time',
sorter: true,
},
{ {
title: '操作', title: '操作',
dataIndex: 'action', dataIndex: 'action',
@ -733,6 +739,9 @@ export default {
this.rate = '' this.rate = ''
} }
}, },
refreshParentMethod() {
this.handleRefresh(true)
},
// //
async handleEdit(id) { async handleEdit(id) {
// //
@ -1025,7 +1034,7 @@ export default {
}, },
} }
</script> </script>
<style lang="less"> <style lang="less">
.overlayName .ant-tooltip-inner { .overlayName .ant-tooltip-inner {
background-color: rgba(0, 0, 0, 0.7) !important; background-color: rgba(0, 0, 0, 0.7) !important;
width: 350px; width: 350px;
@ -1033,7 +1042,6 @@ export default {
} }
</style> </style>
<style lang="less" scoped> <style lang="less" scoped>
/deep/.ant-card-body { /deep/.ant-card-body {
padding: 22px 18px; padding: 22px 18px;
} }
@ -1055,6 +1063,10 @@ export default {
/deep/.el-picker-panel__sidebar { /deep/.el-picker-panel__sidebar {
width: 85px; width: 85px;
} }
.ant-table .actions a {
padding: 20px 4px;
margin: 0;
}
// tab // tab
.tab-list { .tab-list {
margin-right: 20px; margin-right: 20px;

@ -170,7 +170,12 @@
/> />
<span class="ml-10"></span> <span class="ml-10"></span>
</a-form-item> </a-form-item>
<a-form-item label="成本价" :labelCol="labelCol" :wrapperCol="wrapperCol" extra="成本价仅用于商品页展示"> <a-form-item
label="成本价"
:labelCol="labelCol"
:wrapperCol="wrapperCol"
extra="成本价仅用于商品页展示"
>
<a-input-number :min="0" :precision="2" v-decorator="['cost_price']" /> <a-input-number :min="0" :precision="2" v-decorator="['cost_price']" />
<span class="ml-10"></span> <span class="ml-10"></span>
</a-form-item> </a-form-item>
@ -206,7 +211,6 @@
<span class="ml-10">千克 (Kg)</span> <span class="ml-10">千克 (Kg)</span>
</a-form-item> </a-form-item>
</div> </div>
</div> </div>
<!-- 商品详情 --> <!-- 商品详情 -->
<div class="tab-pane" v-show="tabKey == 2"> <div class="tab-pane" v-show="tabKey == 2">
@ -276,11 +280,8 @@
<span>{{ province.name }}</span> <span>{{ province.name }}</span>
<template v-if="province.citys.length"> <template v-if="province.citys.length">
<span>(</span> <span>(</span>
<span <span class="city-name" v-for="(city, cidx) in province.citys" :key="cidx"
class="city-name" >{{ city.name }}{{ province.citys.length > cidx + 1 ? '、' : '' }}</span
v-for="(city, cidx) in province.citys"
:key="cidx"
>{{ city.name }}{{ province.citys.length > cidx + 1 ? '、' : '' }}</span
> >
<span>)</span> <span>)</span>
</template> </template>
@ -293,7 +294,9 @@
</p> </p>
</template> </template>
</a-table> </a-table>
<a-button icon="environment" v-if="ruleList.length == 0" @click="handleAdd">点击添加销售区域</a-button> <a-button icon="environment" v-if="ruleList.length == 0" @click="handleAdd"
>点击添加销售区域</a-button
>
</a-form-item> </a-form-item>
</div> </div>
@ -439,7 +442,7 @@ import Region from '@/common/model/Region'
const defaultItem = { const defaultItem = {
key: 0, key: 0,
region: [], region: [],
region_text: [] region_text: [],
} }
export default { export default {
name: 'Update', name: 'Update',
@ -451,9 +454,9 @@ export default {
InputNumberGroup, InputNumberGroup,
MultiSpec, MultiSpec,
AreasModal, AreasModal,
Region Region,
}, },
data () { data() {
return { return {
// //
tabKey: 0, tabKey: 0,
@ -484,37 +487,37 @@ export default {
title: '销售区域', title: '销售区域',
dataIndex: 'region_text', dataIndex: 'region_text',
width: '400px', width: '400px',
scopedSlots: { customRender: 'region_text' } scopedSlots: { customRender: 'region_text' },
} },
], ],
// //
citysCount: null citysCount: null,
} }
}, },
beforeDestroy () { beforeDestroy() {
// //
GoodsModel.formData.goods = {} GoodsModel.formData.goods = {}
}, },
methods: { methods: {
showEdit (goodsId) { showEdit(goodsId) {
// ID // ID
this.goodsId = goodsId this.visible = true
this.initData() this.goodsId = goodsId
this.getDataList() this.initData()
// this.getDataList()
Region.getCitysCount().then((count) => { //
this.citysCount = count Region.getCitysCount().then((count) => {
}) this.citysCount = count
this.visible = true })
}, },
// //
handleCancel () { handleCancel() {
this.visible = false this.visible = false
this.form.resetFields() this.form.resetFields()
}, },
// //
initData (goodsId) { initData(goodsId) {
// form // form
this.isLoading = true this.isLoading = true
GoodsModel.getFromData(this.goodsId).then(() => { GoodsModel.getFromData(this.goodsId).then(() => {
@ -535,7 +538,7 @@ export default {
}, },
// //
onForceUpdate (bool = false) { onForceUpdate(bool = false) {
this.$forceUpdate() this.$forceUpdate()
// booltrue $forceUpdate, // booltrue $forceUpdate,
// $forceUpdate, v-decoratorform.getFieldValue // $forceUpdate, v-decoratorform.getFieldValue
@ -546,12 +549,12 @@ export default {
}, },
// tab // tab
handleTabs (key) { handleTabs(key) {
this.tabKey = key this.tabKey = key
}, },
// //
onReloadCategoryList () { onReloadCategoryList() {
this.isLoading = true this.isLoading = true
GoodsModel.getCategoryList().then(() => { GoodsModel.getCategoryList().then(() => {
this.isLoading = false this.isLoading = false
@ -559,7 +562,7 @@ export default {
}, },
// //
onReloadServiceList () { onReloadServiceList() {
this.isLoading = true this.isLoading = true
GoodsModel.getServiceList().then(() => { GoodsModel.getServiceList().then(() => {
this.isLoading = false this.isLoading = false
@ -567,25 +570,25 @@ export default {
}, },
// //
onReloadDeliveryList () { onReloadDeliveryList() {
this.isLoading = true this.isLoading = true
GoodsModel.getDeliveryList().then(() => { GoodsModel.getDeliveryList().then(() => {
this.isLoading = false this.isLoading = false
}) })
}, },
// //
getDataList () { getDataList() {
return GoodsApi.list().then((result) => { return GoodsApi.list().then((result) => {
this.checkList = result.data.list.data this.checkList = result.data.list.data
}) })
}, },
// //
handleSubmit (e) { handleSubmit(e) {
e.preventDefault() e.preventDefault()
// //
const { const {
form: { validateFields }, form: { validateFields },
ruleList ruleList,
} = this } = this
validateFields((errors, values) => { validateFields((errors, values) => {
// tab // tab
@ -609,13 +612,12 @@ export default {
// api // api
values.rules = ruleList values.rules = ruleList
this.onFormSubmit(values) this.onFormSubmit(values)
this.handleCancel()
return true return true
}) })
}, },
// tab // tab
onTargetTabError (errors) { onTargetTabError(errors) {
// tabKey // tabKey
// //
const tabsFieldsMap = [ const tabsFieldsMap = [
@ -628,11 +630,11 @@ export default {
'is_ind_delivery_type', 'is_ind_delivery_type',
'delivery_type', 'delivery_type',
'is_brand', 'is_brand',
'is_in_store' 'is_in_store',
], ],
['spec_type', 'goods_price', 'is_restrict', 'restrict_total', 'restrict_single', 'cost_price'], ['spec_type', 'goods_price', 'is_restrict', 'restrict_total', 'restrict_single', 'cost_price'],
['content'], ['content'],
['alone_grade_equity', 'first_money', 'second_money', 'third_money'] ['alone_grade_equity', 'first_money', 'second_money', 'third_money'],
] ]
const field = Object.keys(errors).shift() const field = Object.keys(errors).shift()
for (const key in tabsFieldsMap) { for (const key in tabsFieldsMap) {
@ -644,17 +646,17 @@ export default {
}, },
// api // api
onFormSubmit (values) { onFormSubmit(values) {
this.isLoading = true this.isLoading = true
this.isBtnLoading = true this.isBtnLoading = true
GoodsApi.edit({ goodsId: this.goodsId, form: values }) GoodsApi.edit({ goodsId: this.goodsId, form: values })
.then((result) => { .then((result) => {
// //
this.$message.success(result.message, 1.5) this.$message.success(result.message, 1.5)
// // this.$emit('refresh')
// setTimeout(() => { setTimeout(() => {
// this.$router.push('./index') this.handleCancel()
// }, 1500) }, 500)
}) })
.catch(() => { .catch(() => {
this.isBtnLoading = false this.isBtnLoading = false
@ -663,7 +665,7 @@ export default {
}, },
// //
handleAdd () { handleAdd() {
const index = this.ruleList.length const index = this.ruleList.length
const newItem = { ...defaultItem, key: index } const newItem = { ...defaultItem, key: index }
// id(id) // id(id)
@ -677,7 +679,7 @@ export default {
}, },
// //
handleEdit (index, item) { handleEdit(index, item) {
// id(id) // id(id)
const excludedCityIds = this.getExcludedCityIds() const excludedCityIds = this.getExcludedCityIds()
// //
@ -685,9 +687,9 @@ export default {
}, },
// //
handleAreaSubmit (result) { handleAreaSubmit(result) {
const { const {
custom: { scene, item } custom: { scene, item },
} = result } = result
item.region = result.selectedCityIds item.region = result.selectedCityIds
item.region_text = result.selectedText item.region_text = result.selectedText
@ -697,7 +699,7 @@ export default {
}, },
// id(id) // id(id)
getExcludedCityIds () { getExcludedCityIds() {
const excludedCityIds = [] const excludedCityIds = []
this.ruleList.forEach((item) => { this.ruleList.forEach((item) => {
item.region.forEach((cityId) => { item.region.forEach((cityId) => {
@ -709,22 +711,22 @@ export default {
}, },
// //
handleAreasModal (scene, index, item, excludedCityIds) { handleAreasModal(scene, index, item, excludedCityIds) {
this.$refs.AreasModal.handle({ scene, index, item }, item.region, excludedCityIds) this.$refs.AreasModal.handle({ scene, index, item }, item.region, excludedCityIds)
}, },
// //
handleDelete (index) { handleDelete(index) {
const app = this const app = this
const modal = this.$confirm({ const modal = this.$confirm({
title: '您确定要删除该记录吗?', title: '您确定要删除该记录吗?',
onOk () { onOk() {
app.ruleList.splice(index, 1) app.ruleList.splice(index, 1)
modal.destroy() modal.destroy()
} },
}) })
} },
} },
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

Loading…
Cancel
Save