This commit is contained in:
faiz 2024-04-01 18:55:28 +08:00
parent 3bbc702439
commit 50fd4304d1
5 changed files with 284 additions and 158 deletions

View File

@ -15,7 +15,12 @@ import request from './request'
export function orderListApi(data) {
return request.get('store/order/lst', data)
}
/**
* @description 开启退款
*/
export function openRefundApi(id) {
return request.get(`store/order/open_refund/${id}`)
}
/**
* @description 订单 -- 表头
*/
@ -163,7 +168,7 @@ export function orderCancellationApi(code) {
/**
* @description 订单核销
*/
export function goCancellationApi(id, data) {
export function goCancellationApi(id, data) {
return request.post(`store/order/verify/${id}`, data)
}
/**
@ -241,7 +246,7 @@ export function deliveryRecordDetailApi(id, data) {
/**
* @description 批量发货记录 -- 导出
*/
export function deliveryRecordImportApi(id,data) {
export function deliveryRecordImportApi(id, data) {
return request.get(`store/import/excel/${id}`, data)
}
/**
@ -277,43 +282,43 @@ export function getEleTempData() {
/**
* @description 发送货 -- 门店列表
*/
export function getStoreLst() {
export function getStoreLst() {
return request.get(`delivery/station/select`)
}
/**
* @description 发送货 -- 门店列表
*/
export function getDeliveryStoreLst() {
export function getDeliveryStoreLst() {
return request.get(`delivery/station/options`)
}
/**
* @description 同城配送 -- 订单列表
*/
export function deliveryOrderLst(data) {
export function deliveryOrderLst(data) {
return request.get(`delivery/order/lst`, data)
}
/**
* @description 同城订单 -- 取消
*/
export function deliveryOrderCancle(id) {
export function deliveryOrderCancle(id) {
return request.get(`delivery/order/cancel/${id}/form`)
}
/**
* @description 同城配送 -- 充值记录列表
*/
export function rechargeLst(data) {
export function rechargeLst(data) {
return request.get(`delivery/station/payLst`, data)
}
/**
* @description 同城配送 -- 充值
*/
export function rechargeInfoApi(data) {
export function rechargeInfoApi(data) {
return request.get(`delivery/station/code`, data)
}
/**
* @description 订单 -- 导出
*/
export function storeOrderApi(data) {
export function storeOrderApi(data) {
return request.get(`delivery/station/code`, data)
}
/**

View File

@ -223,6 +223,7 @@
<el-button v-if="scope.row.paid === 0 && scope.row.is_del===0 && scope.row.activity_type != 2" type="text" size="small" @click="edit(scope.row.order_id)">编辑</el-button>
<el-button v-if="(scope.row.order_type == 0 || scope.row.order_type == 2) && scope.row.status === 0 && scope.row.paid === 1" type="text" size="small" @click="send(scope.row,scope.row.order_id)">发送货</el-button>
<el-button v-if="scope.row.is_del !== 0" type="text" size="small" @click.native="handleDelete(scope.row, scope.$index)">删除</el-button>
<el-button type="text" size="small" @click="onOrderOpenRefund(scope.row.order_id)">开启退款</el-button>
<el-button v-if="scope.row.order_type == 1 && scope.row.status === 0 && scope.row.paid === 1" type="text" size="small" @click.native="orderCancellation(scope.row.verify_code)">去核销</el-button>
</template>
</el-table-column>
@ -482,7 +483,8 @@ import {
expressLst,
exprTempsLst,
getEleTempData,
getDeliveryStoreLst
getDeliveryStoreLst,
openRefundApi
} from '@/api/order'
import createWorkBook from '@/utils/newToExcel.js'
import { serveInfoApi } from '@/api/setting'
@ -701,6 +703,35 @@ export default {
this.getStoreList()
},
methods: {
// 退
onOrderOpenRefund(id) {
this.$confirm('此操作将开启退款, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
openRefundApi(id).then((res)=>{
if(res.status == '200'){
this.$message({
type: 'success',
message: '开启退款!'
});
}else{
this.$message({
type: 'error',
message: res.message
});
}
console.log(res, "res");
})
// this.$message({
// type: 'success',
// message: '退!'
// });
}).catch(() => {
});
},
/** 重置 */
searchReset() {
this.timeVal = []

View File

@ -280,7 +280,7 @@
</el-col>
</el-row>
<!-- 资质详情 -->
<el-row v-show="currentTab == '2'" :gutter="24">
<el-row v-if="currentTab == '2'" :gutter="24">
<el-col :span="24">
<el-form-item label="品牌商标名称:">
<el-input
@ -302,111 +302,6 @@
</el-radio-group>
</el-form-item>
</el-col>
<div v-if="formValidate.qualification.commodity_type==1" style="margin-left: 40px;">
<div>进口企业/境内总代企业资质</div>
<el-col :span="24">
<el-form-item label="企业名称:" prop="qualification.import_name">
<el-input
v-model="formValidate.qualification.import_name"
placeholder="请输入进口/企业境内总代企业名称"
size="small"
class="pageWidth"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="营业执照:" prop="qualification.importBusinessList">
<el-upload
class="upload-demo"
:action="filePdf"
:headers="pdfHeaders"
:on-remove="importHandleRemoves"
:on-success="importHandleSuccess"
:before-upload="beforeUpload"
multiple
:limit="3"
:file-list="importBusinessList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
</el-upload>
</el-form-item>
</el-col>
<div>品牌方资质</div>
<el-col :span="24">
<el-form-item label="销售授权及其他:" prop="qualification.importAuthorizedList">
<el-upload
class="upload-demo"
:action="filePdf"
:headers="pdfHeaders"
:on-remove="importAuthorizedRemoves"
:on-success="importAuthorizedSuccess"
:before-upload="beforeUpload"
multiple
:limit="3"
:file-list="importAuthorizedList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
</el-upload>
</el-form-item>
</el-col>
<div>产品资质</div>
<el-col :span="24">
<el-form-item label="海关检验检疫证书及报关单:" prop="qualification.customsList">
<el-upload
class="upload-demo"
:action="filePdf"
:headers="pdfHeaders"
:on-remove="customsRemoves"
:on-success="customsSuccess"
:before-upload="beforeUpload"
multiple
:limit="3"
:file-list="customsList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
</el-upload>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="产品外包装实物图:" prop="qualification.packingList">
<el-upload
class="upload-demo"
:action="filePdf"
:headers="pdfHeaders"
:on-remove="packingRemoves"
:on-success="packingSuccess"
:before-upload="beforeUpload"
multiple
:limit="3"
:file-list="packingList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
</el-upload>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="其他资质:" prop="qualification.importOtherList">
<el-upload
class="upload-demo"
:action="filePdf"
:headers="pdfHeaders"
:on-remove="importOtherRemoves"
:on-success="importOtherSuccess"
:before-upload="beforeUpload"
multiple
:limit="3"
:file-list="importOtherList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
</el-upload>
</el-form-item>
</el-col>
</div>
<div v-if="formValidate.qualification.commodity_type==0" style="margin-left: 40px;">
<div>生产企业资质</div>
<el-col :span="24">
@ -428,9 +323,8 @@
:on-remove="handleRemoves"
:on-success="handleSuccess"
:before-upload="beforeUpload"
multiple
:limit="3"
:file-list="businessList"
:file-list="formValidate.qualification.businessList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
@ -446,9 +340,8 @@
:on-remove="licenRemoves"
:on-success="licenSuccess"
:before-upload="beforeUpload"
multiple
:limit="3"
:file-list="licenceList"
:file-list="formValidate.qualification.licenceList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
@ -465,9 +358,8 @@
:on-remove="trademarkRemoves"
:on-success="trademarkSuccess"
:before-upload="beforeUpload"
multiple
:limit="3"
:file-list="trademarkList"
:file-list="formValidate.qualification.trademarkList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
@ -483,9 +375,8 @@
:on-remove="authorizedRemoves"
:on-success="authorizedSuccess"
:before-upload="beforeUpload"
multiple
:limit="3"
:file-list="authorizedList"
:file-list="formValidate.qualification.authorizedList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
@ -502,9 +393,8 @@
:on-remove="commodityRemoves"
:on-success="commoditySuccess"
:before-upload="beforeUpload"
multiple
:limit="3"
:file-list="commodityList"
:file-list="formValidate.qualification.commodityList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
@ -520,9 +410,108 @@
:on-remove="otherRemoves"
:on-success="otherSuccess"
:before-upload="beforeUpload"
multiple
:limit="3"
:file-list="otherList"
:file-list="formValidate.qualification.otherList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
</el-upload>
</el-form-item>
</el-col>
</div>
<div v-if="formValidate.qualification.commodity_type==1" style="margin-left: 40px;">
<div>进口企业/境内总代企业资质</div>
<el-col :span="24">
<el-form-item label="企业名称:" prop="qualification.import_name">
<el-input
v-model="formValidate.qualification.import_name"
placeholder="请输入进口/企业境内总代企业名称"
size="small"
class="pageWidth"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="营业执照:" prop="qualification.importBusinessList">
<el-upload
class="upload-demo"
:action="filePdf"
:headers="pdfHeaders"
:on-remove="importHandleRemoves"
:on-success="importHandleSuccess"
:before-upload="beforeUpload"
:file-list="formValidate.qualification.importBusinessList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
</el-upload>
</el-form-item>
</el-col>
<div>品牌方资质</div>
<el-col :span="24">
<el-form-item label="销售授权及其他:" prop="qualification.importAuthorizedList">
<el-upload
class="upload-demo"
:action="filePdf"
:headers="pdfHeaders"
:on-remove="importAuthorizedRemoves"
:on-success="importAuthorizedSuccess"
:before-upload="beforeUpload"
:file-list="formValidate.qualification.importAuthorizedList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
</el-upload>
</el-form-item>
</el-col>
<div>产品资质</div>
<el-col :span="24">
<el-form-item label="海关检验检疫证书及报关单:" prop="qualification.customsList">
<el-upload
class="upload-demo"
:action="filePdf"
:headers="pdfHeaders"
:on-remove="customsRemoves"
:on-success="customsSuccess"
:before-upload="beforeUpload"
:file-list="formValidate.qualification.customsList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
</el-upload>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="产品外包装实物图:" prop="qualification.packingList">
<el-upload
class="upload-demo"
:action="filePdf"
:headers="pdfHeaders"
:on-remove="packingRemoves"
:on-success="packingSuccess"
:before-upload="beforeUpload"
:file-list="formValidate.qualification.packingList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
</el-upload>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="其他资质:" prop="qualification.importOtherList">
<el-upload
class="upload-demo"
:action="filePdf"
:headers="pdfHeaders"
:on-remove="importOtherRemoves"
:on-success="importOtherSuccess"
:before-upload="beforeUpload"
:file-list="formValidate.qualification.importOtherList"
>
<el-button size="small" type="primary">点击上传</el-button>
<!-- <div slot="tip" class="el-upload__tip">只能上传图片和PDF文件</div> -->
@ -2013,6 +2002,11 @@ export default {
type: 'array'
}
],
'qualification.production_name': [
{
required: true, message: '请输入生产企业名称', trigger: 'blur'
}
],
'qualification.businessList': [
{
required: true, message: '请上传营业执照图片或者PDF', trigger: 'blur'
@ -2274,6 +2268,23 @@ export default {
this.setTagsViewTitle()
this.getInfo()
} else {
this.formValidate.qualification = {
production_name: '',
businessList: [],
licenceList: [],
trademarkList: [],
authorizedList: [],
commodityList: [],
otherList: [],
importBusinessList: [],
importAuthorizedList: [],
customsList: [],
packingList: [],
importOtherList: [],
commodity_type: 0,
brands_name: '',
import_name: ''
}
this.getSpecsLst(this.formValidate.cate_id)
this.productCon()
if (this.deduction_set == -1) this.formValidate.integral_rate = -1
@ -2293,6 +2304,7 @@ export default {
},
methods: {
handlCommodity(name) {
console.log(this.importBusinessList);
this.$refs[name].clearValidate()
},
beforeUpload(file) {
@ -2302,9 +2314,10 @@ export default {
}
},
handleRemoves(file) {
if (file.response) {
console.log(file);
if (file.url) {
this.formValidate.qualification.businessList = this.formValidate.qualification.businessList.filter(res => {
return res.url !== file.response.data.src
return res.url !== file.url
})
}
},
@ -2315,9 +2328,9 @@ export default {
console.log(this.formValidate.qualification.businessList)
},
licenRemoves(file) {
if (file.response) {
if (file.url) {
this.formValidate.qualification.licenceList = this.formValidate.qualification.licenceList.filter(res => {
return res.url !== file.response.data.src
return res.url !== file.url
})
}
},
@ -2327,9 +2340,9 @@ export default {
}
},
trademarkRemoves(file) {
if (file.response) {
if (file.url) {
this.formValidate.qualification.trademarkList = this.formValidate.qualification.trademarkList.filter(res => {
return res.url !== file.response.data.src
return res.url !== file.url
})
}
},
@ -2339,9 +2352,9 @@ export default {
}
},
authorizedRemoves(file) {
if (file.response) {
if (file.url) {
this.formValidate.qualification.authorizedList = this.formValidate.qualification.authorizedList.filter(res => {
return res.url !== file.response.data.src
return res.url !== file.url
})
}
},
@ -2351,9 +2364,9 @@ export default {
}
},
commodityRemoves(file) {
if (file.response) {
if (file.url) {
this.formValidate.qualification.commodityList = this.formValidate.qualification.commodityList.filter(res => {
return res.url !== file.response.data.src
return res.url !== file.url
})
}
},
@ -2363,9 +2376,9 @@ export default {
}
},
otherRemoves(file) {
if (file.response) {
if (file.url) {
this.formValidate.qualification.otherList = this.formValidate.qualification.otherList.filter(res => {
return res.url !== file.response.data.src
return res.url !== file.url
})
}
},
@ -2375,21 +2388,24 @@ export default {
}
},
importHandleRemoves(file) {
if (file.response) {
console.log(file);
if (file.url) {
this.formValidate.qualification.importBusinessList = this.formValidate.qualification.importBusinessList.filter(res => {
return res.url !== file.response.data.src
return res.url !== file.url
})
}
},
importHandleSuccess(res, file) {
console.log(file);
console.log(res);
if (res.status === 200) {
this.formValidate.qualification.importBusinessList.push({ name: file.name, url: res.data.src })
}
},
importAuthorizedRemoves(file) {
if (file.response) {
if (file.url) {
this.formValidate.qualification.importAuthorizedList = this.formValidate.qualification.importAuthorizedList.filter(res => {
return res.url !== file.response.data.src
return res.url !== file.url
})
}
},
@ -2404,9 +2420,9 @@ export default {
}
},
customsRemoves(file) {
if (file.response) {
if (file.url) {
this.formValidate.qualification.customsList = this.formValidate.qualification.customsList.filter(res => {
return res.url !== file.response.data.src
return res.url !== file.url
})
}
},
@ -2416,9 +2432,9 @@ export default {
}
},
packingRemoves(file) {
if (file.response) {
if (file.url) {
this.formValidate.qualification.packingList = this.formValidate.qualification.packingList.filter(res => {
return res.url !== file.response.data.src
return res.url !== file.url
})
}
},
@ -2428,9 +2444,9 @@ export default {
}
},
importOtherRemoves(file) {
if (file.response) {
if (file.url) {
this.formValidate.qualification.importOtherList = this.formValidate.qualification.importOtherList.filter(res => {
return res.url !== file.response.data.src
return res.url !== file.url
})
}
},
@ -3378,7 +3394,8 @@ export default {
: [],
type: info.type || 0,
extend: info.extend || [],
svip_price_type: info.svip_price_type || 0
svip_price_type: info.svip_price_type || 0,
qualification:info.qualification
};
if (info.svip_price_type != 0 && info.mer_svip_status)
this.attrVal = {
@ -3487,6 +3504,23 @@ export default {
this.$router.push({ path: this.roterPre + "/product/list" });
this.$refs[name].resetFields();
this.formValidate.slider_image = [];
this.formValidate.qualification = {
production_name: '',
businessList: [],
licenceList: [],
trademarkList: [],
authorizedList: [],
commodityList: [],
otherList: [],
importBusinessList: [],
importAuthorizedList: [],
customsList: [],
packingList: [],
importOtherList: [],
commodity_type: 0,
brands_name: '',
import_name: ''
}
this.loading = false;
})
.catch(res => {
@ -3905,4 +3939,7 @@ export default {
margin-left: 120px !important;
width: auto !important;
}
::v-deep .el-upload-list__item {
transition: none !important;
}
</style>

View File

@ -87,6 +87,22 @@
<el-option v-for="item in productTypeList" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="时间选择:" prop="create_time">
<el-date-picker
v-model="timeVal"
value-format="yyyy/MM/dd"
format="yyyy/MM/dd"
type="daterange"
placement="bottom-end"
placeholder="自定义时间"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 280px;"
:picker-options="pickerOptions"
@change="onchangeTime"
clearable
/>
</el-form-item>
<el-form-item>
<el-button type="primary" size="small" @click="getList(1)">搜索</el-button>
<el-button size="small" @click="searchReset()">重置</el-button>
@ -176,6 +192,7 @@
<el-table-column prop="price" label="商品售价" min-width="80" />
<el-table-column prop="sales" label="销量" min-width="70" />
<el-table-column prop="stock" label="库存" min-width="70" />
<el-table-column prop="storeCategory.cate_name" label="商品类型" min-width="70" />
<el-table-column prop="sort" align="center" label="排序" min-width="80">
<template slot-scope="scope">
<span v-if="scope.row.index === tabClickIndex">
@ -194,6 +211,7 @@
<span>{{ scope.row.us_status | productStatusFilter }}</span>
</template>
</el-table-column>
<el-table-column prop="create_time" label="创建时间" min-width="120" />
<el-table-column label="操作" min-width="150" fixed="right">
<template slot-scope="scope">
<el-button type="text" size="small" class="mr10" @click="onDetails(scope.row.product_id)">详情</el-button>
@ -548,6 +566,7 @@ import taoBao from './taoBao'
import editAttr from './editAttr'
import proDetail from './proDetails.vue'
import previewBox from '@/components/previewBox/index'
import timeOptions from '@/utils/timeOptions';
export default {
name: 'ProductList',
components: { taoBao, previewBox, editAttr, proDetail },
@ -556,11 +575,13 @@ export default {
props: {
emitPath: false
},
pickerOptions: timeOptions,
roterPre: roterPre,
drawer: false,
headeNum: [],
labelList: [],
tempList: [],
timeVal: [],
listLoading: true,
tableData: {
data: [],
@ -569,6 +590,7 @@ export default {
tableFrom: {
page: 1,
limit: 20,
date:'',
mer_cate_id: '',
cate_id: '',
keyword: '',
@ -653,8 +675,16 @@ export default {
this.productCon()
},
methods: {
//
onchangeTime(e) {
this.timeVal = e
this.tableFrom.date = e ? this.timeVal.join('-') : ''
this.getList(1)
},
/** 重置 */
searchReset() {
this.timeVal = []
this.tableFrom.date = ""
this.$refs.searchForm.resetFields()
this.getList(1)
},

View File

@ -273,6 +273,16 @@
</ul>
</div>
</el-tab-pane>
<!-- <el-tab-pane label="审核回复栏" name="audit">
<div class="section">
<ul class="list">
<li class="item">
<div class="item-title">审核拒绝原因</div>
<div class="value">{{productData.refusal || '-'}}</div>
</li>
</ul>
</div>
</el-tab-pane> -->
<el-tab-pane label="其它信息" name="others">
<div class="section">
<ul class="list">
@ -303,6 +313,19 @@
</li>
</ul>
</div>
<div class="section">
<ul class="list">
<!-- <li class="item item100">
<div class="item-title">审核图</div>
<img :src="productData.image" style="width:40px;height:40px;margin-right:12px;"/>
</li> -->
<li class="item item100">
<div class="item-title">审核图</div>
<el-image v-for="(pic,idx) in productData.slider_image" :key="idx" :src="pic" style="width:40px;height:40px;margin-right:12px;" :preview-src-list="productData.slider_image" />
<!-- <img v-for="(pic,idx) in productData.slider_image" :key="idx" :src="pic" style="width:40px;height:40px;margin-right:12px;"/> -->
</li>
</ul>
</div>
<div class="section">
<ul style="padding: 0;margin-top: 50px;">
<li class="item item100">