|
|
@@ -1,44 +1,71 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
- <transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
|
|
- :leave-active-class="proxy?.animate.searchAnimate.leave">
|
|
|
+ <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
|
|
<div v-show="showSearch" class="mb-[10px]">
|
|
|
<el-card shadow="hover">
|
|
|
- <el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
|
|
- <el-form-item label="任务名称" prop="name">
|
|
|
- <el-input v-model="queryParams.name" placeholder="请输入任务名称" clearable @keyup.enter="handleQuery" />
|
|
|
+ <el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="110px">
|
|
|
+ <el-form-item :label="t('qc.task.search.taskName')" prop="name" style="width: 300px">
|
|
|
+ <el-input v-model="queryParams.name" :placeholder="t('qc.task.search.taskNamePlaceholder')" clearable @keyup.enter="handleQuery" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="发起人" prop="initiator">
|
|
|
- <el-input v-model="queryParams.initiator" placeholder="请输入发起人" clearable @keyup.enter="handleQuery" />
|
|
|
+ <el-form-item :label="t('qc.task.search.initiator')" prop="initiator" style="width: 300px">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.initiator"
|
|
|
+ :placeholder="t('qc.task.search.initiatorPlaceholder')"
|
|
|
+ clearable
|
|
|
+ @keyup.enter="handleQuery"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="质控项目" prop="projectId">
|
|
|
- <el-input v-model="queryParams.projectId" placeholder="请输入质控项目" clearable @keyup.enter="handleQuery" />
|
|
|
+ <el-form-item :label="t('qc.task.search.projectId')" prop="projectId" style="width: 300px">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.projectId"
|
|
|
+ :placeholder="t('qc.task.search.projectIdPlaceholder')"
|
|
|
+ clearable
|
|
|
+ @keyup.enter="handleQuery"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="截止时间" style="width: 308px">
|
|
|
- <el-date-picker v-model="dateRangeDeadline" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
|
|
|
- range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
|
|
|
- :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]" />
|
|
|
+ <el-form-item :label="t('qc.task.search.deadline')" style="width: 300px">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="dateRangeDeadline"
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
+ type="daterange"
|
|
|
+ :range-separator="t('qc.task.search.rangeSeparator')"
|
|
|
+ :start-placeholder="t('qc.task.search.startDate')"
|
|
|
+ :end-placeholder="t('qc.task.search.endDate')"
|
|
|
+ :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="创建者" prop="createBy">
|
|
|
- <el-input v-model="queryParams.createBy" placeholder="请输入创建者" clearable @keyup.enter="handleQuery" />
|
|
|
+ <el-form-item :label="t('qc.task.search.createBy')" prop="createBy" style="width: 300px">
|
|
|
+ <el-input v-model="queryParams.createBy" :placeholder="t('qc.task.search.createByPlaceholder')" clearable @keyup.enter="handleQuery" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="创建时间" style="width: 308px">
|
|
|
- <el-date-picker v-model="dateRangeCreateTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
|
|
|
- range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
|
|
|
- :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]" />
|
|
|
+ <el-form-item :label="t('qc.task.search.createTime')" style="width: 300px">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="dateRangeCreateTime"
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
+ type="daterange"
|
|
|
+ :range-separator="t('qc.task.search.rangeSeparator')"
|
|
|
+ :start-placeholder="t('qc.task.search.startDate')"
|
|
|
+ :end-placeholder="t('qc.task.search.endDate')"
|
|
|
+ :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="更新者" prop="updateBy">
|
|
|
- <el-input v-model="queryParams.updateBy" placeholder="请输入更新者" clearable @keyup.enter="handleQuery" />
|
|
|
+ <el-form-item :label="t('qc.task.search.updateBy')" prop="updateBy" style="width: 300px">
|
|
|
+ <el-input v-model="queryParams.updateBy" :placeholder="t('qc.task.search.updateByPlaceholder')" clearable @keyup.enter="handleQuery" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="更新时间" style="width: 308px">
|
|
|
- <el-date-picker v-model="dateRangeUpdateTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
|
|
|
- range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
|
|
|
- :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]" />
|
|
|
+ <el-form-item :label="t('qc.task.search.updateTime')" style="width: 300px">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="dateRangeUpdateTime"
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
+ type="daterange"
|
|
|
+ :range-separator="t('qc.task.search.rangeSeparator')"
|
|
|
+ :start-placeholder="t('qc.task.search.startDate')"
|
|
|
+ :end-placeholder="t('qc.task.search.endDate')"
|
|
|
+ :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
- <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
|
|
- <el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
|
|
+ <el-button type="primary" icon="Search" @click="handleQuery">{{ t('qc.task.button.search') }}</el-button>
|
|
|
+ <el-button icon="Refresh" @click="resetQuery">{{ t('qc.task.button.reset') }}</el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</el-card>
|
|
|
@@ -49,11 +76,12 @@
|
|
|
<template #header>
|
|
|
<el-row :gutter="10" class="mb8">
|
|
|
<el-col :span="1.5">
|
|
|
- <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['qc:task:add']">新增</el-button>
|
|
|
+ <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['qc:task:add']">{{ t('qc.task.button.add') }}</el-button>
|
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
|
- <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
|
|
|
- v-hasPermi="['qc:task:remove']">删除</el-button>
|
|
|
+ <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['qc:task:remove']">{{
|
|
|
+ t('qc.task.button.delete')
|
|
|
+ }}</el-button>
|
|
|
</el-col>
|
|
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
|
|
</el-row>
|
|
|
@@ -61,82 +89,101 @@
|
|
|
|
|
|
<el-table v-loading="loading" border :data="taskList" @selection-change="handleSelectionChange">
|
|
|
<el-table-column type="selection" width="55" align="center" />
|
|
|
- <el-table-column label="序号" align="center" prop="id" v-if="true" />
|
|
|
- <el-table-column label="任务名称" align="center" prop="name" width="200" />
|
|
|
- <el-table-column label="发起人" align="center" prop="initiator" width="150">
|
|
|
+ <el-table-column :label="t('qc.task.table.index')" align="center" prop="id" v-if="true" />
|
|
|
+ <el-table-column :label="t('qc.task.table.taskName')" align="center" prop="name" width="200" />
|
|
|
+ <el-table-column :label="t('qc.task.table.initiator')" align="center" prop="initiator" width="150">
|
|
|
<template #default="scope">
|
|
|
<span>{{ scope.row.initiatorName || scope.row.initiator }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="质控项目" align="center" prop="projectId" width="200">
|
|
|
+ <el-table-column :label="t('qc.task.table.projectId')" align="center" prop="projectId" width="200">
|
|
|
<template #default="scope">
|
|
|
<span>{{ scope.row.projectName || scope.row.projectId }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
|
|
|
- <el-table-column label="截止时间" align="center" prop="deadline" width="180">
|
|
|
+ <el-table-column :label="t('qc.task.table.deadline')" align="center" prop="deadline" width="180">
|
|
|
<template #default="scope">
|
|
|
<span>{{ parseTime(scope.row.deadline, '{y}-{m}-{d}') }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="任务状态" align="center" prop="status" width="100">
|
|
|
+ <el-table-column :label="t('qc.task.table.status')" align="center" prop="status" width="100">
|
|
|
<template #default="scope">
|
|
|
- <el-tag v-if="scope.row.status === 0" type="info">未开始</el-tag>
|
|
|
- <el-tag v-else-if="scope.row.status === 1" type="warning">进行中</el-tag>
|
|
|
- <el-tag v-else-if="scope.row.status === 2" type="success">已完成</el-tag>
|
|
|
- <el-tag v-else type="info">未知</el-tag>
|
|
|
+ <el-tag v-if="scope.row.status === 0" type="info">{{ t('qc.task.status.notStarted') }}</el-tag>
|
|
|
+ <el-tag v-else-if="scope.row.status === 1" type="warning">{{ t('qc.task.status.inProgress') }}</el-tag>
|
|
|
+ <el-tag v-else-if="scope.row.status === 2" type="success">{{ t('qc.task.status.completed') }}</el-tag>
|
|
|
+ <el-tag v-else type="info">{{ t('qc.task.status.unknown') }}</el-tag>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="完成度" align="center" width="200">
|
|
|
+ <el-table-column :label="t('qc.task.table.completion')" align="center" width="200">
|
|
|
<template #default="scope">
|
|
|
<div style="width: 100%; padding: 5px 0">
|
|
|
- <el-progress :percentage="Math.round((Number(scope.row.schedule) || 0) * 100 * 100) / 100"
|
|
|
- :stroke-width="14" :show-text="true" :format="(percentage) => `${percentage}%`" :empty-color="'#e0e0e0'"
|
|
|
- color="#409eff" style="width: 100%" />
|
|
|
+ <el-progress
|
|
|
+ :percentage="Math.round((Number(scope.row.schedule) || 0) * 100 * 100) / 100"
|
|
|
+ :stroke-width="14"
|
|
|
+ :show-text="true"
|
|
|
+ :format="(percentage) => `${percentage}%`"
|
|
|
+ :empty-color="'#e0e0e0'"
|
|
|
+ color="#409eff"
|
|
|
+ style="width: 100%"
|
|
|
+ />
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="备注" align="center" prop="note" />
|
|
|
- <el-table-column label="创建者" align="center" prop="createBy" width="150" />
|
|
|
- <el-table-column label="创建时间" align="center" prop="createTime" width="180" />
|
|
|
- <el-table-column label="更新者" align="center" prop="updateBy" width="150" />
|
|
|
- <el-table-column label="更新时间" align="center" prop="updateTime" width="180" />
|
|
|
- <el-table-column label="操作" align="center" fixed="right" width="240" class-name="small-padding fixed-width">
|
|
|
+ <el-table-column :label="t('qc.task.table.note')" align="center" prop="note" />
|
|
|
+ <el-table-column :label="t('qc.task.table.createBy')" align="center" prop="createBy" width="150" />
|
|
|
+ <el-table-column :label="t('qc.task.table.createTime')" align="center" prop="createTime" width="180" />
|
|
|
+ <el-table-column :label="t('qc.task.table.updateBy')" align="center" prop="updateBy" width="150" />
|
|
|
+ <el-table-column :label="t('qc.task.table.updateTime')" align="center" prop="updateTime" width="180" />
|
|
|
+ <el-table-column :label="t('qc.task.table.action')" align="center" fixed="right" width="240" class-name="small-padding fixed-width">
|
|
|
<template #default="scope">
|
|
|
- <el-button v-hasPermi="['qc:task:query']" type="info" icon="View"
|
|
|
+ <el-button
|
|
|
+ v-hasPermi="['qc:task:query']"
|
|
|
+ type="info"
|
|
|
+ icon="View"
|
|
|
style="padding: 0 5px; font-size: 10px; height: 24px; margin-right: 5px"
|
|
|
- @click="handleView(scope.row.id)">
|
|
|
- 查看
|
|
|
+ @click="handleView(scope.row.id)"
|
|
|
+ >
|
|
|
+ {{ t('qc.task.button.view') }}
|
|
|
</el-button>
|
|
|
- <el-button v-if="scope.row.status === 0 && scope.row.initiator === userStore.userId"
|
|
|
- v-hasPermi="['qc:task:start']" type="primary" icon="VideoPlay"
|
|
|
- style="padding: 0 5px; font-size: 10px; height: 24px; margin-right: 5px" @click="handleStart(scope.row)">
|
|
|
- 开始
|
|
|
+ <el-button
|
|
|
+ v-if="scope.row.status === 0 && scope.row.initiator === userStore.userId"
|
|
|
+ v-hasPermi="['qc:task:start']"
|
|
|
+ type="primary"
|
|
|
+ icon="VideoPlay"
|
|
|
+ style="padding: 0 5px; font-size: 10px; height: 24px; margin-right: 5px"
|
|
|
+ @click="handleStart(scope.row)"
|
|
|
+ >
|
|
|
+ {{ t('qc.task.button.start') }}
|
|
|
</el-button>
|
|
|
- <el-button v-hasPermi="['qc:task:remove']" type="danger" icon="Delete"
|
|
|
- style="padding: 0 5px; font-size: 10px; height: 24px" @click="handleDelete(scope.row)">
|
|
|
- 删除
|
|
|
+ <el-button
|
|
|
+ v-hasPermi="['qc:task:remove']"
|
|
|
+ type="danger"
|
|
|
+ icon="Delete"
|
|
|
+ style="padding: 0 5px; font-size: 10px; height: 24px"
|
|
|
+ @click="handleDelete(scope.row)"
|
|
|
+ >
|
|
|
+ {{ t('qc.task.button.delete') }}
|
|
|
</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
|
|
|
- <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
|
|
|
- v-model:limit="queryParams.pageSize" @pagination="getList" />
|
|
|
+ <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
|
|
</el-card>
|
|
|
|
|
|
<!-- 新增/编辑任务对话框 -->
|
|
|
- <el-dialog v-model="dialogVisible" :title="dialogTitle" width="800px" append-to-body @close="handleDialogClose">
|
|
|
- <el-form ref="taskFormRef" :model="taskForm" :rules="taskRules" label-width="100px">
|
|
|
+ <el-dialog v-model="dialogVisible" :title="dialogTitle" width="900px" append-to-body @close="handleDialogClose">
|
|
|
+ <el-form ref="taskFormRef" :model="taskForm" :rules="taskRules" label-width="160px">
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="任务名称" prop="name">
|
|
|
- <el-input v-model="taskForm.name" placeholder="请输入任务名称" clearable />
|
|
|
+ <el-form-item :label="t('qc.task.form.taskName')" prop="name">
|
|
|
+ <el-input v-model="taskForm.name" :placeholder="t('qc.task.form.taskNamePlaceholder')" clearable />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="质控项目" prop="projectId">
|
|
|
- <el-select v-model="taskForm.projectId" placeholder="请选择质控项目" clearable filterable style="width: 100%">
|
|
|
+ <el-form-item :label="t('qc.task.form.projectId')" prop="projectId">
|
|
|
+ <el-select v-model="taskForm.projectId" :placeholder="t('qc.task.form.projectIdPlaceholder')" clearable filterable style="width: 100%">
|
|
|
<el-option v-for="project in projectList" :key="project.id" :label="project.name" :value="project.id" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
@@ -144,31 +191,41 @@
|
|
|
</el-row>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="截止日期" prop="deadline">
|
|
|
- <el-date-picker v-model="taskForm.deadline" type="date" placeholder="请选择截止日期" value-format="YYYY-MM-DD"
|
|
|
- style="width: 100%" />
|
|
|
+ <el-form-item :label="t('qc.task.form.deadline')" prop="deadline">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="taskForm.deadline"
|
|
|
+ type="date"
|
|
|
+ :placeholder="t('qc.task.form.deadlinePlaceholder')"
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
+ style="width: 100%"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="抽检比例" prop="proportion">
|
|
|
- <el-input-number v-model="taskForm.proportion" :min="1" :max="100" placeholder="请输入抽检比例"
|
|
|
- style="width: 100%" />
|
|
|
- <span style="margin-left: 8px; color: #909399">%</span>
|
|
|
+ <el-form-item :label="t('qc.task.form.proportion')" prop="proportion">
|
|
|
+ <el-input-number
|
|
|
+ v-model="taskForm.proportion"
|
|
|
+ :min="1"
|
|
|
+ :max="100"
|
|
|
+ :placeholder="t('qc.task.form.proportionPlaceholder')"
|
|
|
+ style="width: 100%"
|
|
|
+ />
|
|
|
+ <span style="margin-left: 8px; color: #909399">{{ t('qc.task.form.proportionUnit') }}</span>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="备注" prop="note">
|
|
|
- <el-input v-model="taskForm.note" type="textarea" :rows="3" placeholder="请输入备注" />
|
|
|
+ <el-form-item :label="t('qc.task.form.note')" prop="note">
|
|
|
+ <el-input v-model="taskForm.note" type="textarea" :rows="3" :placeholder="t('qc.task.form.notePlaceholder')" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</el-form>
|
|
|
<template #footer>
|
|
|
<div class="dialog-footer">
|
|
|
- <el-button @click="dialogVisible = false">取消</el-button>
|
|
|
- <el-button type="primary" @click="submitForm" :loading="submitLoading">确定</el-button>
|
|
|
+ <el-button @click="dialogVisible = false">{{ t('qc.task.button.cancel') }}</el-button>
|
|
|
+ <el-button type="primary" @click="submitForm" :loading="submitLoading">{{ t('qc.task.button.confirm') }}</el-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
@@ -180,8 +237,10 @@ import { listTask, getTask, delTask, startTask, addTask, updateTask } from '@/ap
|
|
|
import { TaskVO, TaskQuery, TaskForm } from '@/api/qc/task/types';
|
|
|
import { listProject } from '@/api/document/folder';
|
|
|
import { useUserStore } from '@/store/modules/user';
|
|
|
+import { useI18n } from 'vue-i18n';
|
|
|
|
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
+const { t } = useI18n();
|
|
|
const userStore = useUserStore();
|
|
|
|
|
|
const taskList = ref<TaskVO[]>([]);
|
|
|
@@ -219,10 +278,10 @@ const taskForm = ref<TaskForm>({
|
|
|
|
|
|
// 表单验证规则
|
|
|
const taskRules = {
|
|
|
- name: [{ required: true, message: '请输入任务名称', trigger: 'blur' }],
|
|
|
- projectId: [{ required: true, message: '请选择质控项目', trigger: 'change' }],
|
|
|
- deadline: [{ required: true, message: '请选择截止日期', trigger: 'change' }],
|
|
|
- proportion: [{ required: true, message: '请输入抽检比例', trigger: 'blur' }]
|
|
|
+ name: [{ required: true, message: t('qc.task.rule.taskNameRequired'), trigger: 'blur' }],
|
|
|
+ projectId: [{ required: true, message: t('qc.task.rule.projectIdRequired'), trigger: 'change' }],
|
|
|
+ deadline: [{ required: true, message: t('qc.task.rule.deadlineRequired'), trigger: 'change' }],
|
|
|
+ proportion: [{ required: true, message: t('qc.task.rule.proportionRequired'), trigger: 'blur' }]
|
|
|
};
|
|
|
|
|
|
const data = reactive<PageData<any, TaskQuery>>({
|
|
|
@@ -284,7 +343,7 @@ const handleSelectionChange = (selection: TaskVO[]) => {
|
|
|
/** 新增按钮操作 */
|
|
|
const handleAdd = () => {
|
|
|
resetForm();
|
|
|
- dialogTitle.value = '新增质控任务';
|
|
|
+ dialogTitle.value = t('qc.task.dialog.addTask');
|
|
|
dialogVisible.value = true;
|
|
|
loadProjectList();
|
|
|
};
|
|
|
@@ -295,7 +354,7 @@ const loadProjectList = async () => {
|
|
|
const res = await listProject({ pageNum: 1, pageSize: 1000 });
|
|
|
projectList.value = res.rows || [];
|
|
|
} catch (error) {
|
|
|
- console.error('加载项目列表失败:', error);
|
|
|
+ console.error(t('qc.task.message.loadProjectFailed'), error);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
@@ -335,15 +394,15 @@ const submitForm = async () => {
|
|
|
|
|
|
if (submitData.id) {
|
|
|
await updateTask(submitData);
|
|
|
- proxy?.$modal.msgSuccess('修改成功');
|
|
|
+ proxy?.$modal.msgSuccess(t('qc.task.message.editSuccess'));
|
|
|
} else {
|
|
|
await addTask(submitData);
|
|
|
- proxy?.$modal.msgSuccess('新增成功');
|
|
|
+ proxy?.$modal.msgSuccess(t('qc.task.message.addSuccess'));
|
|
|
}
|
|
|
dialogVisible.value = false;
|
|
|
await getList();
|
|
|
} catch (error) {
|
|
|
- console.error('提交失败:', error);
|
|
|
+ console.error(t('qc.task.message.submitFailed'), error);
|
|
|
} finally {
|
|
|
submitLoading.value = false;
|
|
|
}
|
|
|
@@ -362,25 +421,25 @@ const handleView = (taskId: string | number) => {
|
|
|
/** 开始任务 */
|
|
|
const handleStart = async (row: TaskVO) => {
|
|
|
try {
|
|
|
- await proxy?.$modal.confirm(`是否确认开始任务 "${row.name}"?`);
|
|
|
+ await proxy?.$modal.confirm(t('qc.task.message.startConfirm', { name: row.name }));
|
|
|
const res = await startTask(row.id);
|
|
|
if (res.code === 200) {
|
|
|
- proxy?.$modal.msgSuccess('任务开始成功');
|
|
|
+ proxy?.$modal.msgSuccess(t('qc.task.message.startSuccess'));
|
|
|
getList(); // 重新获取列表
|
|
|
} else {
|
|
|
- proxy?.$modal.msgError(res.msg || '任务开始失败');
|
|
|
+ proxy?.$modal.msgError(res.msg || t('qc.task.message.startFailed'));
|
|
|
}
|
|
|
} catch (error) {
|
|
|
- console.error('开始任务失败:', error);
|
|
|
+ console.error(t('qc.task.message.startFailed'), error);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
/** 删除按钮操作 */
|
|
|
const handleDelete = async (row?: TaskVO) => {
|
|
|
const _ids = row?.id || ids.value;
|
|
|
- await proxy?.$modal.confirm('是否确认删除文档质控任务编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false));
|
|
|
+ await proxy?.$modal.confirm(t('qc.task.message.deleteConfirm', { ids: _ids })).finally(() => (loading.value = false));
|
|
|
await delTask(_ids);
|
|
|
- proxy?.$modal.msgSuccess('删除成功');
|
|
|
+ proxy?.$modal.msgSuccess(t('qc.task.message.deleteSuccess'));
|
|
|
await getList();
|
|
|
};
|
|
|
|