This commit is contained in:
Leo_Ding 2025-11-12 14:32:13 +08:00
commit 09f0c040e8
8 changed files with 76 additions and 63 deletions

View File

@ -397,23 +397,22 @@ function handleDelete({ id }) {
content: t('button.confirm'), content: t('button.confirm'),
okText: t('button.confirm'), okText: t('button.confirm'),
onOk: () => { onOk: () => {
return new Promise((resolve, reject) => { return new Promise(async (resolve, reject) => {
; (async () => { try {
try { const res = await apis.serviceStaffList.delItem(id);
const { success } = await apis.productOrder.delItem(id).catch(() => { if (config('http.code.success') === res.success) {
throw new Error() message.success(t('component.message.success.delete'));
}) await getPageList();
if (config('http.code.success') === success) { resolve();
resolve() } else {
message.success(t('component.message.success.delete')) reject(new Error('API returned failure'));
await getPageList()
}
} catch (error) {
reject()
} }
})() } catch (error) {
}) message.error(t('component.message.error.delete'));
}, reject(error);
}
});
}
}) })
} }

View File

@ -83,7 +83,7 @@ formRules.value = {
} }
onMounted(() => { onMounted(() => {
// //
userStore.logout() userStore.logout()
getCaptcha() getCaptcha()

View File

@ -119,14 +119,21 @@ function handleOk() {
break break
} }
hideLoading() hideLoading()
if (config('http.code.success') === true) {
//
if (result && config('http.code.success') === result.success) {
hideModal() hideModal()
//
emit('ok') emit('ok')
//
message.success('操作成功')
} else {
message.error('操作失败')
} }
} catch (error) { } catch (error) {
console.log(error.message) console.log(error.message)
hideLoading() hideLoading()
// message.error(error.message) message.error('操作失败')
} }
}) })
.catch(() => { .catch(() => {

View File

@ -363,7 +363,7 @@
<edit-dialog ref="editDialogRef" @ok="onOk"></edit-dialog> <edit-dialog ref="editDialogRef" @ok="onOk"></edit-dialog>
<detail ref="detailRef"></detail> <detail ref="detailRef"></detail>
<LineOrder2 ref="lineOrderRef" /> <LineOrder2 ref="lineOrderRef" />
<TransferOut ref="transferRef" /> <TransferOut ref="transferRef" @ok="onOk" />
<!-- <a-drawer v-model:open="lineOpen" class="custom-class" width="600" root-class-name="root-class-name" :root-style="{ color: 'blue' }" :title="lineTitle" placement="right"> <!-- <a-drawer v-model:open="lineOpen" class="custom-class" width="600" root-class-name="root-class-name" :root-style="{ color: 'blue' }" :title="lineTitle" placement="right">
<LineOrder ref="lineOrderRef" /> <LineOrder ref="lineOrderRef" />
</a-drawer> --> </a-drawer> -->

View File

@ -24,7 +24,7 @@
<a-col v-bind="colSpan"> <a-col v-bind="colSpan">
<a-form-item label="等级" name="level"> <a-form-item label="等级" name="level">
<a-select v-model:value="searchFormData.orgLv"> <a-select v-model:value="searchFormData.orgLv">
<a-select-option v-for="item in dicsStore.dictOptions.level" :key="item.dval" <a-select-option v-for="item in dicsStore.dictOptions.Level" :key="item.dval"
:value="item.dval"> :value="item.dval">
{{ item.introduction }} {{ item.introduction }}
</a-select-option> </a-select-option>
@ -263,37 +263,38 @@ function handleDetail(record) {
// / // /
function handleToggleStatus(record) { function handleToggleStatus(record) {
const isEnable = record.status !== '2'; // console.log("==record===", record);
const actionText = isEnable ? '启用' : '停用';
const confirmText = isEnable ? '确定要启用该组织吗?' : '确定要停用该组织吗?';
Modal.confirm({ const isCurrentlyEnabled = record.status === '1'; // '1'=, '2'=
title: `${actionText}组织`,
content: confirmText,
okText: '确定',
cancelText: '取消',
okType: isEnable ? 'primary' : 'danger',
onOk: async () => {
try {
// id + { status: '1' '2' }
const { success } = await apis.serviceMenu.enableOrDisable(
record.id,
{ status: isEnable ? '1' : '2' }
);
if (success) { const actionText = isCurrentlyEnabled ? '停用' : '启用';
message.success(`${actionText}成功`); const confirmText = `确定要${actionText}该组织吗?`;
// const newStatus = isCurrentlyEnabled ? '2' : '1'; //
getList()
} else { Modal.confirm({
message.error(`${actionText}失败`); title: `${actionText}组织`,
} content: confirmText,
} catch (error) { okText: '确定',
console.error('操作异常:', error); cancelText: '取消',
message.error('操作失败'); okType: isCurrentlyEnabled ? 'danger' : 'primary', //
} onOk: async () => {
try {
const { success } = await apis.serviceMenu.enableOrDisable(record.id, {
status: newStatus,
});
if (success) {
message.success(`${actionText}成功`);
getList(); //
} else {
message.error(`${actionText}失败`);
} }
}); } catch (error) {
console.error('操作异常:', error);
message.error('操作失败');
}
},
});
} }
// //

View File

@ -118,13 +118,14 @@
<a-card class="mb-4" title="服务信息" style="margin-top: 20px"> <a-card class="mb-4" title="服务信息" style="margin-top: 20px">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="12"> <a-col :span="12">
<a-form-item label="营业时间" name="openTime"> <a-form-item label="营业开始时间" name="openAt" required>
<div style="display: flex; gap: 8px"> <a-time-picker v-model:value="formData.openAt" format="HH:mm" placeholder="开始时间" :disabled="isViewMode" />
<a-time-picker v-model:value="formData.openTime" format="HH:mm" placeholder="开始时间" </a-form-item>
:disabled="isViewMode" /> </a-col>
<a-time-picker v-model:value="formData.closeTime" format="HH:mm" placeholder="结束时间" <a-col :span="12">
:disabled="isViewMode" /> <a-form-item label="营业结束时间" name="closeAt" required>
</div> <a-time-picker v-model:value="formData.closeAt" format="HH:mm" placeholder="结束时间"
:disabled="isViewMode" />
</a-form-item> </a-form-item>
</a-col> </a-col>
@ -198,11 +199,14 @@ import { useDicsStore } from '@/store'
import AreaCascader from '@/components/AreaCascader/index.vue' import AreaCascader from '@/components/AreaCascader/index.vue'
import UploadInput from '@/components/Upload/UploadInput.vue' import UploadInput from '@/components/Upload/UploadInput.vue'
import { getBirthDate, spliceUrl } from '@/utils/util' import { getBirthDate, spliceUrl } from '@/utils/util'
import dayjs from 'dayjs'
import { config } from '@/config'
const emit = defineEmits(['ok']) const emit = defineEmits(['ok'])
const { t } = useI18n() const { t } = useI18n()
const { modal, showModal, hideModal } = useModal() const { modal, showModal, hideModal } = useModal()
const { formData, formRef, resetForm } = useForm() const { formData, formRef, resetForm } = useForm()
// //
const initFormData = () => ({ const initFormData = () => ({
id: undefined, id: undefined,
@ -240,6 +244,8 @@ const rules = {
code: [{ required: true, message: '请输入机构代码', trigger: 'blur' }], code: [{ required: true, message: '请输入机构代码', trigger: 'blur' }],
type: [{ required: true, message: '请选择站点类型', trigger: 'change' }], type: [{ required: true, message: '请选择站点类型', trigger: 'change' }],
manager: [{ required: true, message: '请输入负责人姓名', trigger: 'blur' }], manager: [{ required: true, message: '请输入负责人姓名', trigger: 'blur' }],
openAt: [{ required: true, message: '请选择营业开始时间', trigger: 'change' }],
closeAt: [{ required: true, message: '请选择营业结束时间', trigger: 'change' }],
phone: [ phone: [
{ required: true, message: '请输入联系电话', trigger: 'blur' }, { required: true, message: '请输入联系电话', trigger: 'blur' },
{ pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' }, { pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' },
@ -337,8 +343,8 @@ async function loadRecord(id, forView = false) {
buildTime: record.completionAt ? dayjs(record.completionAt) : null, buildTime: record.completionAt ? dayjs(record.completionAt) : null,
area: record.area || 0, area: record.area || 0,
description: record.content || '', description: record.content || '',
openTime: record.openAt ? dayjs(`1970-01-01 ${record.openAt}`) : null, openAt: record.openAt ? dayjs(`1970-01-01 ${record.openAt}`) : null,
closeTime: record.closeAt ? dayjs(`1970-01-01 ${record.closeAt}`) : null, closeAt: record.closeAt ? dayjs(`1970-01-01 ${record.closeAt}`) : null,
status: record.status || '', status: record.status || '',
services: record.provideServices || [], services: record.provideServices || [],
@ -388,8 +394,8 @@ async function handleOk() {
CompletionAt: values.buildTime ? values.buildTime.toDate() : null, CompletionAt: values.buildTime ? values.buildTime.toDate() : null,
Area: values.area || 0, Area: values.area || 0,
Content: values.description || '', Content: values.description || '',
OpenAt: values.openTime ? values.openTime.format('HH:mm') : '', OpenAt: values.openAt ? values.openAt.format('HH:mm') : '',
CloseAt: values.closeTime ? values.closeTime.format('HH:mm') : '', CloseAt: values.closeAt ? values.closeAt.format('HH:mm') : '',
Status: '1', Status: '1',
ProvideServices: values.services?.length ? values.services : null, ProvideServices: values.services?.length ? values.services : null,
QualificationAttachment: values.qualificationFiles?.map(f => f.url || f.response?.url) || null, QualificationAttachment: values.qualificationFiles?.map(f => f.url || f.response?.url) || null,

View File

@ -88,7 +88,7 @@
</x-search-bar> </x-search-bar>
<a-row :gutter="8" :wrap="false"> <a-row :gutter="8" :wrap="false">
<a-col flex="auto"> <a-col flex="auto">
<a-card title="服务人员列表"> <a-card title="回访记录列表">
<div style="margin-bottom: 20px;"> <div style="margin-bottom: 20px;">
<a-space> <a-space>
<!-- <a-button type="primary" @click="$refs.editDialogRef.handleCreate(record)">新建</a-button> --> <!-- <a-button type="primary" @click="$refs.editDialogRef.handleCreate(record)">新建</a-button> -->

View File

@ -102,7 +102,7 @@
</a-collapse> </a-collapse>
<!-- 操作按钮 --> <!-- 操作按钮 -->
<a-row :gutter="gutter" style="margin-top: 16px;"> <a-row :gutter="gutter" style="margin-top: 26px;">
<a-col :span="24" style="text-align: right;"> <a-col :span="24" style="text-align: right;">
<a-space> <a-space>
<a-button @click="handleResetSearch">{{ $t('button.reset') }}</a-button> <a-button @click="handleResetSearch">{{ $t('button.reset') }}</a-button>
@ -126,7 +126,7 @@
<a-row :gutter="8" :wrap="false" style="margin-top: 20px;"> <a-row :gutter="8" :wrap="false" style="margin-top: 20px;">
<a-col flex="auto"> <a-col flex="auto">
<a-card title="回访列表"> <a-card title="待派单列表">
<div style="margin-bottom: 20px;"> <div style="margin-bottom: 20px;">
<a-space> <a-space>
<a-button type="primary">导入</a-button> <a-button type="primary">导入</a-button>