feature/0423
parent
13282cb4cd
commit
fb247d34f9
@ -0,0 +1,323 @@ |
||||
<template> |
||||
<div> |
||||
<!-- 加载中 --> |
||||
<a-spin :spinning="isLoading" /> |
||||
<!-- 订单内容 --> |
||||
<div v-if="!isLoading" class="order-content"> |
||||
<!-- 订单信息 --> |
||||
<a-card class="mt-20" :bordered="false"> |
||||
<!-- 订单信息 --> |
||||
<a-descriptions title="订单信息"> |
||||
<a-descriptions-item label="订单号">{{ record.order_no }}</a-descriptions-item> |
||||
<a-descriptions-item label="期望价格">¥{{ record.expect_price }}</a-descriptions-item> |
||||
<a-descriptions-item label="实际价格">¥{{ record.real_price }}</a-descriptions-item> |
||||
<a-descriptions-item label="回收方式">{{ record.recovery_type_text }}</a-descriptions-item> |
||||
<a-descriptions-item label="订单状态"> |
||||
{{ record.order_status_text }} |
||||
</a-descriptions-item> |
||||
<a-descriptions-item label="买家信息"> |
||||
<a-tooltip> |
||||
<template slot="title">会员ID: {{ record.user.user_id }}</template> |
||||
<span class="c-p">{{ record.user.nick_name }}</span> |
||||
</a-tooltip> |
||||
</a-descriptions-item> |
||||
<a-descriptions-item label="买家留言"> |
||||
<span>{{ record.remake ? record.remake : '-' }}</span> |
||||
</a-descriptions-item> |
||||
<a-descriptions-item label="服务时间">{{ record.server_time }}</a-descriptions-item> |
||||
<a-descriptions-item label="服务地址" v-if="record.shipping_address">{{ |
||||
record.shipping_address |
||||
}}</a-descriptions-item> |
||||
<a-descriptions-item label="联系人">{{ record.username }}</a-descriptions-item> |
||||
<a-descriptions-item label="联系电话">{{ record.mobile }}</a-descriptions-item> |
||||
<a-descriptions-item label="微信联系方式">{{ record.wx_account }}</a-descriptions-item> |
||||
<a-descriptions-item label="订单操作" v-if="record.order_status == 10" |
||||
><a v-if="record.order_status == 10" style="margin-right: 8px" @click="handleAcceptance(record)" |
||||
>验收</a |
||||
></a-descriptions-item |
||||
> |
||||
</a-descriptions> |
||||
</a-card> |
||||
|
||||
<!-- 回收信息 --> |
||||
<a-card class="mt-20" :bordered="false"> |
||||
<!-- 订单信息 --> |
||||
<a-descriptions title="回收信息" :column="2"> |
||||
<a-descriptions-item label="回收ID">{{ record.recovery_id }}</a-descriptions-item> |
||||
<a-descriptions-item label="回收名称">{{ record.recovery_name }}</a-descriptions-item> |
||||
<a-descriptions-item label="图片集"> |
||||
<div v-for="item in record.images" :key="item.id"> |
||||
<a title="点击查看原图" :href="item.file.preview_url" target="_blank"> |
||||
<img width="50" height="50" :src="item.file.preview_url" alt="图片" /> |
||||
</a> |
||||
</div> |
||||
</a-descriptions-item> |
||||
</a-descriptions> |
||||
</a-card> |
||||
<!-- 门店信息 --> |
||||
<a-card class="mt-20" :bordered="false" v-if="record.shop"> |
||||
<!-- 门店信息 --> |
||||
<a-descriptions title="门店信息"> |
||||
<a-descriptions-item label="门店名称">{{ record.shop.shop_name }}</a-descriptions-item> |
||||
<a-descriptions-item label="门店ID">{{ record.shop.shop_id }}</a-descriptions-item> |
||||
<a-descriptions-item label="门店联系人">{{ record.shop.linkman }}</a-descriptions-item> |
||||
<a-descriptions-item label="门店电话">{{ record.shop.phone }}</a-descriptions-item> |
||||
<a-descriptions-item label="门店地址">{{ record.shop.full_address }}</a-descriptions-item> |
||||
<a-descriptions-item label="门店营业时间">{{ record.shop.shop_hours }}</a-descriptions-item> |
||||
</a-descriptions> |
||||
</a-card> |
||||
</div> |
||||
<acceptance ref="acceptance" @handleSubmit="handleRefresh" /> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { inArray } from '@/utils/util' |
||||
import * as Api from '@/api/server/recovery' |
||||
import Acceptance from './modules/Acceptance' |
||||
export default { |
||||
name: 'RecoveryOrderDetail', |
||||
components: { Acceptance }, |
||||
data() { |
||||
return { |
||||
// 外部方法 |
||||
inArray, |
||||
// 正在加载 |
||||
isLoading: true, |
||||
// 订单ID |
||||
orderId: null, |
||||
// 订单详情 |
||||
record: {}, |
||||
} |
||||
}, |
||||
created() { |
||||
// 记录订单ID |
||||
this.orderId = this.$route.query.orderId |
||||
// 刷新页面 |
||||
this.handleRefresh() |
||||
}, |
||||
methods: { |
||||
// 刷新页面 |
||||
handleRefresh() { |
||||
// 获取当前记录 |
||||
this.getDetail() |
||||
}, |
||||
// 验收 |
||||
handleAcceptance(item) { |
||||
this.$refs.acceptance.add(item) |
||||
}, |
||||
// 获取当前记录 |
||||
getDetail() { |
||||
const { orderId } = this |
||||
this.isLoading = true |
||||
Api.orderDetail({ orderId }) |
||||
.then((result) => { |
||||
// 当前记录 |
||||
this.record = result.data.detail |
||||
}) |
||||
.finally(() => (this.isLoading = false)) |
||||
}, |
||||
|
||||
// 初始化数据 |
||||
initData() {}, |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang="less" scoped> |
||||
@import '~ant-design-vue/es/style/themes/default.less'; |
||||
// 订单详情页 |
||||
.order-content { |
||||
margin-bottom: 70px; |
||||
|
||||
/deep/.ant-descriptions-item > span { |
||||
vertical-align: middle; |
||||
} |
||||
|
||||
// 分割线 |
||||
.o-divider { |
||||
margin-bottom: 32px; |
||||
} |
||||
|
||||
// 步骤条 |
||||
.order-progress { |
||||
height: 26px; |
||||
line-height: 26px; |
||||
background: #f8f8f8; |
||||
border-radius: 13px; |
||||
font-size: @font-size-base; |
||||
text-align: center; |
||||
position: relative; |
||||
|
||||
&:before, |
||||
&:after { |
||||
content: ''; |
||||
position: absolute; |
||||
z-index: 2; |
||||
left: 0; |
||||
top: 0; |
||||
bottom: 0; |
||||
border-radius: 13px; |
||||
background: @primary-color; |
||||
} |
||||
|
||||
&:after { |
||||
background: ~`colorPalette('@{primary-color}', 3) `; |
||||
z-index: 1; |
||||
} |
||||
|
||||
&.progress-1 { |
||||
&:before { |
||||
width: 0; |
||||
} |
||||
|
||||
&:after { |
||||
width: 20%; |
||||
} |
||||
} |
||||
|
||||
&.progress-2 { |
||||
&:before { |
||||
width: 20%; |
||||
} |
||||
|
||||
&:after { |
||||
width: 40%; |
||||
} |
||||
} |
||||
|
||||
&.progress-3 { |
||||
&:before { |
||||
width: 40%; |
||||
} |
||||
|
||||
&:after { |
||||
width: 60%; |
||||
} |
||||
} |
||||
|
||||
&.progress-4 { |
||||
&:before { |
||||
width: 60%; |
||||
} |
||||
|
||||
&:after { |
||||
width: 80%; |
||||
} |
||||
} |
||||
|
||||
&.progress-5 { |
||||
&:before { |
||||
width: 100%; |
||||
} |
||||
|
||||
&:after { |
||||
width: 100%; |
||||
} |
||||
|
||||
li { |
||||
&:nth-child(5) { |
||||
color: #fff; |
||||
} |
||||
} |
||||
} |
||||
|
||||
li { |
||||
width: 20%; |
||||
float: left; |
||||
border-radius: 13px; |
||||
position: relative; |
||||
z-index: 3; |
||||
} |
||||
|
||||
.tip { |
||||
font-size: 12px; |
||||
padding-top: 10px; |
||||
color: #8c8c8c; |
||||
} |
||||
|
||||
&.progress-1 li:nth-child(1), |
||||
&.progress-2 li:nth-child(1), |
||||
&.progress-3 li:nth-child(1), |
||||
&.progress-4 li:nth-child(1), |
||||
&.progress-5 li:nth-child(1) { |
||||
color: #fff; |
||||
} |
||||
|
||||
&.progress-2 li:nth-child(2), |
||||
&.progress-3 li:nth-child(2), |
||||
&.progress-4 li:nth-child(2), |
||||
&.progress-5 li:nth-child(2) { |
||||
color: #fff; |
||||
} |
||||
|
||||
&.progress-3 li:nth-child(3), |
||||
&.progress-4 li:nth-child(3), |
||||
&.progress-5 li:nth-child(3) { |
||||
color: #fff; |
||||
} |
||||
|
||||
&.progress-4 li:nth-child(4), |
||||
&.progress-5 li:nth-child(4) { |
||||
color: #fff; |
||||
} |
||||
} |
||||
// 商品列表 |
||||
.goods-list { |
||||
/deep/table { |
||||
table-layout: auto; |
||||
} |
||||
.order-price { |
||||
padding: 8px 20px; |
||||
text-align: right; |
||||
} |
||||
} |
||||
// 操作栏 |
||||
.actions { |
||||
.action-item { |
||||
float: left; |
||||
margin-right: 8px; |
||||
} |
||||
} |
||||
} |
||||
|
||||
// 隐藏tab的标签 |
||||
.hide-bar { |
||||
/deep/.ant-tabs-bar { |
||||
display: none; |
||||
} |
||||
} |
||||
|
||||
/deep/.ant-tabs-bar { |
||||
margin-bottom: 20px; |
||||
} |
||||
|
||||
// 已发货的商品列表 |
||||
.deliver-goods-list { |
||||
.goods-item { |
||||
position: relative; |
||||
border-radius: 4px; |
||||
overflow: hidden; |
||||
width: 65px; |
||||
height: 65px; |
||||
float: left; |
||||
margin-right: 15px; |
||||
} |
||||
|
||||
.goods-img { |
||||
display: block; |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
|
||||
.title { |
||||
position: absolute; |
||||
bottom: 0; |
||||
width: 100%; |
||||
text-align: center; |
||||
background: rgba(0, 0, 0, 0.6); |
||||
color: #fff; |
||||
padding: 2px 0; |
||||
font-size: 12px; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,103 @@ |
||||
<template> |
||||
<a-modal |
||||
title="回收验收" |
||||
:width="400" |
||||
:visible="visible" |
||||
:confirmLoading="confirmLoading" |
||||
:maskClosable="false" |
||||
:destroyOnClose="true" |
||||
@ok="handleSubmit" |
||||
@cancel="handleCancel" |
||||
> |
||||
<a-spin :spinning="confirmLoading"> |
||||
<a-form :form="form"> |
||||
<a-form-item label="实际回收价" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||
<a-input-number :min="0" v-model="real_price" /> |
||||
<span class="ml-10">元</span> |
||||
</a-form-item> |
||||
</a-form> |
||||
</a-spin> |
||||
</a-modal> |
||||
</template> |
||||
|
||||
<script> |
||||
import * as Api from '@/api/server/recovery' |
||||
export default { |
||||
components: {}, |
||||
props: { |
||||
// 分类列表 |
||||
}, |
||||
data() { |
||||
return { |
||||
engineerList: [], |
||||
// 对话框标题 |
||||
title: '', |
||||
// 标签布局属性 |
||||
labelCol: { |
||||
span: 7, |
||||
}, |
||||
order_id: '', |
||||
// 输入框布局属性 |
||||
wrapperCol: { |
||||
span: 13, |
||||
}, |
||||
real_price: 0, |
||||
// modal(对话框)是否可见 |
||||
visible: false, |
||||
// modal(对话框)确定按钮 loading |
||||
confirmLoading: false, |
||||
// 当前表单元素 |
||||
form: this.$form.createForm(this), |
||||
} |
||||
}, |
||||
methods: { |
||||
// 显示对话框 |
||||
add(item) { |
||||
// 显示窗口 |
||||
this.order_id = item.order_id |
||||
this.real_price = item.expect_price |
||||
this.visible = true |
||||
}, |
||||
|
||||
// 确认按钮 |
||||
handleSubmit(e) { |
||||
e.preventDefault() |
||||
// 表单验证 |
||||
const { |
||||
form: { validateFields }, |
||||
} = this |
||||
validateFields((errors, values) => { |
||||
// 提交到后端api |
||||
if (!errors) { |
||||
values.order_id = this.order_id |
||||
values.real_price = this.real_price |
||||
this.onFormSubmit(values) |
||||
} |
||||
}) |
||||
}, |
||||
|
||||
// 关闭对话框事件 |
||||
handleCancel() { |
||||
this.visible = false |
||||
this.form.resetFields() |
||||
}, |
||||
|
||||
// 提交到后端api |
||||
onFormSubmit(values) { |
||||
this.confirmLoading = true |
||||
Api.completeOrder({ form: values }) |
||||
.then((result) => { |
||||
// 显示成功 |
||||
this.$message.success(result.message, 1.5) |
||||
// 关闭对话框事件 |
||||
this.handleCancel() |
||||
// 通知父端组件提交完成了 |
||||
this.$emit('handleSubmit', values) |
||||
}) |
||||
.finally((result) => { |
||||
this.confirmLoading = false |
||||
}) |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
@ -1,162 +0,0 @@ |
||||
<template> |
||||
<a-modal |
||||
title="新增回收" |
||||
:width="920" |
||||
:visible="visible" |
||||
:confirmLoading="confirmLoading" |
||||
:maskClosable="false" |
||||
:destroyOnClose="true" |
||||
@ok="handleSubmit" |
||||
@cancel="handleCancel" |
||||
> |
||||
<a-spin :spinning="confirmLoading"> |
||||
<a-form :form="form"> |
||||
<a-form-item label="回收名称" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||
<a-input |
||||
v-decorator="['recovery_name', { rules: [{ required: true, min: 2, message: '请输入至少2个字符' }] }]" |
||||
/> |
||||
</a-form-item> |
||||
<a-form-item label="回收分类" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||
<a-select |
||||
v-decorator="['category_id', { initialValue: 0, rules: [{ required: true, message: '请选择分类' }] }]" |
||||
> |
||||
<a-select-option :value="0">选择分类</a-select-option> |
||||
<a-select-option v-for="(item, index) in categoryList" :key="index" :value="item.category_id">{{ |
||||
item.name |
||||
}}</a-select-option> |
||||
</a-select> |
||||
</a-form-item> |
||||
<a-form-item label="评论数量" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||
<a-input-number |
||||
:min="10" |
||||
:step="10" |
||||
v-decorator="['comment_num', { initialValue: 10, rules: [{ required: true, message: '请输入评论数量' }] }]" |
||||
/> |
||||
</a-form-item> |
||||
<a-form-item label="好评率" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||
<a-input-number |
||||
:min="90" |
||||
:step="1" |
||||
:max="100" |
||||
v-decorator="['comment_rate', { initialValue: 90, rules: [{ required: true, message: '请输入好评率' }] }]" |
||||
/> |
||||
<span class="ml-10">%</span> |
||||
</a-form-item> |
||||
<a-form-item label="销量" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||
<a-input-number |
||||
:min="100" |
||||
v-decorator="['sold', { initialValue: 100, rules: [{ required: true, message: '请输入销量价格' }] }]" |
||||
/> |
||||
<span class="ml-10">个</span> |
||||
</a-form-item> |
||||
<a-form-item label="回收图片" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||
<SelectImage v-decorator="['image_id', { rules: [{ required: true, message: '请上传图片' }] }]" /> |
||||
</a-form-item> |
||||
<a-form-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||
<a-radio-group v-decorator="['status', { initialValue: 1, rules: [{ required: true }] }]"> |
||||
<a-radio :value="1">上架</a-radio> |
||||
<a-radio :value="2">下架</a-radio> |
||||
</a-radio-group> |
||||
</a-form-item> |
||||
<a-form-item label="排序" :labelCol="labelCol" :wrapperCol="wrapperCol" extra="数字越小越靠前"> |
||||
<a-input-number |
||||
:min="0" |
||||
v-decorator="['sort', { initialValue: 100, rules: [{ required: true, message: '请输入至少1个数字' }] }]" |
||||
/> |
||||
</a-form-item> |
||||
<a-form-item label="详情" :labelCol="labelCol" :wrapperCol="{ span: 16 }"> |
||||
<Ueditor v-decorator="['content', { rules: [{ required: true, message: '详情不能为空' }] }]" /> |
||||
</a-form-item> |
||||
</a-form> |
||||
</a-spin> |
||||
</a-modal> |
||||
</template> |
||||
|
||||
<script> |
||||
import * as Api from '@/api/server/recovery' |
||||
import { SelectImage, Ueditor } from '@/components' |
||||
export default { |
||||
components: { |
||||
SelectImage, |
||||
Ueditor, |
||||
}, |
||||
props: { |
||||
// 分类列表 |
||||
}, |
||||
data() { |
||||
return { |
||||
categoryList: [], |
||||
// 对话框标题 |
||||
title: '', |
||||
// 标签布局属性 |
||||
labelCol: { |
||||
span: 7, |
||||
}, |
||||
// 输入框布局属性 |
||||
wrapperCol: { |
||||
span: 13, |
||||
}, |
||||
// modal(对话框)是否可见 |
||||
visible: false, |
||||
// modal(对话框)确定按钮 loading |
||||
confirmLoading: false, |
||||
// 当前表单元素 |
||||
form: this.$form.createForm(this), |
||||
} |
||||
}, |
||||
methods: { |
||||
// 显示对话框 |
||||
add() { |
||||
// 显示窗口 |
||||
this.getCategoryList() |
||||
this.visible = true |
||||
}, |
||||
// 获取分类列表 |
||||
getCategoryList() { |
||||
this.isLoading = true |
||||
Api.categoryList() |
||||
.then((result) => { |
||||
this.categoryList = result.data.list |
||||
}) |
||||
.finally(() => (this.isLoading = false)) |
||||
}, |
||||
// 确认按钮 |
||||
handleSubmit(e) { |
||||
e.preventDefault() |
||||
// 表单验证 |
||||
const { |
||||
form: { validateFields }, |
||||
} = this |
||||
validateFields((errors, values) => { |
||||
// 提交到后端api |
||||
if (!errors) { |
||||
this.onFormSubmit(values) |
||||
} |
||||
}) |
||||
}, |
||||
|
||||
// 关闭对话框事件 |
||||
handleCancel() { |
||||
this.visible = false |
||||
this.form.resetFields() |
||||
}, |
||||
|
||||
// 提交到后端api |
||||
onFormSubmit(values) { |
||||
this.confirmLoading = true |
||||
Api.addRecovery({ form: values }) |
||||
.then((result) => { |
||||
// 显示成功 |
||||
this.$message.success(result.message, 1.5) |
||||
// 关闭对话框事件 |
||||
this.handleCancel() |
||||
// 通知父端组件提交完成了 |
||||
this.$emit('handleSubmit', values) |
||||
}) |
||||
.finally((result) => { |
||||
this.confirmLoading = false |
||||
}) |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
@ -1,190 +0,0 @@ |
||||
<template> |
||||
<a-modal |
||||
title="编辑回收" |
||||
:width="920" |
||||
:visible="visible" |
||||
:confirmLoading="confirmLoading" |
||||
:maskClosable="false" |
||||
:destroyOnClose="true" |
||||
@ok="handleSubmit" |
||||
@cancel="handleCancel" |
||||
> |
||||
<a-spin :spinning="confirmLoading"> |
||||
<a-form :form="form"> |
||||
<a-form-item label="回收名称" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||
<a-input |
||||
v-decorator="['recovery_name', { rules: [{ required: true, min: 2, message: '请输入至少2个字符' }] }]" |
||||
/> |
||||
</a-form-item> |
||||
<a-form-item label="回收分类" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||
<a-select |
||||
v-decorator="['category_id', { initialValue: 0, rules: [{ required: true, message: '请选择分类' }] }]" |
||||
> |
||||
<a-select-option :value="0">选择分类</a-select-option> |
||||
<a-select-option v-for="(item, index) in categoryList" :key="index" :value="item.category_id">{{ |
||||
item.name |
||||
}}</a-select-option> |
||||
</a-select> |
||||
</a-form-item> |
||||
<a-form-item label="评论数量" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||
<a-input-number |
||||
:min="10" |
||||
:step="10" |
||||
v-decorator="['comment_num', { initialValue: 10, rules: [{ required: true, message: '请输入评论数量' }] }]" |
||||
/> |
||||
</a-form-item> |
||||
<a-form-item label="好评率" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||
<a-input-number |
||||
:min="90" |
||||
:step="1" |
||||
:max="100" |
||||
v-decorator="['comment_rate', { initialValue: 90, rules: [{ required: true, message: '请输入好评率' }] }]" |
||||
/> |
||||
<span class="ml-10">%</span> |
||||
</a-form-item> |
||||
<a-form-item label="销量" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||
<a-input-number |
||||
:min="10" |
||||
v-decorator="['sold', { initialValue: 10, rules: [{ required: true, message: '请输入销量价格' }] }]" |
||||
/> |
||||
<span class="ml-10">个</span> |
||||
</a-form-item> |
||||
<a-form-item label="图片" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||
<SelectImage :defaultList="record.image ? [record.image] : []" v-decorator="['image_id']" /> |
||||
</a-form-item> |
||||
<a-form-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
||||
<a-radio-group v-decorator="['status', { initialValue: 1, rules: [{ required: true }] }]"> |
||||
<a-radio :value="1">上架</a-radio> |
||||
<a-radio :value="2">下架</a-radio> |
||||
</a-radio-group> |
||||
</a-form-item> |
||||
<a-form-item label="排序" :labelCol="labelCol" :wrapperCol="wrapperCol" extra="数字越小越靠前"> |
||||
<a-input-number |
||||
:min="0" |
||||
v-decorator="['sort', { initialValue: 100, rules: [{ required: true, message: '请输入至少1个数字' }] }]" |
||||
/> |
||||
</a-form-item> |
||||
<a-form-item label="详情" :labelCol="labelCol" :wrapperCol="{ span: 16 }"> |
||||
<Ueditor v-decorator="['content', { rules: [{ required: true, message: '详情不能为空' }] }]" /> |
||||
</a-form-item> |
||||
</a-form> |
||||
</a-spin> |
||||
</a-modal> |
||||
</template> |
||||
|
||||
<script> |
||||
import * as Api from '@/api/server/recovery' |
||||
import { SelectImage, Ueditor } from '@/components' |
||||
export default { |
||||
components: { |
||||
SelectImage, |
||||
Ueditor, |
||||
}, |
||||
props: { |
||||
// 分类列表 |
||||
}, |
||||
data() { |
||||
return { |
||||
categoryList: [], |
||||
// 对话框标题 |
||||
title: '', |
||||
// 标签布局属性 |
||||
labelCol: { |
||||
span: 7, |
||||
}, |
||||
// 输入框布局属性 |
||||
wrapperCol: { |
||||
span: 13, |
||||
}, |
||||
// modal(对话框)是否可见 |
||||
visible: false, |
||||
// modal(对话框)确定按钮 loading |
||||
confirmLoading: false, |
||||
// 当前表单元素 |
||||
form: this.$form.createForm(this), |
||||
// 当前记录 |
||||
record: {}, |
||||
} |
||||
}, |
||||
methods: { |
||||
// 显示对话框 |
||||
edit(record) { |
||||
this.getCategoryList() |
||||
// 显示窗口 |
||||
this.visible = true |
||||
// 当前分类记录 |
||||
this.record = record |
||||
// 设置默认值 |
||||
this.setFieldsValue() |
||||
}, |
||||
// 获取分类列表 |
||||
getCategoryList() { |
||||
this.isLoading = true |
||||
Api.categoryList() |
||||
.then((result) => { |
||||
this.categoryList = result.data.list |
||||
}) |
||||
.finally(() => (this.isLoading = false)) |
||||
}, |
||||
// 设置默认值 |
||||
setFieldsValue() { |
||||
const { |
||||
form: { setFieldsValue }, |
||||
} = this |
||||
// 设置表单内容 |
||||
this.$nextTick(() => { |
||||
setFieldsValue( |
||||
_.pick(this.record, [ |
||||
'recovery_name', |
||||
'image_id', |
||||
'category_id', |
||||
'status', |
||||
'sold', |
||||
'comment_rate', |
||||
'sort', |
||||
'comment_num', |
||||
'content', |
||||
]) |
||||
) |
||||
}) |
||||
}, |
||||
// 确认按钮 |
||||
handleSubmit(e) { |
||||
e.preventDefault() |
||||
// 表单验证 |
||||
const { |
||||
form: { validateFields }, |
||||
} = this |
||||
validateFields((errors, values) => { |
||||
// 提交到后端api |
||||
if (!errors) { |
||||
this.onFormSubmit(values) |
||||
} |
||||
}) |
||||
}, |
||||
|
||||
// 关闭对话框事件 |
||||
handleCancel() { |
||||
this.visible = false |
||||
this.form.resetFields() |
||||
}, |
||||
|
||||
// 提交到后端api |
||||
onFormSubmit(values) { |
||||
this.confirmLoading = true |
||||
Api.editRecovery({ recoveryId: this.record['recovery_id'], form: values }) |
||||
.then((result) => { |
||||
// 显示成功 |
||||
this.$message.success(result.message, 1.5) |
||||
// 关闭对话框事件 |
||||
this.handleCancel() |
||||
// 通知父端组件提交完成了 |
||||
this.$emit('handleSubmit', values) |
||||
}) |
||||
.finally((result) => { |
||||
this.confirmLoading = false |
||||
}) |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
Loading…
Reference in new issue