瀏覽代碼

更新

xz
username 10 月之前
父節點
當前提交
5d299933f3

+ 225
- 0
src/views/onlineBusinessHall/automobileSeroice/afterSaleOperation/changeGoods.vue 查看文件

@@ -0,0 +1,225 @@
<template>
<!-- 设备更换 -->
<el-dialog v-model="exchangeInformationDialog" width="40%" title="设备更换" @close="exchangeInformationClose">
<el-form ref="exchangeInformationRef" :rules="{
damageMode: [{ required: true, message: '不能为空', trigger: 'change' }],
fileUrl: [{ required: true, message: '不能为空', trigger: 'change' }],
reason: [{ required: true, message: '不能为空', trigger: 'blur' }],
applyType: [{ required: true, message: '不能为空', trigger: 'change' }]
}" :model="exchangeInformationForm"
label-width="120px">
<el-form-item label="换货类型" prop="applyType">
<el-select clearable v-model="exchangeInformationForm.applyType" placeholder="请选择换货类型">
<el-option :label="item.label" :key="item.value" :value="item.value" v-for="item in applyTypeList" />
</el-select></el-form-item>
<el-form-item label="损坏方式" prop="damageMode">
<el-radio-group v-model="exchangeInformationForm.damageMode">
<el-radio label="NATURAL">自然损坏</el-radio>
<el-radio label="ARTIFICIAL">人为损坏</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="图片" prop="fileUrl">
<el-upload
class="avatar-uploader"
action="/minIo/upload"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
>
<img v-if="exchangeInformationForm.fileUrl" :src="exchangeInformationForm.fileUrl" class="avatar" />
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
</el-upload>
</el-form-item>
<el-form-item label="更换原因" prop="reason">
<el-input v-trim clearable type="textarea" maxlength="100" show-word-limit
v-model="exchangeInformationForm.reason" placeholder="请输入更换原因"></el-input>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="exchangeInformationDialog = false">取 消</el-button>
<el-button type="primary" @click="exchangeInformationsubmitForm(exchangeInformationRef)">确 定</el-button>
</template>
</el-dialog>
</template>

<script setup lang="ts">
// @ts-ignore crudFrom模板
import { computed, reactive, ref } from 'vue'
import { ElMessage, type FormInstance, type FormRules } from 'element-plus'
import infoDialog from '@/components/approvalProcessDetail/index.vue'

// @ts-ignore
import BaseService from '@/utils/baseService'
// @ts-ignore
const props = defineProps({
dataList: {
type: Object,
default: () => ({}),
},
modelValue: {
type: Boolean,
default: false,
},
field: {
type: Object,
default: () => ({}),
},
})
const emit = defineEmits(['update:modelValue', 'closeExamine'])

const isShow = computed({
get: function () {
return props.modelValue
},
set: function (newValue) {
emit('update:modelValue', newValue)
},
})


const ruleForm = reactive({
reject: '',
comment: '',
})
const redioChange = (key) => {
if (key) {
ruleForm.comment = '通过'
} else {
ruleForm.comment = '拒绝'
}
}
const ruleFormRef = ref<FormInstance>()
const rules = reactive<FormRules<typeof ruleForm>>({
reject: [{ required: true, message: '请选择审批意见', trigger: 'blur' }],
comment: [{ required: true, message: '请填写审批原因', trigger: 'blur' }],
})
const submitForm = (formEl: FormInstance | undefined) => {
if (!formEl) return
formEl.validate((valid) => {
if (valid) {
let params = {
...ruleForm,
processId: props.dataList.id,
}
BaseService.post('/settlew/processweb/completeprocess', params).then(
(res: any) => {
if (res && res.code === 0) {
ElMessage.success('审批成功')
// 关闭页面
ruleForm.reject = ''
ruleForm.comment = ''
isShow.value = false
emit('closeExamine')
formEl.resetFields()
} else {
ElMessage.error(res.message)
}
}
)
// .finally(() => {
// isLoading.value = false
// })
} else {
console.log('error submit!')
return false
}
})
}

