From 5ea049205416e245ecb1ec3d0962e48c5ec73ec3 Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Wed, 28 Jan 2026 09:41:01 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/index.vue | 2
applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue | 37 +++++----
applications/task-work-order/src/views/orderView/organizational/agenciesManagement/index.vue | 2
applications/task-work-order/src/views/orderView/orderDataManage/evaluate/index.vue | 2
applications/drone-command/src/styles/common/cockpit.scss | 4 +
applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/index.vue | 4
applications/drone-command/src/views/permissionManage/permissionUser/FormDiaLog.vue | 84 ---------------------
applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/index.vue | 2
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue | 45 ++++++++--
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue | 5
applications/task-work-order/src/views/orderView/organizational/zoningManagement/index.vue | 2
applications/drone-command/src/views/permissionManage/permissionDept/index.vue | 12 --
applications/task-work-order/env/.env | 3
applications/drone-command/src/views/permissionManage/permissionDept/FormDiaLog.vue | 20 -----
14 files changed, 73 insertions(+), 151 deletions(-)
diff --git a/applications/drone-command/src/styles/common/cockpit.scss b/applications/drone-command/src/styles/common/cockpit.scss
index 7891aa5..7837a9f 100644
--- a/applications/drone-command/src/styles/common/cockpit.scss
+++ b/applications/drone-command/src/styles/common/cockpit.scss
@@ -563,6 +563,10 @@
}
}
+ .el-select__wrapper.is-disabled .el-select__selected-item {
+ color: #a8abb2;
+ }
+
.el-select {
--el-select-border-color-hover: rgb(0, 162, 255) !important;
}
diff --git a/applications/drone-command/src/views/permissionManage/permissionDept/FormDiaLog.vue b/applications/drone-command/src/views/permissionManage/permissionDept/FormDiaLog.vue
index 37310d6..d983ceb 100644
--- a/applications/drone-command/src/views/permissionManage/permissionDept/FormDiaLog.vue
+++ b/applications/drone-command/src/views/permissionManage/permissionDept/FormDiaLog.vue
@@ -28,10 +28,6 @@
<div class="val">{{ formData.areaName || '-' }}</div>
</el-col>
<el-col :span="12">
- <div class="label">部署模式</div>
- <div class="val">{{ deploymentModeLabel(formData.deploymentMode) }}</div>
- </el-col>
- <el-col :span="12">
<div class="label">排序</div>
<div class="val">{{ formData.sort }}</div>
</el-col>
@@ -98,14 +94,6 @@
/>
</el-form-item>
</el-col>
- <el-col :span="12">
- <el-form-item label="部署模式" prop="deploymentMode">
- <el-radio-group v-model="formData.deploymentMode" class="command-radio-group">
- <el-radio :label="0">统一部署</el-radio>
- <el-radio :label="1">独立部署</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input class="command-input" v-model="formData.remark" type="textarea" :rows="3" placeholder="请输入" clearable />
@@ -141,7 +129,6 @@
deptNature: null,
areaCode: [],
areaName: '',
- deploymentMode: 0,
sort: 0,
remark: '',
})
@@ -207,14 +194,7 @@
deptCategory: fieldRules(true),
deptNature: fieldRules(true),
areaCode: fieldRules(true),
- deploymentMode: fieldRules(true),
sort: fieldRules(true),
-}
-
-function deploymentModeLabel(value) {
- if (value === 1) return '独立部署'
- if (value === 0) return '统一部署'
- return value ?? '-'
}
function normalizeAreaCode(value) {
diff --git a/applications/drone-command/src/views/permissionManage/permissionDept/index.vue b/applications/drone-command/src/views/permissionManage/permissionDept/index.vue
index 8227a83..9930be6 100644
--- a/applications/drone-command/src/views/permissionManage/permissionDept/index.vue
+++ b/applications/drone-command/src/views/permissionManage/permissionDept/index.vue
@@ -62,11 +62,7 @@
<el-table-column prop="sort" show-overflow-tooltip width="80" label="排序" />
<el-table-column prop="bingId" show-overflow-tooltip width="100" label="组织id" />
<el-table-column prop="areaName" show-overflow-tooltip width="180" label="行政区划" />
- <el-table-column prop="deploymentMode" show-overflow-tooltip width="120" label="部署模式">
- <template v-slot="{ row }">
- {{ deploymentModeLabel(row.deploymentMode) }}
- </template>
- </el-table-column>
+
<el-table-column label="操作" class-name="operation-btns" width="220">
<template v-slot="{ row }">
<el-link @click="handleView(row)">查看</el-link>
@@ -128,12 +124,6 @@
provide('dictObj', dictObj)
provide('deptTree', deptTree)
-
-function deploymentModeLabel(value) {
- if (value === 1) return '独立部署'
- if (value === 0) return '统一部署'
- return value ?? '-'
-}
async function getList() {
loading.value = true
diff --git a/applications/drone-command/src/views/permissionManage/permissionUser/FormDiaLog.vue b/applications/drone-command/src/views/permissionManage/permissionUser/FormDiaLog.vue
index d62faa6..93de041 100644
--- a/applications/drone-command/src/views/permissionManage/permissionUser/FormDiaLog.vue
+++ b/applications/drone-command/src/views/permissionManage/permissionUser/FormDiaLog.vue
@@ -43,22 +43,6 @@
<div class="label">账号状态</div>
<div class="val">{{ formData.statusName }}</div>
</el-col>
- <el-col :span="12">
- <div class="label">到期时间</div>
- <div class="val">{{ formData.expireTime }}</div>
- </el-col>
- <el-col :span="12">
- <div class="label">次数限制</div>
- <div class="val">{{ formData.maxLoginNum }}</div>
- </el-col>
- <el-col :span="12">
- <div class="label">飞行开始时间</div>
- <div class="val">{{ formData.flightStartTime }}</div>
- </el-col>
- <el-col :span="12">
- <div class="label">飞行结束时间</div>
- <div class="val">{{ formData.flightEndTime }}</div>
- </el-col>
</el-row>
</div>
@@ -178,55 +162,6 @@
</el-form-item>
</el-col>
</el-row>
-
- <div class="detail-title">登录限制</div>
- <el-row :gutter="16">
- <el-col :span="12">
- <el-form-item label="到期时间" prop="expireTime">
- <el-date-picker
- class="command-date-picker"
- popper-class="command-date-picker-popper"
- v-model="formData.expireTime"
- type="datetime"
- placeholder="请选择"
- format="YYYY-MM-DD HH:mm:ss"
- value-format="YYYY-MM-DD HH:mm:ss"
- clearable
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="次数限制" prop="maxLoginNum">
- <el-input class="command-input" v-model="formData.maxLoginNum" placeholder="请输入" clearable />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="飞行开始时间" prop="flightStartTime">
- <el-time-picker
- class="command-date-picker"
- popper-class="command-date-picker-popper"
- v-model="formData.flightStartTime"
- placeholder="请选择"
- format="HH:mm"
- value-format="HH:mm"
- clearable
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="飞行结束时间" prop="flightEndTime">
- <el-time-picker
- class="command-date-picker"
- popper-class="command-date-picker-popper"
- v-model="formData.flightEndTime"
- placeholder="请选择"
- format="HH:mm"
- value-format="HH:mm"
- clearable
- />
- </el-form-item>
- </el-col>
- </el-row>
</el-form>
<template #footer>
@@ -260,10 +195,6 @@
code: '',
roleId: '',
deptId: '',
- expireTime: '',
- maxLoginNum: '',
- flightStartTime: '',
- flightEndTime: '',
})
const treeProps = {
@@ -340,24 +271,9 @@
visible.value = false
}
-function validateFlightTime() {
- if (formData.value.flightStartTime && formData.value.flightEndTime) {
- const [startHours, startMinutes] = formData.value.flightStartTime.split(':').map(Number)
- const [endHours, endMinutes] = formData.value.flightEndTime.split(':').map(Number)
- const startTotalMinutes = startHours * 60 + startMinutes
- const endTotalMinutes = endHours * 60 + endMinutes
- if (endTotalMinutes < startTotalMinutes) {
- ElMessage.error('飞行结束时间不能小于飞行开始时间')
- return false
- }
- }
- return true
-}
-
async function handleSubmit() {
const isValid = await formRef.value?.validate().catch(() => false)
if (!isValid) return
- if (!validateFlightTime()) return
submitting.value = true
try {
const submitData = { ...formData.value }
diff --git a/applications/task-work-order/env/.env b/applications/task-work-order/env/.env
index f02486b..b91a161 100644
--- a/applications/task-work-order/env/.env
+++ b/applications/task-work-order/env/.env
@@ -18,3 +18,6 @@
# xt接口地址
VITE_APP_URL_XT=http://218.202.104.82:8200
+
+# 预览地址 previewURL
+VITE_APP_PREVIEW_URL=http://192.168.1.204:8012
diff --git a/applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/index.vue b/applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/index.vue
index 5625a83..d0f5699 100644
--- a/applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/index.vue
+++ b/applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/index.vue
@@ -60,7 +60,7 @@
<el-table-column prop="resourceName" show-overflow-tooltip label="资源名称" />
<el-table-column prop="resourceCode" show-overflow-tooltip label="资源编码" />
<el-table-column prop="caseDesc" show-overflow-tooltip label="案例描述" />
- <el-table-column label="操作" class-name="operation-btns" width="240">
+ <el-table-column label="操作" class-name="operation-btns" width="150">
<template v-slot="{ row }">
<el-link type="primary" @click="openForm('view', row)">查看</el-link>
<!-- <el-link type="primary" @click="openForm('edit', row)">编辑</el-link>-->
diff --git a/applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/index.vue b/applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/index.vue
index 1970f55..fc0cc14 100644
--- a/applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/index.vue
+++ b/applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/index.vue
@@ -67,9 +67,9 @@
<el-table-column prop="handleUnit" show-overflow-tooltip label="处理单位" />
<el-table-column prop="objectionDesc" show-overflow-tooltip label="异议描述" />
<el-table-column prop="objectionBasis" show-overflow-tooltip label="异议依据" />
- <el-table-column prop="attachName" show-overflow-tooltip label="附件名称" />
+ <el-table-column prop="attachNames" show-overflow-tooltip label="附件名称" />
<el-table-column prop="reviewOpinion" show-overflow-tooltip label="审核意见" />
- <el-table-column label="操作" class-name="operation-btns" width="240">
+ <el-table-column label="操作" class-name="operation-btns" width="150">
<template v-slot="{ row }">
<el-link type="primary" @click="openForm('view', row)">查看</el-link>
<el-link type="primary" @click="openForm('edit', row)" v-if="!['1', '2'].includes(row.objectionStatus)">编辑</el-link>
diff --git a/applications/task-work-order/src/views/orderView/orderDataManage/evaluate/index.vue b/applications/task-work-order/src/views/orderView/orderDataManage/evaluate/index.vue
index ecf226c..5d3f891 100644
--- a/applications/task-work-order/src/views/orderView/orderDataManage/evaluate/index.vue
+++ b/applications/task-work-order/src/views/orderView/orderDataManage/evaluate/index.vue
@@ -53,7 +53,7 @@
</template>
</el-table-column>
<el-table-column prop="evaluationContent" show-overflow-tooltip label="评价内容" />
- <el-table-column label="操作" class-name="operation-btns" width="240">
+ <el-table-column label="操作" class-name="operation-btns" width="150">
<template v-slot="{ row }">
<el-link type="primary" @click="openForm('view', row)">查看</el-link>
<el-link type="primary" @click="openForm('edit', row)">编辑</el-link>
diff --git a/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue b/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue
index 34c28df..f25db98 100644
--- a/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue
+++ b/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue
@@ -107,8 +107,8 @@
</div>
<template #footer>
<template v-if="detailDemandStatus === '1' && !requesterProvider">
- <el-button color="#F2F3F5" @click="rejectTheApplication">拒绝申请</el-button>
- <el-button class="" color="#4C34FF" @click="approvedByTheReview">审核通过</el-button>
+ <el-button color="#F2F3F5" :loading="submitting" :disabled="submitting" @click="rejectTheApplication">拒绝申请</el-button>
+ <el-button class="" color="#4C34FF" :loading="submitting" :disabled="submitting" @click="approvedByTheReview">审核通过</el-button>
</template>
<template v-if="detailDemandStatus === '2'">
<el-button class="" color="#4C34FF" @click="downloadAllFiles">全部下载</el-button>
@@ -154,6 +154,7 @@
const fileList = ref([]) // 上传文件列表
const uploadedFiles = ref([]) // 已上传文件列表
const responseData = ref(null)
+const submitting = ref(false) // 提交中状态
// 自定义上传请求函数
const handleHttpRequest = async (options) => {
try {
@@ -182,10 +183,21 @@
const tableData = ref([]) // 附件表格数据
// 文件移除
const handleFileRemove = (file, fileList) => {
+console.log('删除文件', fileList);
+uploadedFiles.value = fileList
// 从已上传文件列表中移除对应文件
- if (file.response && file.response.attachId) {
- uploadedFiles.value = uploadedFiles.value.filter(item => item.attachId !== file.response.attachId)
- }
+ // if (file.response && file.response.attachId) {
+ // // uploadedFiles.value = uploadedFiles.value.filter(item => item.attachId !== file.response.attachId)
+ // // 找到 id=1 的对象的索引
+ // const index = uploadedFiles.value.findIndex(item => item.attachId !== file.response.attachId)
+
+ // // 如果找到了,移除该对象
+ // if (index !== -1) {
+ // uploadedFiles.value.splice(index, 1)
+ // }
+ // console.log('删除文件', uploadedFiles.value);
+
+ // }
// 清空响应数据
if (responseData.value && responseData.value.attachId === file.response?.attachId) {
responseData.value = null
@@ -389,6 +401,7 @@
// 从 uploadedFiles.value 中提取所有 attachId
const id = uploadedFiles.value.map(file => file.attachId)
+ submitting.value = true
gdSupplyDemandAuditRejectApi({ attachIds: id, auditOpinion: reason, demandId: demandId.value })
.then(() => {
ElMessage.success('拒绝申请成功')
@@ -400,19 +413,27 @@
ElMessage.error('拒绝申请失败,请重试')
emit('success')
})
+ .finally(() => {
+ submitting.value = false
+ })
}
// 审核通过
const approvedByTheReview = () => {
if (uploadedFiles.value.length === 0) {
return ElMessage.warning('请上传数据')
- }
+ }
// 从 uploadedFiles.value 中提取所有 attachId
const id = uploadedFiles.value.map(file => file.attachId)
- gdSupplyDemandAuditPassApi({ attachIds: id, demandId: demandId.value }).then(() => {
- ElMessage.success('审核通过成功')
- visible.value = false
- emit('success')
- })
+ submitting.value = true
+ gdSupplyDemandAuditPassApi({ attachIds: id, demandId: demandId.value })
+ .then(() => {
+ ElMessage.success('审核通过成功')
+ visible.value = false
+ emit('success')
+ })
+ .finally(() => {
+ submitting.value = false
+ })
}
defineExpose({ open })
@@ -482,4 +503,6 @@
:deep(.el-upload-list) {
margin-top: 10px;
}
+.el-upload-list__item.is-success:focus .el-upload-list__item-status-label, .el-upload-list__item.is-success:hover .el-upload-list__item-status-label{
+display: none !important;}
</style>
diff --git a/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/index.vue b/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/index.vue
index 0a5b011..76d54e2 100644
--- a/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/index.vue
+++ b/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/index.vue
@@ -76,7 +76,7 @@
<el-table-column prop="responsibleDeptName" show-overflow-tooltip label="责任部门" />
<el-table-column prop="dataSource" show-overflow-tooltip label="数据来源依据" />
<el-table-column prop="demandInfo" show-overflow-tooltip label="需求信息项" />
- <el-table-column label="操作" class-name="operation-btns" width="240">
+ <el-table-column label="操作" class-name="operation-btns" width="150">
<template v-slot="{ row }">
<el-link type="primary" @click="openForm('view', row)">查看</el-link>
<!-- 只对非审批状态显示编辑和删除按钮 -->
diff --git a/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue b/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue
index 82af5be..206b08d 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue
@@ -145,6 +145,7 @@
import { getDictLabel } from '@ztzf/utils'
import PreviewFiles from '@/components/PreviewFiles/PreviewFiles.vue'
import { getDictionaryByCode } from '@/api/system/dictbiz'
+import { Base64 } from 'js-base64'
const store = useStore()
const userInfo = computed(() => store.getters.userInfo)
@@ -237,29 +238,33 @@
editParams.value.link = row.link
}
+
+// 'zip', 'rar', 'jar', 'tar', 'gzip', '7z',
+const allSupportedExtensions = [
+ 'doc', 'docx', 'xls', 'xlsx', 'xlsm', 'ppt', 'pptx', 'csv', 'tsv', 'dotm', 'xlt', 'xltm', 'dot', 'dotx', 'xlam', 'xla',
+ 'wps', 'dps', 'et', 'ett', 'wpt',
+ 'odt', 'ods', 'ots', 'odp', 'otp', 'six', 'ott', 'fodt', 'fods',
+ 'vsd', 'vsdx', 'wmf', 'emf', 'psd',
+ 'pdf', 'ofd', 'rtf', 'epub',
+ 'xmind', 'bpmn', 'eml',
+ 'obj', '3ds', 'stl', 'ply', 'gltf', 'glb', 'off', '3dm', 'fbx', 'dae', 'wrl', '3mf', 'ifc', 'brep', 'step', 'iges', 'fcstd', 'bim',
+ 'dwg', 'dxf',
+ 'txt', 'xml', 'md', 'java', 'php', 'py', 'js', 'css',
+ 'jpg', 'jpeg', 'png', 'gif', 'bmp', 'ico', 'jfif', 'webp', 'tif', 'tiff', 'tga', 'svg',
+ 'mp3', 'wav', 'mp4', 'flv', 'avi', 'mov', 'rm', 'webm', 'ts', 'mkv', 'mpeg', 'ogg', 'mpg', 'rmvb', 'wmv', '3gp', 'swf'
+];
+const { VITE_APP_PREVIEW_URL } = import.meta.env
+
// 在线查看文档
function seeOnlineWord(row) {
// 获取点之后的文件格式名
const fileType = row?.link?.split('.').pop() || ''
if (!row.link) {
ElMessage.warning('文件链接不存在')
- return
- } else if (
- !row.link.includes('docx') &&
- !row.link.includes('pdf') &&
- !row.link.includes('png') &&
- !row.link.includes('jpg')
- ) {
+ }else if (allSupportedExtensions.includes(fileType)){
+ window.open(`${VITE_APP_PREVIEW_URL}/onlinePreview?url=`+encodeURIComponent(Base64.encode(row.link)));
+ }else {
ElMessage.warning(`${fileType}文件格式,可以下载再查看`)
- return
- } else if (row.link.includes('png') || row.link.includes('jpg')) {
- previewVisibleImg.value = true
- searchUrl.value = row.link
- return
- } else if (row.link.includes('docx') || row.link.includes('pdf')) {
- previewVisible.value = true
- searchUrl.value = row.link
- return
}
}
diff --git a/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue b/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
index dcb6764..a844f9f 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -203,8 +203,8 @@
>
{{ gdStatusObj[gdStatus].reason }}
</el-button>
- <el-button @click="addDescription" v-if="['20', '24', '25', '50'].includes(gdStatus)" color="#F2F3F5">
- {{ gdStatus === '50' ? '结算' : '申请取消' }}
+ <el-button @click="addDescription" v-if="['20', '24', '25'].includes(gdStatus)" color="#F2F3F5">
+ 申请取消
</el-button>
<el-button color="#4C34FF" @click="requestModification" v-if="['20', '25'].includes(gdStatus)">
申请修改
@@ -224,6 +224,7 @@
<el-button v-if="['21', '23'].includes(gdStatus)" @click="viewDescription" color="#F2F3F5">
{{ gdStatusObj[gdStatus].reason }}
</el-button>
+ <el-button v-if="gdStatus === '50'" @click="addDescription" color="#F2F3F5">结算</el-button>
<el-button v-if="gdStatus === '10'" @click="addDescription" color="#F2F3F5">拒绝接单</el-button>
<el-button v-if="gdStatus === '10'" @click="statusChange(1)" color="#4C34FF">接单</el-button>
<el-button v-if="gdStatus === '22'" @click="addDescription" color="#F2F3F5">不同意修改</el-button>
diff --git a/applications/task-work-order/src/views/orderView/organizational/agenciesManagement/index.vue b/applications/task-work-order/src/views/orderView/organizational/agenciesManagement/index.vue
index fc7452c..185bb5f 100644
--- a/applications/task-work-order/src/views/orderView/organizational/agenciesManagement/index.vue
+++ b/applications/task-work-order/src/views/orderView/organizational/agenciesManagement/index.vue
@@ -68,7 +68,7 @@
{{ getDictLabel(row.status, dictObj.institutionStatus) }}
</template>
</el-table-column>
- <el-table-column label="操作" class-name="operation-btns" width="400">
+ <el-table-column label="操作" class-name="operation-btns" width="200">
<template v-slot="{ row }">
<el-link type="primary" @click="openForm('view', row)">查看</el-link>
<el-link type="primary" @click="openForm('edit', row)">编辑</el-link>
diff --git a/applications/task-work-order/src/views/orderView/organizational/zoningManagement/index.vue b/applications/task-work-order/src/views/orderView/organizational/zoningManagement/index.vue
index 5c87710..3b33484 100644
--- a/applications/task-work-order/src/views/orderView/organizational/zoningManagement/index.vue
+++ b/applications/task-work-order/src/views/orderView/organizational/zoningManagement/index.vue
@@ -65,7 +65,7 @@
{{ getDictLabel(row.status, dictObj.zoningStatus) }}
</template>
</el-table-column>
- <el-table-column label="操作" class-name="operation-btns" width="400">
+ <el-table-column label="操作" class-name="operation-btns" width="200">
<template v-slot="{ row }">
<el-link type="primary" @click="openForm('view', row)">查看</el-link>
<el-link type="primary" @click="openForm('edit', row)">编辑</el-link>
--
Gitblit v1.9.3