123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319 |
- <!--
- * @Author: ysh
- * @Date: 2024-02-27 14:49:15
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2024-04-08 11:36:23
- -->
-
- <template>
- <div class="project-wrapper">
- <!-- 项目登记 -->
- <h2 style="text-align: center">项目登记</h2>
- <el-form :model="addForm" :rules="rules" label-width="100px" :disabled="disabled">
- <el-form-item label="项目编号:" prop="projectNumber">
- <el-input v-model="addForm.projectNumber"></el-input>
- </el-form-item>
- <el-form-item label="项目名称:" prop="projectName">
- <el-input v-model="addForm.projectName"></el-input>
- </el-form-item>
- <el-form-item label="项目类型:" prop="projectType">
- <el-input v-model="addForm.projectType"></el-input>
- </el-form-item>
- <el-form-item label="项目级别:" prop="projectLevel">
- <el-radio v-model="addForm.projectLevel" label="0">一般项目</el-radio>
- <el-radio v-model="addForm.projectLevel" label="1">重大项目</el-radio>
- </el-form-item>
- <el-form-item label="项目来源:" prop="projectSource">
- <el-radio v-model="addForm.projectSource" label="0">院内</el-radio>
- <el-radio v-model="addForm.projectSource" label="1">院外</el-radio>
- </el-form-item>
- <el-form-item label="甲方单位:" prop="partyA">
- <el-autocomplete class="inline-input" v-model="addForm.partyA" :fetch-suggestions="querySearch"
- placeholder="请输入内容" style="width: 100%"></el-autocomplete>
- <!-- <el-input v-model="addForm.partyA"></el-input> -->
- </el-form-item>
- <el-form-item label="联系人:" prop="contactPerson">
- <el-input v-model="addForm.contactPerson"></el-input>
- </el-form-item>
- <el-form-item label="联系电话:" prop="telephone">
- <el-input v-model="addForm.telephone"></el-input>
- </el-form-item>
- <el-form-item label="项目概况:">
- <table border="1">
- <tr>
- <td style="width: 250px">工作内容</td>
- <td>等级或比例尺</td>
- <td>单位</td>
- <td>工作量</td>
- <td style="width: 100px">要求完成时间</td>
- <td>备注</td>
- </tr>
- <tr v-for="(work, index) in workList" :key="index">
- <td>
- <el-input v-model="work.content" type="textarea" autosize clearable></el-input>
- </td>
- <td>
- <el-input v-model="work.scale" clearable></el-input>
- </td>
- <td>
- <el-input v-model="work.unit" clearable></el-input>
- </td>
- <td>
- <el-input v-model="work.workload" clearable></el-input>
- </td>
- <td>
- <el-date-picker style="width: 140px" v-model="work.deadline" value-format="yyyy-MM-dd" type="date"
- placeholder="选择日期">
- </el-date-picker>
- </td>
- <td>
- <el-input v-model="work.remark" type="textarea" autosize clearable></el-input>
- </td>
- <td>
- <el-button type="danger" icon="el-icon-minus" size="mini" circle
- @click="deletWorkItem(index)"></el-button>
- </td>
- </tr>
- </table>
-
- <el-button icon="el-icon-plus" size="mini" @click="addWorkList"></el-button>
- </el-form-item>
- <el-form-item label="项目登记人:" prop="projectRegistrantUser.nickName">
- <el-tag>{{ addForm.projectRegistrantUser.nickName }}</el-tag>
- <!-- <el-input v-model="addForm.projectRegistrant"></el-input> -->
- </el-form-item>
- <el-form-item label="备注:" prop="remark">
- <el-input v-model="addForm.remark" type="textarea" rows="3"></el-input>
- </el-form-item>
- </el-form>
- <div slot="footer" class="dialog-footer" style="text-align: center">
- <el-button type="primary" @click="confirmAddForm" :disabled="disabled">确 定</el-button>
- <el-button @click="cancel" :disabled="disabled">取 消</el-button>
- </div>
- </div>
- </template>
-
- <script>
- import { mapGetters } from "vuex";
- import {
- listProject,
- getProject,
- addProject,
- updateProject,
- delProject,
- submitProject,
- } from "@/api/oa/project/project";
- import { getUser } from "@/api/system/user";
- import { getUsersDeptLeaderByDept } from "@/api/system/post";
- import {
- complete,
- rejectTask,
- returnList,
- returnTask,
- getNextFlowNode,
- delegate,
- flowTaskForm,
- } from "@/api/flowable/todo";
- import { getProjectWork } from "@/api/oa/project/projectWork";
- export default {
- props: {
- disabled: {
- type: Boolean,
- require: true,
- },
- taskForm: {
- type: Object,
- required: true,
- },
- },
- computed: {
- ...mapGetters(["userId", "name"]),
- },
- data() {
- return {
- // 查询参数
- queryParams: {
- pageNum: 1,
- pageSize: 10,
- projectNumber: "",
- projectLeader: "",
- projectLeaderName: undefined,
- projectName: "",
- },
- projectList: [],
- total: 0,
- loading: true,
- modifyOpen: false,
- addForm: {
- projectRegistrant: "",
- projectRegistrantUser: {
- nickName: ''
- }
- },
- rules: {
- projectNumber: [{ required: true, message: "请输入项目编号", trigger: "blur" }],
- projectName: [{ required: true, message: "请输入项目名称", trigger: "blur" }],
- },
- workList: [
- {
- content: "",
- scale: "",
- unit: "",
- workload: "",
- deadline: "",
- remark: "",
- },
- ],
- restaurants: [{ value: "中国电建集团成都勘测设计研究院有限公司" }],
- };
- },
- created() {
- if (this.$route.query.taskName != '项目登记') {
- this.getProjectInfo();
- this.getProjectWorkList();
- } else {
- this.addForm.projectRegistrant = this.userId;
- this.addForm.projectRegistrantUser.nickName = this.name;
- }
- this.getList();
- },
- mounted() { },
- methods: {
- // 查询项目列表
- getList() {
- this.loading = true;
- listProject(this.queryParams).then(response => {
- this.projectList = [];
- for (let p of response.rows) {
- if (p.projectLeader != null) {
- getUser(Number(p.projectLeader)).then(res => {
- p.projectLeaderName = res.data.nickName;
- });
- }
- this.projectList.push(p);
- }
- this.total = response.total;
- this.loading = false;
- });
- },
- getProjectInfo() {
- getProject(this.$route.query.formId).then(res => {
- this.addForm = res.data;
- })
- },
- getProjectWorkList() {
- getProjectWork(this.$route.query.formId).then(res => {
- this.workList = res.data;
- })
- },
- confirmAddForm() {
- this.addForm.projectId = this.taskForm.formId;
- this.addForm.workList = this.workList;
- let forms = new FormData();
- forms.append("form", JSON.stringify(this.addForm));
- submitProject(forms).then(response => {
- this.$modal.msgSuccess("新增成功");
- this.getList();
- });
- const params = { taskId: this.taskForm.taskId };
- // 获取下一个流程节点
- getNextFlowNode(params).then(res => {
- getUsersDeptLeaderByDept({ deptId: 107 }).then(res => {
- let userId = res.data.userId;
- this.$set(this.taskForm.variables, "approval", userId);
- complete(this.taskForm).then(response => {
- this.$modal.msgSuccess(response.msg);
- this.$emit("goBack");
- });
- });
- });
- },
- cancel() {
- this.addForm = {};
- },
- addWorkList() {
- this.workList.push({
- content: "",
- scale: "",
- unit: "",
- workload: "",
- deadline: "",
- remark: "",
- });
- },
- deletWorkItem(index) {
- let arr = this.workList;
- if (arr.length == 1) {
- return;
- }
- if (index >= 0 && index < arr.length) {
- arr.splice(index, 1);
- }
- },
- querySearch(queryString, cb) {
- var restaurants = this.restaurants;
- var results = queryString
- ? restaurants.filter(this.createFilter(queryString))
- : restaurants;
- // 调用 callback 返回建议列表的数据
- cb(results);
- },
- createFilter(queryString) {
- return restaurant => {
- return restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0;
- };
- },
- },
- };
- </script>
-
- <style lang="scss" scoped>
- .project-wrapper {
- padding: 25px;
- }
-
- .table-header {
- background-color: #f5f5f5;
- }
-
- .card-header {
- display: flex;
- justify-content: space-between;
- padding: 0 10px;
- }
-
- table {
- /*居中*/
- margin: 0 auto;
- /*边框*/
- /* border: 1px solid black; */
- text-align: center;
- border-collapse: collapse;
- /*设置背景颜色*/
- /* background-color: #bfa; */
- }
-
- ::v-deep .el-input.is-disabled .el-input__inner {
- color: #686a6e;
- }
-
- ::v-deep .el-textarea.is-disabled .el-textarea__inner,
- .el-radio__input.is-disabled+span.el-radio__label {
- color: #686a6e;
- }
-
- ::v-deep .el-radio__input.is-disabled+span.el-radio__label {
- color: #686a6e;
- }
-
- ::v-deep .el-radio__input.is-disabled.is-checked .el-radio__inner::after {
- background-color: var(--current-color);
- width: 6px;
- height: 6px;
- }
-
- ::v-deep .el-radio__input.is-disabled .el-radio__inner,
- .el-radio__input.is-disabled.is-checked .el-radio__inner {
- border-color: var(--current-color);
- }
- </style>
|