const resetForm = (formEl: FormInstance | undefined) => {
if (!formEl) return
formEl.resetFields()
}
const fields = ref({
tabSize: 'small', //Table 的尺寸 large / default /small (默认default)
searchShow: false, //是否显示搜索模块(默认false)
border: false, //是否添加边框(默认false)
dialogCustom: true, //自定义Dialog (默认false),配合查看使用
dialogFooter: true, //隐藏弹窗页脚显示 (默认false)
dialogWidth: '50%', //dialog宽度 (默认40%)
crudChildShow: true, //是否显示CURD子操作栏 (默认true)
paginStart: false, //是否显示分页查询 (默认false)
isPageSizes: false,
pageLayout: 'total, prev, pager, next, jumper',
titleDialog: '', //table 标题
tableMaxHeight: '180px',
crudShow: false, //是否显示CURD操作栏 (默认true)
searchOperation: {
isDownload: false, //开启下载
isAdd: false,
isTransferMachine: false,
isToLead: false, //导入
},
tableSize: -1,
operateShow: true, //是否为表格添加操作栏(默认true)
operateTitle: '操作', //操作栏标题(默认为"")
operateFixed: false, //操作栏是否固定(默认false)
operateWidth: '100', //操作栏宽度
operate: {
edit: false, //是否编辑(默认true)
delete: false, //是否删除(默认true)
announcement: false, // 公告
remark: false, // 查看
info: false, //详情
forbidden: false, // 禁用
enable: false, // 启用
authorization: false, // 授权
cancel: false, // 取消订单
writeOff: false, // 注销
make: false, // 补缴
},
extend: [
{
type: 'index',
label: '序号',
},
],
field: [
{
prop: 'dataReport',
label: '数据报表',
},
{
prop: 'fileName',
label: '文件名',
},
{
label: '上传时间',
prop: 'insertTime',
funRuleStarts: true,
funRule: (val) => {
if (val) {
return val.replaceAll('T', ' ')
}
return val
},
},
],
})
</script>
<style scoped lang="less">
.desc-content {
border: 1px solid #ebeef5;

.desc-item {
padding: 8px 11px;
box-sizing: border-box;
}

.desc-flex {
display: flex;
padding: 8px 11px;
box-sizing: border-box;
}

.title-txt {
font-weight: 700;
color: #606266;
background: #f5f7fa;
box-sizing: border-box;
text-align: left;
line-height: 23px;
font-size: 14px;
}
}
</style>

+ 128
- 5
src/views/onlineBusinessHall/automobileSeroice/afterSaleOperation/index.vue 查看文件

@@ -156,6 +156,19 @@
<!-- 设备更换 -->
<el-dialog v-model="exchangeInformationDialog" width="40%" title="设备更换" @close="exchangeInformationClose">
<el-form ref="exchangeInformationRef" :rules="{
sendStatus: [{ required: true, message: '不能为空', trigger: 'change' }],
consignee: [{ required: true, message: '不能为空', trigger: 'blur' }],
consigneeTel: [{ required: true, message: '不能为空', trigger: 'blur' }, {
pattern:
/^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/, //正则校验不用字符串
message: '请填写正确的手机号码',
trigger: 'blur',
},],
region: [{ required: true, message: '不能为空', trigger: 'blur' }],
address: [{ required: true, message: '不能为空', trigger: 'blur' }],
receiveMethod: [{ required: true, message: '不能为空', trigger: 'change' }],
courierCompany: [{ required: true, message: '不能为空', trigger: 'blur' }],
courierOrderId: [{ required: true, message: '不能为空', trigger: 'blur' }],
damageMode: [{ required: true, message: '不能为空', trigger: 'change' }],
fileUrl: [{ required: true, message: '不能为空', trigger: 'change' }],
reason: [{ required: true, message: '不能为空', trigger: 'blur' }],
@@ -179,11 +192,58 @@
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
ref="applyUploadImg"
>
<img v-if="exchangeInformationForm.fileUrl" :src="exchangeInformationForm.fileUrl" class="avatar" />
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
</el-upload>
</el-form-item>
<el-form-item style="font-weight: 900;" label="邮寄方式"></el-form-item>
<el-form-item label="是否需要邮寄" prop="sendStatus">
<el-radio-group v-model="exchangeInformationForm.sendStatus">
<el-radio label="1">邮寄</el-radio>
<el-radio label="0">不邮寄</el-radio>
</el-radio-group>
</el-form-item>
<div v-if="exchangeInformationForm.sendStatus == '1'">
<el-form-item label="收件人姓名" prop="consignee">
<el-input maxlength="60" v-trim clearable v-model="exchangeInformationForm.consignee"
placeholder="请输入收件人姓名"></el-input>
</el-form-item>
<el-form-item label="收件人电话" prop="consigneeTel">
<el-input maxlength="60" v-trim clearable v-model="exchangeInformationForm.consigneeTel"
placeholder="请输入收件人电话"></el-input>
</el-form-item>
<el-form-item label="收货地区" prop="region">
<el-cascader v-model="exchangeInformationForm.region" placeholder="请选择收货地址" :options="pcaText" />
</el-form-item>
<el-form-item label="详细地址" prop="address">
<el-input maxlength="60" v-trim clearable v-model="exchangeInformationForm.address"
placeholder="请输入详细地址"></el-input>
</el-form-item>
<el-form-item label="邮政编码" prop="postalCode">
<el-input maxlength="60" v-trim clearable v-model="exchangeInformationForm.postalCode"
placeholder="请输入邮政编码"></el-input>
</el-form-item>
</div>
<el-form-item style="font-weight: 900;" label="收货方式"></el-form-item>
<el-form-item label="收货方式" prop="receiveMethod">
<el-radio-group v-model="exchangeInformationForm.receiveMethod">
<el-radio label="1">线上</el-radio>
<el-radio label="0">线下</el-radio>
</el-radio-group>
</el-form-item>
<div v-if="exchangeInformationForm.receiveMethod == '1'">
<el-form-item label="物流公司" prop="courierCompany">
<el-select clearable v-model="exchangeInformationForm.courierCompany" placeholder="请选择物流公司">
<el-option :label="item" :key="item" :value="item" v-for="item in logisticsCompanyList" />
</el-select>
</el-form-item>
<el-form-item label="物流单号" prop="courierOrderId">
<el-input maxlength="60" v-trim clearable v-model="exchangeInformationForm.courierOrderId"
placeholder="请输入物流单号"></el-input>
</el-form-item>
</div>
<el-form-item label="更换原因" prop="reason">
<el-input v-trim clearable type="textarea" maxlength="100" show-word-limit
v-model="exchangeInformationForm.reason" placeholder="请输入更换原因"></el-input>
@@ -288,6 +348,7 @@

