|
@@ -1,5 +1,6 @@
|
|
|
<script lang="ts" setup>
|
|
|
import { ref, computed, onMounted, reactive, toRefs, getCurrentInstance } from 'vue'
|
|
|
+import { useI18n } from 'vue-i18n'
|
|
|
import { staticFlowForm, listFlowForm, listFlowFormTodo, ListFlowFormData } from '/@/api/flow/flowForm'
|
|
|
import { useStore } from '/@/store'
|
|
|
import { useLoading } from '/@/utils/loading-util'
|
|
@@ -12,6 +13,7 @@ import CheckFlow from '/@/components/gFlow/checkFlow.vue'
|
|
|
|
|
|
const store = useStore()
|
|
|
const { proxy } = <any>getCurrentInstance()
|
|
|
+const { t } = useI18n()
|
|
|
|
|
|
// 获取主题配置
|
|
|
const getThemeConfig = computed(() => {
|
|
@@ -240,8 +242,8 @@ const refresh = async () => {
|
|
|
<div class="summary-number">
|
|
|
{{ summaryData.prepare }}
|
|
|
</div>
|
|
|
- <div class="summary-title">我的待办</div>
|
|
|
- <div class="summary-desc">待处理任务</div>
|
|
|
+ <div class="summary-title">{{ t('message.flowCraft.myTodo') }}</div>
|
|
|
+ <div class="summary-desc">{{ t('message.flowCraft.pendingTasks') }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-card>
|
|
@@ -258,8 +260,8 @@ const refresh = async () => {
|
|
|
<div class="summary-number">
|
|
|
{{ summaryData.start }}
|
|
|
</div>
|
|
|
- <div class="summary-title">我发起的</div>
|
|
|
- <div class="summary-desc">发起的工单</div>
|
|
|
+ <div class="summary-title">{{ t('message.flowCraft.myInitiated') }}</div>
|
|
|
+ <div class="summary-desc">{{ t('message.flowCraft.initiatedTickets') }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-card>
|
|
@@ -276,8 +278,8 @@ const refresh = async () => {
|
|
|
<div class="summary-number">
|
|
|
{{ summaryData.already }}
|
|
|
</div>
|
|
|
- <div class="summary-title">我处理的</div>
|
|
|
- <div class="summary-desc">已处理任务</div>
|
|
|
+ <div class="summary-title">{{ t('message.flowCraft.myProcessed') }}</div>
|
|
|
+ <div class="summary-desc">{{ t('message.flowCraft.processedTasks') }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-card>
|
|
@@ -289,7 +291,7 @@ const refresh = async () => {
|
|
|
<div class="section-container">
|
|
|
<div class="section-header">
|
|
|
<div class="section-bar"></div>
|
|
|
- <h3 class="section-title">自定义表单</h3>
|
|
|
+ <h3 class="section-title">{{ t('message.flowCraft.customForms') }}</h3>
|
|
|
</div>
|
|
|
|
|
|
<!-- 加载占位符 -->
|
|
@@ -314,7 +316,7 @@ const refresh = async () => {
|
|
|
<ele-Document />
|
|
|
</el-icon>
|
|
|
<div class="card-title">{{ form.name }}</div>
|
|
|
- <div class="card-subtitle">点击发起表单审批</div>
|
|
|
+ <div class="card-subtitle">{{ t('message.flowCraft.clickToInitiateApproval') }}</div>
|
|
|
</div>
|
|
|
</el-card>
|
|
|
</el-col>
|
|
@@ -322,7 +324,7 @@ const refresh = async () => {
|
|
|
|
|
|
<!-- 空状态 -->
|
|
|
<div v-if="!formListLoading && tableData.data.length === 0" class="empty-state">
|
|
|
- <el-empty description="暂无表单数据" />
|
|
|
+ <el-empty :description="t('message.flowCraft.noFormData')" />
|
|
|
</div>
|
|
|
|
|
|
<!-- 分页 -->
|
|
@@ -343,7 +345,7 @@ const refresh = async () => {
|
|
|
<div class="section-container">
|
|
|
<div class="section-header">
|
|
|
<div class="section-bar"></div>
|
|
|
- <h3 class="section-title">系统表单</h3>
|
|
|
+ <h3 class="section-title">{{ t('message.flowCraft.systemForms') }}</h3>
|
|
|
</div>
|
|
|
|
|
|
<!-- 系统表单列表 -->
|
|
@@ -354,8 +356,8 @@ const refresh = async () => {
|
|
|
<el-icon :size="32" color="#f56c6c">
|
|
|
<ele-Warning />
|
|
|
</el-icon>
|
|
|
- <div class="card-title">投诉管理</div>
|
|
|
- <div class="card-subtitle">点击发起投诉申请</div>
|
|
|
+ <div class="card-title">{{ t('message.flowCraft.complaintManagement') }}</div>
|
|
|
+ <div class="card-subtitle">{{ t('message.flowCraft.clickToInitiateComplaint') }}</div>
|
|
|
</div>
|
|
|
</el-card>
|
|
|
</el-col>
|
|
@@ -370,29 +372,29 @@ const refresh = async () => {
|
|
|
ref="complaintDialogRef"
|
|
|
v-model:visible="complaintDialogVisible"
|
|
|
v-model:modelValue="complaintFormData"
|
|
|
- title="新增投诉"
|
|
|
+ :title="t('message.flowCraft.addComplaint')"
|
|
|
mode="add"
|
|
|
@success="handleComplaintSuccess"
|
|
|
/>
|
|
|
|
|
|
<!-- 我的待办对话框 -->
|
|
|
- <el-dialog v-model="todoDialogVisible" title="我的待办" width="80%">
|
|
|
+ <el-dialog v-model="todoDialogVisible" :title="t('message.flowCraft.myTodoDialog')" width="80%">
|
|
|
<el-table :data="todoTableData" v-loading="innerTodoLoading">
|
|
|
<el-table-column type="index" width="60" label="#" align="center" />
|
|
|
- <el-table-column label="主键" align="center" prop="id" min-width="120px" />
|
|
|
+ <el-table-column :label="t('message.flowCraft.primaryKey')" align="center" prop="id" min-width="120px" />
|
|
|
<el-table-column v-for="item in todoFields" :key="item.field" :label="item.title" align="center" :prop="item.field" min-width="150px" />
|
|
|
- <el-table-column label="状态" align="center" prop="status" min-width="120px">
|
|
|
+ <el-table-column :label="t('message.flowCraft.status')" align="center" prop="status" min-width="120px">
|
|
|
<template #default="scope">
|
|
|
<el-tag :type="columnColor(scope.row)">{{ statusFormat(scope.row) }}</el-tag>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="创建时间" align="center" prop="created_at" min-width="160px">
|
|
|
+ <el-table-column :label="t('message.flowCraft.createTime')" align="center" prop="created_at" min-width="160px">
|
|
|
<template #default="scope">
|
|
|
<span>{{ proxy.parseTime(scope.row.created_at, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="创建人" align="center" prop="created_user.userNickname" min-width="140px" />
|
|
|
- <el-table-column label="操作" align="center">
|
|
|
+ <el-table-column :label="t('message.flowCraft.creator')" align="center" prop="created_user.userNickname" min-width="140px" />
|
|
|
+ <el-table-column :label="t('message.flowCraft.operation')" align="center">
|
|
|
<template #default="scope">
|
|
|
<el-button v-if="scope.row.actionBtn && scope.row.actionBtn.type != 'disabled'" type="primary" link @click="handleStartFlow(scope.row)"
|
|
|
><el-icon><ele-Coordinate /></el-icon>{{ scope.row.actionBtn.title }}</el-button
|
|
@@ -414,7 +416,7 @@ const refresh = async () => {
|
|
|
</div>
|
|
|
<template #footer>
|
|
|
<span class="dialog-footer">
|
|
|
- <el-button @click="todoDialogVisible = false">关 闭</el-button>
|
|
|
+ <el-button @click="todoDialogVisible = false">{{ t('message.flowCraft.close') }}</el-button>
|
|
|
</span>
|
|
|
</template>
|
|
|
</el-dialog>
|