kagg886 1 месяц назад
Родитель
Сommit
37ae2bfe8b

+ 10 - 3
src/i18n/index.ts

@@ -58,6 +58,10 @@ import pagesFlowDemoZhcn from './pages/flow/flowDemo/zh-cn'
 import pagesFlowDemoEn from './pages/flow/flowDemo/en'
 import pagesFlowDemoZhtw from './pages/flow/flowDemo/zh-tw'
 
+import pagesFlowCraftZhcn from './pages/flow/flowCraft/zh-cn'
+import pagesFlowCraftEn from './pages/flow/flowCraft/en'
+import pagesFlowCraftZhtw from './pages/flow/flowCraft/zh-tw'
+
 import componentFlowModelZhcn from './pages/flow/component/zh-cn'
 import componentFlowModelEn from './pages/flow/component/en'
 import componentFlowModelZhtw from './pages/flow/component/zh-tw'
@@ -84,7 +88,8 @@ const messages = {
 			flowForm: pagesFlowFormZhcn,
 			flowModel: pagesFlowModelZhcn,
 			flowComponent: componentFlowModelZhcn,
-			flowDemo: pagesFlowDemoZhcn
+			flowDemo: pagesFlowDemoZhcn,
+			flowCraft: pagesFlowCraftZhcn
 		}
 	},
 	[enLocale.name]: {
@@ -102,7 +107,8 @@ const messages = {
 			flowForm: pagesFlowFormEn,
 			flowModel: pagesFlowModelEn,
 			flowComponent: componentFlowModelEn,
-			flowDemo: pagesFlowDemoEn
+			flowDemo: pagesFlowDemoEn,
+			flowCraft: pagesFlowCraftEn
 		},
 	},
 	[zhtwLocale.name]: {
@@ -120,7 +126,8 @@ const messages = {
 			flowForm: pagesFlowFormZhtw,
 			flowModel: pagesFlowModelZhtw,
 			flowComponent: componentFlowModelZhtw,
-			flowDemo: pagesFlowDemoZhtw
+			flowDemo: pagesFlowDemoZhtw,
+			flowCraft: pagesFlowCraftZhtw
 		},
 	},
 };

+ 35 - 0
src/i18n/pages/flow/flowCraft/en.ts

@@ -0,0 +1,35 @@
+export default {
+	// Statistics cards
+	myTodo: 'My Todo',
+	pendingTasks: 'Pending Tasks',
+	myInitiated: 'My Initiated',
+	initiatedTickets: 'Initiated Tickets',
+	myProcessed: 'My Processed',
+	processedTasks: 'Processed Tasks',
+	
+	// Section titles
+	customForms: 'Custom Forms',
+	systemForms: 'System Forms',
+	
+	// Form related
+	clickToInitiateApproval: 'Click to initiate form approval',
+	noFormData: 'No form data available',
+	
+	// System forms
+	complaintManagement: 'Complaint Management',
+	clickToInitiateComplaint: 'Click to initiate complaint application',
+	
+	// Dialogs
+	myTodoDialog: 'My Todo',
+	close: 'Close',
+	
+	// Table columns
+	primaryKey: 'Primary Key',
+	status: 'Status',
+	createTime: 'Create Time',
+	creator: 'Creator',
+	operation: 'Operation',
+	
+	// Add complaint
+	addComplaint: 'Add Complaint'
+}

+ 35 - 0
src/i18n/pages/flow/flowCraft/zh-cn.ts

@@ -0,0 +1,35 @@
+export default {
+	// 统计卡片
+	myTodo: '我的待办',
+	pendingTasks: '待处理任务',
+	myInitiated: '我发起的',
+	initiatedTickets: '发起的工单',
+	myProcessed: '我处理的',
+	processedTasks: '已处理任务',
+	
+	// 区域标题
+	customForms: '自定义表单',
+	systemForms: '系统表单',
+	
+	// 表单相关
+	clickToInitiateApproval: '点击发起表单审批',
+	noFormData: '暂无表单数据',
+	
+	// 系统表单
+	complaintManagement: '投诉管理',
+	clickToInitiateComplaint: '点击发起投诉申请',
+	
+	// 对话框
+	myTodoDialog: '我的待办',
+	close: '关 闭',
+	
+	// 表格列
+	primaryKey: '主键',
+	status: '状态',
+	createTime: '创建时间',
+	creator: '创建人',
+	operation: '操作',
+	
+	// 新增投诉
+	addComplaint: '新增投诉'
+}

+ 35 - 0
src/i18n/pages/flow/flowCraft/zh-tw.ts

@@ -0,0 +1,35 @@
+export default {
+	// 統計卡片
+	myTodo: '我的待辦',
+	pendingTasks: '待處理任務',
+	myInitiated: '我發起的',
+	initiatedTickets: '發起的工單',
+	myProcessed: '我處理的',
+	processedTasks: '已處理任務',
+	
+	// 區域標題
+	customForms: '自定義表單',
+	systemForms: '系統表單',
+	
+	// 表單相關
+	clickToInitiateApproval: '點擊發起表單審批',
+	noFormData: '暫無表單數據',
+	
+	// 系統表單
+	complaintManagement: '投訴管理',
+	clickToInitiateComplaint: '點擊發起投訴申請',
+	
+	// 對話框
+	myTodoDialog: '我的待辦',
+	close: '關 閉',
+	
+	// 表格列
+	primaryKey: '主鍵',
+	status: '狀態',
+	createTime: '創建時間',
+	creator: '創建人',
+	operation: '操作',
+	
+	// 新增投訴
+	addComplaint: '新增投訴'
+}

+ 22 - 20
src/views/flow/flowCraft/index.vue

@@ -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>