|
|
@@ -13,62 +13,50 @@
|
|
|
|
|
|
<div class="mb-1">
|
|
|
<el-form
|
|
|
- :model="queryParams"
|
|
|
ref="queryFormRef"
|
|
|
+ :model="queryParams"
|
|
|
:inline="true"
|
|
|
@submit.prevent
|
|
|
class="bg-white dark:bg-[#1d1e1f] rounded-lg shadow px-8 pt-4 flex items-center flex-wrap min-w-0">
|
|
|
- <el-form-item label="事故类型" prop="accidentType">
|
|
|
- <el-select
|
|
|
- style="width: 150px"
|
|
|
- v-model="queryParams.accidentType"
|
|
|
- placeholder="请选择事故类型"
|
|
|
- clearable>
|
|
|
- <el-option
|
|
|
- v-for="dict in getStrDictOptions(DICT_TYPE.ACCIDENT_CASE_TYPE)"
|
|
|
- :key="dict.value"
|
|
|
- :label="dict.label"
|
|
|
- :value="dict.value" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="事故等级" prop="accidentGrade">
|
|
|
+ <el-form-item label="类型" prop="type">
|
|
|
<el-select
|
|
|
style="width: 150px"
|
|
|
- v-model="queryParams.accidentGrade"
|
|
|
- placeholder="请选择事故等级"
|
|
|
+ v-model="queryParams.type"
|
|
|
+ placeholder="请选择类型"
|
|
|
clearable>
|
|
|
<el-option
|
|
|
- v-for="dict in getStrDictOptions(DICT_TYPE.ACCIDENT_CASE_GRADE)"
|
|
|
+ v-for="dict in getStrDictOptions(DICT_TYPE.QHSE_LAW_TYPE)"
|
|
|
:key="dict.value"
|
|
|
:label="dict.label"
|
|
|
:value="dict.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="现场负责人" prop="siteSupervisor">
|
|
|
+ <el-form-item label="法规名称" prop="name">
|
|
|
<el-input
|
|
|
- v-model="queryParams.siteSupervisor"
|
|
|
- placeholder="请输入现场负责人"
|
|
|
+ v-model="queryParams.name"
|
|
|
+ placeholder="请输入法规名称"
|
|
|
clearable
|
|
|
- class="!w-150px" />
|
|
|
+ class="!w-220px" />
|
|
|
</el-form-item>
|
|
|
+
|
|
|
<el-form-item>
|
|
|
- <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" />搜索</el-button>
|
|
|
- <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" />重置</el-button>
|
|
|
+ <el-button @click="handleQuery"> <Icon icon="ep:search" class="mr-5px" />搜索 </el-button>
|
|
|
+ <el-button @click="resetQuery"> <Icon icon="ep:refresh" class="mr-5px" />重置 </el-button>
|
|
|
<el-button
|
|
|
type="primary"
|
|
|
plain
|
|
|
@click="openForm('create')"
|
|
|
- v-hasPermi="['rq:qhse-accident-case:create']"
|
|
|
- ><Icon icon="ep:plus" class="mr-5px" />新增</el-button
|
|
|
- >
|
|
|
+ v-hasPermi="['rq:qhse-law:create']">
|
|
|
+ <Icon icon="ep:plus" class="mr-5px" />新增
|
|
|
+ </el-button>
|
|
|
<el-button
|
|
|
type="success"
|
|
|
plain
|
|
|
:loading="exportLoading"
|
|
|
@click="handleExport"
|
|
|
- v-hasPermi="['rq:qhse-accident-case:export']"
|
|
|
- ><Icon icon="ep:download" class="mr-5px" />导出</el-button
|
|
|
- >
|
|
|
+ v-hasPermi="['rq:qhse-law:export']">
|
|
|
+ <Icon icon="ep:download" class="mr-5px" />导出
|
|
|
+ </el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
@@ -85,54 +73,69 @@
|
|
|
{{ scope.$index + 1 }}
|
|
|
</template>
|
|
|
</zm-table-column>
|
|
|
- <zm-table-column label="事故时间" align="center" prop="accidentTime" width="170">
|
|
|
- <template #default="{ row }">
|
|
|
- {{ formatDateTime(row.accidentTime) }}
|
|
|
- </template>
|
|
|
- </zm-table-column>
|
|
|
- <zm-table-column label="现场负责人" align="center" prop="siteSupervisor" />
|
|
|
- <zm-table-column label="事故类型" align="center" prop="accidentType">
|
|
|
+
|
|
|
+ <zm-table-column
|
|
|
+ label="名称"
|
|
|
+ prop="name"
|
|
|
+ min-width="180"
|
|
|
+ align="center"
|
|
|
+ show-overflow-tooltip />
|
|
|
+ <zm-table-column label="类型" prop="type" min-width="110" align="center">
|
|
|
<template #default="scope">
|
|
|
- <dict-tag :type="DICT_TYPE.ACCIDENT_CASE_TYPE" :value="scope.row.accidentType" />
|
|
|
+ <dict-tag :type="DICT_TYPE.QHSE_LAW_TYPE" :value="scope.row.type" />
|
|
|
</template>
|
|
|
</zm-table-column>
|
|
|
- <zm-table-column label="事故等级" align="center" prop="accidentGrade">
|
|
|
- <template #default="scope">
|
|
|
- <dict-tag
|
|
|
- :type="DICT_TYPE.ACCIDENT_CASE_GRADE"
|
|
|
- :value="scope.row.accidentGrade" />
|
|
|
- </template>
|
|
|
+
|
|
|
+ <zm-table-column label="发布日期" prop="publishDate" min-width="160" align="center">
|
|
|
+ <template #default="{ row }">{{
|
|
|
+ formatDateTime(row.publishDate).substring(0, 10)
|
|
|
+ }}</template>
|
|
|
</zm-table-column>
|
|
|
- <zm-table-column label="附件" align="center" prop="file" min-width="120">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-button
|
|
|
- text
|
|
|
- v-if="row.file"
|
|
|
- type="primary"
|
|
|
- size="small"
|
|
|
- @click="viewFile(row.file)"
|
|
|
- >查看</el-button
|
|
|
- >
|
|
|
- <span v-else>-</span>
|
|
|
- </template>
|
|
|
+ <zm-table-column label="生效日期" prop="effectiveDate" min-width="160" align="center">
|
|
|
+ <template #default="{ row }">{{
|
|
|
+ formatDateTime(row.effectiveDate).substring(0, 10)
|
|
|
+ }}</template>
|
|
|
</zm-table-column>
|
|
|
- <zm-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
|
|
|
+
|
|
|
+ <zm-table-column label="最新修订日期" prop="newDate" min-width="160" align="center">
|
|
|
+ <template #default="{ row }">{{
|
|
|
+ formatDateTime(row.newDate).substring(0, 10)
|
|
|
+ }}</template>
|
|
|
+ </zm-table-column>
|
|
|
+ <zm-table-column label="发布部门" prop="publishDept" min-width="140" align="center" />
|
|
|
+ <zm-table-column label="文件编号" prop="fileNo" min-width="140" align="center" />
|
|
|
+ <!-- <zm-table-column label="部门" prop="deptName" min-width="120" align="center">
|
|
|
+ <template #default="{ row }">{{ row.deptName || row.deptId || '-' }}</template>
|
|
|
+ </zm-table-column> -->
|
|
|
+
|
|
|
+ <zm-table-column
|
|
|
+ label="适用条款"
|
|
|
+ prop="applicableTerm"
|
|
|
+ min-width="180"
|
|
|
+ align="center"
|
|
|
+ show-overflow-tooltip />
|
|
|
+ <zm-table-column
|
|
|
+ label="备注"
|
|
|
+ prop="remark"
|
|
|
+ min-width="160"
|
|
|
+ align="center"
|
|
|
+ show-overflow-tooltip />
|
|
|
<zm-table-column label="操作" align="center" fixed="right" min-width="140" action>
|
|
|
<template #default="scope">
|
|
|
<el-button
|
|
|
link
|
|
|
type="primary"
|
|
|
@click="openForm('update', scope.row.id)"
|
|
|
- v-hasPermi="['rq:qhse-accident-case:update']"
|
|
|
- >编辑</el-button
|
|
|
- >
|
|
|
+ v-hasPermi="['rq:qhse-law:update']">
|
|
|
+ 编辑
|
|
|
+ </el-button>
|
|
|
<el-button
|
|
|
link
|
|
|
type="danger"
|
|
|
@click="handleDelete(scope.row.id)"
|
|
|
- v-hasPermi="['rq:qhse-accident-case:delete']"
|
|
|
- >删除</el-button
|
|
|
- >
|
|
|
+ v-hasPermi="['rq:qhse-law:delete']">
|
|
|
+ 删除
|
|
|
+ </el-button>
|
|
|
</template>
|
|
|
</zm-table-column>
|
|
|
</zm-table>
|
|
|
@@ -153,97 +156,107 @@
|
|
|
<Dialog
|
|
|
:title="dialogTitle"
|
|
|
v-model="dialogVisible"
|
|
|
- width="600px"
|
|
|
+ width="760px"
|
|
|
destroy-on-close
|
|
|
@close="closeDialog">
|
|
|
<el-form
|
|
|
ref="formRef"
|
|
|
:model="formData"
|
|
|
- label-width="90px"
|
|
|
+ label-width="110px"
|
|
|
:rules="formRules"
|
|
|
v-loading="formLoading">
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="事故时间" prop="accidentTime">
|
|
|
- <el-date-picker
|
|
|
- v-model="formData.accidentTime"
|
|
|
- type="datetime"
|
|
|
- value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
- placeholder="请选择事故时间"
|
|
|
- style="width: 100%" />
|
|
|
+ <el-form-item label="类型" prop="type">
|
|
|
+ <el-select v-model="formData.type" placeholder="请选择类型" clearable>
|
|
|
+ <el-option
|
|
|
+ v-for="dict in getStrDictOptions(DICT_TYPE.QHSE_LAW_TYPE)"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value" />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="现场负责人" prop="siteSupervisor">
|
|
|
- <el-input v-model="formData.siteSupervisor" placeholder="请输入现场负责人" />
|
|
|
+ <el-form-item label="法规名称" prop="name">
|
|
|
+ <el-input v-model="formData.name" placeholder="请输入法规名称" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="事故类型" prop="accidentType">
|
|
|
- <el-select v-model="formData.accidentType" placeholder="请选择事故类型" clearable>
|
|
|
- <el-option
|
|
|
- v-for="dict in getStrDictOptions(DICT_TYPE.ACCIDENT_CASE_TYPE)"
|
|
|
- :key="dict.value"
|
|
|
- :label="dict.label"
|
|
|
- :value="dict.value" />
|
|
|
- </el-select>
|
|
|
+ <el-form-item label="发布日期" prop="publishDate">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="formData.publishDate"
|
|
|
+ type="date"
|
|
|
+ value-format="x"
|
|
|
+ placeholder="请选择发布日期"
|
|
|
+ style="width: 100%" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="事故等级" prop="accidentGrade">
|
|
|
- <el-select v-model="formData.accidentGrade" placeholder="请选择事故等级" clearable>
|
|
|
- <el-option
|
|
|
- v-for="dict in getStrDictOptions(DICT_TYPE.ACCIDENT_CASE_GRADE)"
|
|
|
- :key="dict.value"
|
|
|
- :label="dict.label"
|
|
|
- :value="dict.value" />
|
|
|
- </el-select>
|
|
|
+ <el-form-item label="生效日期" prop="effectiveDate">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="formData.effectiveDate"
|
|
|
+ type="date"
|
|
|
+ value-format="x"
|
|
|
+ placeholder="请选择生效日期"
|
|
|
+ style="width: 100%" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="24">
|
|
|
- <el-form-item label="附件" prop="file">
|
|
|
- <UploadFile
|
|
|
- v-model="formData.file"
|
|
|
- :file-type="['doc', 'docx', 'pdf', 'jpg', 'png', 'jpeg', 'xls', 'xlsx', 'bmp']"
|
|
|
- :limit="5"
|
|
|
- :file-size="100" />
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="最新修订日期" prop="newDate">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="formData.newDate"
|
|
|
+ type="date"
|
|
|
+ value-format="x"
|
|
|
+ placeholder="请选择最新修订日期"
|
|
|
+ style="width: 100%" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="文件编号" prop="fileNo">
|
|
|
+ <el-input v-model="formData.fileNo" placeholder="请输入文件编号" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="24">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="发布部门" prop="publishDept">
|
|
|
+ <el-input v-model="formData.publishDept" placeholder="请输入发布部门" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
<el-form-item label="部门" prop="deptId">
|
|
|
<el-tree-select
|
|
|
- clearable
|
|
|
v-model="formData.deptId"
|
|
|
:data="deptList2"
|
|
|
:props="defaultProps"
|
|
|
:check-strictly="false"
|
|
|
node-key="id"
|
|
|
filterable
|
|
|
- placeholder="请选择所在部门" />
|
|
|
+ clearable
|
|
|
+ placeholder="请选择部门"
|
|
|
+ class="w-full" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="24">
|
|
|
- <el-form-item label="备注" prop="remark">
|
|
|
- <el-input
|
|
|
- type="textarea"
|
|
|
- :rows="4"
|
|
|
- v-model="formData.remark"
|
|
|
- placeholder="请输入备注" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
+ <el-form-item label="适用条款" prop="applicableTerm">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.applicableTerm"
|
|
|
+ type="textarea"
|
|
|
+ :rows="3"
|
|
|
+ placeholder="请输入适用条款" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="备注" prop="remark">
|
|
|
+ <el-input v-model="formData.remark" type="textarea" :rows="3" placeholder="请输入备注" />
|
|
|
+ </el-form-item>
|
|
|
</el-form>
|
|
|
|
|
|
<template #footer>
|
|
|
@@ -251,42 +264,22 @@
|
|
|
<el-button @click="dialogVisible = false">取消</el-button>
|
|
|
</template>
|
|
|
</Dialog>
|
|
|
-
|
|
|
- <Dialog title="附件" v-model="dialogFileView" width="500px">
|
|
|
- <div
|
|
|
- v-for="(item, index) in fileList"
|
|
|
- :key="index"
|
|
|
- class="mt-4 flex items-center justify-between gap-4">
|
|
|
- <span class="truncate">{{ extractFileName(item) }}</span>
|
|
|
- <div class="flex gap-2">
|
|
|
- <el-button type="primary" text @click="viewFileInfo(item)">查看</el-button>
|
|
|
- <el-button type="primary" text @click="downloadFile(item)">下载</el-button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <template #footer>
|
|
|
- <div class="dialog-footer mt-6">
|
|
|
- <el-button type="primary" @click="dialogFileView = false">确认</el-button>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </Dialog>
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
import { onMounted, reactive, ref } from 'vue'
|
|
|
import { useI18n } from 'vue-i18n'
|
|
|
import { formatDate } from '@/utils/formatTime'
|
|
|
-import UploadFile from '@/components/UploadFile/src/UploadFile.vue'
|
|
|
import { IndustryStandardApi } from '@/api/pms/qhse/index'
|
|
|
import { useUserStore } from '@/store/modules/user'
|
|
|
-import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
|
|
|
-const deptList2 = ref<Tree[]>([]) // 树形结构
|
|
|
import { defaultProps } from '@/utils/tree'
|
|
|
import * as DeptApi from '@/api/system/dept'
|
|
|
-defineOptions({ name: 'QhseAccidentCase' })
|
|
|
+import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
|
|
|
+
|
|
|
+defineOptions({ name: 'QhseIndustryStandard' })
|
|
|
|
|
|
const rootDeptId = 156
|
|
|
const deptId = useUserStore().getUser.deptId || rootDeptId
|
|
|
-
|
|
|
const message = useMessage()
|
|
|
const { t } = useI18n()
|
|
|
|
|
|
@@ -294,11 +287,10 @@ const loading = ref(false)
|
|
|
const exportLoading = ref(false)
|
|
|
const dialogVisible = ref(false)
|
|
|
const dialogTitle = ref('')
|
|
|
-const dialogFileView = ref(false)
|
|
|
const formLoading = ref(false)
|
|
|
const list = ref<any[]>([])
|
|
|
const total = ref(0)
|
|
|
-const fileList = ref<string[]>([])
|
|
|
+const deptList2 = ref<Tree[]>([])
|
|
|
const formType = ref<'create' | 'update'>('create')
|
|
|
const formRef = ref()
|
|
|
const queryFormRef = ref()
|
|
|
@@ -306,31 +298,36 @@ const queryFormRef = ref()
|
|
|
const queryParams = reactive({
|
|
|
pageNo: 1,
|
|
|
pageSize: 10,
|
|
|
- accidentType: undefined,
|
|
|
- accidentGrade: undefined,
|
|
|
- siteSupervisor: undefined,
|
|
|
+ type: undefined,
|
|
|
+ name: undefined,
|
|
|
+ publishDept: undefined,
|
|
|
deptId: undefined
|
|
|
})
|
|
|
|
|
|
const createDefaultForm = () => ({
|
|
|
id: undefined,
|
|
|
- accidentTime: '',
|
|
|
- siteSupervisor: '',
|
|
|
- accidentType: '',
|
|
|
- accidentGrade: '',
|
|
|
+ type: '',
|
|
|
+ name: '',
|
|
|
+ publishDate: '',
|
|
|
+ effectiveDate: '',
|
|
|
+ publishDept: '',
|
|
|
+ fileNo: '',
|
|
|
deptId: undefined,
|
|
|
- file: '',
|
|
|
+ newDate: '',
|
|
|
+ applicableTerm: '',
|
|
|
remark: ''
|
|
|
})
|
|
|
|
|
|
const formData = ref(createDefaultForm())
|
|
|
|
|
|
const formRules = {
|
|
|
- accidentTime: [{ required: true, message: '请选择事故时间', trigger: 'change' }],
|
|
|
- siteSupervisor: [{ required: true, message: '请输入现场负责人', trigger: 'blur' }],
|
|
|
- accidentType: [{ required: true, message: '请输入事故类型', trigger: 'blur' }],
|
|
|
- accidentGrade: [{ required: true, message: '请输入事故等级', trigger: 'blur' }],
|
|
|
- deptId: [{ required: true, message: '请选择部门', trigger: 'change' }]
|
|
|
+ type: [{ required: true, message: '请输入类型', trigger: 'blur' }],
|
|
|
+ name: [{ required: true, message: '请输入法规名称', trigger: 'blur' }],
|
|
|
+ publishDate: [{ required: true, message: '请选择发布日期', trigger: 'change' }],
|
|
|
+ publishDept: [{ required: true, message: '请输入发布部门', trigger: 'blur' }],
|
|
|
+ fileNo: [{ required: true, message: '请输入文件编号', trigger: 'blur' }],
|
|
|
+ deptId: [{ required: true, message: '请选择部门', trigger: 'change' }],
|
|
|
+ effectiveDate: [{ required: true, message: '请选择生效日期', trigger: 'change' }]
|
|
|
}
|
|
|
|
|
|
const formatDateTime = (value: string | number) => {
|
|
|
@@ -348,7 +345,7 @@ const getList = async () => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-const handleDeptNodeClick = async (row) => {
|
|
|
+const handleDeptNodeClick = (row) => {
|
|
|
queryParams.deptId = row.id
|
|
|
queryParams.pageNo = 1
|
|
|
getList()
|
|
|
@@ -361,16 +358,16 @@ const handleQuery = () => {
|
|
|
|
|
|
const resetQuery = () => {
|
|
|
queryParams.pageNo = 1
|
|
|
- queryParams.accidentType = undefined
|
|
|
- queryParams.accidentGrade = undefined
|
|
|
- queryParams.siteSupervisor = undefined
|
|
|
+ queryParams.type = undefined
|
|
|
+ queryParams.name = undefined
|
|
|
+ queryParams.publishDept = undefined
|
|
|
queryFormRef.value?.resetFields()
|
|
|
getList()
|
|
|
}
|
|
|
|
|
|
const openForm = async (type: 'create' | 'update', id?: number) => {
|
|
|
formType.value = type
|
|
|
- dialogTitle.value = type === 'create' ? '新增事故案例' : '编辑事故案例'
|
|
|
+ dialogTitle.value = type === 'create' ? '新增行业标准' : '编辑行业标准'
|
|
|
if (type === 'create') {
|
|
|
formData.value = createDefaultForm()
|
|
|
dialogVisible.value = true
|
|
|
@@ -381,14 +378,8 @@ const openForm = async (type: 'create' | 'update', id?: number) => {
|
|
|
try {
|
|
|
const data = await IndustryStandardApi.getIndustryStandard(id!)
|
|
|
formData.value = {
|
|
|
- id: data.id,
|
|
|
- accidentTime: data.accidentTime,
|
|
|
- siteSupervisor: data.siteSupervisor,
|
|
|
- accidentType: data.accidentType,
|
|
|
- accidentGrade: data.accidentGrade,
|
|
|
- file: data.file || '',
|
|
|
- remark: data.remark || '',
|
|
|
- deptId: data.deptId
|
|
|
+ ...createDefaultForm(),
|
|
|
+ ...data
|
|
|
}
|
|
|
dialogVisible.value = true
|
|
|
} finally {
|
|
|
@@ -397,7 +388,6 @@ const openForm = async (type: 'create' | 'update', id?: number) => {
|
|
|
}
|
|
|
|
|
|
const closeDialog = () => {
|
|
|
- dialogVisible.value = false
|
|
|
formRef.value?.resetFields()
|
|
|
}
|
|
|
|
|
|
@@ -439,44 +429,8 @@ const handleExport = async () => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-const viewFile = (file: string) => {
|
|
|
- fileList.value = file ? file.split(',') : []
|
|
|
- dialogFileView.value = true
|
|
|
-}
|
|
|
-
|
|
|
-const extractFileName = (url: string) => {
|
|
|
- try {
|
|
|
- const cleanUrl = url.split('?')[0].split('#')[0]
|
|
|
- return decodeURIComponent(cleanUrl.split('/').pop() || url)
|
|
|
- } catch {
|
|
|
- return url
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-const viewFileInfo = (file: string) => {
|
|
|
- window.open(
|
|
|
- 'http://doc.deepoil.cc:8012/onlinePreview?url=' + encodeURIComponent(Base64.encode(file))
|
|
|
- )
|
|
|
-}
|
|
|
-
|
|
|
-const downloadFile = async (url: string) => {
|
|
|
- try {
|
|
|
- const response = await fetch(url)
|
|
|
- const blob = await response.blob()
|
|
|
- const downloadUrl = window.URL.createObjectURL(blob)
|
|
|
- const link = document.createElement('a')
|
|
|
- link.href = downloadUrl
|
|
|
- link.download = url.split('/').pop() || '附件'
|
|
|
- link.click()
|
|
|
- URL.revokeObjectURL(downloadUrl)
|
|
|
- } catch (error) {
|
|
|
- console.error(error)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
onMounted(async () => {
|
|
|
getList()
|
|
|
-
|
|
|
deptList2.value = await DeptApi.getSimpleDeptList()
|
|
|
})
|
|
|
</script>
|