|
@@ -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;
|
|
|
};
|
|
|
/**
|