onMounted(() => {
getList();
getLogisticsCompanyList()
})
// 搜索按钮
function btnSearch() {
@@ -295,6 +356,19 @@
getList();
}
// 设备更换********************************************
import { pcaTextArr } from 'element-china-area-data'
const pcaText: any = pcaTextArr
const logisticsCompanyList = ref([])
function getLogisticsCompanyList() {
BaseService.post('/managew/order/couriercompanyselect', {}).then((res: any) => {
if (res && res.statusCode === 0) {
logisticsCompanyList.value = res?.data ? res.data : []
} else {
ElMessage.error(res.message)
}
})
}
const applyUploadImg = ref()
const applyTypeList = [
{
label: '换卡',
@@ -318,14 +392,33 @@
oldCardId: '',
oldObuId: '',
vehicleId: '',
fileUrl: ''
fileUrl: '',
sendStatus: '1',
consignee: '',
consigneeTel: '',
region: '',
address: '',
postalCode: '',
receiveMethod: '1',
courierCompany: '',
courierOrderId: '',
})
function exchangeInformationClose() {
if (exchangeInformationRef.value) exchangeInformationRef.value.resetFields()
if (uploadImg.value) uploadImg.value.clearFiles()
if (applyUploadImg.value) applyUploadImg.value.clearFiles()
exchangeInformationForm.fileUrl = ''
exchangeInformationForm.reason = '',
exchangeInformationForm.applyType = '',
exchangeInformationForm.damageMode = 'NATURAL'
exchangeInformationForm.damageMode = 'NATURAL',
exchangeInformationForm.sendStatus = '1',
exchangeInformationForm.consignee = '',
exchangeInformationForm.consigneeTel = '',
exchangeInformationForm.region = '',
exchangeInformationForm.address = '',
exchangeInformationForm.postalCode = '',
exchangeInformationForm.receiveMethod = '1',
exchangeInformationForm.courierCompany = '',
exchangeInformationForm.courierOrderId = ''
}
function handleEquipmentReplacement(row){
exchangeInformationDialog.value = true
@@ -339,8 +432,38 @@
if (valid) {
BaseService.postN('/iaw/api/afterSale/changeCardObu/apply', exchangeInformationForm).then((res: any) => {
if (res && res.statusCode === 0) {
ElMessage.success('申请成功')
exchangeInformationDialog.value = false
const data = res.data
exchangeInformationForm.id = data
if (exchangeInformationForm.sendStatus == '0') {
exchangeInformationForm.consignee = ''
exchangeInformationForm.consigneeTel = ''
exchangeInformationForm.region = ''
exchangeInformationForm.address = ''
exchangeInformationForm.postalCode = ''
}
if (exchangeInformationForm.receiveMethod == '0') {
exchangeInformationForm.courierCompany = ''
exchangeInformationForm.courierOrderId = ''
}
if (exchangeInformationForm.region && exchangeInformationForm.region.length !== 0) {
exchangeInformationForm.region = exchangeInformationForm.region.join('')
}
let params = {}
let searchFormList = { ...exchangeInformationForm }
for (let key in searchFormList) {
if (searchFormList[key]) {
params[key] = searchFormList[key]
}
}
BaseService.post('/iaw/api/afterSale/changeCardObu/fill', searchFormList).then((res: any) => {
if (res && res.statusCode === 0) {
ElMessage.success('申请成功')
exchangeInformationDialog.value = false
getList() //页面数据刷新
} else {
ElMessage.error(res.message)
}
})
} else {
ElMessage.error(res.message)
}

+ 875
- 59
src/views/onlineBusinessHall/automobileSeroice/businessAudit/index.vue
文件差異過大導致無法顯示
查看文件


+ 1
- 1
src/views/onlineBusinessHall/automobileSeroice/serviceOperationRecord/index.vue 查看文件

@@ -134,7 +134,7 @@
//数据转换
let bizContent = res.data
console.log(bizContent, 'bizContentbizContent')
let data = bizContent.data || [];
let data = bizContent.result || [];
//数据渲染
tableData.value = data;
crudRef.value.tableLoding = false;

+ 15
- 26
src/views/onlineBusinessHall/orderManagement/index.vue 查看文件

@@ -279,7 +279,7 @@
<el-select clearable v-model="exchangeInformationForm.applyType" placeholder="请选择换货类型">
<el-option :label="item.label" :key="item.value" :value="item.value" v-for="item in applyTypeList" />
</el-select></el-form-item>
<el-form-item label="损坏方式">
<!-- <el-form-item label="损坏方式">
<el-radio-group v-model="exchangeInformationForm.damageMode">
<el-radio label="1">自然损坏</el-radio>
<el-radio label="0">人为损坏</el-radio>
@@ -292,7 +292,7 @@
<Plus />
</el-icon>
</el-upload>
</el-form-item>
</el-form-item> -->
<el-form-item style="font-weight: 900;" label="邮寄方式"></el-form-item>
<el-form-item label="是否需要邮寄" prop="sendStatus">
<el-radio-group v-model="exchangeInformationForm.sendStatus">
@@ -483,7 +483,7 @@
courierOrderId: '',
applyRes: '',
applyType: '',
damageMode: '1'
// damageMode: '1'
})
const artificialStatusList = [
{
@@ -564,7 +564,7 @@
function getLogisticsCompanyList() {
BaseService.post('/managew/order/couriercompanyselect', {}).then((res: any) => {
if (res && res.statusCode === 0) {
logisticsCompanyList.value = res?.bizContent ? res.data : []
logisticsCompanyList.value = res?.data ? res.data : []
} else {
ElMessage.error(res.message)
}
@@ -774,8 +774,8 @@
exchangeInformationForm.courierCompany = '',
exchangeInformationForm.courierOrderId = '',
exchangeInformationForm.applyRes = '',
exchangeInformationForm.applyType = '',
exchangeInformationForm.damageMode = '1'
exchangeInformationForm.applyType = ''
// exchangeInformationForm.damageMode = '1'
}

//订单发货
@@ -815,23 +815,14 @@
orderId: beanData.orderId,
applyType: exchangeInformationForm.applyType,
returnReason: exchangeInformationForm.applyRes,
damageMode: exchangeInformationForm.damageMode
// damageMode: exchangeInformationForm.damageMode
}
params.fileUrl = fileList.value.map((item: any) => {
return '/default-bucket/' + item?.response?.data?.ossFilePath
}).join()
// params.fileUrl = fileList.value.map((item: any) => {
// return '/default-bucket/' + item?.response?.data?.ossFilePath
// }).join()
timerExchange = setTimeout(() => {
// 获取888接口后的id在调887填写信息接口
exchangeInformationRef.validate((valid: any, fields: any) => {
if (valid) {
BaseService.post(exchangeGoods, params).then((res: any) => {
if (res && res.statusCode === 0) {
const data = JSON.parse(res.bizContent)
exchangeInformationForm.configId = '6a9a54bc01f6443faea7ffeb8b5b19f6'
exchangeInformationForm.id = data?.id ?? ''
if (exchangeInformationForm.region && exchangeInformationForm.region.length !== 0) {
exchangeInformationForm.region = exchangeInformationForm.region.join('')
}
if (exchangeInformationForm.sendStatus == '0') {
exchangeInformationForm.consignee = ''
exchangeInformationForm.consigneeTel = ''
@@ -843,21 +834,19 @@
exchangeInformationForm.courierCompany = ''
exchangeInformationForm.courierOrderId = ''
}
if (exchangeInformationForm.region && exchangeInformationForm.region.length !== 0) {
exchangeInformationForm.region = exchangeInformationForm.region.join('')
}
let searchFormList = { ...exchangeInformationForm }
for (let key in searchFormList) {
if (searchFormList[key]) {
params[key] = searchFormList[key]
}
}
BaseService.post('887', searchFormList).then((res: any) => {
if (res && res.statusCode === 0) {
BaseService.post('/iaw/issue/order/replaceGoodsFill', params).then((res: any) => {
if (res && res.statusCode === 0) {
exchangeInformationDialog.value = false
ElMessage.success(res.message)
getList() //页面数据刷新
} else {
ElMessage.error(res.message)
}
})
} else {
ElMessage.error(res.message)
}

Loading…
取消
儲存