From 1bbbfcb0852aafba3489b0e4c617201f1aa0e0bd Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期二, 26 十一月 2024 16:03:08 +0800
Subject: [PATCH] import目录修复
---
src/views/projectEngineering/projectLibrary/index.vue | 2
src/views/projectEngineering/projectLibrary/component/BasicInfo.vue | 529 ++++++++++++++++++++++++++++++++++++++++
src/views/projectEngineering/projectLibrary/projectDetails.vue | 206 +++++++++++++++
src/views/projectProcess/index.vue | 2
src/views/projectEngineering/projectLibrary/component/FileDialog.vue | 0
5 files changed, 737 insertions(+), 2 deletions(-)
diff --git a/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue b/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue
new file mode 100644
index 0000000..c649a96
--- /dev/null
+++ b/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue
@@ -0,0 +1,529 @@
+<template>
+ <div class="basic-info">
+ <el-form ref="demoFormRef" :disabled="disabled" :model="projectForm" :rules="rules" class="dialog_form" :inline = "true">
+ <el-row :gutter="20">
+ <el-col :span="6">
+ <el-form-item class="item" label="椤圭洰鍚嶇О" label-width="100px" prop="projectName">
+ <el-input v-model.trim="projectForm.projectName" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item class="item" label="椤圭洰浠g爜" label-width="100px" prop="code">
+ <el-input v-model.trim="projectForm.projectCode" class="item" clearable disabled maxlength="255" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12" style="position: relative">
+ <div style="width: 150px; position: absolute;"><img alt="" src="../../../../assets/images/s.png" /></div>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item class="item" label="寤鸿鍐呭" label-width="100px" prop="content">
+ <el-input v-model.trim="projectForm.content" style="width: 100%;" clearable maxlength="255" placeholder="璇疯緭鍏�" type="textarea" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="6">
+ <el-form-item label="璧勯噾绫诲瀷" label-width="100px" prop="fundsType" style="width: 100%">
+ <el-tree-select
+ v-model="projectForm.fundType"
+ :data="sys_funding_type"
+ :props="{ dictLabel: 'label', dictValue: 'id' }"
+ :render-after-expand="false"
+ clearable
+ placeholder="璇烽�夋嫨"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="椤圭洰鎶曡祫绫诲埆" label-width="100px" prop="investmentType" style="width: 100%">
+ <el-tree-select
+ v-model="projectForm.investType"
+ :data="sys_investment_type"
+ :props="{ dictLabel: 'label', dictValue: 'id' }"
+ :render-after-expand="false"
+ clearable
+ placeholder="璇烽�夋嫨"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="椤圭洰闃舵" label-width="100px" prop="fundsType" style="width: 100%">
+ <el-input v-model.trim="projectForm.projectPhase" class="item" clearable disabled maxlength="255" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="6">
+ <el-form-item label="椤圭洰绫诲瀷" label-width="100px" prop="projectType" style="width: 100%">
+ <el-tree-select
+ v-model="projectForm.projectType"
+ :data="sys_project_type"
+ :props="{ dictLabel: 'label', dictValue: 'id' }"
+ :render-after-expand="false"
+ clearable
+ placeholder="璇烽�夋嫨"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="椤圭洰鐘舵��" label-width="100px" prop="projectstatus" style="width: 100%">
+ <el-tree-select
+ v-model="projectForm.projectStatus"
+ :data="sys_project_status"
+ :props="{ dictLabel: 'label', dictValue: 'id' }"
+ :render-after-expand="false"
+ clearable
+ placeholder="璇烽�夋嫨"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="椤圭洰涓氫富鍗曚綅" label-width="100px" prop="company" style="width: 100%">
+ <el-input v-model.trim="projectForm.projectOwnerUnit" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="6">
+ <el-form-item label="椤圭洰鑱旂郴浜�" label-width="100px" style="width: 100%">
+ <el-input v-model.trim="projectForm.projectContactPerson" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="鑱旂郴鏂瑰紡" label-width="100px" prop="projectPhone" style="width: 100%">
+ <el-input v-model.trim="projectForm.contact" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="鍏宠仈宸ョ▼" label-width="100px" prop="engineering" style="width: 100%">
+ <!-- <el-input v-model.trim="getEngineeringName" class="item" clearable disabled maxlength="255" placeholder="璇峰湪宸ョ▼涓�夋嫨椤圭洰" />-->
+ <el-select v-model="projectForm.engineeringIdList" :multiple="true" collapse-tags placeholder="璇烽�夋嫨" style="width: 100%">
+ <el-option v-for="item in selectOptions" :key="item.id" :label="item.engineeringName" :value="item.id" />
+ <RemoteSelect v-if="selectOptions.length" :hasMore="hasMore" :loading="loading" :page="page" @loadMore="handleLoadMore" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="6">
+ <el-form-item label="涓荤閮ㄩ棬" label-width="100px" prop="department" style="width: 100%">
+ <el-tree-select
+ v-model="projectForm.competentDepartmentList"
+ :data="sys_competent_department"
+ :multiple="true"
+ :props="{ dictLabel: 'label', dictValue: 'id' }"
+ :render-after-expand="false"
+ clearable
+ collapse-tags
+ placeholder="璇烽�夋嫨"
+ style="width: 100%"
+ @change="changeDepartment"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="琛屾斂鍖哄垝" label-width="100px" style="width: 100%">
+ <el-tree-select
+ v-model="projectForm.area"
+ :data="sys_administrative_divisions"
+ :props="{ dictLabel: 'label', dictValue: 'id' }"
+ :render-after-expand="false"
+ clearable
+ placeholder="璇烽�夋嫨"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="绠$悊褰掑彛" label-width="100px" style="width: 100%">
+ <el-tree-select
+ v-model="projectForm.managementCentralizationList"
+ :data="sys_centralized_management"
+ :multiple="true"
+ :props="{ dictLabel: 'label', dictValue: 'id' }"
+ :render-after-expand="false"
+ clearable
+ collapse-tags
+ placeholder="璇烽�夋嫨"
+ style="width: 100%"
+ @change="changePutUnder"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="6">
+ <el-form-item label="椤圭洰瀹℃壒绫诲瀷" label-width="100px" style="width: 100%">
+ <el-tree-select
+ v-model="projectForm.projectApprovalType"
+ :data="sys_approval_type"
+ :props="{ dictLabel: 'label', dictValue: 'id' }"
+ :render-after-expand="false"
+ clearable
+ placeholder="璇烽�夋嫨"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="鎸夌洰褰�" label-width="100px" style="width: 100%">
+ <el-input v-model="largeCategory" clearable disabled placeholder="璇烽�夋嫨澶х被" style="width: 49%" />
+ <el-input v-model="subclass" class="ml-[2%]" clearable disabled placeholder="璇烽�夋嫨灏忕被" style="width: 49%" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="閲嶇偣鍒嗙被" label-width="100px" style="width: 100%">
+ <el-tree-select
+ v-model="projectForm.importanceType"
+ :data="sys_key_categories"
+ :props="{ dictLabel: 'label', dictValue: 'id' }"
+ :render-after-expand="false"
+ clearable
+ placeholder="璇烽�夋嫨"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="6">
+ <el-form-item label="绔嬮」鏃堕棿" label-width="100px" prop="setTime" style="width: 100%">
+ <el-date-picker v-model="setTime" placeholder="閫夋嫨鏃堕棿" style="width: 100%" type="date" @change="chaneApproval" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="璁″垝寮�宸ユ椂闂�" label-width="100px" style="width: 100%">
+ <el-date-picker v-model="planStartTime" placeholder="閫夋嫨鏃堕棿" style="width: 100%" type="date" @change="chaneStartWork" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="璁″垝绔e伐鏃堕棿" label-width="100px" style="width: 100%">
+ <el-date-picker v-model="planCompleteTime" placeholder="閫夋嫨鏃堕棿" style="width: 100%" type="date" @change="chaneCompleted" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="6">
+ <el-form-item label="涓爣鍗曚綅" label-width="100px" prop="setTime" style="width: 100%">
+ <el-input v-model.trim="projectForm.winUnit" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="涓爣閲戦" label-width="100px" style="width: 100%">
+ <el-input v-model.trim="projectForm.winAmount" class="item" clearable maxlength="255" placeholder="璇疯緭鍏�" type="number" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="涓爣鏃堕棿" label-width="100px" style="width: 100%">
+ <el-date-picker v-model="winTime" placeholder="閫夋嫨鏃堕棿" style="width: 100%" type="date" @change="chaneWinTime" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="6">
+ <el-form-item label="骞村害鎶曡祫璁″垝" label-width="100px" prop="year" style="width: 100%">
+ <el-tree-select
+ v-model="projectForm.year"
+ :data="sys_annual_plan"
+ :props="{ dictLabel: 'label', dictValue: 'id' }"
+ :render-after-expand="false"
+ clearable
+ placeholder="璇烽�夋嫨"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="骞村害鎶曡祫閲戦" label-width="100px" prop="company" style="width: 100%; display: flex; min-width: 260px">
+ <el-input v-model.trim="projectForm.yearInvestAmount" clearable maxlength="255" placeholder="璇疯緭鍏�" style="width: 90%" type="number" />
+ <span style="margin-left: 2px">鍏�</span>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="0">
+ <el-col :span="18">
+ <el-form-item label="椤圭洰鍦板潃:" label-width="100px" prop="medicalAddr" style="width: 100%">
+ <div class="input-row">
+ <el-input v-model.trim="projectForm.address" class="input-item" disabled maxlength="255" placeholder="璇疯緭鍏�"></el-input>
+ <div v-if="!disabled" class="map-btn" @click="dialogMap = true">
+ <img alt="" src="@/assets/images/positionl.png" />
+ </div>
+ </div>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="0">
+ <el-col :span="18">
+ <el-form-item label="瀹℃壒璁″垝涔�:" label-width="100px" prop="medicalAddr" style="width: 100%">
+ <div class="flex">
+ <upload-standard
+ :file-list.sync="projectList"
+ :accept="accept"
+ listType="text"
+ @fileListAdd="handleAdd"
+ @fileListRemove="handleRemove"
+ >
+ <el-button :icon="Upload" type="primary">涓婁紶</el-button>
+ </upload-standard>
+ </div>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+
+ <el-dialog :visible.sync="dialogMap" width="900">
+ <map-component
+ v-if="dialogMap"
+ id="dialogMapId"
+ :mapList="dialogMapList"
+ class="w-full h-[643px]"
+ @map-click="mapClick"
+ @label-click="mapCreateClick"
+ />
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+// import Upload from '@element-plus/icons-vue/dist/Upload.vue';
+// import MapComponent from '@/components/Map/index.vue';
+// import UploadStandard from '@/components/uploadStandard.vue';
+// import { usePlanLibrary } from '@/hooks/detailsInformation';
+// import { getList } from '@/api/engineeringLibrary/index';
+// import RemoteSelect from '@/components/RemoteSelect/index.vue';
+import { formatDate } from '@/utils';
+
+export default {
+ components: {
+ // MapComponent,
+ // UploadStandard,
+ // RemoteSelect
+ },
+ props: {
+ disabled: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {
+ projectForm: {
+ projectName: '',
+ projectCode: '',
+ projectType: '',
+ projectStatus: '1',
+ fundType: '',
+ investType: '',
+ importanceType: '',
+ projectPhase: '鍌ㄥ瑙勫垝闃舵',
+ tag: '',
+ competentDepartment: '',
+ projectLocation: '',
+ longitude: '',
+ latitude: '',
+ managementCentralization: '',
+ projectApplicationPhase: '',
+ projectApprovalType: '',
+ investmentCatalogue: '',
+ approvalPlan: '',
+ isSetProject: '',
+ setTime: '',
+ assignmentStatus: '',
+ area: '',
+ winTime: '',
+ winUnit: '',
+ winAmount: '',
+ address: '',
+ engineeringIdList: [],
+ content: '',
+ contact: '',
+ projectOwnerUnit: '',
+ planStartTime: '',
+ planCompleteTime: '',
+ projectContactPerson: '',
+ fileIdList: [],
+ sysOssVos: [],
+ engineeringInfos: [],
+ year: '',
+ yearInvestAmount: '',
+ competentDepartmentList: [],
+ managementCentralizationList: []
+ },
+ projectList: [],
+ dialogMap: false,
+ page: 1,
+ loading: false,
+ hasMore: true,
+ selectOptions: [],
+ accept: `'pdf', 'docx', 'xlsx', 'jpg','jpeg'`,
+ largeCategory: '',
+ subclass: '',
+ mapCreateInfo: {},
+ demoFormRef: null,
+ rules: {
+ projectName: [{ required: true, message: '璇疯緭鍏ラ」鐩悕绉�', trigger: 'blur' }]
+ }
+ };
+ },
+ computed: {
+ dialogMapList() {
+ return [{
+ addr: this.projectForm.address,
+ name: '鍒涘缓'
+ }];
+ },
+ // // 鍦╒ue 2涓娇鐢� computed 鏇夸唬 sys_* 鐨勫搷搴斿紡瀛楀吀
+ // sysFundingType() {
+ // return this.$dict.get('sys_funding_type');
+ // },
+ // sysInvestmentType() {
+ // return this.$dict.get('sys_investment_type');
+ // // 鍏朵粬瀛楀吀鍚岀悊
+ // }
+ },
+ created() {
+ this.handleLoadMore(1);
+ },
+ methods: {
+ changeDepartment(val) {
+ if (!val.length) {
+ this.largeCategory = '';
+ return;
+ }
+ const labels = this.sysDepartment.filter(item => val.includes(item.value)).map(item => item.label);
+ this.largeCategory = labels.join(',');
+ },
+ changePutUnder(val) {
+ // 鍚� changeDepartment 鏂规硶
+ },
+ chaneApproval(val) {
+ if (!val) return;
+ this.projectForm.setTime = formatDate(val);
+ },
+ chaneCompleted(val) {
+ if (!val) return;
+ this.projectForm.planCompleteTime = formatDate(val);
+ },
+ chaneWinTime(val) {
+ if (!val) return;
+ this.projectForm.winTime = formatDate(val);
+ },
+ chaneStartWork(val) {
+ if (!val) return;
+ this.projectForm.planStartTime = formatDate(val);
+ },
+ async loadDataList(newPage) {
+ try {
+ this.loading = true;
+ const res = await getList({ pageNum: newPage, pageSize: 10000 });
+ const list = res.rows || [];
+ if (newPage === 1) {
+ this.selectOptions = [];
+ }
+ this.selectOptions.push(...list);
+ this.hasMore = this.selectOptions.length < res.total;
+ this.page = newPage;
+ } catch (err) {
+ console.error(err);
+ } finally {
+ this.loading = false;
+ }
+ },
+ handleLoadMore(newPage) {
+ this.loadDataList(newPage);
+ },
+ mapClick({ e, addr }) {
+ this.mapCreateInfo = {
+ lon: e.lnglat.lng,
+ lat: e.lnglat.lat,
+ addr
+ };
+ },
+ mapCreateClick() {
+ const { lon, lat, addr } = this.mapCreateInfo;
+ if (lon && lat && addr) {
+ this.projectForm.longitude = lon;
+ this.projectForm.latitude = lat;
+ this.projectForm.address = addr;
+ this.$message.success('鑾峰彇鍦板潃鎴愬姛');
+ this.dialogMap = false;
+ } else {
+ this.$message.error('鑾峰彇鍧愭爣澶辫触');
+ }
+ },
+ handleRemove(file) {
+ if (file) {
+ this.projectForm.fileIdList = this.projectList.map(item => item.fileId);
+ localStorage.setItem('projectList', JSON.stringify(file));
+ }
+ },
+ handleAdd(file) {
+ if (file) {
+ localStorage.setItem('projectList', JSON.stringify(file));
+ }
+ }
+ },
+ watch: {
+ 'projectForm.managementCentralizationList'(val) {
+ if (val) {
+ const labels = this.sysCentralizedManagement
+ .filter(item => val.includes(item.value))
+ .map(item => item.label);
+ this.subclass = labels.join(',');
+ }
+ },
+ 'projectForm.competentDepartmentList'(val) {
+ if (val) {
+ const labels = this.sysDepartment
+ .filter(item => val.includes(item.value))
+ .map(item => item.label);
+ this.largeCategory = labels.join(',');
+ }
+ },
+ projectList: {
+ handler(val) {
+ if (val) {
+ this.projectForm.fileIdList = val.map(item => item.fileId);
+ }
+ },
+ deep: true
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+.item {
+ width: 130%;
+}
+
+.input-row {
+ display: flex;
+ width: 100%;
+
+ .input-item {
+ width: 100%;
+ }
+}
+
+.map-btn {
+ width: 32px;
+ height: 32px;
+ background: #c6d6ff;
+ border: 1px solid #3369ff;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ cursor: pointer;
+
+ img {
+ width: 20px;
+ }
+}
+</style>
diff --git a/src/views/projectEngineering/component/FileDialog.vue b/src/views/projectEngineering/projectLibrary/component/FileDialog.vue
similarity index 100%
rename from src/views/projectEngineering/component/FileDialog.vue
rename to src/views/projectEngineering/projectLibrary/component/FileDialog.vue
diff --git a/src/views/projectEngineering/projectLibrary/index.vue b/src/views/projectEngineering/projectLibrary/index.vue
index 7584bc8..c84ac84 100644
--- a/src/views/projectEngineering/projectLibrary/index.vue
+++ b/src/views/projectEngineering/projectLibrary/index.vue
@@ -277,7 +277,7 @@
<script>
import {listInfo, getInfo, delInfo, addInfo, updateInfo} from "@/api/projectInfo";
import {current, currentRest} from '@/views/projectEngineering/projectLibrary/list';
-import FileDialog from '@/views/projectEngineering/component/FileDialog';
+import FileDialog from '@/views/projectEngineering/projectLibrary/component/FileDialog';
export default {
dicts: ['sys_administrative_divisions', 'sys_investment_type', 'sys_project_phases',
diff --git a/src/views/projectEngineering/projectLibrary/projectDetails.vue b/src/views/projectEngineering/projectLibrary/projectDetails.vue
new file mode 100644
index 0000000..0cd0d7e
--- /dev/null
+++ b/src/views/projectEngineering/projectLibrary/projectDetails.vue
@@ -0,0 +1,206 @@
+<template>
+ <el-card class="card-container">
+ <div class="flex justify-between mb-4">
+ <el-tabs v-model="currentTab" @tab-click="handleClick">
+ <el-tab-pane
+ v-for="item in TABS_DATA"
+ :key="item.value"
+ :label="item.label"
+ :name="item.value"
+ >
+ <template slot="label">
+ <div class="text-sm">{{ item.label }}</div>
+ </template>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+ <component :is="componentName" ref="childRef" :disabled="disabled" class="w-full h-[calc(100%-55px)]" />
+ <div v-if="!disabled" class="mt-[3%] ml-[3%] flex">
+ <el-button class="w-[72px]" type="primary" @click="submit">淇濆瓨</el-button>
+ <el-button class="w-[72px]" @click="reset">閲嶇疆</el-button>
+ <!-- <el-button v-else class="w-[72px]" @click="cancel">鍙栨秷</el-button> -->
+ </div>
+ </el-card>
+</template>
+
+<script>
+import BasicInfo from '@/views/projectEngineering/projectLibrary/component/BasicInfo';
+// import InvestInfo from '@/components/InvestInfo.vue';
+// import InvestmentFunds from '@/components/investmentFunds.vue';
+// import LegalPerson from '@/components/legalPerson.vue';
+// import PolicyInfo from '@/components/PolicyInfo.vue';
+// import DocumentsInfo from '@/components/DocumentsInfo.vue';
+import { addProject, getProject, updateProject, getProjectCode } from '@/api/projectInfo';
+
+export default {
+ data() {
+ return {
+ currentTab: '椤圭洰绠$悊鍩虹淇℃伅',
+ id: this.$route.query.id || '',
+ disabled: false,
+ componentName: 'BasicInfo',
+ TABS_DATA: [
+ {
+ label: '椤圭洰绠$悊鍩虹淇℃伅',
+ value: '椤圭洰绠$悊鍩虹淇℃伅',
+ componentName: BasicInfo
+ },
+ {
+ label: '鎶曡祫绠$悊鍩虹淇℃伅',
+ value: '浠诲姟涓嬪彂',
+ componentName: 'InvestInfo'
+ },
+ {
+ label: ' 椤圭洰鎶曡祫鍙婅祫閲戞潵婧�',
+ value: '椤圭洰鎶曡祫鍙婅祫閲戞潵婧�',
+ componentName: 'InvestmentFunds'
+ },
+ {
+ label: '椤圭洰(娉曚汉)鍗曚綅鐧昏淇℃伅',
+ value: '椤圭洰(娉曚汉)鍗曚綅鐧昏淇℃伅',
+ componentName: 'LegalPerson'
+ },
+ {
+ label: '鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌',
+ value: '鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌',
+ componentName: 'PolicyInfo'
+ },
+ {
+ label: '鐩稿叧鏂囦功',
+ value: '鐩稿叧鏂囦功',
+ componentName: 'DocumentsInfo'
+ }
+ ],
+ childRef: null,
+ // 鍋囪杩欎簺鐘舵�佹槸浠� Vuex 涓幏鍙栫殑锛屾垨鑰呬綘鍙互鐩存帴鍦� data 涓畾涔夊畠浠�
+ // projectForm, investment, investmentFunds, legalPerson, resetPlanLibrary, investmentProjectPolicyComplianceDTO, fileIdList, documentsInfoList, projectList, fileList
+ };
+ },
+ methods: {
+ handleClick(tabTarget) {
+ this.componentName = this.TABS_DATA[tabTarget.index].componentName;
+ },
+ submit() {
+ if (!this.projectForm.projectName) {
+ this.$message.error('璇疯緭鍏ラ」鐩悕绉�');
+ return;
+ }
+ if (this.projectForm.contact) {
+ const phoneRegex = /^1[3-9]\d{9}$/;
+ if (!phoneRegex.test(this.projectForm.contact)) {
+ this.$message.error('璇疯緭鍏ユ纭殑鎵嬫満鍙风爜');
+ return;
+ }
+ }
+ if (this.$refs.childRef) {
+ this.$refs.childRef.$refs.demoFormRef.validate((valid) => {
+ if (valid) {
+ const payload = {
+ projectInfoInsertDTO: this.projectForm,
+ projectInvestmentInfo: this.investment,
+ projectInvestmentFunding: this.investmentFunds,
+ projectUnitRegistrationInfo: this.legalPerson,
+ investmentProjectPolicyComplianceDTO: this.investmentProjectPolicyComplianceDTO,
+ fileIdList: this.fileIdList
+ };
+ if (this.id) {
+ updateProject(payload).then(res => {
+ if (res.code === 200) {
+ this.$message.success(res.msg);
+ this.$router.push({ path: '/projectEngineering/project/projectLibrary' });
+ } else {
+ this.$message.error(res.msg);
+ }
+ });
+ } else {
+ addProject(payload).then(res => {
+ if (res.code === 200) {
+ this.$message.success(res.msg);
+ this.$router.push({ path: '/projectEngineering/project/projectLibrary' });
+ } else {
+ this.$message.error(res.msg);
+ }
+ });
+ }
+ }
+ });
+ }
+ },
+ getProjectInfo(id) {
+ getProject(id, 0).then(res => {
+ if (res.data) {
+ this.investment = res.data.projectInvestmentInfo || {};
+ this.investmentFunds = res.data.projectInvestmentFunding || {};
+ this.legalPerson = res.data.projectUnitRegistrationInfo || {};
+ this.investmentProjectPolicyComplianceDTO = res.data.investmentProjectPolicyComplianceDTO || {};
+ if (res.data.investmentProjectPolicyComplianceDTO && res.data.investmentProjectPolicyComplianceDTO.sysOssVos.length > 0) {
+ this.fileList = res.data.investmentProjectPolicyComplianceDTO.sysOssVos.map(item => ({
+ fileId: item.ossId,
+ name: item.originalName,
+ url: item.url
+ }));
+ } else {
+ this.fileList = [];
+ }
+
+ if (res.data.fileIdList) {
+ this.fileIdList = res.data.fileIdList;
+ this.documentsInfoList = res.data.sysOssVos.map(item => ({
+ fileId: item.ossId,
+ name: item.originalName,
+ url: item.url
+ }));
+ }
+ this.projectForm = res.data.projectInfoInsertDTO || {};
+ this.projectList = res.data.projectInfoInsertDTO.sysOssVos.map(item => ({
+ fileId: item.ossId,
+ name: item.originalName,
+ url: item.url
+ }));
+ }
+ });
+ },
+ reset() {
+ if (this.id) {
+ this.getProjectInfo(this.id);
+ } else {
+ this.getProjectCodeApi();
+ // 鍋囪 resetPlanLibrary 鏄竴涓柟娉曪紝鐢ㄤ簬閲嶇疆鐘舵��
+ this.resetPlanLibrary();
+ this.fileList = [];
+ this.fileIdList = [];
+ this.projectList = [];
+ this.documentsInfoList = [];
+ }
+ },
+ cancel() {
+ this.$router.push({ path: '/projectEngineering/project/reserveProjects', query: { projectCategory: '1' } });
+ localStorage.removeItem('fileIdList');
+ },
+ getProjectCodeApi() {
+ getProjectCode().then(res => {
+ if (res.code === 200) {
+ this.projectForm.projectCode = res.msg;
+ }
+ });
+ },
+ // 鍋囪 resetPlanLibrary 鏄粠鏌愪釜鍦版柟寮曞叆鎴栧畾涔夌殑锛屼綘闇�瑕佺‘淇濆畠鍦ㄤ綘鐨勭粍浠朵腑鍙敤
+ // resetPlanLibrary() { ... }
+ },
+ created() {
+ // 鍦ㄧ粍浠跺垱寤烘椂鑾峰彇椤圭洰淇℃伅锛屽鏋� id 瀛樺湪
+ if (this.id) {
+ this.getProjectInfo(this.id);
+ } else {
+ this.getProjectCodeApi();
+ // 鍒濆鍖栨垨閲嶇疆鐘舵��
+ // this.resetPlanLibrary();
+ }
+ },
+
+};
+</script>
+
+<style scoped>
+/* 浣犵殑鏍峰紡 */
+</style>
diff --git a/src/views/projectProcess/index.vue b/src/views/projectProcess/index.vue
index a8d58d1..cef7b7d 100644
--- a/src/views/projectProcess/index.vue
+++ b/src/views/projectProcess/index.vue
@@ -277,7 +277,7 @@
<script>
import {listInfo, getInfo, delInfo, addInfo, updateInfo} from "@/api/projectInfo";
import {current, currentRest} from '@/views/projectEngineering/projectLibrary/list';
-import FileDialog from '@/views/projectEngineering/component/FileDialog';
+import FileDialog from '@/views/projectEngineering/projectLibrary/component/FileDialog';
export default {
dicts: ['sys_administrative_divisions', 'sys_investment_type', 'sys_project_phases',
--
Gitblit v1.8.0