This commit is contained in:
aihe 2024-08-31 14:13:02 +08:00
parent 207ca1c03e
commit 600ecbb5b3
7 changed files with 201 additions and 142 deletions

View File

@ -42,8 +42,8 @@ export const parseAddress = (data = {})=> {
return coreRequest(url.parseAddress, data, {}, "GET")
}
export const getAppHomeStatData = (data = {})=> {
return coreRequest(url.getAppHomeStatData, data, {}, "GET")
export const getCustOrderStatData = (data = {})=> {
return coreRequest(url.getCustOrderStatData, data, {}, "GET")
}
// 获取下单隐私协议
@ -75,3 +75,19 @@ export const getIdVerification = (data = {})=> {
export const idVerification = (data = {})=> {
return coreRequest(url.idVerification, data, {})
}
// 投诉列表
export const getComplaintsList = (data = {})=> {
return coreRequest(url.getComplaintsList, data, {}, 'get')
}
// 新增投诉
export const addComplaints = (data = {})=> {
return coreRequest(url.addComplaints, data, {})
}
// 投诉详情
export const getComplainInfo = (data = {})=> {
return coreRequest(url.getComplainInfo, data, {}, 'get')
}

View File

@ -11,7 +11,7 @@ export default {
getEmisCountry: `/oms2c/emisCountry/listSimple`, // 获取国家列表 -- DONE
getEmisRegion: `/oms2c/emisRegion/listSimple`,// 获取省市区列表 -- DONE
getDicDataJson: `/common/getDicDataJson`, // 获取枚举字段 -- DONE
getAppHomeStatData: `/oms2c/commonTools/getAppHomeStatData`,// 首页统计数据
getCustOrderStatData: `/oms2c/emisWaybill/getCustOrderStatData`,// 我的收寄件信息统计 -- DONE
getCustomerUserAddressList: `/oms2c/emisCustomerAddress/listSimple`, // 获取客户地址列表 -- DONE
setDefaultAddressById: `/oms2c/emisCustomerAddress/setDefaultAddressById`, // 设置默认地址 -- DONE
deleteAddressById: `/oms2c/emisCustomerAddress/deleteAddressById`, // 删除地址 -- DONE
@ -46,12 +46,15 @@ export default {
deleteBindSalemen: `/oms2c/emisWaybill/deleteBindSalemen`, // 删除绑定快递员 -- DONE
setDefaultBindSalesmen: `/oms2c/emisWaybill/setDefaultBindSalesmen`, // 设置默认快递员 -- DONE
queryWaybillTraceInfo: `/oms2c/emisTmsScanRecord/queryWaybillTraceInfo`, // 物流轨迹 -- DONE
queryArticleList: `/oms2c/emisArticle/listSimple`, // 信息速递列表 -- DONE
queryArticleDetail: `/oms2c/emisArticle/getDetail`, // 获取文档详情 -- DONE
articleGiveLike: `/oms2c/emisArticle/giveLike`, // 文章点赞 -- DONE
getIdVerification: `/oms2c/emisCustomerUser/getIdVerification`, // 获取实名认证信息 -- DONE
idVerification: `/oms2c/emisCustomerUser/idVerification`, // 提交实名认证 -- DONE
getComplaintsList: `/oms2c/emisWaybillComplaints/listSimple`, // 投诉列表 -- DONE
addComplaints: `/oms2c/emisWaybillComplaints/addComplaints`, // 新增投诉 -- DONE
getComplainInfo: `/oms2c/emisWaybillComplaints/getInfoById`, // 投诉详情 -- DONE
}

View File

@ -1,81 +1,101 @@
<template>
<tpx-layout>
<template v-slot:body>
<view class="com-jianju" style="padding-top: 30rpx;">
<view class="com-radius" style="background-color: #fff;padding: 26rpx 30rpx;">
<u-row justify="between">
<u-text size="30" color="#0E0708" :bold="true" text="T7080123982301"></u-text>
</u-row>
<u-line color="#D9D9D9" margin="26rpx 0"></u-line>
<u-row align="top">
<view class="mr-10">
<u-text size="28" color="#333" :bold="true" text="投诉原因:"></u-text>
</view>
<u-text size="26" color="#999" text="×××"></u-text>
</u-row>
<u-row align="top" custom-style="margin-top:30rpx;">
<view class="mr-10">
<u-text size="28" color="#333" :bold="true" text="投诉描述:"></u-text>
</view>
<u-text size="26" color="#999" text="×××"></u-text>
</u-row>
<u-row align="top" custom-style="margin-top:30rpx;">
<view class="mr-10">
<u-text size="28" color="#333" :bold="true" text="投诉时间:"></u-text>
</view>
<u-text size="26" color="#999" text="2023-11-20 13:28:56"></u-text>
</u-row>
<view @click="handleEditItem()" style="padding-top:20rpx;margin-top: 20rpx;border-top: 2rpx solid #D9D9D9">
<u-row justify="between">
<u-text align="left" size="28" text="查看详情"></u-text>
<view>
<u-icon name="arrow-right" size="" color=""></u-icon>
<tpx-page>
<tpx-layout>
<template v-slot:body>
<view class="pos-abt-all">
<tpx-scroll-view v-model:resObject="resData" :searchParam="searchParam" :getListFun="getListFun"
ref="listRef"
>
<view v-for="(item) in resData.list" class="com-jianju" style="padding-top: 30rpx;">
<view class="com-radius" style="background-color: #fff;padding: 26rpx 30rpx;">
<u-row justify="between">
<u-text size="30" color="#0E0708" :bold="true" text="T7080123982301"></u-text>
</u-row>
<u-line color="#D9D9D9" margin="26rpx 0"></u-line>
<u-row align="top">
<view class="mr-10">
<u-text size="28" color="#333" :bold="true" text="投诉原因:"></u-text>
</view>
<u-text size="26" color="#999" text="×××"></u-text>
</u-row>
<u-row align="top" custom-style="margin-top:30rpx;">
<view class="mr-10">
<u-text size="28" color="#333" :bold="true" text="投诉描述:"></u-text>
</view>
<u-text size="26" color="#999" text="×××"></u-text>
</u-row>
<u-row align="top" custom-style="margin-top:30rpx;">
<view class="mr-10">
<u-text size="28" color="#333" :bold="true" text="投诉时间:"></u-text>
</view>
<u-text size="26" color="#999" text="2023-11-20 13:28:56"></u-text>
</u-row>
<view @click="goto(`complaint/edit`)" style="padding-top:20rpx;margin-top: 20rpx;border-top: 2rpx solid #D9D9D9">
<u-row justify="between">
<u-text align="left" size="28" text="查看详情"></u-text>
<view>
<u-icon name="arrow-right" size="" color=""></u-icon>
</view>
</u-row>
</view>
</view>
</u-row>
</view>
</view>
</tpx-scroll-view>
</view>
</view>
</template>
<template v-slot:footer>
<view class="blcok-white-noradius">
<u-button @click="handleEditItem()" type="primary" size="large" shape="circle"
custom-style="height:80rpx;font-size: 30rpx;"
>新增</u-button>
</view>
</template>
</tpx-layout>
</template>
<template v-slot:footer>
<view class="blcok-white-noradius">
<u-button @click="goto(`complaint/edit`)" type="primary" size="large" shape="circle"
custom-style="height:80rpx;font-size: 30rpx;"
>新增</u-button>
</view>
</template>
</tpx-layout>
</tpx-page>
</template>
<script>
import getCdnUrl from "@/common/getCdnUrl"
import { goto, goBack, setClipboardData, confirmModal, showLoading } from "@/common/untool"
import * as apiService from "@/common/api"
export default {
props: {
// hasLeftWin: {
// type: Boolean
// }
},
computed: {
},
data() {
return {
searchParam: {
},
resData: { list: [] },
queryOption: {},
}
},
onShareAppMessage() {
return {
// title: '',
// path: 'TODO'
}
onShow(){
this.triggerListReload()
this.initData()
},
onLoad(queryOption) {
this.queryOption = queryOption
this.initData();
},
onUnload() {
},
methods: {
getCdnUrl,
handleEditItem(item={}) {
goto(`complaint/edit?id=${item.id}`)
getListFun: apiService.getComplaintsList,
initData(){
},
triggerListReload(){
this?.$refs?.listRef?.getDataList?.(true) // 重置到第一页数据
},
}
}

View File

@ -1,50 +1,55 @@
<template>
<tpx-layout>
<template v-slot:body>
<view class="com-jianju pos-rlt pb-30" style="padding-top: 2rpx;">
<view class="blcok-white radius-20">
<view class="">
<view class="mt-10">
<tpx-input v-model:value="submitParam.danhao" placeholder="运单号"></tpx-input>
<tpx-page>
<tpx-layout>
<template v-slot:body>
<view class="com-jianju pos-rlt pb-30" style="padding-top: 2rpx;">
<view class="blcok-white radius-20">
<view class="">
<view class="mt-10">
<tpx-input v-model:value="submitParam.billCode" placeholder="运单号"></tpx-input>
</view>
<view class="mt-30">
<tpx-select
v-model:value="submitParam.cpSiteCode" v-model:text="submitParam.siteName" v-model:resObject="wayRes"
:getListFun="getSendSiteList" :transKeyVal="{valKey: 'siteName',titleKey: 'siteName'}"
:searchParam="siteSearchParam" placeholder="请选择投诉网点"
></tpx-select>
</view>
<view class="mt-30">
<tpx-select placeholder="投诉原因" v-model:value="submitParam.cpReason" :list="dicData.emis_complaints_type" mode="drop"
></tpx-select>
</view>
<view class="mt-30">
<tpx-textarea v-model:value="submitParam.remark" placeholder="投诉描述"></tpx-textarea>
</view>
</view>
<view class="mt-30">
<tpx-select placeholder="投诉网点" v-model:value="country" :list="[]"
></tpx-select>
</view>
<view class="mt-30">
<tpx-select placeholder="投诉原因" v-model:value="country" :list="[]"
></tpx-select>
</view>
<view class="mt-30">
<tpx-textarea v-model:value="submitParam.desc" placeholder="投诉描述"></tpx-textarea>
</view>
</view>
</view>
</template>
</view>
</template>
<template v-slot:footer>
<view class="blcok-white-noradius">
<u-button @click="handleSubmit()" type="primary" size="large" shape="circle"
custom-style="height:80rpx;font-size: 30rpx;"
>确定</u-button>
</view>
</template>
</tpx-layout>
<template v-slot:footer>
<view class="blcok-white-noradius">
<u-button @click="handleSubmit()" type="primary" size="large" shape="circle"
custom-style="height:80rpx;font-size: 30rpx;"
>确定</u-button>
</view>
</template>
</tpx-layout>
</tpx-page>
</template>
<script>
import getCdnUrl from "@/common/getCdnUrl"
import {
goto, goBack
} from "@/common/untool"
import * as apiService from "@/common/api"
import { checkParams } from "@/common/validate"
//
export default {
props: {
// hasLeftWin: {
@ -52,46 +57,58 @@
// }
},
computed: {
dicData() {
return this.$store.getters.dicData
},
siteSearchParam() {
return {}
}
},
data() {
return {
queryOption: {
cmpId: ''
},
// 基础表单数据
submitParam: {
type: 1,
otherDes: ''
}
idType: this.$store.getters.dicData?.emis_complaints_type?.[0]?.value,
},
submitValidConfig: {
billCode: { required: true, requiredMsg: '运单号不能为空' },
cpSiteCode: { required: true, requiredMsg: '投诉网点不能为空' },
cpReason: { required: true, requiredMsg: '投诉原因不能为空' },
},
}
},
onShareAppMessage() {
return {
// title: '',
// path: 'TODO'
}
},
onLoad() {
onLoad(queryOption) {
this.queryOption = queryOption
this.initData();
},
onUnload() {
},
methods: {
getCdnUrl,
getSendSiteList: apiService.getSendSiteList,
initData() {
// uni.showLoading({
// title: '加载中'
// });
this.queryOption.cmpId && this.getDetailData()
},
handleAnsText(){
async getDetailData(){
let res = apiService.getComplainInfo({id: ''})
res.data && (this.submitParam = res.data)
},
handleFormChange(){
handleFormChange() {
},
handleSubmit() {
goBack()
async handleSubmit() {
let params = { ...this.submitParam }
await checkParams(params, this.submitValidConfig)
let res = await apiService.addComplaints(params)
this.showToast('提交成功')
this.goBack()
},
}
}
</script>

View File

@ -28,7 +28,7 @@
<view class="com-jianju" style="margin-top: 50rpx;">
<u-row justify="between">
<u-col v-for="(mbItem, mIndex) in mainBtnlist" span="5.8"
<u-col v-for="(mbItem, mIndex) in staticDataList" span="5.8"
customStyle="background: linear-gradient(0deg, #1D1818 0%, #0E0708 100%);border-radius: 20rpx;padding: 30rpx;"
>
<u-row justify="center">
@ -71,7 +71,15 @@
computed: {
userInfo() {
return this.$store.getters.userInfo
}
},
staticDataList(){
let { recieveNum, sendNum } = this.staticInfo
let list = [
{ title: `${sendNum || 0}单`, subTitle: "寄件", icon: getCdnUrl(`mine/jijian.png`), url: '' },
{ title: `${recieveNum || 0}单`, subTitle: "收件", icon: getCdnUrl(`mine/shjian.png`), url: '' }
]
return list
},
},
props: {
// hasLeftWin: {
@ -81,13 +89,7 @@
data() {
return {
staticInfo: {
commStat: {},
orderStat: {},
},
mainBtnlist: [
{ title: '0单', subTitle: "寄件", icon: getCdnUrl(`mine/jijian.png`), url: '' },
{ title: '0单', subTitle: "收件", icon: getCdnUrl(`mine/shjian.png`), url: '' }
],
toolBtnlist: [
{ title: '运单列表', subTitle: "", icon: getCdnUrl(`mine/ydlib.png`), url: 'tabBar/search/search' },
{ title: '进仓单', subTitle: "", icon: getCdnUrl(`mine/jcdan.png`), url: 'warehousing/list' },
@ -118,15 +120,15 @@
}
},
async initData(){
this.getAppHomeStatData()
this.getOrderStatData()
this.getPrivateRuleData()
},
async getPrivateRuleData(){
let res = await apiService.getAgreementTxt()
this.privacyModal.content = res?.data || ''
},
async getAppHomeStatData(){
let res = await apiService.getAppHomeStatData()
async getOrderStatData(){
let res = await apiService.getCustOrderStatData()
this.staticInfo = res.data
},
async handleUnlogin() {

View File

@ -43,8 +43,8 @@
<template v-slot:footer>
<view class="blcok-white-noradius">
<u-button @click="handleSubmit()" type="primary" size="large" shape="circle"
custom-style="height:80rpx;font-size: 30rpx;">提交实名</u-button>
<u-button @click="handleSubmit()" :disabled="submitParam.idVerifyStatus == 1" type="primary" size="large" shape="circle"
custom-style="height:80rpx;font-size: 30rpx;">{{submitParam.idVerifyStatus == 1 ?'已实名':'提交实名'}}</u-button>
</view>
</template>
</tpx-layout>
@ -71,7 +71,8 @@
return {
// 基础表单数据
submitParam: {
idType: this.$store.getters.dicData?.emis_id_type?.[0]?.value
idType: this.$store.getters.dicData?.emis_id_type?.[0]?.value,
// "idVerifyStatus": "1-已实名 0-未实名"
},
submitValidConfig: {
realName: { required: true, requiredMsg: '姓名不能为空' },

View File

@ -37,7 +37,7 @@ export default {
let key = Object.keys(item).filter(i=> i != 'desc')[0]
if(key) {
let list = []
if(['emis_signs_remark', 'emis_express_code', 'emis_order_remark_list'].indexOf(key) > -1) {
if(['emis_signs_remark', 'emis_express_code', 'emis_order_remark_list', 'emis_complaints_type'].indexOf(key) > -1) {
// 特殊枚举值, label、value一致
list = transListKeyTitle({ valKey:'label', titleKey: 'label', list: item[key] })
} else {