@@ -132,6 +154,22 @@
+
+
+
+ {{ getAttachmentName(file, index) }}
+
+ 暂无附件
+
+
+
@@ -287,6 +325,7 @@ const total = ref(0)
const title = ref('')
const personList = ref([])
const healthRecordList = ref([])
+const attachmentFileTypes = ['jpg', 'jpeg', 'png', 'pdf', 'doc', 'docx', 'xls', 'xlsx']
const detailOpen = ref(false)
const openDetail = ref(false)
@@ -395,8 +434,41 @@ const handleOperate = (operate, row) => {
const { queryParams, form, formDetail, rules, queryPersonParams, queryMedicineParams, queryHealthRecordParams, rulesDetail } = toRefs(data)
+function parseAttachments(attachment) {
+ if (!attachment) {
+ return []
+ }
+ return String(attachment)
+ .split(',')
+ .map((item) => item.trim())
+ .filter(Boolean)
+}
+
+function getAttachmentUrl(file) {
+ if (!file) {
+ return ''
+ }
+ if (/^(https?:)?\/\//.test(file) || file.startsWith('/') || file.startsWith('blob:') || file.startsWith('data:')) {
+ return file
+ }
+ return `/${file}`
+}
+
+function getAttachmentName(file, index) {
+ const purePath = String(file || '').split('?')[0]
+ const name = purePath.slice(purePath.lastIndexOf('/') + 1)
+ if (!name) {
+ return `附件${index + 1}`
+ }
+ try {
+ return decodeURIComponent(name)
+ } catch {
+ return name
+ }
+}
+
const handlePersonChange = (personId) => {
- queryHealthRecordParams.personId = personId
+ queryHealthRecordParams.value.personId = personId
listHealthRecord(queryHealthRecordParams).then((response) => {
healthRecordList.value = response.rows
if (response.rows.length > 0) {
@@ -405,7 +477,7 @@ const handlePersonChange = (personId) => {
})
}
const handleQueryPersonChange = (personId) => {
- queryHealthRecordParams.personId = personId
+ queryHealthRecordParams.value.personId = personId
queryParams.value.healthRecordId = null
listHealthRecord(queryHealthRecordParams).then((response) => {
healthRecordList.value = response.rows
@@ -780,7 +852,8 @@ function reset() {
personId: null,
totalCost: 0,
partner: null,
- costDetail: null
+ costDetail: null,
+ attachment: null
}
proxy.resetForm('doctorRecordRef')
}
@@ -825,7 +898,7 @@ function handleSelectionChange(selection) {
// 查看
const handleView = (row) => {
title.value = '查看就医记录'
- queryHealthRecordParams.personId = row.personId
+ queryHealthRecordParams.value.personId = row.personId
listHealthRecord(queryHealthRecordParams).then((response) => {
healthRecordList.value = response.rows
})
@@ -839,7 +912,7 @@ function handleAdd() {
form.value.visitingTime = dayjs(new Date().getTime()).format('YYYY-MM-DD HH:mm:ss')
if (personList.value.length > 0) {
form.value.personId = personList.value[0].id
- queryHealthRecordParams.personId = personList.value[0].id
+ queryHealthRecordParams.value.personId = personList.value[0].id
listHealthRecord(queryHealthRecordParams).then((response) => {
healthRecordList.value = response.rows
if (response.rows.length > 0) {
@@ -854,7 +927,7 @@ function handleAdd() {
/** 修改按钮操作 */
function handleUpdate(row) {
reset()
- queryHealthRecordParams.personId = row.personId
+ queryHealthRecordParams.value.personId = row.personId
listHealthRecord(queryHealthRecordParams).then((response) => {
healthRecordList.value = response.rows
})
@@ -916,3 +989,23 @@ function handleExport() {
getList()
getPersonList()
+
+
diff --git a/src/views/health/medicineBasic/index.vue b/src/views/health/medicineBasic/index.vue
index 82c2ca3..bdf7aa6 100644
--- a/src/views/health/medicineBasic/index.vue
+++ b/src/views/health/medicineBasic/index.vue
@@ -79,6 +79,28 @@
+
+
+
+
+ 查看{{ parseAttachments(scope.row.attachment).length }}个
+
+
+
+ {{ getAttachmentName(file, index) }}
+
+
+
+ 无
+
+
@@ -190,6 +212,22 @@
+
+
+
+ {{ getAttachmentName(file, index) }}
+
+ 暂无附件
+
+
+
@@ -229,6 +267,7 @@ const single = ref(true)
const multiple = ref(true)
const total = ref(0)
const title = ref('')
+const attachmentFileTypes = ['jpg', 'jpeg', 'png', 'pdf', 'doc', 'docx', 'xls', 'xlsx']
const operateList = ref([
{ id: 'view', icon: 'View', title: '查看', hasPermi: ['health:medicineBasic:query'] },
{ id: 'edit', icon: 'Edit', title: '修改', hasPermi: ['health:medicineBasic:edit'] },
@@ -289,6 +328,39 @@ const handleOperate = (operate, row) => {
const { queryParams, form, rules } = toRefs(data)
+function parseAttachments(attachment) {
+ if (!attachment) {
+ return []
+ }
+ return String(attachment)
+ .split(',')
+ .map((item) => item.trim())
+ .filter(Boolean)
+}
+
+function getAttachmentUrl(file) {
+ if (!file) {
+ return ''
+ }
+ if (/^(https?:)?\/\//.test(file) || file.startsWith('/') || file.startsWith('blob:') || file.startsWith('data:')) {
+ return file
+ }
+ return `/${file}`
+}
+
+function getAttachmentName(file, index) {
+ const purePath = String(file || '').split('?')[0]
+ const name = purePath.slice(purePath.lastIndexOf('/') + 1)
+ if (!name) {
+ return `附件${index + 1}`
+ }
+ try {
+ return decodeURIComponent(name)
+ } catch {
+ return name
+ }
+}
+
/** 查询药品基础信息列表 */
function getList() {
loading.value = true
@@ -347,7 +419,8 @@ function reset() {
contentUnit: null,
character: null,
storage: null,
- indications: null
+ indications: null,
+ attachment: null
}
proxy.resetForm('medicineBasicRef')
}
@@ -463,3 +536,23 @@ function handleExport() {
getList()
+
+
diff --git a/src/views/system/feedback/index.vue b/src/views/system/feedback/index.vue
new file mode 100644
index 0000000..eae72a2
--- /dev/null
+++ b/src/views/system/feedback/index.vue
@@ -0,0 +1,379 @@
+
+
+
+
查询条件
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
反馈列表
+
+ 标记已处理
+ 删除
+ 导出
+
+
+
+
+
+
+
+
+
+ {{ scope.row.content }}
+
+
+
+
+
+
+ 无
+
+
+
+
+
+ {{ statusText(scope.row.status) }}
+
+
+
+
+
+ {{ parseTime(scope.row.createTime) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ detailForm.feedbackType }}
+
+ {{ statusText(detailForm.status) }}
+
+ {{ detailForm.contact || '未填写' }}
+ {{ detailForm.source || '-' }}
+ {{ detailForm.createBy || '-' }}
+ {{ parseTime(detailForm.createTime) }}
+
+ {{ detailForm.content }}
+
+
+
+
+
+ 无
+
+ {{ detailForm.replyContent || '暂无回复' }}
+ {{ detailForm.replyBy || '-' }}
+ {{ parseTime(detailForm.replyTime) || '-' }}
+ {{ detailForm.remark || '-' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+