|
@@ -1,205 +1,499 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
- <div
|
|
|
- style="height: 300px"
|
|
|
- class="bg-white"
|
|
|
+ <el-row style="height: 800px">
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-card
|
|
|
+ style="height: 100%"
|
|
|
+ >
|
|
|
+ <template #header>
|
|
|
+ <el-row align="middle">
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-text size="large">项目基本信息</el-text>
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="4"
|
|
|
+ :offset="14"
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ :icon="Edit"
|
|
|
+ @click="messageEdit"
|
|
|
+ >信息编辑
|
|
|
+ </el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </template>
|
|
|
+ <el-row>
|
|
|
+ <el-text
|
|
|
+ size="large"
|
|
|
+ :line-clamp="1"
|
|
|
+ >
|
|
|
+ <b>项目名称:</b>{{ information.name }}
|
|
|
+ </el-text>
|
|
|
+ </el-row>
|
|
|
+ <el-row class="mt-10">
|
|
|
+ <el-text
|
|
|
+ size="large"
|
|
|
+ :line-clamp="1"
|
|
|
+ >
|
|
|
+ <b>项目负责人:</b>{{ information.principal }}
|
|
|
+ </el-text>
|
|
|
+ </el-row>
|
|
|
+ <el-row class="mt-10">
|
|
|
+ <el-text
|
|
|
+ size="large"
|
|
|
+ :line-clamp="1"
|
|
|
+ >
|
|
|
+ <b>相关客户:</b>{{ information.customer }}
|
|
|
+ </el-text>
|
|
|
+ </el-row>
|
|
|
+ <el-row class="mt-10">
|
|
|
+ <el-text
|
|
|
+ size="large"
|
|
|
+ :line-clamp="1"
|
|
|
+ >
|
|
|
+ <b>紧急程度:</b>{{ emergentDegree }}
|
|
|
+ </el-text>
|
|
|
+ </el-row>
|
|
|
+ <el-row class="mt-10">
|
|
|
+ <el-text
|
|
|
+ size="large"
|
|
|
+ :line-clamp="1"
|
|
|
+ >
|
|
|
+ <b>项目金额:</b>{{ information.price }}元
|
|
|
+ </el-text>
|
|
|
+ </el-row>
|
|
|
+ <el-row class="mt-10">
|
|
|
+ <el-text
|
|
|
+ size="large"
|
|
|
+ >
|
|
|
+ <b>项目状态:</b>{{ projectState }}
|
|
|
+ </el-text>
|
|
|
+ </el-row>
|
|
|
+ <el-row class="mt-10">
|
|
|
+ <el-text
|
|
|
+ size="large"
|
|
|
+ >
|
|
|
+ <b>立项时间:</b>{{ information.CreatedAt }}
|
|
|
+ </el-text>
|
|
|
+ </el-row>
|
|
|
+ <el-row class="mt-10">
|
|
|
+ <el-col :span="3">
|
|
|
+ <el-text
|
|
|
+ size="large"
|
|
|
+ >
|
|
|
+ <b>项目说明:</b>
|
|
|
+ </el-text>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="20">
|
|
|
+ <el-text
|
|
|
+ size="large"
|
|
|
+ :line-clamp="4"
|
|
|
+ >
|
|
|
+ {{ information.illustrate }}
|
|
|
+ </el-text>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="13"
|
|
|
+ class="ml-5"
|
|
|
+ >
|
|
|
+ <el-card
|
|
|
+ style="height: 100%"
|
|
|
+ >
|
|
|
+ <template #header>
|
|
|
+ <el-row align="middle">
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-text size="large">项目文件列表</el-text>
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="3"
|
|
|
+ :offset="15"
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ :icon="Edit"
|
|
|
+ >类型编辑
|
|
|
+ </el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </template>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-input
|
|
|
+ v-model="fileCondition.name"
|
|
|
+ placeholder="请输入文件名称"
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="4"
|
|
|
+ :offset="1"
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ v-model="fileType"
|
|
|
+ clearable
|
|
|
+ @change="changeFileType"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in fileTypeList"
|
|
|
+ :key="item.ID"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.ID"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="3"
|
|
|
+ :offset="1"
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ :icon="Search"
|
|
|
+ @click="queryFile"
|
|
|
+ >查询
|
|
|
+ </el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="3"
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ :icon="RefreshLeft"
|
|
|
+ >
|
|
|
+ 重置
|
|
|
+ </el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="3"
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ :icon="Upload"
|
|
|
+ @click="fileDialog = true"
|
|
|
+ >
|
|
|
+ 上传
|
|
|
+ </el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="3"
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ :icon="Download"
|
|
|
+ @click="downloadTips"
|
|
|
+ >
|
|
|
+ 下载
|
|
|
+ </el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row style="margin-top: 20px">
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-table
|
|
|
+ :data="fileList"
|
|
|
+ row-class-name="row-class"
|
|
|
+ border
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ prop="ID"
|
|
|
+ align="center"
|
|
|
+ label="ID"
|
|
|
+ width="180"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="文件名称"
|
|
|
+ align="center"
|
|
|
+ width="350"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ label="项目操作"
|
|
|
+ align="center"
|
|
|
+ fixed="right"
|
|
|
+ >
|
|
|
+ <template #default="scope">
|
|
|
+ <el-button
|
|
|
+ text
|
|
|
+ type="primary"
|
|
|
+ :icon="Download"
|
|
|
+ size="large"
|
|
|
+ @click="projectEdit(scope.$index, scope.row)"
|
|
|
+ >
|
|
|
+ 下载
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ text
|
|
|
+ type="primary"
|
|
|
+ :icon="Delete"
|
|
|
+ size="large"
|
|
|
+ @click="projectDelete(scope.$index, scope.row)"
|
|
|
+ >
|
|
|
+ 删除
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-dialog
|
|
|
+ v-model="fileDialog"
|
|
|
+ title="上传文件"
|
|
|
+ width="40%"
|
|
|
+ :before-close="fileDialogClose"
|
|
|
+ :align-center="true"
|
|
|
>
|
|
|
- <div class="basicInformation">
|
|
|
- <div class="basicTitle">
|
|
|
- <el-image :src="sign" />
|
|
|
- <el-text
|
|
|
- style="margin-left: 10px"
|
|
|
- size="large"
|
|
|
- tag="b"
|
|
|
- :line-clamp="1"
|
|
|
- >{{ projectTitle }}</el-text>
|
|
|
- </div>
|
|
|
- <div class="basicEdit">
|
|
|
+ <el-form>
|
|
|
+ <el-row style="margin-top: 20px">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="文件类型:">
|
|
|
+ <el-select
|
|
|
+ v-model="uploadFileType"
|
|
|
+ clearable
|
|
|
+ placeholder="请选择上传文件的类型"
|
|
|
+ @change="changeUploadFileType"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in fileTypeList"
|
|
|
+ :key="item.ID"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.ID"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ <el-row style="margin-top: 20px">
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-upload
|
|
|
+ class="upload-demo"
|
|
|
+ drag
|
|
|
+ multiple
|
|
|
+ :auto-upload="false"
|
|
|
+ :file-list="uploadFileData"
|
|
|
+ :on-change="changeFileData"
|
|
|
+ :on-remove="removeFileData"
|
|
|
+ >
|
|
|
+ <el-icon class="el-icon--upload">
|
|
|
+ <upload-filled />
|
|
|
+ </el-icon>
|
|
|
+ <div class="el-upload__text">
|
|
|
+ 请选择需要上传的文件
|
|
|
+ </div>
|
|
|
+ <template #tip>
|
|
|
+ <div class="el-upload__tip">
|
|
|
+ 选择的文件不要超过500MB
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-upload>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <template #footer>
|
|
|
+ <div class="dialog-footer">
|
|
|
+ <el-button @click="fileDialog = false">取消</el-button>
|
|
|
<el-button
|
|
|
type="primary"
|
|
|
- :icon="Edit"
|
|
|
- >信息编辑</el-button>
|
|
|
+ @click="supplementFile"
|
|
|
+ >
|
|
|
+ 上传
|
|
|
+ </el-button>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <el-row
|
|
|
- style="margin:20px 0 0 40px;height: 50px"
|
|
|
- align="middle"
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+ <el-dialog
|
|
|
+ v-model="messagePopupShow"
|
|
|
+ title="项目基本信息编辑"
|
|
|
+ width="40%"
|
|
|
+ >
|
|
|
+ <el-form
|
|
|
+ size="large"
|
|
|
+ style="margin-top: 10px"
|
|
|
+ label-position="left"
|
|
|
+ label-width="100"
|
|
|
>
|
|
|
- <el-col :span="3">
|
|
|
- <el-text
|
|
|
- size="large"
|
|
|
- :line-clamp="1"
|
|
|
- >
|
|
|
- 项目负责人:{{ information.principal }}
|
|
|
- </el-text>
|
|
|
- </el-col>
|
|
|
- <el-col
|
|
|
- :span="4"
|
|
|
- :offset="1"
|
|
|
+ <el-form-item
|
|
|
+ label="项目名称:"
|
|
|
>
|
|
|
- <el-text
|
|
|
- size="large"
|
|
|
- :line-clamp="1"
|
|
|
- >
|
|
|
- 相关客户:{{ information.customer }}
|
|
|
- </el-text>
|
|
|
- </el-col>
|
|
|
- <el-col
|
|
|
- :span="3"
|
|
|
- :offset="1"
|
|
|
+ <el-input
|
|
|
+ v-model="editData.name"
|
|
|
+ placeholder="请输入项目名称"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ label="负责人:"
|
|
|
>
|
|
|
- <el-text
|
|
|
- size="large"
|
|
|
- :line-clamp="1"
|
|
|
+ <el-select
|
|
|
+ v-model="editData.principal"
|
|
|
+ placeholder="请选择负责人"
|
|
|
+ clearable
|
|
|
+ @change="headSelect"
|
|
|
>
|
|
|
- 紧急程度:{{ information.level === 1 ? '正常' : information.level === 2 ? '重要' : '紧急' }}
|
|
|
- </el-text>
|
|
|
- </el-col>
|
|
|
- <el-col
|
|
|
- :span="3"
|
|
|
- :offset="1"
|
|
|
+ <el-option
|
|
|
+ v-for="item in userList"
|
|
|
+ :key="item.ID"
|
|
|
+ :label="item.nickName"
|
|
|
+ :value="item.nickName"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ label="相关客户:"
|
|
|
>
|
|
|
- <el-text
|
|
|
- size="large"
|
|
|
- :line-clamp="1"
|
|
|
+ <el-input
|
|
|
+ v-model="editData.customer"
|
|
|
+ placeholder="请输入相关客户"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ label="紧急程度:"
|
|
|
+ >
|
|
|
+ <el-radio-group
|
|
|
+ v-model="editData.level"
|
|
|
+ @change="changeUrgency"
|
|
|
>
|
|
|
- 项目金额:{{ information.price }}元
|
|
|
- </el-text>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-form>
|
|
|
- <el-row
|
|
|
- style="margin:20px 0 0 40px;height: 100px"
|
|
|
- align="middle"
|
|
|
+ <el-radio :value="1">正常</el-radio>
|
|
|
+ <el-radio :value="2">重要</el-radio>
|
|
|
+ <el-radio :value="3">紧急</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="项目状态">
|
|
|
+ <el-select
|
|
|
+ v-model="editData.state"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in stateList"
|
|
|
+ :key="item.ID"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.ID"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ label="项目金额:"
|
|
|
>
|
|
|
- <el-col :span="18">
|
|
|
- <el-form-item
|
|
|
- label="项目说明:"
|
|
|
- size="large"
|
|
|
- >
|
|
|
- <el-input
|
|
|
- v-model="information.illustrate"
|
|
|
- type="textarea"
|
|
|
- placeholder="项目说明(选填)"
|
|
|
- :rows="4"
|
|
|
- disabled
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
+ <el-input
|
|
|
+ v-model="editData.price"
|
|
|
+ style="max-width: 600px"
|
|
|
+ placeholder="请输入项目的具体金额"
|
|
|
+ class="input-with-select"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="项目说明:">
|
|
|
+ <el-input
|
|
|
+ v-model="editData.illustrate"
|
|
|
+ type="textarea"
|
|
|
+ placeholder="项目说明"
|
|
|
+ :rows="3"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
</el-form>
|
|
|
- </div>
|
|
|
- <div
|
|
|
- style="height: 480px;margin-top: 30px"
|
|
|
- class="bg-white"
|
|
|
- >
|
|
|
- <div class="basicInformation">
|
|
|
- <div style="padding-top: 15px;margin-left: 30px">
|
|
|
- <el-image :src="sign" />
|
|
|
- </div>
|
|
|
- <div style="display: flex;align-items: center">
|
|
|
- <el-text
|
|
|
- style="margin-left: 10px"
|
|
|
+ <template #footer>
|
|
|
+ <div class="dialog-footer">
|
|
|
+ <el-button
|
|
|
size="large"
|
|
|
- tag="b"
|
|
|
- >项目文件列表</el-text>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <el-row style="margin:20px 0 0 30px">
|
|
|
- <el-col :span="4">
|
|
|
+ @click="messagePopupShow = false"
|
|
|
+ >
|
|
|
+ 取消
|
|
|
+ </el-button>
|
|
|
<el-button
|
|
|
- :icon="Upload"
|
|
|
type="primary"
|
|
|
- >上传文件</el-button>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-row style="margin:20px 0 0 30px">
|
|
|
- <el-col :span="23">
|
|
|
- <el-table
|
|
|
- :data="fileList"
|
|
|
- :height="350"
|
|
|
size="large"
|
|
|
- row-class-name="row-class"
|
|
|
+ @click="editBasicMessage"
|
|
|
>
|
|
|
- <el-table-column
|
|
|
- prop="ID"
|
|
|
- align="center"
|
|
|
- label="ID"
|
|
|
- width="180"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="name"
|
|
|
- label="文件名称"
|
|
|
- align="center"
|
|
|
- width="300"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="CreatedAt"
|
|
|
- label="创建日期"
|
|
|
- align="center"
|
|
|
- width="300"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- label="项目操作"
|
|
|
- align="center"
|
|
|
- >
|
|
|
- <template #default="scope">
|
|
|
- <el-button
|
|
|
- text
|
|
|
- size="small"
|
|
|
- @click="projectEdit(scope.$index, scope.row)"
|
|
|
- >
|
|
|
- 下载
|
|
|
- </el-button>
|
|
|
- <el-button
|
|
|
- text
|
|
|
- type="danger"
|
|
|
- size="small"
|
|
|
- @click="projectDelete(scope.$index, scope.row)"
|
|
|
- >
|
|
|
- 删除
|
|
|
- </el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
+ 确定
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import sign from '@/assets/sign.png'
|
|
|
-import { getProjectMessage } from '@/api/project'
|
|
|
-import { onMounted, reactive, computed } from 'vue'
|
|
|
+import { getProjectMessage, editProject, queryProjectState } from '@/api/project'
|
|
|
+import { onMounted, reactive, ref, computed } from 'vue'
|
|
|
import { getAllUsers } from '@/api/user'
|
|
|
-import { Edit, Upload } from '@element-plus/icons-vue'
|
|
|
+import { getFileType, queryFileList, createProjectFile, downloadProjectFile } from '@/api/file'
|
|
|
+import { Download, Upload, Delete, Search, RefreshLeft, Edit } from '@element-plus/icons-vue'
|
|
|
+import { ElMessage, ElMessageBox } from 'element-plus'
|
|
|
+
|
|
|
defineOptions({
|
|
|
name: 'ProjectDetails'
|
|
|
})
|
|
|
+// ......................................
|
|
|
+// 数据
|
|
|
+const fileCondition = reactive({
|
|
|
+ code: 'LCZM202407161229',
|
|
|
+ name: '',
|
|
|
+ genre: 0,
|
|
|
+ pageInfo: {
|
|
|
+ page: 1,
|
|
|
+ pageSize: 9
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+const information = reactive({})
|
|
|
+
|
|
|
+const stateList = reactive([])
|
|
|
+
|
|
|
+// 用于编辑的数据
|
|
|
+const editData = reactive({})
|
|
|
+
|
|
|
+const messagePopupShow = ref(false)
|
|
|
+// 项目用户列表
|
|
|
+const userList = reactive([])
|
|
|
+// 项目文件列表
|
|
|
+const fileList = reactive([])
|
|
|
+// 项目文件类型列表
|
|
|
+const fileTypeList = reactive([])
|
|
|
+// 项目文件类型
|
|
|
+const fileType = ref('')
|
|
|
+// 上传文件弹窗
|
|
|
+const fileDialog = ref(false)
|
|
|
+
|
|
|
+const uploadFileType = ref('')
|
|
|
+
|
|
|
+const uploadFileData = ref([])
|
|
|
+
|
|
|
+// const uploadFileList = ref([])
|
|
|
+
|
|
|
+// .............................................
|
|
|
+// 计算属性
|
|
|
+const emergentDegree = computed(() => {
|
|
|
+ return information.level === 1 ? '正常' : information.level === 2 ? '重要' : '紧急'
|
|
|
+})
|
|
|
+
|
|
|
+const projectState = computed(() => {
|
|
|
+ const obj = {
|
|
|
+ 1: '立项',
|
|
|
+ 2: '施工',
|
|
|
+ 3: '收款',
|
|
|
+ 4: '完成',
|
|
|
+ 5: '失效'
|
|
|
+ }
|
|
|
+ return obj[information.state]
|
|
|
+})
|
|
|
+
|
|
|
+// .............................................
|
|
|
+// 方法
|
|
|
onMounted(() => {
|
|
|
projectMessage('LCZM202407161229')
|
|
|
+ queryFileType()
|
|
|
+ getProjectState()
|
|
|
getAllUsers().then(res => {
|
|
|
if (res.code === 0) {
|
|
|
userList.push(...res.data)
|
|
|
}
|
|
|
})
|
|
|
})
|
|
|
-const information = reactive({})
|
|
|
-// 项目用户列表
|
|
|
-const userList = reactive([])
|
|
|
-// 项目文件列表
|
|
|
-const fileList = reactive([])
|
|
|
-// 组合项目标题
|
|
|
-const projectTitle = computed({
|
|
|
- get() {
|
|
|
- return `项目名称:${information.name}(${information.CreatedAt})`
|
|
|
- },
|
|
|
- set() {}
|
|
|
-})
|
|
|
+
|
|
|
+// 初始化项目数据
|
|
|
const projectMessage = (code) => {
|
|
|
getProjectMessage(code).then(res => {
|
|
|
- console.log(res.data)
|
|
|
if (res.code === 0) {
|
|
|
const data = res.data
|
|
|
data.CreatedAt = formatDate(data.CreatedAt)
|
|
@@ -209,17 +503,164 @@ const projectMessage = (code) => {
|
|
|
// data[key].CreatedAt = formatDate(data[key].CreatedAt)
|
|
|
// data[key].UpdatedAt = formatDate(data[key].UpdatedAt)
|
|
|
fileList.push(...data[key])
|
|
|
- console.log(fileList)
|
|
|
}
|
|
|
information[key] = data[key]
|
|
|
+ editData[key] = data[key]
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+// 项目类型
|
|
|
+const getProjectState = () => {
|
|
|
+ queryProjectState().then(res => {
|
|
|
+ if (res.code === 0) {
|
|
|
+ stateList.push(...res.data)
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+// 文件类型
|
|
|
+const queryFileType = () => {
|
|
|
+ getFileType().then(res => {
|
|
|
+ if (res.code === 0) {
|
|
|
+ fileTypeList.push(...res.data)
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+const changeFileType = (value) => {
|
|
|
+ if (typeof value === 'number') {
|
|
|
+ fileTypeList.forEach(item => {
|
|
|
+ if (item.ID === value) {
|
|
|
+ fileType.value = item.name
|
|
|
+ }
|
|
|
+ })
|
|
|
+ fileCondition.genre = value
|
|
|
+ } else {
|
|
|
+ fileCondition.genre = 0
|
|
|
+ }
|
|
|
+}
|
|
|
+// 查询文件
|
|
|
+const queryFile = () => {
|
|
|
+ queryFileList(fileCondition).then(res => {
|
|
|
+ if (res.code === 0) {
|
|
|
+ console.log(res.data)
|
|
|
+ fileList.push(...res.data)
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+// 编辑基本信息
|
|
|
+const editBasicMessage = () => {
|
|
|
+ const data = {
|
|
|
+ code: 'LCZM202407161229',
|
|
|
+ name: editData.name,
|
|
|
+ principal: editData.principal,
|
|
|
+ price: parseInt(editData.price),
|
|
|
+ illustrate: editData.illustrate,
|
|
|
+ state: editData.state,
|
|
|
+ level: editData.level,
|
|
|
+ customer: editData.customer
|
|
|
+ }
|
|
|
+ for (const i in data) {
|
|
|
+ if (data[i] === '') {
|
|
|
+ ElMessage({
|
|
|
+ message: '表单中存在空值',
|
|
|
+ type: 'error',
|
|
|
+ showClose: true,
|
|
|
+ duration: 2000
|
|
|
})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ editProject(data).then(res => {
|
|
|
+ console.log(res)
|
|
|
+ if (res.code === 0) {
|
|
|
+ console.log(res.data)
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
-// 选择负责人
|
|
|
-// const headSelect = (value) => {
|
|
|
-// information.principal = value
|
|
|
-// }
|
|
|
+
|
|
|
+const messageEdit = () => {
|
|
|
+ messagePopupShow.value = true
|
|
|
+ Object.assign(editData, information)
|
|
|
+}
|
|
|
+// 上传文件
|
|
|
+const fileDialogClose = () => {
|
|
|
+ fileDialog.value = false
|
|
|
+}
|
|
|
+
|
|
|
+const changeUploadFileType = (value) => {
|
|
|
+ if (typeof value === 'number') {
|
|
|
+ uploadFileType.value = value
|
|
|
+ } else {
|
|
|
+ uploadFileType.value = ''
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const changeFileData = (file, fileList) => {
|
|
|
+ uploadFileData.value = fileList
|
|
|
+ console.log(uploadFileData)
|
|
|
+}
|
|
|
+
|
|
|
+const removeFileData = (file, fileList) => {
|
|
|
+ uploadFileData.value = fileList
|
|
|
+ console.log(uploadFileData)
|
|
|
+}
|
|
|
+
|
|
|
+const supplementFile = () => {
|
|
|
+ if (uploadFileType.value === '') {
|
|
|
+ ElMessage.error('请选择文件类型')
|
|
|
+ } else if (uploadFileData.value.length === 0) {
|
|
|
+ ElMessage.error('暂未选择文件')
|
|
|
+ } else {
|
|
|
+ const formData = new FormData()
|
|
|
+ uploadFileData.value.forEach(item => {
|
|
|
+ formData.append('file', item.raw)
|
|
|
+ })
|
|
|
+ formData.append('genre', uploadFileType.value)
|
|
|
+ formData.append('code', 'LCZM202407161229')
|
|
|
+ createProjectFile(formData).then(res => {
|
|
|
+ if (res.code === 0) {
|
|
|
+ fileDialog.value = false
|
|
|
+ ElMessage.success(res.msg)
|
|
|
+ } else {
|
|
|
+ ElMessage.error(res.msg)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 下载文件
|
|
|
+const downloadTips = () => {
|
|
|
+ ElMessageBox.confirm(
|
|
|
+ '确定要下载列表中的所有文件吗?',
|
|
|
+ '文件下载',
|
|
|
+ {
|
|
|
+ confirmButtonText: '下载',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning',
|
|
|
+ }
|
|
|
+ )
|
|
|
+ .then(() => {
|
|
|
+ const type = fileType.value === '' ? 0 : fileType.value
|
|
|
+ console.log(type)
|
|
|
+ const data = {
|
|
|
+ code: 'LCZM202407161229',
|
|
|
+ genre: type,
|
|
|
+ name: fileCondition.name
|
|
|
+ }
|
|
|
+ downloadProjectFile(data).then(res => {
|
|
|
+ console.log(res.data)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ ElMessage({
|
|
|
+ type: 'info',
|
|
|
+ message: '取消下载',
|
|
|
+ })
|
|
|
+ })
|
|
|
+}
|
|
|
// 日期格式化
|
|
|
const formatDate = (dateString, locale = 'en-US', timezone = 'Asia/Shanghai') => {
|
|
|
// 使用 Date 构造函数解析日期字符串
|
|
@@ -232,34 +673,40 @@ const formatDate = (dateString, locale = 'en-US', timezone = 'Asia/Shanghai') =>
|
|
|
|
|
|
// 使用 Date 对象的年份、月份和日期来构建新的日期字符串
|
|
|
// 注意:JavaScript 中的月份是从 0 开始的,所以我们需要加 1
|
|
|
- const formattedDate = `${date.getFullYear()}-${('0' + (date.getMonth() + 1)).slice(-2)}-${('0' + date.getDate()).slice(-2)}`
|
|
|
|
|
|
- return formattedDate
|
|
|
+ return `${date.getFullYear()}-${('0' + (date.getMonth() + 1)).slice(-2)}-${('0' + date.getDate()).slice(-2)}`
|
|
|
+}
|
|
|
+
|
|
|
+// 负责人修改
|
|
|
+const headSelect = () => {
|
|
|
+}
|
|
|
+
|
|
|
+//
|
|
|
+const changeUrgency = () => {
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
-@mixin basic{
|
|
|
+@mixin basic {
|
|
|
width: 50%;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
}
|
|
|
-.basicInformation{
|
|
|
+
|
|
|
+.basicInformation {
|
|
|
height: 50px;
|
|
|
background-color: #f8fafd;
|
|
|
display: flex;
|
|
|
- .basicTitle{
|
|
|
+
|
|
|
+ .basicTitle {
|
|
|
@include basic;
|
|
|
padding-left: 40px;
|
|
|
}
|
|
|
- .basicEdit{
|
|
|
+
|
|
|
+ .basicEdit {
|
|
|
@include basic;
|
|
|
justify-content: end;
|
|
|
padding-right: 40px;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-.row-class{
|
|
|
- line-height: 30px;
|
|
|
-}
|
|
|
</style>
|