|
@@ -23,12 +23,12 @@
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="合同名称">
|
|
|
- <el-input v-model="formData.contractName" readonly />
|
|
|
+ <el-input v-model="formData.contractName" disabled />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="合同编号">
|
|
|
- <el-input v-model="formData.contractCode" readonly />
|
|
|
+ <el-input v-model="formData.contractCode" disabled />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -36,12 +36,22 @@
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="客户名称">
|
|
|
- <el-input v-model="formData.manufactureName" readonly />
|
|
|
+ <el-input v-model="formData.manufactureName" disabled />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="结算方式">
|
|
|
+ <!-- <el-form-item label="结算方式">
|
|
|
<el-input v-model="formData.payment" readonly />
|
|
|
+ </el-form-item> -->
|
|
|
+ <el-form-item :label="t('project.payment')" prop="payment">
|
|
|
+ <el-select v-model="formData.payment" placeholder="请选择" disabled>
|
|
|
+ <el-option
|
|
|
+ v-for="dict in getStrDictOptions(DICT_TYPE.PMS_PROJECT_SETTLEMENT)"
|
|
|
+ :key="dict.id"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -49,12 +59,12 @@
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="总数">
|
|
|
- <el-input v-model="formData.workloadTotal" readonly />
|
|
|
+ <el-input v-model="formData.workloadTotal" disabled />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="已完成">
|
|
|
- <el-input v-model="formData.workloadFinish" readonly />
|
|
|
+ <el-input v-model="formData.workloadFinish" disabled />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -66,7 +76,7 @@
|
|
|
v-model="formData.startTime"
|
|
|
type="date"
|
|
|
placeholder="选择开始时间"
|
|
|
- readonly
|
|
|
+ disabled
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
@@ -76,13 +86,13 @@
|
|
|
v-model="formData.endTime"
|
|
|
type="date"
|
|
|
placeholder="选择完成时间"
|
|
|
- readonly
|
|
|
+ disabled
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-form-item label="备注">
|
|
|
- <el-input v-model="formData.remark" type="textarea" readonly />
|
|
|
+ <el-input v-model="formData.remark" type="textarea" disabled />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</el-card>
|
|
@@ -97,13 +107,33 @@
|
|
|
|
|
|
<el-table :data="taskList" v-loading="loading">
|
|
|
<el-table-column label="井号" prop="wellName" />
|
|
|
- <el-table-column label="井型/井别" prop="wellType" />
|
|
|
+ <el-table-column :label="t('project.wellType')" align="center" prop="wellType" min-width="70">
|
|
|
+ <template #default="scope">
|
|
|
+ <dict-tag :type="DICT_TYPE.PMS_PROJECT_WELL_TYPE" :value="scope.row.wellType" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column :label="t('project.wellCategory')" align="center" prop="wellCategory" min-width="70">
|
|
|
+ <template #default="scope">
|
|
|
+ <dict-tag :type="DICT_TYPE.PMS_PROJECT_WELL_CATEGORY" :value="scope.row.wellCategory" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column label="施工地点" prop="location" />
|
|
|
- <el-table-column label="施工工艺" prop="technique" />
|
|
|
+ <el-table-column :label="t('project.technology')" align="center" prop="technique" min-width="70">
|
|
|
+ <template #default="scope">
|
|
|
+ <dict-tag :type="DICT_TYPE.PMS_PROJECT_TECHNOLOGY" :value="scope.row.technique" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column label="设计工作量" prop="workloadDesign" />
|
|
|
<el-table-column label="施工队伍">
|
|
|
<template #default="{ row }">
|
|
|
- {{ getDeptNames(row.deptIds) }}
|
|
|
+ <el-tooltip
|
|
|
+ :content="getAllDeptNames(row.deptIds)"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <span class="dept-names">
|
|
|
+ {{ getBriefDeptNames(row.deptIds) }}
|
|
|
+ </span>
|
|
|
+ </el-tooltip>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="施工设备">
|
|
@@ -145,6 +175,7 @@ import { IotDeviceApi } from '@/api/pms/device'
|
|
|
import * as UserApi from "@/api/system/user";
|
|
|
import * as DeptApi from "@/api/system/dept";
|
|
|
import { handleTree } from "@/utils/tree";
|
|
|
+import {DICT_TYPE, getStrDictOptions} from "@/utils/dict";
|
|
|
|
|
|
/** 项目信息 详情 包含 项目下的任务列表 */
|
|
|
defineOptions({ name: 'IotProjectInfoDetail' })
|
|
@@ -153,6 +184,7 @@ const { currentRoute, push } = useRouter();
|
|
|
const { params } = useRoute();
|
|
|
const loading = ref(false);
|
|
|
const formLoading = ref(false);
|
|
|
+const { t } = useI18n() // 国际化
|
|
|
|
|
|
// 项目基本信息
|
|
|
const formData = ref({
|
|
@@ -223,6 +255,40 @@ const getAllDeviceNames = (deviceIds) => {
|
|
|
return deviceNames.join(', ') || '无有效设备';
|
|
|
};
|
|
|
|
|
|
+// 获取简略部门名称(用于表格显示)
|
|
|
+const getBriefDeptNames = (deptIds) => {
|
|
|
+ if (!deptIds || deptIds.length === 0) return '';
|
|
|
+
|
|
|
+ const names = [];
|
|
|
+ const findDept = (list, id) => {
|
|
|
+ for (const item of list) {
|
|
|
+ if (item.id === id) {
|
|
|
+ names.push(item.name);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ if (item.children && findDept(item.children, id)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ };
|
|
|
+
|
|
|
+ deptIds.forEach(id => findDept(deptList.value, id));
|
|
|
+
|
|
|
+ if (names.length === 0) return '';
|
|
|
+ if (names.length > 2) {
|
|
|
+ return `${names[0]}, ${names[1]}...`;
|
|
|
+ }
|
|
|
+
|
|
|
+ return names.join(', ');
|
|
|
+};
|
|
|
+
|
|
|
+// 获取所有部门名称(用于tooltip显示)
|
|
|
+const getAllDeptNames = (deptIds) => {
|
|
|
+ if (!deptIds || deptIds.length === 0) return '无施工队伍';
|
|
|
+ return getDeptNames(deptIds);
|
|
|
+};
|
|
|
+
|
|
|
// 获取责任人名称
|
|
|
const getResponsiblePersonNames = (responsiblePersonIds) => {
|
|
|
if (!responsiblePersonIds || responsiblePersonIds.length === 0) return '';
|