修改分发

master
doublekou 1 year ago
parent 96adab6ce1
commit 534537aceb

@ -146,6 +146,10 @@ export interface GeopoliticalCustomersStoreDTO {
storeName: string storeName: string
appointTime: any appointTime: any
} }
interface optionItem {
label: string
value: string
}
interface customStoreEntitiesItem { interface customStoreEntitiesItem {
// createBy: number // createBy: number
// updateBy: number // updateBy: number
@ -154,7 +158,7 @@ interface customStoreEntitiesItem {
// customStoreId: number // customStoreId: number
// storeId: number // storeId: number
// customId: number // customId: number
option?: any option?: Array<optionItem>
//门店id //门店id
customStoreId?: number customStoreId?: number
//预约id //预约id
@ -165,6 +169,8 @@ interface customStoreEntitiesItem {
reservationDate?: Dayjs | string reservationDate?: Dayjs | string
//预约时间 //预约时间
reservationTime: string reservationTime: string
//添加禁用
disabled?: boolean
} }
export interface CustomerDTO { export interface CustomerDTO {
customId?: number | undefined customId?: number | undefined

@ -25,7 +25,9 @@
<template #bodyCell="{ column, record }"> <template #bodyCell="{ column, record }">
<template v-if="column.key === 'operate'"> <template v-if="column.key === 'operate'">
<operation-group> <operation-group>
<a v-if="record.enrollStatus !== 2" @click="handleAudit(record)"></a> <!-- <a v-if="record.enrollStatus !== 2" @click="handleAudit(record)"></a> -->
<a v-if="record.enrollStatus !== 2" @click="handleAudit(record)"></a>
<a v-if="record.enrollStatus !== 2" @click="handleDistribute(record)"></a>
<span v-else>-</span> <span v-else>-</span>
</operation-group> </operation-group>
</template> </template>
@ -87,7 +89,7 @@ const searchTable = (params: GeopoliticalCustomersPageParam) => {
reloadTable(true) // tableRequest reloadTable(true) // tableRequest
} }
// //
const handleAudit = (record: GeopoliticalCustomersRecord) => { const handleAudit = (record: GeopoliticalCustomersRecord) => {
geopoliticalCustomersModalRef.value?.open({ geopoliticalCustomersModalRef.value?.open({
newFormAction: FormAction.UPDATE, newFormAction: FormAction.UPDATE,
@ -95,6 +97,14 @@ const handleAudit = (record: GeopoliticalCustomersRecord) => {
record: record record: record
}) })
} }
//
const handleDistribute = (record: GeopoliticalCustomersRecord) => {
geopoliticalCustomersModalRef.value?.open({
newFormAction: FormAction.UPDATE,
type: 'distribute',
record: record
})
}
const columns: ProColumns[] = [ const columns: ProColumns[] = [
{ {

@ -15,7 +15,7 @@
:rule="formRule" :rule="formRule"
:label-col="{ sm: { span: 24 }, md: { span: 5 } }" :label-col="{ sm: { span: 24 }, md: { span: 5 } }"
:wrapper-col=" :wrapper-col="
title === '详情' || title === '审核' title === '详情' || title === '分发'
? { sm: { span: 24 }, md: { span: 16 } } ? { sm: { span: 24 }, md: { span: 16 } }
: { sm: { span: 24 }, md: { span: 19 } } : { sm: { span: 24 }, md: { span: 19 } }
" "
@ -26,7 +26,7 @@
:rules="[{ required: true, message: '请输入称呼', trigger: 'blur' }]" :rules="[{ required: true, message: '请输入称呼', trigger: 'blur' }]"
:label-col="{ sm: { span: 24 }, md: { span: 5 } }" :label-col="{ sm: { span: 24 }, md: { span: 5 } }"
:wrapper-col=" :wrapper-col="
title === '详情' || title === '审核' title === '详情' || title === '分发'
? { sm: { span: 24 }, md: { span: 9 } } ? { sm: { span: 24 }, md: { span: 9 } }
: { sm: { span: 24 }, md: { span: 11 } } : { sm: { span: 24 }, md: { span: 11 } }
" "
@ -35,7 +35,7 @@
v-model:value="formModel.customName" v-model:value="formModel.customName"
placeholder="请输入称呼" placeholder="请输入称呼"
style="width: 65%" style="width: 65%"
:readonly="title === '详情' || title === '审核'" :readonly="title === '详情' || title === '分发'"
/> />
</a-form-item> </a-form-item>
<a-form-item <a-form-item
@ -51,7 +51,7 @@
]" ]"
:label-col="{ sm: { span: 24 }, md: { span: 5 } }" :label-col="{ sm: { span: 24 }, md: { span: 5 } }"
:wrapper-col=" :wrapper-col="
title === '详情' || title === '审核' title === '详情' || title === '分发'
? { sm: { span: 24 }, md: { span: 9 } } ? { sm: { span: 24 }, md: { span: 9 } }
: { sm: { span: 24 }, md: { span: 11 } } : { sm: { span: 24 }, md: { span: 11 } }
" "
@ -60,7 +60,7 @@
v-model:value="formModel.customNid" v-model:value="formModel.customNid"
placeholder="请输入联系方式" placeholder="请输入联系方式"
style="width: 65%" style="width: 65%"
:readonly="title === '详情' || title === '审核'" :readonly="title === '详情' || title === '分发'"
/> />
</a-form-item> </a-form-item>
<a-row> <a-row>
@ -70,7 +70,7 @@
name="remark" name="remark"
:label-col="{ sm: { span: 24 }, md: { span: 5 } }" :label-col="{ sm: { span: 24 }, md: { span: 5 } }"
:wrapper-col=" :wrapper-col="
title === '详情' || title === '审核' title === '详情' || title === '分发'
? { sm: { span: 24 }, md: { span: 9 } } ? { sm: { span: 24 }, md: { span: 9 } }
: { sm: { span: 24 }, md: { span: 19 } } : { sm: { span: 24 }, md: { span: 19 } }
" "
@ -78,9 +78,8 @@
<a-input <a-input
v-model:value="formModel.remark" v-model:value="formModel.remark"
placeholder="请输入备注" placeholder="请输入备注"
style="width: 100%" :style="{ width: title === '详情' || title === '分发' ? '37%' : '38%' }"
allow-clear :readonly="title === '详情' || title === '分发'"
:readonly="title === '详情' || title === '审核'"
/> />
</a-form-item> </a-form-item>
</a-col> </a-col>
@ -103,7 +102,7 @@
:disabled="isDisabled" :disabled="isDisabled"
:class="dynamicClass" :class="dynamicClass"
class="readonly-cascader" class="readonly-cascader"
:allow-clear="title === '新建预约' || title === '编辑预约'" :allow-clear="title === '新建预约' || title === '编辑预约' || title === '编辑'"
@change="addressChange" @change="addressChange"
/> />
</a-form-item> </a-form-item>
@ -117,7 +116,7 @@
v-model:value="formModel.detailAddress" v-model:value="formModel.detailAddress"
placeholder="请输入小区名称" placeholder="请输入小区名称"
:disabled="title === '编辑预约'" :disabled="title === '编辑预约'"
:readonly="title === '详情' || title === '审核'" :readonly="title === '详情' || title === '分发'"
/> />
</a-form-item> </a-form-item>
</a-col> </a-col>
@ -131,7 +130,7 @@
<a-select <a-select
ref="select" ref="select"
v-model:value="formModel.radius" v-model:value="formModel.radius"
:style="{ width: title === '详情' || title === '审核' ? '37%' : '38%' }" :style="{ width: title === '详情' || title === '分发' ? '37%' : '38%' }"
:options="radiusOptions" :options="radiusOptions"
:field-names="{ label: 'name', value: 'id', options: 'children' }" :field-names="{ label: 'name', value: 'id', options: 'children' }"
:disabled="isDisabled" :disabled="isDisabled"
@ -140,18 +139,21 @@
></a-select> ></a-select>
<div> <div>
<a-button <a-button
v-if="title === '新建预约' || title === '编辑预约'" v-if="title === '新建预约' || title === '编辑预约' || title === '编辑'"
type="primary" type="primary"
@click="match" @click="match"
>匹配</a-button >匹配</a-button
> >
<a-button v-if="title === ''" style="margin-left: 10px" @click="resetForm" <a-button
v-if="title === '新建预约' || title === '编辑'"
style="margin-left: 10px"
@click="resetForm"
>重置</a-button >重置</a-button
> >
</div> </div>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
v-if="title === '新建预约' || title === '编辑预约'" v-if="title === '新建预约' || title === '编辑预约' || title === '编辑'"
style="display: flex; justify-content: center" style="display: flex; justify-content: center"
> >
<!-- 地图 --> <!-- 地图 -->
@ -245,18 +247,18 @@
<div <div
v-for="(item, index) in formModel.customStoreEntities" v-for="(item, index) in formModel.customStoreEntities"
:key="index" :key="index"
style="display: flex; justify-content: space-between" style="display: flex; justify-content: space-between; align-items: center"
> >
<a-form-item <a-form-item
style="width: 45%" style="width: 45%"
label="预约门店名称" label="预约门店名称"
:label-col=" :label-col="
title === '详情' || title === '审核' title === '详情' || title === '分发'
? { sm: { span: 24 }, md: { span: 11 } } ? { sm: { span: 24 }, md: { span: 11 } }
: { sm: { span: 24 }, md: { span: 8 } } : { sm: { span: 24 }, md: { span: 8 } }
" "
:wrapper-col=" :wrapper-col="
title === '详情' || title === '审核' title === '详情' || title === '分发'
? { sm: { span: 24 }, md: { span: 13 } } ? { sm: { span: 24 }, md: { span: 13 } }
: { sm: { span: 24 }, md: { span: 16 } } : { sm: { span: 24 }, md: { span: 16 } }
" "
@ -270,20 +272,20 @@
<a-input <a-input
v-model:value="item.storeName" v-model:value="item.storeName"
placeholder="请输入" placeholder="请输入"
:readonly="title === '详情' || title === '审核'" :readonly="title === '详情' || title === '分发'"
:style="{ width: title === '详情' || title === '审核' ? '103%' : '100%' }" :style="{ width: title === '详情' || title === '分发' ? '103%' : '100%' }"
/> />
</a-form-item> </a-form-item>
<a-form-item <a-form-item
style="width: 30%" style="width: 30%"
label="预约时间" label="预约时间"
:label-col=" :label-col="
title === '详情' || title === '审核' title === '详情' || title === '分发'
? { sm: { span: 24 }, md: { span: 9 } } ? { sm: { span: 24 }, md: { span: 9 } }
: { sm: { span: 24 }, md: { span: 9 } } : { sm: { span: 24 }, md: { span: 9 } }
" "
:wrapper-col=" :wrapper-col="
title === '详情' || title === '审核' title === '详情' || title === '分发'
? { sm: { span: 24 }, md: { span: 15 } } ? { sm: { span: 24 }, md: { span: 15 } }
: { sm: { span: 24 }, md: { span: 15 } } : { sm: { span: 24 }, md: { span: 15 } }
" "
@ -298,7 +300,7 @@
<a-date-picker <a-date-picker
v-model:value="item.reservationDate" v-model:value="item.reservationDate"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
:disabled="title === '详情' || title === '审核'" :disabled="title === '详情' || title === '分发'"
:class="reservationTimeClass" :class="reservationTimeClass"
/> />
</a-space> </a-space>
@ -306,12 +308,12 @@
<a-form-item <a-form-item
style="width: 18%" style="width: 18%"
:label-col=" :label-col="
title === '详情' || title === '审核' title === '详情' || title === '分发'
? { sm: { span: 24 }, md: { span: 0 } } ? { sm: { span: 24 }, md: { span: 0 } }
: { sm: { span: 24 }, md: { span: 0 } } : { sm: { span: 24 }, md: { span: 0 } }
" "
:wrapper-col=" :wrapper-col="
title === '详情' || title === '审核' title === '详情' || title === '分发'
? { sm: { span: 24 }, md: { span: 24 } } ? { sm: { span: 24 }, md: { span: 24 } }
: { sm: { span: 24 }, md: { span: 24 } } : { sm: { span: 24 }, md: { span: 24 } }
" "
@ -326,14 +328,17 @@
<a-select <a-select
ref="select" ref="select"
v-model:value="item.reservationTime" v-model:value="item.reservationTime"
:allow-clear="title === '新建预约' || title === '编辑预约'" :allow-clear="title === '新建预约' || title === '编辑预约' || title === '编辑'"
:options="item.option" :options="item.option"
:class="reservationTimeClass" :class="reservationTimeClass"
:style="{ width: title === '详情' || title === '审核' ? '103%' : '100%' }" :style="{ width: title === '详情' || title === '分发' ? '103%' : '100%' }"
> >
</a-select> </a-select>
</a-space> </a-space>
</a-form-item> </a-form-item>
<a-form-item v-if="title === '新建预约' || title === '编辑预约' || title === '编辑'">
<delete-outlined @click="delReservationStore(item)" />
</a-form-item>
</div> </div>
</div> </div>
</a-form> </a-form>
@ -354,8 +359,16 @@
<a-button v-if="title === ''" type="primary" html-type="submit" @click="visible = false" <a-button v-if="title === ''" type="primary" html-type="submit" @click="visible = false"
>确定</a-button >确定</a-button
> >
<div v-if="title === '审核'"> <div v-if="title === '编辑'">
<a-button @click="retrial"></a-button> <!-- <a-button @click="retrial"></a-button> -->
<a-button @click="handleClose"></a-button>
<a-button type="primary" html-type="submit" style="margin-left: 10px" @click="distribute"
>确定</a-button
>
</div>
<div v-if="title === '分发'">
<!-- <a-button @click="retrial"></a-button> -->
<a-button @click="handleClose"></a-button>
<a-button type="primary" html-type="submit" style="margin-left: 10px" @click="distribute" <a-button type="primary" html-type="submit" style="margin-left: 10px" @click="distribute"
>分发</a-button >分发</a-button
> >
@ -405,14 +418,9 @@ import type { CustomerDTO, GeopoliticalCustomersRecord } from '@/api/geopolitica
// } // }
onMounted(() => { onMounted(() => {
//
time_array.forEach((item: string) => {
appointmentTimeOptions.value?.push({ value: item, label: item })
})
// //
// provincesAndCitiesAndAutonomousOptions.value = provincesAndCitiesAndAutonomousRegions // provincesAndCitiesAndAutonomousOptions.value = provincesAndCitiesAndAutonomousRegions
provincesAndCitiesAndAutonomousOptions.value = window.globalProvincesAndCitiesAndAutonomousRegions provincesAndCitiesAndAutonomousOptions.value = window.globalProvincesAndCitiesAndAutonomousRegions
console.log('provincesAndCitiesAndAutonomousOptions==', provincesAndCitiesAndAutonomousOptions.value)
}) })
/// ///
@ -464,59 +472,7 @@ const radiusChange = (value: SelectValue) => {
// //
const listData: any = ref([]) const listData: any = ref([])
// //()
const appointmentTimeOptions = ref<any>([])
const time_array = [
'0:00~0:30',
'0:30~1:00',
'1:00~1:30',
'1:30~2:00',
'2:00~2:30',
'2:30~3:00',
'3:00~3:30',
'3:30~4:00',
'4:00~4:30',
'4:30~5:00',
'5:00~5:30',
'5:30~6:00',
'6:00~6:30',
'6:30~7:00',
'7:00~7:30',
'7:30~8:00',
'8:00~8:30',
'8:30~9:00',
'9:00~9:30',
'9:30~10:00',
'10:00~10:30',
'10:30~11:00',
'11:00~11:30',
'11:30~12:00',
'12:00~12:30',
'12:30~13:00',
'13:00~13:30',
'13:30~14:00',
'14:00~14:30',
'14:30~15:00',
'15:00~15:30',
'15:30~16:00',
'16:00~16:30',
'16:30~17:00',
'17:00~17:30',
'17:30~18:00',
'18:00~18:30',
'18:30~19:00',
'19:00~19:30',
'19:30~20:00',
'20:00~20:30',
'20:30~21:00',
'21:00~21:30',
'21:30~22:00',
'22:00~22:30',
'22:30~23:00',
'23:00~23:30',
'23:30~0:00'
]
const generateTimeSlots = (tradeStartTime: string, tradeEndTime: string) => { const generateTimeSlots = (tradeStartTime: string, tradeEndTime: string) => {
const startHour = Number(tradeStartTime.split(':')[0]) const startHour = Number(tradeStartTime.split(':')[0])
const startMinute = Number(tradeStartTime.split(':')[1]) const startMinute = Number(tradeStartTime.split(':')[1])
@ -592,16 +548,6 @@ const pagingQuery = () => {
result.data && result.data &&
result.data.forEach((item: any) => { result.data.forEach((item: any) => {
const disabled = ids.includes(Number(item.id)) const disabled = ids.includes(Number(item.id))
// console.log(
// generateTimeSlots(item.tradeStartTime, item.tradeEndTime),
// 'generateTimeSlots(item.tradeStartTime, item.tradeEndTime)'
// )
// generateTimeSlots(item.tradeStartTime, item.tradeEndTime).forEach((i: string) => {
// generateTimeSlots(item.tradeStartTime, item.tradeEndTime).push({
// value: i,
// label: i
// })
// })
listData.value.push({ listData.value.push({
title: item.storeName, title: item.storeName,
description: item.address, description: item.address,
@ -615,7 +561,6 @@ const pagingQuery = () => {
reservationDate: item.reservationDate, reservationDate: item.reservationDate,
option: generateTimeSlots(item.tradeStartTime, item.tradeEndTime) option: generateTimeSlots(item.tradeStartTime, item.tradeEndTime)
}) })
console.log(listData.value, 'listData.value')
}) })
pois.push(...listData.value) pois.push(...listData.value)
// , // ,
@ -727,7 +672,25 @@ const addStore = (item: any) => {
reservationTime: '', reservationTime: '',
storeId: item.id, storeId: item.id,
reservationDate: '', reservationDate: '',
option: item.option option: item.option,
disabled: item.disabled
})
}
//
const delReservationStore = (i: any) => {
console.log(i, 'i')
// console.log(formModel.customStoreEntities, 'formModel.customStoreEntities')
console.log(listData.value, 'listData.value')
listData.value.forEach((item: any) => {
// console.log(i.storeId, 'id')
if (item.id == i.storeId) {
item.disabled = false
}
console.log(item, 'item')
})
formModel.customStoreEntities = formModel.customStoreEntities.filter((item: any) => {
return item.storeId != i.storeId
}) })
} }
// //
@ -810,20 +773,20 @@ const submitOperate = (type: string, status?: number) => {
} }
} }
if (title.value === '新建预约' || title.value === '编辑预约') { if (title.value === '新建预约' || title.value === '编辑预约' || title.value === '编辑') {
const requestFn = title.value === '新建预约' ? addCustomer : updateCustomer const requestFn = title.value === '新建预约' ? addCustomer : updateCustomer
doRequest(requestFn(filteredObj), { doRequest(requestFn(filteredObj), {
onSuccess: handleSuccess onSuccess: handleSuccess
}) })
} else if (title.value === '审核') { } else if (title.value === '分发') {
doRequest(auditCustomer({ customId: formModel.customId, status: status }), { doRequest(auditCustomer({ customId: formModel.customId, status: 1 }), {
onSuccess: handleSuccess onSuccess: handleSuccess
}) })
} }
} }
// //
const handleOk = async () => { const handleOk = async () => {
if (title.value === '审核') { if (title.value === '编辑') {
// //
await submitOperate('cs', 1) await submitOperate('cs', 1)
} else { } else {
@ -927,7 +890,7 @@ const handleClose = () => {
{ required: true, message: '请输入正确的手机号码', pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/ } { required: true, message: '请输入正确的手机号码', pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/ }
] ]
} }
listData.value.length = 0 // listData.value.length = 0
formRef.value?.resetFields() formRef.value?.resetFields()
// resetFields.value() // resetFields.value()
delete formModel.description delete formModel.description
@ -972,6 +935,11 @@ defineExpose({
formModel.detailAddress = detailAddress formModel.detailAddress = detailAddress
formModel.radius = radius formModel.radius = radius
formModel.customStoreEntities.push(...customStoreVOList) formModel.customStoreEntities.push(...customStoreVOList)
formModel.customStoreEntities.forEach((i: any) => {
i.option = generateTimeSlots(i.tradeStartTime, i.tradeEndTime)
})
console.log(formModel.customStoreEntities, 'formModel.customStoreEntities')
} }
const handleMapInit = () => { const handleMapInit = () => {
@ -993,10 +961,16 @@ defineExpose({
reservationTimeisReadOnly.value = true reservationTimeisReadOnly.value = true
title.value = '详情' title.value = '详情'
} else if (opendata.type === 'audit') { } else if (opendata.type === 'audit') {
// isReadOnly.value = true
// reservationTimeisReadOnly.value = true
handleMapInit()
title.value = '编辑'
formModel.description = 1
} else if (opendata.type === 'distribute') {
isReadOnly.value = true isReadOnly.value = true
reservationTimeisReadOnly.value = true reservationTimeisReadOnly.value = true
handleMapInit() handleMapInit()
title.value = '审核' title.value = '分发'
formModel.description = 1 formModel.description = 1
} else { } else {
isDisabled.value = true isDisabled.value = true

@ -22,13 +22,13 @@ import { antdvStyleDeps } from './src/utils/resolvers'
//项目 //项目
// const serverAddress = 'http://admin.ballcat.cn' // const serverAddress = 'http://admin.ballcat.cn'
//xy //xy
// const serverAddress = 'http://172.18.0.225:8000' const serverAddress = 'http://172.18.0.225:8000'
//jt //jt
// const serverAddress = 'http://172.18.1.8:8000' // const serverAddress = 'http://172.18.1.8:8000'
//ts //ts
// const serverAddress = 'http://172.18.0.228:8000' // const serverAddress = 'http://172.18.0.228:8000'
//测试 //测试
const serverAddress = 'http://39.100.77.21:8000' // const serverAddress = 'http://39.100.77.21:8000'
//线上ip //线上ip
// const serverAddress = 'http://175.27.212.74:80' // const serverAddress = 'http://175.27.212.74:80'

Loading…
Cancel
Save