添加新字段 解决无法编辑

master
2358328281@qq.com 4 days ago
parent 2187eb2cfb
commit 531c4388d4

@ -162,6 +162,8 @@ export default {
createTime: 'Created At', createTime: 'Created At',
colorTag: 'Color Tag', colorTag: 'Color Tag',
currentPassword: 'Current Password', currentPassword: 'Current Password',
feedbackchannel: 'Feedback Channel',
createat: 'Submit Time',
}, },
// Form placeholder // Form placeholder
placeholder: { placeholder: {
@ -170,6 +172,8 @@ export default {
dept: 'Enter department', dept: 'Enter department',
name: 'Enter submitter name', name: 'Enter submitter name',
type: 'Select service type', type: 'Select service type',
feedbackchannel: 'Select feedback channel',
createat: 'Select submit time',
hospital: 'Enter hospital name', hospital: 'Enter hospital name',
contactPerson: 'Enter contact person', contactPerson: 'Enter contact person',
contactDept: 'Enter contact department', contactDept: 'Enter contact department',
@ -240,6 +244,7 @@ export default {
status: 'Status', status: 'Status',
time: 'Submit Time', time: 'Submit Time',
submitter: 'Submitter', submitter: 'Submitter',
feedbackchannel: 'Feedback Channel',
action: 'Action', action: 'Action',
hospital: 'Hospital', hospital: 'Hospital',
handler: 'Handler', handler: 'Handler',

@ -164,6 +164,8 @@ export default {
createTime: "创建时间", createTime: "创建时间",
colorTag: "颜色标签", colorTag: "颜色标签",
currentPassword: "当前密码", currentPassword: "当前密码",
feedbackchannel: "反馈渠道",
createat: "提交时间",
}, },
// 表单 placeholder // 表单 placeholder
placeholder: { placeholder: {
@ -172,6 +174,8 @@ export default {
dept: "请输入提出科室", dept: "请输入提出科室",
name: "请输入提出人员", name: "请输入提出人员",
type: "请选择服务类型", type: "请选择服务类型",
feedbackchannel: "请选择反馈渠道",
createat: "请选择提交时间",
hospital: "请输入医院名称", hospital: "请输入医院名称",
contactPerson: "请输入联系人", contactPerson: "请输入联系人",
contactDept: "请输入联系科室", contactDept: "请输入联系科室",
@ -242,6 +246,7 @@ export default {
status: "状态", status: "状态",
time: "提交时间", time: "提交时间",
submitter: "提交人", submitter: "提交人",
feedbackchannel: "反馈渠道",
action: "操作", action: "操作",
hospital: "医院名称", hospital: "医院名称",
handler: "处理人", handler: "处理人",

@ -162,6 +162,8 @@ export default {
createTime: '創建時間', createTime: '創建時間',
colorTag: '顏色標籤', colorTag: '顏色標籤',
currentPassword: '當前密碼', currentPassword: '當前密碼',
feedbackchannel: '反饋渠道',
createat: '提交時間',
}, },
// 表单 placeholder // 表单 placeholder
placeholder: { placeholder: {
@ -170,6 +172,8 @@ export default {
dept: '請輸入提出科室', dept: '請輸入提出科室',
name: '請輸入提出人員', name: '請輸入提出人員',
type: '請選擇服務類型', type: '請選擇服務類型',
feedbackchannel: '請選擇反饋渠道',
createat: '請選擇提交時間',
hospital: '請輸入醫院名稱', hospital: '請輸入醫院名稱',
contactPerson: '請輸入聯繫人', contactPerson: '請輸入聯繫人',
contactDept: '請輸入聯繫科室', contactDept: '請輸入聯繫科室',
@ -240,6 +244,7 @@ export default {
status: '狀態', status: '狀態',
time: '提交時間', time: '提交時間',
submitter: '提交人', submitter: '提交人',
feedbackchannel: '反饋渠道',
action: '操作', action: '操作',
hospital: '醫院名稱', hospital: '醫院名稱',
handler: '處理人', handler: '處理人',

@ -151,6 +151,7 @@ const formRef = ref();
const isEdit = computed(() => !!route.params.id); const isEdit = computed(() => !!route.params.id);
//
const form = reactive({ const form = reactive({
name: "", name: "",
customerCategory: "", customerCategory: "",
@ -164,6 +165,7 @@ const form = reactive({
maintenanceEnd: "", maintenanceEnd: "",
managerId: undefined, managerId: undefined,
remark: "", remark: "",
attachmentPath: "",
}); });
const rules = { const rules = {
@ -203,8 +205,17 @@ const managerOptions = ref([]);
const reportFileList = ref([]); const reportFileList = ref([]);
// limit
// attachmentPath
const handleReportExceed = (files) => { const handleReportExceed = (files) => {
reportFileList.value = files.slice(-1); reportFileList.value = files.slice(-1);
form.attachmentPath = "";
};
// / \
const getAttachmentFileName = (path) => {
if (!path) return "";
return String(path).replace(/\\/g, "/").split("/").pop() || "";
}; };
const buildHospitalFormData = () => { const buildHospitalFormData = () => {
@ -213,10 +224,15 @@ const buildHospitalFormData = () => {
if (value === undefined || value === null || value === "") return; if (value === undefined || value === null || value === "") return;
fd.append(key, value); fd.append(key, value);
}); });
const file = (reportFileList.value || []) // el-upload / file-list
.map((f) => f.raw) // item UploadFile raw File
.filter(Boolean)[0]; // item File el-upload File
// raw size files
const item = (reportFileList.value || [])[0];
if (item) {
const file = item.raw || (typeof item.size === "number" ? item : null);
if (file) fd.append("files", file); if (file) fd.append("files", file);
}
return fd; return fd;
}; };
@ -235,6 +251,18 @@ const loadDetail = async () => {
try { try {
const data = await getAdminHospitalDetail(route.params.id); const data = await getAdminHospitalDetail(route.params.id);
Object.assign(form, data); Object.assign(form, data);
// "" file-list
// 便
const fileName = getAttachmentFileName(data?.attachmentPath);
if (fileName) {
reportFileList.value = [
{
uid: `attachment-${route.params.id}`,
name: fileName,
status: "success",
},
];
}
} finally { } finally {
loading.value = false; loading.value = false;
} }
@ -243,7 +271,9 @@ const loadDetail = async () => {
const submit = async () => { const submit = async () => {
await formRef.value.validate(async (valid) => { await formRef.value.validate(async (valid) => {
if (!valid) return; if (!valid) return;
if (!reportFileList.value?.length) { // """/" file-list
const keepOriginal = isEdit.value && !!form.attachmentPath;
if (!reportFileList.value?.length && !keepOriginal) {
ElMessage.warning($t("label.acceptanceReport")); ElMessage.warning($t("label.acceptanceReport"));
return; return;
} }

@ -148,6 +148,12 @@
prop="serviceType" prop="serviceType"
width="120" width="120"
/> />
<el-table-column
:label="$t('table.dept')"
prop="department"
min-width="120"
show-overflow-tooltip
/>
<el-table-column <el-table-column
:label="$t('table.submitter')" :label="$t('table.submitter')"
prop="submitter" prop="submitter"
@ -155,9 +161,9 @@
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column <el-table-column
:label="$t('table.dept')" :label="$t('table.feedbackchannel')"
prop="department" prop="feedbackChannel"
min-width="120" min-width="100"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column <el-table-column
@ -300,13 +306,33 @@
<el-option label="其他" value="其他" /> <el-option label="其他" value="其他" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('label.priority')" prop="priority"> <el-form-item label-width="0">
<div class="inline-row">
<el-form-item :label="$t('label.priority')" prop="priority" class="inline-item">
<el-radio-group v-model="quickForm.priority"> <el-radio-group v-model="quickForm.priority">
<el-radio-button label="高"></el-radio-button> <el-radio-button label="高"></el-radio-button>
<el-radio-button label="中"></el-radio-button> <el-radio-button label="中"></el-radio-button>
<el-radio-button label="低"></el-radio-button> <el-radio-button label="低"></el-radio-button>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item :label="$t('label.feedbackchannel')" prop="feedbackchannel" class="inline-item">
<el-select
v-model="quickForm.feedbackchannel"
:placeholder="$t('placeholder.feedbackchannel')"
clearable
style="width: 160px"
>
<el-option label="微信群" value="微信群" />
<el-option label="微信" value="微信" />
<el-option label="电话" value="电话" />
<el-option label="现场" value="现场" />
<el-option label="钉钉群" value="钉钉群" />
<el-option label="钉钉" value="钉钉" />
<el-option label="其他" value="其他" />
</el-select>
</el-form-item>
</div>
</el-form-item>
<el-form-item :label="$t('label.dept')" prop="department"> <el-form-item :label="$t('label.dept')" prop="department">
<el-input <el-input
v-model="quickForm.department" v-model="quickForm.department"
@ -319,6 +345,16 @@
:placeholder="$t('placeholder.name')" :placeholder="$t('placeholder.name')"
/> />
</el-form-item> </el-form-item>
<el-form-item :label="$t('label.createat')" prop="createat">
<el-date-picker
v-model="quickForm.createat"
type="datetime"
:placeholder="$t('placeholder.createat')"
value-format="YYYY-MM-DD HH:mm:ss"
format="YYYY-MM-DD HH:mm:ss"
style="width: 100%"
/>
</el-form-item>
<el-form-item :label="$t('label.description')" prop="description"> <el-form-item :label="$t('label.description')" prop="description">
<div class="rich-editor"> <div class="rich-editor">
<Toolbar <Toolbar
@ -553,12 +589,16 @@ const quickForm = reactive({
title: "", title: "",
serviceType: "", serviceType: "",
priority: "中", priority: "中",
feedbackchannel: "",
department: "", department: "",
colorTag: "#667eea", colorTag: "#667eea",
description: "", description: "",
submitter: "", submitter: "",
createat: "",
files: [], files: [],
}); });
//
const nowDatetime = () => dayjs().format("YYYY-MM-DD HH:mm:ss");
const MAX_FILE_SIZE = 50 * 1024 * 1024; const MAX_FILE_SIZE = 50 * 1024 * 1024;
// base64 HTML // base64 HTML
const MAX_PASTE_IMAGE_SIZE = 5 * 1024 * 1024; const MAX_PASTE_IMAGE_SIZE = 5 * 1024 * 1024;
@ -747,16 +787,20 @@ const resetQuickForm = () => {
title: "", title: "",
serviceType: "", serviceType: "",
priority: "中", priority: "中",
feedbackchannel: "",
department: "", department: "",
colorTag: "#667eea", colorTag: "#667eea",
description: "", description: "",
submitter: "", submitter: "",
createat: "",
files: [], files: [],
}); });
quickFormRef.value?.clearValidate(); quickFormRef.value?.clearValidate();
}; };
const openQuick = () => { const openQuick = () => {
//
quickForm.createat = nowDatetime();
quickVisible.value = true; quickVisible.value = true;
}; };
@ -849,6 +893,21 @@ onBeforeUnmount(() => {
.title-row .el-input { .title-row .el-input {
flex: 1; flex: 1;
} }
// +
.inline-row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0 24px;
width: 100%;
}
.inline-row .inline-item {
margin-bottom: 0 !important;
}
.inline-row .inline-item :deep(.el-form-item__content) {
display: flex;
align-items: center;
}
.color-tag-picker { .color-tag-picker {
position: relative; position: relative;
flex-shrink: 0; flex-shrink: 0;

Loading…
Cancel
Save