UPDATE: 1、优化
This commit is contained in:
@@ -577,7 +577,11 @@ const importClick = () => {
|
||||
|
||||
// 点击导出按钮
|
||||
const exportClick = () => {
|
||||
ElMessageBox.confirm('确认导出检测计划?', '温馨提示', { type: 'warning' }).then(() => {
|
||||
ElMessageBox.confirm('确认导出检测计划?', '温馨提示', {
|
||||
type: 'warning',
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消'
|
||||
}).then(() => {
|
||||
useDownload(
|
||||
exportPlan,
|
||||
'检测计划导出数据',
|
||||
|
||||
@@ -1,28 +1,61 @@
|
||||
<template>
|
||||
<el-dialog class='table-box' v-model='dialogVisible' top='114px'
|
||||
<el-dialog
|
||||
class="table-box"
|
||||
v-model="dialogVisible"
|
||||
top="114px"
|
||||
:style="{ height: height + 'px', maxHeight: height + 'px', overflow: 'hidden' }"
|
||||
title='字典数据'
|
||||
:width='width'
|
||||
:modal='false'>
|
||||
<div class='table-box' :style="{height:(height-64)+'px',maxHeight:(height-64)+'px',overflow:'hidden'}">
|
||||
<ProTable ref='proTable' :columns="columns" :request-api='getDictDataListByTypeId' :initParam="initParam">
|
||||
title="字典数据"
|
||||
:width="width"
|
||||
:modal="false"
|
||||
>
|
||||
<div
|
||||
class="table-box"
|
||||
:style="{ height: height - 64 + 'px', maxHeight: height - 64 + 'px', overflow: 'hidden' }"
|
||||
>
|
||||
<ProTable ref="proTable" :columns="columns" :request-api="getDictDataListByTypeId" :initParam="initParam">
|
||||
<template #tableHeader="scope">
|
||||
<el-button v-auth.dict="'show_add'" type="primary" :icon="CirclePlus" @click="openDialog('add')">新增</el-button>
|
||||
<el-button v-auth.dict="'show_export'" type='primary' :icon='Download' plain @click="downloadFile">导出</el-button>
|
||||
<el-button v-auth.dict="'show_delete'" type="danger" :icon="Delete" plain :disabled="!scope.isSelected"
|
||||
@click="batchDelete(scope.selectedListIds)">
|
||||
<el-button v-auth.dict="'show_add'" type="primary" :icon="CirclePlus" @click="openDialog('add')">
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-auth.dict="'show_export'" type="primary" :icon="Download" plain @click="downloadFile">
|
||||
导出
|
||||
</el-button>
|
||||
<el-button
|
||||
v-auth.dict="'show_delete'"
|
||||
type="danger"
|
||||
:icon="Delete"
|
||||
plain
|
||||
:disabled="!scope.isSelected"
|
||||
@click="batchDelete(scope.selectedListIds)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
|
||||
<template #operation="scope">
|
||||
<el-button v-auth.dict="'show_edit'" type="primary" link :icon="EditPen" @click="openDialog('edit', scope.row)">编辑</el-button>
|
||||
<el-button v-auth.dict="'show_delete'" type="primary" link :icon="Delete" @click="handleDelete(scope.row)">删除</el-button>
|
||||
<el-button
|
||||
v-auth.dict="'show_edit'"
|
||||
type="primary"
|
||||
link
|
||||
:icon="EditPen"
|
||||
@click="openDialog('edit', scope.row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-auth.dict="'show_delete'"
|
||||
type="primary"
|
||||
link
|
||||
:icon="Delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</ProTable>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<DataPopup :refresh-table='proTable?.getTableList' ref='dataPopup'/>
|
||||
<DataPopup :refresh-table="proTable?.getTableList" ref="dataPopup" />
|
||||
</template>
|
||||
|
||||
<script setup lang="tsx" name="dictData">
|
||||
@@ -30,10 +63,9 @@ import {CirclePlus, Delete, Download, EditPen} from '@element-plus/icons-vue'
|
||||
import { type Dict } from '@/api/system/dictionary/interface'
|
||||
import { ColumnProps, ProTableInstance } from '@/components/ProTable/interface'
|
||||
import { useHandleData } from '@/hooks/useHandleData'
|
||||
import {deleteDictData, getDictDataListByTypeId, exportDictData} from "@/api/system/dictionary/dictData/index";
|
||||
import {useDownload} from "@/hooks/useDownload";
|
||||
import {exportDictType} from "@/api/system/dictionary/dictType";
|
||||
import { isShallow } from 'vue';
|
||||
import { deleteDictData, exportDictData, getDictDataListByTypeId } from '@/api/system/dictionary/dictData/index'
|
||||
import { useDownload } from '@/hooks/useDownload'
|
||||
|
||||
defineOptions({
|
||||
name: 'dict'
|
||||
})
|
||||
@@ -43,7 +75,6 @@ const dialogVisible = ref(false)
|
||||
const dictTypeId = ref('')
|
||||
const dictTypeName = ref('')
|
||||
|
||||
|
||||
const initParam = reactive({ typeId: '' })
|
||||
|
||||
const dataPopup = ref()
|
||||
@@ -51,12 +82,12 @@ const dataPopup = ref()
|
||||
const props = defineProps({
|
||||
width: {
|
||||
type: Number,
|
||||
default: 800,
|
||||
default: 800
|
||||
},
|
||||
height: {
|
||||
type: Number,
|
||||
default: 744,
|
||||
},
|
||||
default: 744
|
||||
}
|
||||
})
|
||||
|
||||
const columns = reactive<ColumnProps<Dict.ResDictData>[]>([
|
||||
@@ -82,11 +113,11 @@ const columns = reactive<ColumnProps<Dict.ResDictData>[]>([
|
||||
prop: 'value',
|
||||
label: '值',
|
||||
minWidth: 180,
|
||||
render: (scope) => {
|
||||
render: scope => {
|
||||
if (scope.row.openValue === 0 || scope.row.value === null || scope.row.value === '') {
|
||||
return <span>/</span>; // 使用 JSX 返回 VNode
|
||||
return <span>/</span> // 使用 JSX 返回 VNode
|
||||
}
|
||||
return <span>{scope.row.value}</span>; // 使用 JSX 返回 VNode
|
||||
return <span>{scope.row.value}</span> // 使用 JSX 返回 VNode
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -98,9 +129,9 @@ const columns = reactive<ColumnProps<Dict.ResDictData>[]>([
|
||||
return (
|
||||
<>
|
||||
{
|
||||
(<el-tag type={scope.row.level === 0 ? 'info' : scope.row.level === 1 ? 'warning' : 'danger'}>
|
||||
<el-tag type={scope.row.level === 0 ? 'info' : scope.row.level === 1 ? 'warning' : 'danger'}>
|
||||
{scope.row.level === 0 ? '普通' : scope.row.level === 1 ? '中等' : '严重'}
|
||||
</el-tag>)
|
||||
</el-tag>
|
||||
}
|
||||
</>
|
||||
)
|
||||
@@ -116,7 +147,7 @@ const columns = reactive<ColumnProps<Dict.ResDictData>[]>([
|
||||
label: '操作',
|
||||
fixed: 'right',
|
||||
width: 200
|
||||
},
|
||||
}
|
||||
])
|
||||
|
||||
const open = (row: Dict.ResDictType) => {
|
||||
@@ -147,8 +178,17 @@ const handleDelete = async (params: Dict.ResDictData) => {
|
||||
}
|
||||
|
||||
const downloadFile = async () => {
|
||||
ElMessageBox.confirm('确认导出字典数据?', '温馨提示', {type: 'warning'}).then(() =>
|
||||
useDownload(exportDictData, '字典数据导出数据', {typeId: dictTypeId.value, ...(proTable.value?.searchParam)}, false),
|
||||
ElMessageBox.confirm('确认导出字典数据?', '温馨提示', {
|
||||
type: 'warning',
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消'
|
||||
}).then(() =>
|
||||
useDownload(
|
||||
exportDictData,
|
||||
'字典数据导出数据',
|
||||
{ typeId: dictTypeId.value, ...proTable.value?.searchParam },
|
||||
false
|
||||
)
|
||||
)
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -1,31 +1,49 @@
|
||||
<template>
|
||||
<div class='table-box' ref='popupBaseView'>
|
||||
<ProTable
|
||||
ref='proTable'
|
||||
:columns='columns'
|
||||
:request-api='getDictTypeList'
|
||||
<div class="table-box" ref="popupBaseView">
|
||||
<ProTable ref="proTable" :columns="columns" :request-api="getDictTypeList">
|
||||
<template #tableHeader="scope">
|
||||
<el-button v-auth.dict="'add'" type="primary" :icon="CirclePlus" @click="openDialog('add')">
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-auth.dict="'export'" type="primary" :icon="Download" plain @click="downloadFile()">
|
||||
导出
|
||||
</el-button>
|
||||
<el-button
|
||||
v-auth.dict="'delete'"
|
||||
type="danger"
|
||||
:icon="Delete"
|
||||
plain
|
||||
:disabled="!scope.isSelected"
|
||||
@click="batchDelete(scope.selectedListIds)"
|
||||
>
|
||||
<template #tableHeader='scope'>
|
||||
<el-button v-auth.dict="'add'" type='primary' :icon='CirclePlus' @click="openDialog('add')">新增</el-button>
|
||||
<el-button v-auth.dict="'export'" type='primary' :icon='Download' plain @click='downloadFile()'>导出</el-button>
|
||||
<el-button v-auth.dict="'delete'" type='danger' :icon='Delete' plain :disabled='!scope.isSelected'
|
||||
@click='batchDelete(scope.selectedListIds)'>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
|
||||
<template #operation='scope'>
|
||||
<el-button v-auth.dict="'show'" type='primary' link :icon='View' @click='toDictData(scope.row)'>查看</el-button>
|
||||
<el-button v-auth.dict="'edit'" type='primary' link :icon='EditPen' @click="openDialog('edit', scope.row)">编辑</el-button>
|
||||
<el-button v-auth.dict="'delete'" type='primary' link :icon='Delete' @click='handleDelete(scope.row)'>删除</el-button>
|
||||
<template #operation="scope">
|
||||
<el-button v-auth.dict="'show'" type="primary" link :icon="View" @click="toDictData(scope.row)">
|
||||
查看
|
||||
</el-button>
|
||||
<el-button
|
||||
v-auth.dict="'edit'"
|
||||
type="primary"
|
||||
link
|
||||
:icon="EditPen"
|
||||
@click="openDialog('edit', scope.row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-auth.dict="'delete'" type="primary" link :icon="Delete" @click="handleDelete(scope.row)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</ProTable>
|
||||
</div>
|
||||
<DictData :width='viewWidth' :height='viewHeight' ref='openView' />
|
||||
<TypePopup :refresh-table='proTable?.getTableList' ref='typePopup' />
|
||||
<DictData :width="viewWidth" :height="viewHeight" ref="openView" />
|
||||
<TypePopup :refresh-table="proTable?.getTableList" ref="typePopup" />
|
||||
</template>
|
||||
|
||||
<script setup lang='tsx' name='dict'>
|
||||
<script setup lang="tsx" name="dict">
|
||||
import { CirclePlus, Delete, Download, EditPen, View } from '@element-plus/icons-vue'
|
||||
import { type Dict } from '@/api/system/dictionary/interface'
|
||||
import type { ColumnProps, ProTableInstance } from '@/components/ProTable/interface'
|
||||
@@ -33,8 +51,9 @@ import DictData from '@/views/system/dictionary/dictData/index.vue'
|
||||
import { useHandleData } from '@/hooks/useHandleData'
|
||||
import { useViewSize } from '@/hooks/useViewSize'
|
||||
import { useDownload } from '@/hooks/useDownload'
|
||||
import { deleteDictType, getDictTypeList, exportDictType } from '@/api/system/dictionary/dictType'
|
||||
import { deleteDictType, exportDictType, getDictTypeList } from '@/api/system/dictionary/dictType'
|
||||
import { reactive, ref } from 'vue'
|
||||
|
||||
defineOptions({
|
||||
name: 'dict'
|
||||
})
|
||||
@@ -52,47 +71,45 @@ const columns = reactive<ColumnProps<Dict.ResDictType>[]>([
|
||||
label: '类型名称',
|
||||
minWidth: 180,
|
||||
search: {
|
||||
el: 'input',
|
||||
},
|
||||
el: 'input'
|
||||
}
|
||||
},
|
||||
{
|
||||
prop: 'code',
|
||||
label: '类型编码',
|
||||
minWidth: 220,
|
||||
search: {
|
||||
el: 'input',
|
||||
},
|
||||
el: 'input'
|
||||
}
|
||||
},
|
||||
{
|
||||
prop: 'remark',
|
||||
label: '描述',
|
||||
minWidth: 250,
|
||||
minWidth: 250
|
||||
},
|
||||
{
|
||||
prop: 'sort',
|
||||
label: '排序',
|
||||
minWidth: 70,
|
||||
minWidth: 70
|
||||
},
|
||||
{
|
||||
prop: 'createTime',
|
||||
label: '创建时间',
|
||||
minWidth: 180,
|
||||
minWidth: 180
|
||||
},
|
||||
{
|
||||
prop: 'operation',
|
||||
label: '操作',
|
||||
fixed: 'right',
|
||||
width: 250,
|
||||
},
|
||||
width: 250
|
||||
}
|
||||
])
|
||||
|
||||
|
||||
// 打开 drawer(新增、编辑)
|
||||
const openDialog = (titleType: string, row: Partial<Dict.ResDictType> = {}) => {
|
||||
typePopup.value?.open(titleType, row)
|
||||
}
|
||||
|
||||
|
||||
// 批量删除字典类型
|
||||
const batchDelete = async (id: string[]) => {
|
||||
await useHandleData(deleteDictType, id, '删除所选字典类型')
|
||||
@@ -113,8 +130,10 @@ const toDictData = (row: Dict.ResDictType) => {
|
||||
|
||||
// 导出字典类型列表
|
||||
const downloadFile = async () => {
|
||||
ElMessageBox.confirm('确认导出字典类型数据?', '温馨提示', { type: 'warning' }).then(() =>
|
||||
useDownload(exportDictType, '字典类型导出数据', proTable.value?.searchParam, false),
|
||||
)
|
||||
ElMessageBox.confirm('确认导出字典类型数据?', '温馨提示', {
|
||||
type: 'warning',
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消'
|
||||
}).then(() => useDownload(exportDictType, '字典类型导出数据', proTable.value?.searchParam, false))
|
||||
}
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user