2 Commits fd26e9de75 ... 45cdc97876

Autor SHA1 Nachricht Datum
  文毅 45cdc97876 Merge branch 'main' of http://192.168.0.80:3000/aexiaoliou/project-manager vor 1 Jahr
  文毅 d7a9bee3d4 修改 vor 1 Jahr
1 geänderte Dateien mit 154 neuen und 43 gelöschten Zeilen
  1. 154 43
      h5/src/views/data/repertory.vue

+ 154 - 43
h5/src/views/data/repertory.vue

@@ -98,7 +98,6 @@
 		<el-card class="box-card mt20" v-loading="data.loading">
 			<!-- 列表 -->
 			<el-table :data="data.tableData" @selection-change="handleTableDataSelectionChange">
-				<!-- props绑定数据表的字段,lable填写中文 -->
 				<el-table-column prop="name" label="项目名称" width="150" />
 				<el-table-column prop="create_time" label="创建时间" width="" />
 				<el-table-column prop="responsibility_person" label="责任人" width="" />
@@ -120,7 +119,6 @@
 					</template>
 				</el-table-column>
 			</el-table>
-
 			<!-- 分页 -->
 			<div class="yc_pagebox">
 				<el-pagination v-model:current-page="data.pagination.currentPage"
@@ -133,7 +131,6 @@
 		<vuecmf-dialog width="1200px" v-if="data.dialog.show" :model_value="data.dialog.show" :title="data.dialog.title" @close="closePage">
 			<template #content>
 				<el-form :model="data.form" label-width="120px" ref="formRef" v-loading="data.dialog.isLoading">
-					<!-- 每个form-item就是一个表单的标签,label是名称,prop和v-model绑定字段名 -->
 					<el-row :gutter="20">
 						<el-col :span="12">
 							<el-form-item label="项目名称" prop="name"
@@ -180,11 +177,9 @@
 									placeholder=" 填写项目开始时间" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
 							</el-form-item>
 							<el-form-item label="项目结束时间" prop="project_end_date">
-
 								<el-date-picker v-model="data.form.project_end_date" type="project_end_date"
 									placeholder="填写项目结束时间" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
 							</el-form-item>
-
 							<el-form-item label="开发开始时间" prop="dev_start_date">
 								<el-date-picker v-model="data.form.dev_start_date" type="dev_start_date"
 									placeholder=" 填写开发开始时间" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
@@ -193,7 +188,6 @@
 								<el-date-picker v-model="data.form.dev_end_date" type="dev_end_date" placeholder=" 填写开发结束时间"
 									value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
 							</el-form-item>
-
 							<el-form-item label="维护开始时间" prop="maintain_start_date">
 								<el-date-picker v-model="data.form.maintain_start_date" type="maintain_start_date"
 									placeholder=" 填写维护开始时间" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
@@ -202,7 +196,6 @@
 								<el-date-picker v-model="data.form.maintain_end_date" type="maintain_end_date"
 									placeholder=" 填写维护结束时间" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
 							</el-form-item>
-
 						</el-col>
 					</el-row>
 				</el-form>
@@ -224,22 +217,19 @@
 								<div style="position: fixed">
 									<h3 class="mb20">项目详情表:</h3>
 									<div m="4" class="ml20">
-										<p class="mt10" m="t-0 b-2" style="display: flex;">项目参与人员:
-										<div v-for="item in data.form.participants" >
-											{{ item }} ,
-										</div>
-										</p>
+										<p class="mt10" m="t-0 b-2" style="display: flex;">
+											项目参与人员:{{ data.form.participants?.join(',') }}</p>
 										<p class="mt10" m="t-0 b-2">预估金额:
 											<money :money="data.form.estimated_amount" />
 										</p>
