feat: 添加回收订单 修改其他
This commit is contained in:
parent
7c0b7f8a66
commit
9cb9ce5cfb
@ -5,21 +5,34 @@
|
|||||||
"ComponentPublicInstance": true,
|
"ComponentPublicInstance": true,
|
||||||
"ComputedRef": true,
|
"ComputedRef": true,
|
||||||
"Debounce": true,
|
"Debounce": true,
|
||||||
|
"DirectiveBinding": true,
|
||||||
"EMAIL_REGEXP": true,
|
"EMAIL_REGEXP": true,
|
||||||
"EffectScope": true,
|
"EffectScope": true,
|
||||||
|
"ElMessage": true,
|
||||||
|
"ExtractDefaultPropTypes": true,
|
||||||
|
"ExtractPropTypes": true,
|
||||||
|
"ExtractPublicPropTypes": true,
|
||||||
"InjectionKey": true,
|
"InjectionKey": true,
|
||||||
"MOBILE_REGEXP": true,
|
"MOBILE_REGEXP": true,
|
||||||
|
"MaybeRef": true,
|
||||||
|
"MaybeRefOrGetter": true,
|
||||||
"PASSWORD_REGEXP": true,
|
"PASSWORD_REGEXP": true,
|
||||||
"PropType": true,
|
"PropType": true,
|
||||||
"Ref": true,
|
"Ref": true,
|
||||||
|
"STAR_MOBILE_REGEXP": true,
|
||||||
"UNIFIED_SOCIAL_CREDIT_CODE": true,
|
"UNIFIED_SOCIAL_CREDIT_CODE": true,
|
||||||
"USER_NAME_REGEXP": true,
|
"USER_NAME_REGEXP": true,
|
||||||
"VNode": true,
|
"VNode": true,
|
||||||
|
"WritableComputedRef": true,
|
||||||
"addClass": true,
|
"addClass": true,
|
||||||
|
"addDomain": true,
|
||||||
"byteLength": true,
|
"byteLength": true,
|
||||||
|
"checkFile": true,
|
||||||
|
"checkIDCard": true,
|
||||||
"cleanArray": true,
|
"cleanArray": true,
|
||||||
"computed": true,
|
"computed": true,
|
||||||
"configDefInfo": true,
|
"configDefInfo": true,
|
||||||
|
"countComboPrice": true,
|
||||||
"createApp": true,
|
"createApp": true,
|
||||||
"createUniqueString": true,
|
"createUniqueString": true,
|
||||||
"customRef": true,
|
"customRef": true,
|
||||||
@ -29,28 +42,32 @@
|
|||||||
"defineComponent": true,
|
"defineComponent": true,
|
||||||
"effectScope": true,
|
"effectScope": true,
|
||||||
"encrypt": true,
|
"encrypt": true,
|
||||||
"filterAsyncRoutes": true,
|
"excelRequest": true,
|
||||||
"flatten": true,
|
"flatten": true,
|
||||||
"formatConfigInfo": true,
|
"formatConfigInfo": true,
|
||||||
"formatHtml": true,
|
"formatHtml": true,
|
||||||
"formatTime": true,
|
|
||||||
"formatPrice": true,
|
"formatPrice": true,
|
||||||
|
"formatTime": true,
|
||||||
|
"generateTitle": true,
|
||||||
"getAreaNameList": true,
|
"getAreaNameList": true,
|
||||||
"getCurrentInstance": true,
|
"getCurrentInstance": true,
|
||||||
"getCurrentScope": true,
|
"getCurrentScope": true,
|
||||||
|
"getDateTimeRange": true,
|
||||||
"getLevels": true,
|
"getLevels": true,
|
||||||
|
"getParseTime": true,
|
||||||
"getQueryObject": true,
|
"getQueryObject": true,
|
||||||
"getTime": true,
|
"getTime": true,
|
||||||
"getToken": true,
|
"getToken": true,
|
||||||
"getUUID": true,
|
"getUUID": true,
|
||||||
"h": true,
|
"h": true,
|
||||||
"handleArr": true,
|
"handleArr": true,
|
||||||
|
"handleOrderItems": true,
|
||||||
"hasClass": true,
|
"hasClass": true,
|
||||||
"html2Text": true,
|
"html2Text": true,
|
||||||
"idList": true,
|
"idList": true,
|
||||||
"inject": true,
|
"inject": true,
|
||||||
"isAuth": true,
|
|
||||||
"isArray": true,
|
"isArray": true,
|
||||||
|
"isAuth": true,
|
||||||
"isCreditCode": true,
|
"isCreditCode": true,
|
||||||
"isEmail": true,
|
"isEmail": true,
|
||||||
"isExternal": true,
|
"isExternal": true,
|
||||||
@ -61,9 +78,9 @@
|
|||||||
"isReactive": true,
|
"isReactive": true,
|
||||||
"isReadonly": true,
|
"isReadonly": true,
|
||||||
"isRef": true,
|
"isRef": true,
|
||||||
|
"isStarMobile": true,
|
||||||
"isString": true,
|
"isString": true,
|
||||||
"isUserName": true,
|
"isUserName": true,
|
||||||
"loadView": true,
|
|
||||||
"markRaw": true,
|
"markRaw": true,
|
||||||
"nextTick": true,
|
"nextTick": true,
|
||||||
"noSpacesBothSides": true,
|
"noSpacesBothSides": true,
|
||||||
@ -83,6 +100,7 @@
|
|||||||
"onServerPrefetch": true,
|
"onServerPrefetch": true,
|
||||||
"onUnmounted": true,
|
"onUnmounted": true,
|
||||||
"onUpdated": true,
|
"onUpdated": true,
|
||||||
|
"onWatcherCleanup": true,
|
||||||
"param": true,
|
"param": true,
|
||||||
"param2Obj": true,
|
"param2Obj": true,
|
||||||
"parseTime": true,
|
"parseTime": true,
|
||||||
@ -95,9 +113,11 @@
|
|||||||
"request": true,
|
"request": true,
|
||||||
"resolveComponent": true,
|
"resolveComponent": true,
|
||||||
"setToken": true,
|
"setToken": true,
|
||||||
|
"setupStore": true,
|
||||||
"shallowReactive": true,
|
"shallowReactive": true,
|
||||||
"shallowReadonly": true,
|
"shallowReadonly": true,
|
||||||
"shallowRef": true,
|
"shallowRef": true,
|
||||||
|
"store": true,
|
||||||
"toRaw": true,
|
"toRaw": true,
|
||||||
"toRef": true,
|
"toRef": true,
|
||||||
"toRefs": true,
|
"toRefs": true,
|
||||||
@ -107,17 +127,22 @@
|
|||||||
"triggerRef": true,
|
"triggerRef": true,
|
||||||
"uniqueArr": true,
|
"uniqueArr": true,
|
||||||
"unref": true,
|
"unref": true,
|
||||||
|
"useAllinpayStore": true,
|
||||||
"useAppStore": true,
|
"useAppStore": true,
|
||||||
"useAttrs": true,
|
"useAttrs": true,
|
||||||
"useCommonStore": true,
|
"useCommonStore": true,
|
||||||
"useProdStore": true,
|
|
||||||
"useCssModule": true,
|
"useCssModule": true,
|
||||||
"useCssVars": true,
|
"useCssVars": true,
|
||||||
|
"useId": true,
|
||||||
|
"useIncludeRouterName": true,
|
||||||
"useLink": true,
|
"useLink": true,
|
||||||
|
"useModel": true,
|
||||||
"usePermissionStore": true,
|
"usePermissionStore": true,
|
||||||
|
"useProdStore": true,
|
||||||
"useRoute": true,
|
"useRoute": true,
|
||||||
"useRouter": true,
|
"useRouter": true,
|
||||||
"useSlots": true,
|
"useSlots": true,
|
||||||
|
"useTemplateRef": true,
|
||||||
"useUserStore": true,
|
"useUserStore": true,
|
||||||
"useWebConfigStore": true,
|
"useWebConfigStore": true,
|
||||||
"validAlphabets": true,
|
"validAlphabets": true,
|
||||||
@ -125,42 +150,13 @@
|
|||||||
"validLowerCase": true,
|
"validLowerCase": true,
|
||||||
"validNoEmptySpace": true,
|
"validNoEmptySpace": true,
|
||||||
"validPassword": true,
|
"validPassword": true,
|
||||||
|
"validPassword2": true,
|
||||||
"validURL": true,
|
"validURL": true,
|
||||||
"validUpperCase": true,
|
"validUpperCase": true,
|
||||||
"validUsername": true,
|
"validUsername": true,
|
||||||
"watch": true,
|
"watch": true,
|
||||||
"watchEffect": true,
|
"watchEffect": true,
|
||||||
"watchPostEffect": true,
|
"watchPostEffect": true,
|
||||||
"watchSyncEffect": true,
|
"watchSyncEffect": true
|
||||||
"stores": true,
|
|
||||||
"allinpay": true,
|
|
||||||
"useAllinpayStore": true,
|
|
||||||
"useTestStore": true,
|
|
||||||
"DirectiveBinding": true,
|
|
||||||
"ExtractDefaultPropTypes": true,
|
|
||||||
"ExtractPropTypes": true,
|
|
||||||
"ExtractPublicPropTypes": true,
|
|
||||||
"MaybeRef": true,
|
|
||||||
"MaybeRefOrGetter": true,
|
|
||||||
"STAR_MOBILE_REGEXP": true,
|
|
||||||
"WritableComputedRef": true,
|
|
||||||
"addDomain": true,
|
|
||||||
"checkFile": true,
|
|
||||||
"checkIDCard": true,
|
|
||||||
"countComboPrice": true,
|
|
||||||
"excelRequest": true,
|
|
||||||
"generateTitle": true,
|
|
||||||
"getDateTimeRange": true,
|
|
||||||
"getParseTime": true,
|
|
||||||
"handleOrderItems": true,
|
|
||||||
"isStarMobile": true,
|
|
||||||
"onWatcherCleanup": true,
|
|
||||||
"setupStore": true,
|
|
||||||
"store": true,
|
|
||||||
"useId": true,
|
|
||||||
"useIncludeRouterName": true,
|
|
||||||
"useModel": true,
|
|
||||||
"useTemplateRef": true,
|
|
||||||
"validPassword2": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,10 @@
|
|||||||
|
/*
|
||||||
|
* @Description :
|
||||||
|
* @Autor : cl
|
||||||
|
* @Date : 2025-04-11 20:20:26
|
||||||
|
*/
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
// lintOnSave: false,
|
||||||
env: {
|
env: {
|
||||||
browser: true,
|
browser: true,
|
||||||
es2021: true
|
es2021: true
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name cloud-admin.mall4j.com;
|
server_name cloud-admin.Tmerclub.com;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
root /usr/share/nginx/html/admin;
|
root /usr/share/nginx/html/admin;
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
<script type="module" src="/src/main.js"></script>
|
<script type="module" src="/src/main.js"></script>
|
||||||
<script>
|
<script>
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
console.log('mall4j.v240115')
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name cloud-multishop.mall4j.com;
|
server_name cloud-multishop.Tmerclub.com;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
try_files $uri $uri/ /;
|
try_files $uri $uri/ /;
|
||||||
|
@ -202,3 +202,47 @@ export function deleteStickDefect (params) {
|
|||||||
params
|
params
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取回收订单
|
||||||
|
export function getRecycleOrder (params) {
|
||||||
|
return request({
|
||||||
|
url: '/tmerclub_local/admin/cueOrder/page',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取回收订单详情
|
||||||
|
export function getRecycleOrderDetail (params) {
|
||||||
|
return request({
|
||||||
|
url: '/tmerclub_local/admin/cueOrder',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改审核状态
|
||||||
|
export function updateRecycleOrderStatus (data) {
|
||||||
|
return request({
|
||||||
|
url: '/tmerclub_local/admin/cueOrder/updateAuditStatus',
|
||||||
|
method: 'put',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 修改评估状态
|
||||||
|
export function updateRecycleOrderEvaluateStatus (data) {
|
||||||
|
return request({
|
||||||
|
url: '/tmerclub_local/admin/cueOrder/updateEvaluateStatus',
|
||||||
|
method: 'put',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 退回
|
||||||
|
export function returnRecycleOrder (data) {
|
||||||
|
return request({
|
||||||
|
url: '/tmerclub_local/admin/cueOrder/cueRetracted',
|
||||||
|
method: 'put',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
:title="'修改密码'"
|
:title="'修改密码'"
|
||||||
:append-to-body="true"
|
:append-to-body="true"
|
||||||
class="Mall4j"
|
class="Tmerclub"
|
||||||
>
|
>
|
||||||
<el-form
|
<el-form
|
||||||
ref="dataFormRef"
|
ref="dataFormRef"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
class="Mall4j container"
|
class="Tmerclub container"
|
||||||
:style="isDecorate? '':'margin-top: 40px;'"
|
:style="isDecorate? '':'margin-top: 40px;'"
|
||||||
>
|
>
|
||||||
<el-card
|
<el-card
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="Mall4j navbar">
|
<div class="Tmerclub navbar">
|
||||||
<div class="navbar-content">
|
<div class="navbar-content">
|
||||||
<!-- 1.左边部分 -->
|
<!-- 1.左边部分 -->
|
||||||
<div class="left-menu">
|
<div class="left-menu">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<aside class="Mall4j site-sidebar">
|
<aside class="Tmerclub site-sidebar">
|
||||||
<div class="menu-mod">
|
<div class="menu-mod">
|
||||||
<el-scrollbar style="height: 100%">
|
<el-scrollbar style="height: 100%">
|
||||||
<div class="menu-left">
|
<div class="menu-left">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="Mall4j menu-mod">
|
<div class="Tmerclub menu-mod">
|
||||||
<div v-if="expandMenu.children">
|
<div v-if="expandMenu.children">
|
||||||
<el-sub-menu :index="expandMenu.id + ''">
|
<el-sub-menu :index="expandMenu.id + ''">
|
||||||
<template #title>
|
<template #title>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="Mall4j">
|
<div class="Tmerclub">
|
||||||
<div class="menu-right-el">
|
<div class="menu-right-el">
|
||||||
<el-menu
|
<el-menu
|
||||||
class="el-menu-vertical-demo"
|
class="el-menu-vertical-demo"
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
|
<!--
|
||||||
|
* @Description :
|
||||||
|
* @Autor : cl
|
||||||
|
* @Date : 2025-04-11 20:20:26
|
||||||
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
:class="classObj"
|
:class="classObj"
|
||||||
class="Mall4j app-wrapper"
|
class="Tmerclub app-wrapper"
|
||||||
>
|
>
|
||||||
<div :class="{'fixed-header':fixedHeader}">
|
<div :class="{'fixed-header':fixedHeader}">
|
||||||
<Navbar v-if="isDecorate" />
|
<Navbar v-if="isDecorate" />
|
||||||
|
@ -23,9 +23,9 @@ export const useWebConfigStore = defineStore('webConfigStore', {
|
|||||||
this.webConfig = webConfigDataForm
|
this.webConfig = webConfigDataForm
|
||||||
const lang = localStorage.getItem('cloudLang')
|
const lang = localStorage.getItem('cloudLang')
|
||||||
if (lang !== 'en') {
|
if (lang !== 'en') {
|
||||||
document.title = webConfigDataForm.titleContentCn || 'Mall4j白洞版-商家端'
|
document.title = webConfigDataForm.titleContentCn || 'Tmerclub白洞版-商家端'
|
||||||
} else {
|
} else {
|
||||||
document.title = webConfigDataForm.titleContentEn || 'Mall4j White hole version Shop side'
|
document.title = webConfigDataForm.titleContentEn || 'Tmerclub White hole version Shop side'
|
||||||
}
|
}
|
||||||
|
|
||||||
let facicon = document.querySelector('link[rel="icon"]')
|
let facicon = document.querySelector('link[rel="icon"]')
|
||||||
|
@ -7,9 +7,9 @@ const configDefInfo = {
|
|||||||
// 版权声明-英文
|
// 版权声明-英文
|
||||||
copyrightEn: '',
|
copyrightEn: '',
|
||||||
// 标题文本-中文
|
// 标题文本-中文
|
||||||
titleContentCn: 'Mall4j 白洞版 商家端',
|
titleContentCn: 'Tmerclub 白洞版 商家端',
|
||||||
// 标题文本-英文
|
// 标题文本-英文
|
||||||
titleContentEn: 'Mall4j 白洞版 商家端',
|
titleContentEn: 'Tmerclub 白洞版 商家端',
|
||||||
// 网站标题图标
|
// 网站标题图标
|
||||||
titleImg: new URL('@/assets/website-config/title-icon.png', import.meta.url).href,
|
titleImg: new URL('@/assets/website-config/title-icon.png', import.meta.url).href,
|
||||||
// 菜单栏顶部图标
|
// 菜单栏顶部图标
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class=" Mall4j dashboard-container">
|
<div class=" Tmerclub dashboard-container">
|
||||||
<!-- 1.店铺状态信息提示 -->
|
<!-- 1.店铺状态信息提示 -->
|
||||||
<div
|
<div
|
||||||
v-if="shopStatusInfo.shopStatus !== null && shopStatusInfo.shopStatus !== 1"
|
v-if="shopStatusInfo.shopStatus !== null && shopStatusInfo.shopStatus !== 1"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="Mall4j page-login login-container">
|
<div class="Tmerclub page-login login-container">
|
||||||
<div class="login-frame">
|
<div class="login-frame">
|
||||||
<div class="login-img">
|
<div class="login-img">
|
||||||
<img
|
<img
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="Mall4j">
|
<div class="Tmerclub">
|
||||||
<router-view />
|
<router-view />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
14
src/views/modules/product/recycle/order-detail/index.vue
Normal file
14
src/views/modules/product/recycle/order-detail/index.vue
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<template>
|
||||||
|
<div class="order-detail" />
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
.order-detail {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: #fff;
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
323
src/views/modules/product/recycle/order-page/add-or-update.vue
Normal file
323
src/views/modules/product/recycle/order-page/add-or-update.vue
Normal file
@ -0,0 +1,323 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: 快乐橙 1760016317@qq.com
|
||||||
|
* @Date: 2025-04-14 21:53:04
|
||||||
|
* @LastEditors: 快乐橙 1760016317@qq.com
|
||||||
|
* @LastEditTime: 2025-04-15 20:09:31
|
||||||
|
* @FilePath: \tmerclub-platform\src\views\modules\product\recycle\club\add-or-update.vue
|
||||||
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="club-manage">
|
||||||
|
<el-dialog
|
||||||
|
v-model="visible"
|
||||||
|
:title="dataForm.productId ? $t('table.edit') : $t('table.create')"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
width="600px"
|
||||||
|
:destroy-on-close="true"
|
||||||
|
top="5vh"
|
||||||
|
class="el-dialog-bodyt"
|
||||||
|
@close="closeDialog"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
ref="dataFormRef"
|
||||||
|
:rules="rules"
|
||||||
|
:model="dataForm"
|
||||||
|
label-position="right"
|
||||||
|
label-width="110px"
|
||||||
|
style="width: 500px; margin-left: 35px"
|
||||||
|
@submit.prevent
|
||||||
|
>
|
||||||
|
<!-- 商品名称 -->
|
||||||
|
<el-form-item
|
||||||
|
label="商品名称:"
|
||||||
|
prop="productName"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
v-model="dataForm.productName"
|
||||||
|
type="text"
|
||||||
|
maxlength="10"
|
||||||
|
placeholder="商品名称"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 商品图片 -->
|
||||||
|
<el-form-item
|
||||||
|
label="商品图片:"
|
||||||
|
prop="productImages"
|
||||||
|
>
|
||||||
|
<img-upload
|
||||||
|
v-model="dataForm.productImages"
|
||||||
|
@input="onPropChange('productImages')"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
class=""
|
||||||
|
style="width: 100%"
|
||||||
|
>
|
||||||
|
建议图片尺寸为1920*45 0
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 商品价格 -->
|
||||||
|
<el-form-item
|
||||||
|
label="商品价格:"
|
||||||
|
prop="productPrice"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
v-model="dataForm.productPrice"
|
||||||
|
type="text"
|
||||||
|
maxlength="10"
|
||||||
|
placeholder="商品价格"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 品牌选择 -->
|
||||||
|
<el-form-item
|
||||||
|
label="品牌选择:"
|
||||||
|
prop="brandId"
|
||||||
|
>
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.brandId"
|
||||||
|
placeholder="请选择品牌"
|
||||||
|
:empty-values="[null, undefined]"
|
||||||
|
value-key="brandId"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in stickBrandList"
|
||||||
|
:key="item.brandId"
|
||||||
|
:disabled="item.brandStatus == 0"
|
||||||
|
:label="item.brandName"
|
||||||
|
:value="item.brandId"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 类型选择 -->
|
||||||
|
<el-form-item
|
||||||
|
label="类型选择:"
|
||||||
|
prop="typeId"
|
||||||
|
>
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.typeId"
|
||||||
|
placeholder="请选择类型"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in stickTypeList"
|
||||||
|
:key="item.typeId"
|
||||||
|
:disabled="item.typeStatus == 0"
|
||||||
|
:label="item.typeName"
|
||||||
|
:value="item.typeId"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 获取系列 -->
|
||||||
|
<el-form-item
|
||||||
|
label="系列选择:"
|
||||||
|
prop="seriesId"
|
||||||
|
>
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.seriesId"
|
||||||
|
placeholder="请选择系列"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in stickSeriesList"
|
||||||
|
:key="item.seriesId"
|
||||||
|
:disabled="item.seriesStatus == 0"
|
||||||
|
:label="item.seriesName"
|
||||||
|
:value="item.seriesId"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 排序 -->
|
||||||
|
<el-form-item
|
||||||
|
label="排序:"
|
||||||
|
prop="productSeq"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
v-model="dataForm.productSeq"
|
||||||
|
type="text"
|
||||||
|
maxlength="10"
|
||||||
|
placeholder="排序"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 状态 -->
|
||||||
|
<el-form-item
|
||||||
|
label="状态:"
|
||||||
|
prop="productStatus"
|
||||||
|
>
|
||||||
|
<el-radio-group v-model="dataForm.productStatus">
|
||||||
|
<el-radio :label="1">
|
||||||
|
上架
|
||||||
|
</el-radio>
|
||||||
|
<el-radio :label="0">
|
||||||
|
下架
|
||||||
|
</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button @click="visible = false">
|
||||||
|
取消
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
:loading="btnLoading"
|
||||||
|
@click="onSubmit()"
|
||||||
|
>
|
||||||
|
确认
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { getStickDetail, addStick, updateStick } from '@/api/product/recycle'
|
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
const props = defineProps({
|
||||||
|
stickBrandList: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
},
|
||||||
|
stickTypeList: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
},
|
||||||
|
stickSeriesList: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['refresh-data-list'])
|
||||||
|
const { proxy } = getCurrentInstance()
|
||||||
|
const dataFormRef = ref(null)
|
||||||
|
const route = useRoute()
|
||||||
|
const router = useRouter()
|
||||||
|
const visible = ref(false)
|
||||||
|
const title = ref('')
|
||||||
|
const type = ref('')
|
||||||
|
const clubList = ref([])
|
||||||
|
const attrValue = ref('')
|
||||||
|
const btnLoading = ref(false)
|
||||||
|
const dataForm = ref({
|
||||||
|
productId: null,
|
||||||
|
productName: '',
|
||||||
|
productDescription: '',
|
||||||
|
productImages: '',
|
||||||
|
productPrice: '',
|
||||||
|
productSeq: '',
|
||||||
|
productStatus: 1,
|
||||||
|
typeId: null,
|
||||||
|
brandId: null,
|
||||||
|
seriesId: null
|
||||||
|
})
|
||||||
|
const rules = reactive({
|
||||||
|
productName: [{ required: true, message: '请输入商品名称', trigger: 'blur' }],
|
||||||
|
productPrice: [
|
||||||
|
{ required: true, message: '请输入商品价格', trigger: 'blur' },
|
||||||
|
// 价格必须为数字值 且不能小于0
|
||||||
|
{
|
||||||
|
pattern: /^\d+$/,
|
||||||
|
message: '价格必须为数字值且不能小于0',
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
productImages: [
|
||||||
|
{ required: true, message: '请选择商品图片', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
productSeq: [
|
||||||
|
{ required: true, message: '请输入商品排序', trigger: 'blur' },
|
||||||
|
{
|
||||||
|
pattern: /^\d+$/,
|
||||||
|
message: '排序必须为数字值且不能小于0',
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
productStatus: [
|
||||||
|
{ required: true, message: '请选择商品状态', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
typeId: [{ required: true, message: '请选择球杆类型', trigger: 'blur' }],
|
||||||
|
brandId: [{ required: true, message: '请选择球杆品牌', trigger: 'blur' }],
|
||||||
|
seriesId: [{ required: true, message: '请选择球杆系列', trigger: 'blur' }]
|
||||||
|
})
|
||||||
|
const init = (productId) => {
|
||||||
|
console.log('init', productId)
|
||||||
|
visible.value = true
|
||||||
|
dataForm.value.productId = productId || null
|
||||||
|
|
||||||
|
dataFormRef.value?.clearValidate()
|
||||||
|
if (productId) {
|
||||||
|
getClubInfo()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const closeDialog = () => {
|
||||||
|
visible.value = false
|
||||||
|
dataForm.value = {
|
||||||
|
productId: null,
|
||||||
|
productName: '',
|
||||||
|
productDescription: '',
|
||||||
|
productImages: '',
|
||||||
|
productPrice: '',
|
||||||
|
productSeq: '',
|
||||||
|
productStatus: 1,
|
||||||
|
typeId: null,
|
||||||
|
brandId: null,
|
||||||
|
seriesId: null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const getClubInfo = () => {
|
||||||
|
getStickDetail({ productId: dataForm.value.productId }).then((res) => {
|
||||||
|
Object.keys(dataForm.value).forEach((key) => {
|
||||||
|
dataForm.value[key] = res[key]
|
||||||
|
})
|
||||||
|
console.log(props.stickBrandList)
|
||||||
|
nextTick(() => {
|
||||||
|
dataFormRef.value?.forceUpdate()
|
||||||
|
})
|
||||||
|
console.log(dataForm.value)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const onPropChange = (prop) => {
|
||||||
|
dataFormRef.value?.validateField(prop)
|
||||||
|
}
|
||||||
|
|
||||||
|
const onSubmit = () => {
|
||||||
|
console.log(dataForm.value)
|
||||||
|
|
||||||
|
dataFormRef.value?.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
btnLoading.value = true
|
||||||
|
if (!dataForm.value.productId) {
|
||||||
|
addStick(dataForm.value).then(() => {
|
||||||
|
ElMessage.success('新增成功')
|
||||||
|
emit('refresh-data-list')
|
||||||
|
btnLoading.value = false
|
||||||
|
closeDialog()
|
||||||
|
}).catch((err) => {
|
||||||
|
btnLoading.value = false
|
||||||
|
console.log(err)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
updateStick(dataForm.value).then(() => {
|
||||||
|
ElMessage.success('修改成功')
|
||||||
|
emit('refresh-data-list')
|
||||||
|
btnLoading.value = false
|
||||||
|
closeDialog()
|
||||||
|
}).catch((err) => {
|
||||||
|
btnLoading.value = false
|
||||||
|
console.log(err)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
visible.value = false
|
||||||
|
} else {
|
||||||
|
console.log('error submit!!')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
init
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
355
src/views/modules/product/recycle/order-page/index.vue
Normal file
355
src/views/modules/product/recycle/order-page/index.vue
Normal file
@ -0,0 +1,355 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: 快乐橙 1760016317@qq.com
|
||||||
|
* @Date: 2025-04-14 21:19:35
|
||||||
|
* @LastEditors: 快乐橙 1760016317@qq.com
|
||||||
|
* @LastEditTime: 2025-04-20 22:43:49
|
||||||
|
* @FilePath: \tmerclub-platform\src\views\modules\product\recycle\club\index.vue
|
||||||
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
* @Author: 快乐橙 1760016317@qq.com
|
||||||
|
* @Date: 2025-04-14 21:19:35
|
||||||
|
* @LastEditors: 快乐橙 1760016317@qq.com
|
||||||
|
* @LastEditTime: 2025-04-14 22:25:43
|
||||||
|
* @FilePath: \tmerclub-platform\src\views\modules\recycle\club\index.vue
|
||||||
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div class="app-container order-home">
|
||||||
|
<!-- 搜索相关区域 -->
|
||||||
|
<div class="search-bar">
|
||||||
|
<!-- native modifier has been removed, please confirm whether the function has been affected -->
|
||||||
|
<el-form
|
||||||
|
ref="searchRef"
|
||||||
|
:inline="true"
|
||||||
|
:model="pageQuery"
|
||||||
|
class="demo-form-inline"
|
||||||
|
@submit.prevent
|
||||||
|
>
|
||||||
|
<div class="input-row">
|
||||||
|
<!-- 类型 -->
|
||||||
|
<el-form-item
|
||||||
|
label="类型:"
|
||||||
|
prop="cueOrderType"
|
||||||
|
>
|
||||||
|
<el-select
|
||||||
|
v-model="pageQuery.cueOrderType"
|
||||||
|
placeholder="请选择类型"
|
||||||
|
:empty-values="[null, undefined]"
|
||||||
|
value-key="brandId"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
label="回收"
|
||||||
|
:value="1"
|
||||||
|
/>
|
||||||
|
<el-option
|
||||||
|
label="置换"
|
||||||
|
:value="2"
|
||||||
|
/>
|
||||||
|
<el-option
|
||||||
|
label="寄售"
|
||||||
|
:value="3"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 是否审核 -->
|
||||||
|
<el-form-item
|
||||||
|
label="审核:"
|
||||||
|
prop="orderStatus"
|
||||||
|
>
|
||||||
|
<el-select
|
||||||
|
v-model="pageQuery.orderStatus"
|
||||||
|
placeholder="请选择"
|
||||||
|
:empty-values="[null, undefined]"
|
||||||
|
value-key="brandId"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
label="待审核"
|
||||||
|
:value="0"
|
||||||
|
/>
|
||||||
|
<el-option
|
||||||
|
label="审核"
|
||||||
|
:value="1"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="onGetPage(true)"
|
||||||
|
>
|
||||||
|
{{ $t("table.search") }}
|
||||||
|
</el-button>
|
||||||
|
<el-button @click="onClearSearchInfo()">
|
||||||
|
{{ $t("table.reset") }}
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<div class="main-content">
|
||||||
|
<div class="operation-bar">
|
||||||
|
<el-button
|
||||||
|
v-permission="['product:attr:save']"
|
||||||
|
type="primary"
|
||||||
|
class="filter-item"
|
||||||
|
@click="onAddOrUpdate()"
|
||||||
|
>
|
||||||
|
{{ $t("table.create") }}
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="table-con">
|
||||||
|
<!-- 列表相关区域 -->
|
||||||
|
<el-table
|
||||||
|
v-loading="pageLoading"
|
||||||
|
:data="pageVO.list"
|
||||||
|
header-cell-class-name="table-header"
|
||||||
|
row-class-name="table-row-low"
|
||||||
|
highlight-current-row
|
||||||
|
style="width: 100%"
|
||||||
|
>
|
||||||
|
<!-- 商品名称 -->
|
||||||
|
<el-table-column
|
||||||
|
label="商品名称"
|
||||||
|
prop="productName"
|
||||||
|
align="left"
|
||||||
|
/>
|
||||||
|
<!-- 商品图片 -->
|
||||||
|
<el-table-column
|
||||||
|
label="商品图片"
|
||||||
|
prop="productImages"
|
||||||
|
align="left"
|
||||||
|
>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<img-show :src="row.productImages" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="品牌"
|
||||||
|
prop="brandName"
|
||||||
|
align="left"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="类型"
|
||||||
|
prop="typeName"
|
||||||
|
align="left"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="回收类型"
|
||||||
|
prop="cueOrderType"
|
||||||
|
align="left"
|
||||||
|
>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span v-if="row.cueOrderType == 1"> 回收</span>
|
||||||
|
<span v-if="row.cueOrderType == 2">置换</span>
|
||||||
|
<span v-if="row.cueOrderType == 3">寄售</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- 商品价格 -->
|
||||||
|
<el-table-column
|
||||||
|
label="价格"
|
||||||
|
prop="productPrice"
|
||||||
|
align="left"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="状态"
|
||||||
|
prop="orderStatus"
|
||||||
|
align="left"
|
||||||
|
>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span v-if="row.orderStatus == 5">已完成</span>
|
||||||
|
<span v-if="row.orderStatus == 10">待审核</span>
|
||||||
|
<span v-if="row.orderStatus == 11">审核通过(待发货)</span>
|
||||||
|
<span v-if="row.orderStatus == 12">审核拒绝</span>
|
||||||
|
<span v-if="row.orderStatus == 13">已发货</span>
|
||||||
|
<span v-if="row.orderStatus == 14">已收货(评估中)</span>
|
||||||
|
<span v-if="row.orderStatus == 15">评估成功</span>
|
||||||
|
<span v-if="row.orderStatus == 16">评估失败</span>
|
||||||
|
<span v-if="row.orderStatus == 17">评估失败用户已填写回邮地址</span>
|
||||||
|
<span v-if="row.orderStatus == 18">评估失败(已退回)</span>
|
||||||
|
<span v-if="row.orderStatus == 19">拒绝(已填写回邮地址)</span>
|
||||||
|
<span v-if="row.orderStatus == 20">已完成</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- 创建时间 -->
|
||||||
|
<el-table-column
|
||||||
|
:label="$t('table.createTime')"
|
||||||
|
prop="createTime"
|
||||||
|
align="center"
|
||||||
|
min-width="180"
|
||||||
|
>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span>{{ row.createTime }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- 更新时间 -->
|
||||||
|
<el-table-column
|
||||||
|
:label="$t('table.updateTime')"
|
||||||
|
prop="updateTime"
|
||||||
|
align="center"
|
||||||
|
min-width="180"
|
||||||
|
>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span>{{ row.updateTime }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
:label="$t('table.actions')"
|
||||||
|
align="center"
|
||||||
|
width="230"
|
||||||
|
class-name="small-padding fixed-width"
|
||||||
|
>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<div class="table-btn-con">
|
||||||
|
<el-button
|
||||||
|
v-permission="['product:attr:update']"
|
||||||
|
type="primary"
|
||||||
|
link
|
||||||
|
@click="review(row.orderId)"
|
||||||
|
>
|
||||||
|
查看详情
|
||||||
|
</el-button>
|
||||||
|
<!-- <el-button v-permission="['product:attr:update']" type="primary" link
|
||||||
|
@click="onAddOrUpdate(row.productId)">
|
||||||
|
{{ $t("table.edit") }}
|
||||||
|
</el-button> -->
|
||||||
|
<!-- <el-button v-permission="['product:attr:delete']" type="primary" link @click="onDelete(row.productId)">
|
||||||
|
{{ $t("table.delete") }}
|
||||||
|
</el-button> -->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 分页条 -->
|
||||||
|
<pagination
|
||||||
|
v-show="pageVO.total > 0"
|
||||||
|
v-model:page="pageQuery.pageNum"
|
||||||
|
v-model:limit="pageQuery.pageSize"
|
||||||
|
:total="pageVO.total"
|
||||||
|
@pagination="onGetPage()"
|
||||||
|
/>
|
||||||
|
<add-or-update
|
||||||
|
ref="addOrUpdateRef"
|
||||||
|
:stick-brand-list="stickBrandList"
|
||||||
|
:stick-type-list="stickTypeList"
|
||||||
|
:stick-series-list="stickSeriesList"
|
||||||
|
@refresh-data-list="onGetPage()"
|
||||||
|
/>
|
||||||
|
<review-dialog ref="reviewDialogRef" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {
|
||||||
|
getRecycleOrder,
|
||||||
|
getStickBrand,
|
||||||
|
getStickType,
|
||||||
|
getStickSeries,
|
||||||
|
deleteStick
|
||||||
|
} from '@/api/product/recycle'
|
||||||
|
import AddOrUpdate from './add-or-update.vue'
|
||||||
|
import reviewDialog from './review-dialog.vue'
|
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
const router = useRouter()
|
||||||
|
const addOrUpdateRef = ref(null)
|
||||||
|
const reviewDialogRef = ref(null)
|
||||||
|
const searchRef = ref(null)
|
||||||
|
const pageLoading = ref(false)
|
||||||
|
const addOrUpdateVisible = ref(false)
|
||||||
|
const pageQuery = reactive({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
cueOrderType: null,
|
||||||
|
orderStatus: null
|
||||||
|
})
|
||||||
|
const pageVO = reactive({
|
||||||
|
total: 0,
|
||||||
|
list: []
|
||||||
|
})
|
||||||
|
|
||||||
|
const stickBrandList = ref([]) // 获取品牌列表
|
||||||
|
const stickTypeList = ref([]) // 获取球杆类型列表
|
||||||
|
const stickSeriesList = ref([]) // 获取球杆系列列表
|
||||||
|
const onGetPage = () => {
|
||||||
|
pageLoading.value = true
|
||||||
|
getRecycleOrder(pageQuery)
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res)
|
||||||
|
pageVO.list = res.list
|
||||||
|
pageVO.total = res.total
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
pageLoading.value = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 清空搜索内容
|
||||||
|
const onClearSearchInfo = () => {
|
||||||
|
searchRef.value.resetFields()
|
||||||
|
onGetPage()
|
||||||
|
}
|
||||||
|
|
||||||
|
const onAddOrUpdate = (id) => {
|
||||||
|
addOrUpdateVisible.value = true
|
||||||
|
nextTick(() => {
|
||||||
|
addOrUpdateRef.value.init(id)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取品牌列表
|
||||||
|
const getStickBrandList = (val) => {
|
||||||
|
getStickBrand({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10000
|
||||||
|
}).then((res) => {
|
||||||
|
stickBrandList.value = res.list
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取球杆类型列表
|
||||||
|
const getStickTypeList = (val) => {
|
||||||
|
getStickType({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10000
|
||||||
|
}).then((res) => {
|
||||||
|
stickTypeList.value = res.list
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取球杆系列列表
|
||||||
|
const getStickSeriesList = (val) => {
|
||||||
|
getStickSeries({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10000
|
||||||
|
}).then((res) => {
|
||||||
|
stickSeriesList.value = res.list
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除球杆
|
||||||
|
const onDelete = (productId) => {
|
||||||
|
ElMessageBox.confirm('确定删除该球杆吗?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
deleteStick({ productId }).then(() => {
|
||||||
|
ElMessage.success('删除成功')
|
||||||
|
onGetPage()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(() => { })
|
||||||
|
}
|
||||||
|
|
||||||
|
const review = (orderId) => {
|
||||||
|
reviewDialogRef.value.init(orderId)
|
||||||
|
}
|
||||||
|
onMounted(() => {
|
||||||
|
onGetPage()
|
||||||
|
getStickBrandList()
|
||||||
|
getStickTypeList()
|
||||||
|
getStickSeriesList()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
344
src/views/modules/product/recycle/order-page/review-dialog.vue
Normal file
344
src/views/modules/product/recycle/order-page/review-dialog.vue
Normal file
@ -0,0 +1,344 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: 快乐橙 1760016317@qq.com
|
||||||
|
* @Date: 2025-04-20 19:12:10
|
||||||
|
* @LastEditors: 快乐橙 1760016317@qq.com
|
||||||
|
* @LastEditTime: 2025-04-20 22:32:16
|
||||||
|
* @FilePath: \tmerclub-multishop\src\views\modules\product\recycle\order-page\review-dialog.vue
|
||||||
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-dialog
|
||||||
|
v-model="visible"
|
||||||
|
title="详情"
|
||||||
|
width="900"
|
||||||
|
@close="resetFormData"
|
||||||
|
>
|
||||||
|
<div class="container">
|
||||||
|
<el-descriptions
|
||||||
|
:column="2"
|
||||||
|
border
|
||||||
|
>
|
||||||
|
<el-descriptions-item label="商品名称">
|
||||||
|
{{ orderInfo.productName || '无' }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="商品图片">
|
||||||
|
<el-image
|
||||||
|
v-if="orderInfo.productImages"
|
||||||
|
:src="orderInfo.productImageUrl"
|
||||||
|
:preview-src-list="[orderInfo.productImageUrl]"
|
||||||
|
style="width: 100px; height: 100px"
|
||||||
|
/>
|
||||||
|
<span v-else>无</span>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="品牌">
|
||||||
|
{{ orderInfo.brandName || '无' }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="类型">
|
||||||
|
{{ orderInfo.typeName || '无' }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="用户手机号">
|
||||||
|
{{ orderInfo.userPhone || '无' }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="收货物流单号">
|
||||||
|
{{ orderInfo.sendNumber || '无' }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="退货物流单号">
|
||||||
|
{{ orderInfo.returnTrackingNumber || '无' }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="订单类型">
|
||||||
|
{{ orderInfo.cueOrderType === 1 ? '回收' : orderInfo.cueOrderType === 2 ?
|
||||||
|
'置换' : '寄售' }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item
|
||||||
|
label="缺陷"
|
||||||
|
:span="2"
|
||||||
|
>
|
||||||
|
<div style="display: flex; flex-wrap: wrap; align-items: center; gap: 10px;">
|
||||||
|
<div
|
||||||
|
v-for="(item, index) in orderInfo.flawList"
|
||||||
|
:key="index"
|
||||||
|
>
|
||||||
|
{{ item.flawName }} ({{ item.isFlaw === 1 ? '是' : '否' }})
|
||||||
|
</div>
|
||||||
|
<span v-if="!orderInfo.flawList || orderInfo.flawList.length === 0">无</span>
|
||||||
|
</div>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item
|
||||||
|
label="缺陷图片"
|
||||||
|
:span="2"
|
||||||
|
>
|
||||||
|
<div style="display: flex; flex-wrap: wrap; align-items: center; gap: 10px;">
|
||||||
|
<el-image
|
||||||
|
v-for="(image, index) in imageList.slice(0, 8)"
|
||||||
|
:key="index"
|
||||||
|
:src="image"
|
||||||
|
:alt="image"
|
||||||
|
:preview-src-list="imageList"
|
||||||
|
style="width: 100px; height: 100px"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<span v-if="!imageList || imageList.length === 0">无</span>
|
||||||
|
</div>
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<span class="dialog-footer">
|
||||||
|
<el-button @click="visible = false">取消</el-button>
|
||||||
|
<el-button
|
||||||
|
v-if="orderInfo.orderStatus === 10"
|
||||||
|
type="primary"
|
||||||
|
@click="formVisible2 = true"
|
||||||
|
>审核</el-button>
|
||||||
|
<el-button
|
||||||
|
v-if="orderInfo.orderStatus === 14 || orderInfo.orderStatus == 13"
|
||||||
|
type="primary"
|
||||||
|
@click="formVisible = true"
|
||||||
|
>评估</el-button>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-dialog
|
||||||
|
v-model="formVisible"
|
||||||
|
title="评估表单"
|
||||||
|
width="600"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
ref="formRef"
|
||||||
|
:model="formData"
|
||||||
|
:rules="rules"
|
||||||
|
label-width="120px"
|
||||||
|
>
|
||||||
|
<el-form-item
|
||||||
|
label="实际金额:"
|
||||||
|
prop="actualAmount"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
v-model="formData.actualAmount"
|
||||||
|
type="number"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item
|
||||||
|
label="代金券金额:"
|
||||||
|
prop="voucherAmount"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
v-model="formData.voucherAmount"
|
||||||
|
type="number"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item
|
||||||
|
label="佣金:"
|
||||||
|
prop="brokerage"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
v-model="formData.brokerage"
|
||||||
|
type="number"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item
|
||||||
|
label="服务费:"
|
||||||
|
prop="serviceCharge"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
v-model="formData.serviceCharge"
|
||||||
|
type="number"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="updateEvaluateStatus"
|
||||||
|
>
|
||||||
|
提交
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
<el-dialog
|
||||||
|
v-model="formVisible2"
|
||||||
|
title="预估"
|
||||||
|
role="rules2"
|
||||||
|
width="600"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
ref="formRef2"
|
||||||
|
:model="formData2"
|
||||||
|
:rules="rules"
|
||||||
|
label-width="120px"
|
||||||
|
>
|
||||||
|
<el-form-item
|
||||||
|
label="预估金额:"
|
||||||
|
prop="estimatedAmount"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
v-model="formData.estimatedAmount"
|
||||||
|
type="number"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="updateStatus(11)"
|
||||||
|
>
|
||||||
|
提交
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
|
||||||
|
import { getRecycleOrderDetail, updateRecycleOrderStatus, updateRecycleOrderEvaluateStatus } from '@/api/product/recycle'
|
||||||
|
const visible = ref(false)
|
||||||
|
const formVisible = ref(false)
|
||||||
|
const formVisible2 = ref(false)
|
||||||
|
const formRef = ref(null)
|
||||||
|
const formRef2 = ref(null)
|
||||||
|
const orderInfo = ref({})
|
||||||
|
const imageList = ref([])
|
||||||
|
const formData = ref({
|
||||||
|
actualAmount: 0,
|
||||||
|
voucherAmount: 0,
|
||||||
|
brokerage: 0,
|
||||||
|
serviceCharge: 0
|
||||||
|
})
|
||||||
|
const formData2 = ref({
|
||||||
|
estimatedAmount: 0
|
||||||
|
})
|
||||||
|
const rules = {
|
||||||
|
actualAmount: [
|
||||||
|
{ pattern: /^\d+(\.\d{1,2})?$/, message: '请输入正确的数字格式', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
voucherAmount: [
|
||||||
|
{ pattern: /^\d+(\.\d{1,2})?$/, message: '请输入正确的数字格式', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
brokerage: [
|
||||||
|
{ pattern: /^\d+(\.\d{1,2})?$/, message: '请输入正确的数字格式', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
serviceCharge: [
|
||||||
|
{ pattern: /^\d+(\.\d{1,2})?$/, message: '请输入正确的数字格式', trigger: 'blur' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
const rules2 = {
|
||||||
|
estimatedAmount: [
|
||||||
|
{ pattern: /^\d+(\.\d{1,2})?$/, message: '请输入正确的数字格式', trigger: 'blur' }
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
const init = (orderId) => {
|
||||||
|
console.log('init')
|
||||||
|
visible.value = true
|
||||||
|
getRecycleOrderDetail({
|
||||||
|
orderId
|
||||||
|
}).then(res => {
|
||||||
|
console.log(res)
|
||||||
|
orderInfo.value = {
|
||||||
|
...res,
|
||||||
|
productImageUrl: res.productImages ? import.meta.env.VITE_APP_RESOURCES_URL + '/' + res.productImages : null
|
||||||
|
}
|
||||||
|
imageList.value = res.flawImgUrl.split(',').map(v => {
|
||||||
|
return import.meta.env.VITE_APP_RESOURCES_URL + '/' + v
|
||||||
|
})
|
||||||
|
console.log(orderInfo.value.flawList)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const updateStatus = (status) => {
|
||||||
|
formRef2.value.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
updateRecycleOrderStatus({
|
||||||
|
orderId: orderInfo.value.orderId,
|
||||||
|
orderStatus: status,
|
||||||
|
userId: orderInfo.value.userId,
|
||||||
|
mallOrderId: orderInfo.value.mallOrderId,
|
||||||
|
estimatedAmount: formData2.value.estimatedAmount
|
||||||
|
}).then(res => {
|
||||||
|
visible.value = false
|
||||||
|
formVisible2.value = false
|
||||||
|
ElMessage.success('操作成功')
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// {
|
||||||
|
// "orderId": 22,
|
||||||
|
// "orderStatus": 5,
|
||||||
|
// "userId":5001,
|
||||||
|
// "mallOrderId":2504204005002001,
|
||||||
|
// "actualAmount": 100,
|
||||||
|
// "voucherAmount": 150,
|
||||||
|
// "brokerage": null,
|
||||||
|
// "serviceCharge":null,
|
||||||
|
// "cueOrderType":1
|
||||||
|
// }
|
||||||
|
const resetFormData = () => {
|
||||||
|
formData.value = {
|
||||||
|
actualAmount: 0,
|
||||||
|
voucherAmount: 0,
|
||||||
|
brokerage: 0,
|
||||||
|
serviceCharge: 0
|
||||||
|
}
|
||||||
|
formData2.value.estimatedAmount = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateEvaluateStatus = () => {
|
||||||
|
formRef.value.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
updateRecycleOrderEvaluateStatus({
|
||||||
|
orderId: orderInfo.value.orderId,
|
||||||
|
orderStatus: 15,
|
||||||
|
userId: orderInfo.value.userId,
|
||||||
|
mallOrderId: orderInfo.value.mallOrderId,
|
||||||
|
cueOrderType: orderInfo.value.cueOrderType,
|
||||||
|
actualAmount: formData.value.actualAmount,
|
||||||
|
voucherAmount: formData.value.voucherAmount,
|
||||||
|
brokerage: formData.value.brokerage,
|
||||||
|
serviceCharge: formData.value.serviceCharge
|
||||||
|
}).then(res => {
|
||||||
|
visible.value = false
|
||||||
|
formVisible.value = false
|
||||||
|
ElMessage.success('操作成功')
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
defineExpose({
|
||||||
|
init
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
.image-row {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 20px;
|
||||||
|
display: flex;
|
||||||
|
/* flex-wrap: wrap; */
|
||||||
|
gap: 10px;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-image {
|
||||||
|
width: calc((100% - 70px) / 8);
|
||||||
|
height: 70px;
|
||||||
|
object-fit: cover;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
width: 100%;
|
||||||
|
height: 800px;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.label {
|
||||||
|
width: 120px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="Mall4j page-picture-manager">
|
<div class="Tmerclub page-picture-manager">
|
||||||
<div class="file-group">
|
<div class="file-group">
|
||||||
<div class="upload-btn">
|
<div class="upload-btn">
|
||||||
<div class="up-btn">
|
<div class="up-btn">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="Mall4j selx-imgbox page-video-manager">
|
<div class="Tmerclub selx-imgbox page-video-manager">
|
||||||
<div class="file-group">
|
<div class="file-group">
|
||||||
<div class="upload-btn">
|
<div class="upload-btn">
|
||||||
<div class="up-btn">
|
<div class="up-btn">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user