84 lines
2.3 KiB
Plaintext
84 lines
2.3 KiB
Plaintext
<template>
|
||
<el-drawer title="${functionName}详情" v-model="visible" direction="rtl" size="60%" append-to-body :before-close="handleClose" class="detail-drawer">
|
||
<div v-loading="loading" class="drawer-content">
|
||
<h4 class="section-header">基本信息</h4>
|
||
#set($i = 0)
|
||
#foreach($column in $columns)
|
||
#if(!$column.pk && $column.list)
|
||
#set($dictType=$column.dictType)
|
||
#set($javaField=$column.javaField)
|
||
#set($parentheseIndex=$column.columnComment.indexOf("("))
|
||
#if($parentheseIndex != -1)
|
||
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
|
||
#else
|
||
#set($comment=$column.columnComment)
|
||
#end
|
||
#if($i % 2 == 0)
|
||
<el-row :gutter="20" class="mb8">
|
||
#end
|
||
<el-col :span="12">
|
||
<div class="info-item">
|
||
<label class="info-label">${comment}:</label>
|
||
<span class="info-value plaintext">
|
||
#if("" != $dictType)
|
||
#if($column.htmlType == "checkbox")
|
||
<dict-tag :options="${dictType}" :value="info.${javaField} ? info.${javaField}.split(',') : []" />
|
||
#else
|
||
<dict-tag :options="${dictType}" :value="info.${javaField}" />
|
||
#end
|
||
#elseif($column.htmlType == "datetime")
|
||
{{ parseTime(info.${javaField}, '{y}-{m}-{d}') }}
|
||
#elseif($column.htmlType == "imageUpload")
|
||
<image-preview :src="info.${javaField}" :width="60" :height="60" />
|
||
#else
|
||
{{ info.${javaField} }}
|
||
#end
|
||
</span>
|
||
</div>
|
||
</el-col>
|
||
#set($i = $i + 1)
|
||
#if($i % 2 == 0)
|
||
</el-row>
|
||
#end
|
||
#end
|
||
#end
|
||
#if($i % 2 != 0)
|
||
</el-row>
|
||
#end
|
||
</div>
|
||
</el-drawer>
|
||
</template>
|
||
|
||
<script setup name="${BusinessName}ViewDrawer">
|
||
import { get${BusinessName} } from '@/api/${moduleName}/${businessName}'
|
||
|
||
#if(${dicts} != '')
|
||
#set($dictsNoSymbol=$dicts.replace("'", ""))
|
||
const { ${dictsNoSymbol} } = useDict(${dicts})
|
||
#end
|
||
|
||
const visible = ref(false)
|
||
const loading = ref(false)
|
||
const info = reactive({})
|
||
|
||
const open = async (${pkColumn.javaField}) => {
|
||
visible.value = true
|
||
loading.value = true
|
||
try {
|
||
const res = await get${BusinessName}(${pkColumn.javaField})
|
||
Object.assign(info, res.data || {})
|
||
} catch (error) {
|
||
console.error('获取${functionName}信息失败:', error)
|
||
} finally {
|
||
loading.value = false
|
||
}
|
||
}
|
||
|
||
function handleClose() {
|
||
visible.value = false
|
||
Object.keys(info).forEach(key => delete info[key])
|
||
}
|
||
|
||
defineExpose({ open })
|
||
</script>
|