-										<p class="mt10" m="t-0 b-2">约定开发周期: {{ data.form.pre_dev_time }} 天,</p>
-										<p class="mt10" m="t-0 b-2">约定维护周期: {{ data.form.pre_maintain_time }}天,</p>
-										<p class="mt10" m="t-0 b-2">项目周期开始时间: {{ data.form.project_start_date }},</p>
-										<p class="mt10" m="t-0 b-2">项目周期结束时间: {{ data.form.project_end_date }},</p>
-										<p class="mt10" m="t-0 b-2">开发开始时间: {{ data.form.dev_start_date }},</p>
-										<p class="mt10" m="t-0 b-2">开发结束时间: {{ data.form.dev_end_date }},</p>
-										<p class="mt10" m="t-0 b-2">维护开始时间: {{ data.form.maintain_start_date }},</p>
-										<p class="mt10" m="t-0 b-2">维护结束时间: {{ data.form.maintain_end_date }},</p>
+										<p class="mt10" m="t-0 b-2">约定开发周期: {{ data.form.pre_dev_time }} 天</p>
+										<p class="mt10" m="t-0 b-2">约定维护周期: {{ data.form.pre_maintain_time }}天</p>
+										<p class="mt10" m="t-0 b-2">项目周期开始时间: {{ data.form.project_start_date }}</p>
+										<p class="mt10" m="t-0 b-2">项目周期结束时间: {{ data.form.project_end_date }}</p>
+										<p class="mt10" m="t-0 b-2">开发开始时间: {{ data.form.dev_start_date }}</p>
+										<p class="mt10" m="t-0 b-2">开发结束时间: {{ data.form.dev_end_date }}</p>
+										<p class="mt10" m="t-0 b-2">维护开始时间: {{ data.form.maintain_start_date }}</p>
+										<p class="mt10" m="t-0 b-2">维护结束时间: {{ data.form.maintain_end_date }}</p>
 									</div>
 								</div>
 							</el-col>
@@ -264,7 +254,8 @@
 										</el-timeline-item>
 										<el-timeline-item>
 											<div class="flex justify-space-between mb-4 flex-wrap gap-4">
-												<el-button type="primary" text @click="newSchedule">新建进度</el-button>
+												<el-button type="primary" text
+													@click="newSchedule(data.form)">新建进度</el-button>
 											</div>
 										</el-timeline-item>
 									</el-timeline>
@@ -276,7 +267,7 @@
 				</el-form>
 			</template>
 		</vuecmf-dialog>
-		<!-- 弹出 项目进度 新增,更新页面-->
+		<!-- 弹出项目进度新增页面-->
 		<vuecmf-dialog width="500px" :model_value="data.schedule.show" :title="data.schedule.title"
 			@close="closeSchedulePage">
 			<template #content>
@@ -329,11 +320,66 @@
 			</template>
 			<template #footer>
 				<el-button type="default" @click="closeSchedulePage">取消</el-button>
-				<el-button type="primary" @click="submitScheduleUpdate()">更新</el-button>
 				<el-button type="success" @click="submitSchedule()">提交</el-button>
 			</template>
 		</vuecmf-dialog>
-		<!-- 弹出容器 ,查看合同详情-->
+		<!-- 弹出项目进度更新页面-->
+		<vuecmf-dialog width="500px" :model_value="data.scheduleup.show" :title="data.scheduleup.title"
+			@close="closeSchedulePage">
+			<template #content>
+				<el-form :model="data.formList" label-width="120px" ref="formRef" v-loading="data.scheduleup.isLoading">
+					<el-form-item label="进度名称" prop="name"
+						:rules="[{ required: true, message: '请填写进度名称', trigger: 'blur' }]">
+						<el-input v-model="data.formList.name" placeholder="进度名称" />
+					</el-form-item>
+					<el-form-item label="进度内容" prop="desc"
+						:rules="[{ required: true, message: '请填写进度内容', trigger: 'blur' }]">
+						<el-input v-model="data.formList.desc" placeholder="进度内容" />
+					</el-form-item>
+					<el-form-item label="进度负责人" prop="updater_id"
+						:rules="[{ required: true, message: '选择进度负责人', trigger: 'blur' }]">
+						<el-select v-model="data.formList.updater_id" placeholder="选择进度负责人">
+							<el-option :label="item.real_name" :value="item.id" v-for="item in data.repertoryList" />
+						</el-select>
+					</el-form-item>
+					<el-form-item label="开始时间" prop="start_date">
+						<el-date-picker v-model="data.formList.start_date" type="start_date" placeholder=" 填写开始时间"
+							value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+					</el-form-item>
+					<el-form-item label="结束时间" prop="end_date">
+						<el-date-picker v-model="data.formList.end_date" type="end_date" placeholder=" 填写结束时间"
+							value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+					</el-form-item>
+					<el-form-item label="状态" prop="status" :rules="[{ required: true, message: '请选择状态', trigger: 'blur' }]">
+						<el-select v-model="data.formList.status" placeholder="选择状态">
+							<el-option :label="item.value" :value="item.key" v-for="item in data.stalist" />
+						</el-select>
+					</el-form-item>
+					<el-form-item label="结束状态" prop="finish_project_status"
+						:rules="[{ required: true, message: '请选择结束状态', trigger: 'blur' }]">
+						<el-select v-model="data.formList.finish_project_status" placeholder="选择结束状态">
+							<el-option :label="item[1]" :value="item[0]" v-for="item in statusList.data" />
+						</el-select>
+					</el-form-item>
+					<el-form-item label="进行中状态" prop="going_project_status">
+						<el-select v-model="data.formList.going_project_status" placeholder="选择进行中状态">
+							<el-option :label="item[1]" :value="item[0]" v-for="item in statusList.data" />
+						</el-select>
+					</el-form-item>
+					<el-form-item label="是否更新状态" prop="is_update_project_status"
+						:rules="[{ required: true, message: '请更新状态', trigger: 'blur' }]">
+						<el-switch v-model="data.formList.is_update_project_status" class="ml-2" :active-value="1"
+							:inactive-value="0" style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949" />
+					</el-form-item>
+				</el-form>
+				<div class="height20"></div>
+			</template>
+			<template #footer>
+				<el-button type="default" @click="closeSchedulePage">取消</el-button>
+				<el-button type="primary" @click="submitScheduleUpdate()">更新</el-button>
+			</template>
+		</vuecmf-dialog>
+		<!-- 弹出查看合同详情-->
 		<vuecmf-dialog width="1200px" :model_value="data.contractDetail.showDetail" :title="data.contractDetail.titleDetail"
 			@close="closePage">
 			<template #content>
@@ -366,15 +412,15 @@
 				</el-form>
 			</template>
 			<template #footer>
-				<el-button type="primary" @click="newContract">添加新合同</el-button>
+				<el-button type="primary" @click="newContract(data.tableContract)">添加新合同</el-button>
 				<el-button type="default" @click="closePage">取消</el-button>
 			</template>
 		</vuecmf-dialog>
-		<!-- 弹出 合同 新增,更新页面-->
+		<!-- 弹出合同新增页面-->
 		<vuecmf-dialog width="500px" :model_value="data.contract.show" :title="data.contract.title"
 			@close="closeSchedulePage">
 			<template #content>
-				<el-form :model="data.formContract" label-width="120px" ref="formRef" v-loading="data.schedule.isLoading">
+				<el-form :model="data.formContract" label-width="120px" ref="formRef" v-loading="data.contract.isLoading">
 					<el-form-item label="合同名称" prop="title"
 						:rules="[{ required: true, message: '请填写合同名称', trigger: 'blur' }]">
 						<el-input v-model="data.formContract.title" placeholder="合同名称" />
@@ -412,12 +458,57 @@
 			</template>
 			<template #footer>
 				<el-button type="default" @click="closeSchedulePage">取消</el-button>
-				<el-button type="primary" @click="submitContractUpdate()">更新</el-button>
 				<el-button type="success" @click="submitContract()">提交</el-button>
 			</template>
 		</vuecmf-dialog>
-		<!-- 弹出状态 新增的页面-->
-		<vuecmf-dialog width="" :model_value="data.statusDialog.show" :title="data.statusDialog.title" @close="closePage">
+		<!-- 弹出合同更新页面-->
+		<vuecmf-dialog width="500px" :model_value="data.contractup.show" :title="data.contractup.title"
+			@close="closeSchedulePage">
+			<template #content>
+				<el-form :model="data.formContract" label-width="120px" ref="formRef" v-loading="data.contractup.isLoading">
+					<el-form-item label="合同名称" prop="title"
+						:rules="[{ required: true, message: '请填写合同名称', trigger: 'blur' }]">
+						<el-input v-model="data.formContract.title" placeholder="合同名称" />
+					</el-form-item>
+					<el-form-item label="甲方/客户" prop="client"
+						:rules="[{ required: true, message: '请填写甲方/客户', trigger: 'blur' }]">
+						<el-input v-model="data.formContract.client" placeholder="甲方/客户" />
+					</el-form-item>
+					<el-form-item label="乙方/开发公司" prop="developer"
+						:rules="[{ required: true, message: '请填写乙方/开发公司', trigger: 'blur' }]">
+						<el-input v-model="data.formContract.developer" placeholder="乙方/开发公司" />
+					</el-form-item>
+					<el-form-item label="合同金额" prop="amount"
+						:rules="[{ required: true, message: '请填写合同金额', trigger: 'blur' }]">
+						<el-input v-model="data.formContract.amount" placeholder="合同金额" />
+					</el-form-item>
+					<el-form-item label="合同签署日期" prop="date">
+						<el-date-picker v-model="data.formContract.date" type="date" placeholder="合同签署日期"
+							value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+					</el-form-item>
+					<el-form-item label="合同开始日期" prop="start_date">
+						<el-date-picker v-model="data.formContract.start_date" type="start_date" placeholder="合同开始日期"
+							value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+					</el-form-item>
+					<el-form-item label="合同结束日期" prop="end_date">
+						<el-date-picker v-model="data.formContract.end_date" type="end_date" placeholder="合同结束日期"
+							value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+					</el-form-item>
+					<el-form-item label="附件" prop="attachment">
+						<el-button type="default" @click="importExcel()">上传附件</el-button>
+						<el-text class="ml10">{{ data.attachMenttitle }}</el-text>
+					</el-form-item>
+				</el-form>
+				<div class="height20"></div>
+			</template>
+			<template #footer>
+				<el-button type="default" @click="closeSchedulePage">取消</el-button>
+				<el-button type="primary" @click="submitContractUpdate()">更新</el-button>
+			</template>
+		</vuecmf-dialog>
+		<!-- 弹出状态新增的页面-->
+		<vuecmf-dialog width="500px" :model_value="data.statusDialog.show" :title="data.statusDialog.title"
+			@close="closePage">
 			<template #content>
 				<el-form :model="data.formStatus" label-width="120px" ref="formRef" v-loading="data.statusDialog.isLoading">
 					<el-form-item label="状态名" prop="value">
@@ -434,8 +525,8 @@
 				<el-button type="primary" @click="submitStatusForm">提交</el-button>
 			</template>
 		</vuecmf-dialog>
-		<!-- 弹出状态 更新的页面-->
-		<vuecmf-dialog width="" :model_value="data.statusLog.show" :title="data.statusLog.title" @close="closePage">
+		<!-- 弹出状态更新的页面-->
+		<vuecmf-dialog width="500px" :model_value="data.statusLog.show" :title="data.statusLog.title" @close="closePage">
 			<template #content>
 				<el-form :model="data.formStatus" label-width="120px" ref="formRef" v-loading="data.statusLog.isLoading">
 					<el-form-item :label="data.formStatus.key || '选择状态'" prop="key">
@@ -444,7 +535,7 @@
 						</el-select>
 					</el-form-item>
 					<el-form-item :label="data.formStatus.key" prop="value">
-						<el-input v-model="data.formStatus.value" placeholder="新状态名" :style="{ width: '200px' }" />
+						<el-input v-model="data.formStatus.value" placeholder="新状态名" :style="{ width: '215px' }" />
 					</el-form-item>
 				</el-form>
 				<div class="height20"></div>
@@ -523,6 +614,12 @@ let data = reactive({
 		title: '添加', // 弹出框标题
 		isLoading: false, //是否加载中
 	},
+	//编辑进度弹出框
+	scheduleup: {
+		show: false, // 是否显示弹出框,用于最大化、最小化及还原
+		title: '编辑', // 弹出框标题
+		isLoading: false, //是否加载中
+	},
 	//合同详情弹出框
 	contractDetail: {
 		showDetail: false, // 是否显示弹出框,用于最大化、最小化及还原
@@ -535,6 +632,12 @@ let data = reactive({
 		title: '添加', // 弹出框标题
 		isLoading: false, //是否加载中
 	},
+	//编辑合同弹出框
+	contractup: {
+		show: false, // 是否显示弹出框,用于最大化、最小化及还原
+		title: '编辑', // 弹出框标题
+		isLoading: false, //是否加载中
+	},
 	//项目新增弹出框
 	statusDialog: {
 		show: false, // 是否显示弹出框,用于最大化、最小化及还原
@@ -591,7 +694,6 @@ const getAttachment = async (item: string) => {
 		data.formContract.attachment = item[0];
 		data.attachMenttitle = item[1];
 	})
-
 };
 /**
  * 实例化1个合同表单对象
@@ -763,7 +865,9 @@ const closePage = () => {
 };
 const closeSchedulePage = () => {
 	data.schedule.show = false;
+	data.scheduleup.show = false;
 	data.contract.show = false;
+	data.contractup.show = false;
 };
 /**
  * 弹出新增状态页面
@@ -792,33 +896,37 @@ const addPage = () => {
  * 弹出编辑项目页面
  */
 const edit = (item: any) => {
-	data.dialog.title = '编辑项目';
 	data.form = item;
+	data.dialog.title = '编辑项目';
 	data.dialog.show = true;
 };
 /**
  * 获取项目详情
  */
 const openDetail = (item: any) => {
-	data.dialogDetail.titleDetail = '项目详情';
-	data.form = item;
 	data.formList.project_id = item.id;
+	data.form = item;
+	data.dialogDetail.titleDetail = '项目详情';
 	data.dialogDetail.showDetail = true;
 };
 /**
  * 弹出新增项目进度页面
  */
-const newSchedule = async () => {
+const newSchedule = async (item: any) => {
+	console.log("🚀 ~ file: repertory.vue:810 ~ newSchedule ~ item:", item)
 	data.schedule.show = true;
 	data.schedule.title = '添加进度';
+	data.formList = newFormlist();
+	data.formList.project_id = item.id;
 };
 /**
  * 弹出编辑项目进度页面
  */
 const editSchedule = async (item: any) => {
-	data.schedule.show = true;
-	data.schedule.title = '编辑项目进度';
+	console.log("🚀 ~ file: repertory.vue:820 ~ editSchedule ~ item:", item)
 	data.formList = item;
+	data.scheduleup.show = true;
+	data.scheduleup.title = '编辑项目进度';
 };
 /**
  * 获取合同详情
@@ -833,16 +941,19 @@ const openContract = async (item: any) => {
 /**
  * 弹出新增合同页面
  */
-const newContract = async () => {
+const newContract = async (item: any) => {
 	data.contract.show = true;
 	data.contract.title = '添加合同';
+	data.attachMenttitle = '';
+	data.formContract = newFormcontract();
+	data.formContract.project_id = item[0].project_id;
 };
 /**
  * 弹出编辑项目进度页面
  */
 const editContract = async (item: any) => {
-	data.contract.show = true;
-	data.schedule.title = '编辑合同';
+	data.contractup.show = true;
+	data.contractup.title = '编辑合同';
 	data.formContract = item;
 };
 /**