123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- <!--
- * @Author: ysh
- * @Date: 2024-03-19 09:24:06
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2024-06-07 10:55:28
- -->
- <template>
- <div class="app-container">
- <h2 style="text-align: center;">项目安排</h2>
- <el-form :model="form" :rules="rules" label-width="120px" :disabled="disabled">
- <el-row :gutter="20">
- <el-col :span="12" :xs="24">
- <el-form-item label="承担部门:" prop="undertakingDept">
- <el-select v-model="form.deptId" multiple clearable style="width:100%" @change="getDeptLeader">
- <el-option v-for="item in deptList" :key="item.deptId" :label="item.deptName" :value="item.deptId"
- v-if="item.deptName != '四川中水成勘院测绘工程有限责任公司'">
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12" :xs="24">
- <el-form-item label="部门负责人:" prop="deptLeader">
- <el-select v-model="form.deptLeader" multiple clearable style="width:100%">
- <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName"
- :value="item.userId">
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12" :xs="24">
- <el-form-item label="项目负责人:" prop="projectLeader">
- <el-tag effect="plain" type="warning" style="margin-right: 10px;"
- v-if="form.projectLeader != '' && form.projectLeader != undefined">{{
- form.projectLeaderName }}</el-tag>
- <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="choosePeople">选择</el-button>
- </el-form-item>
- </el-col>
- <el-col :span="12" :xs="24">
- <el-form-item label="现场负责人:" prop="siteLeader">
- <el-select v-model="form.siteLeader" filterable clearable style="width:100%">
- <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName"
- :value="item.userId" v-if="item.nickName != 'admin'">
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12" :xs="24">
- <el-form-item label="组织交底日期:" prop="organizeTime">
- <el-date-picker style="width: 100%;" v-model="form.organizeTime" value-format="yyyy-MM-dd" type="date"
- placeholder="选择日期">
- </el-date-picker>
- </el-form-item>
- </el-col>
- <el-col :span="12" :xs="24">
- <el-form-item label="组织交底文档:" prop="organizeDocument">
- <FileUpload v-if="$route.query.taskName == '项目安排'" ref="orz" :limit="1" :filePathName="'组织交底文件'"
- :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf']" @input="setOrganizeDocument">
- </FileUpload>
- <div v-if="form.organizeDocument && $route.query.taskName != '项目安排'" class="upload-list">
- <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.organizeDocument}`)">
- {{ getFileName(form.organizeDocument) }}
- </el-link>
- <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.organizeDocument}`"
- :underline="false" target="_blank">
- <span class="el-icon-download">下载文件</span>
- </el-link>
- </div>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <!-- 人员选择对话框 -->
- <el-dialog width="320px" title="选择项目负责人" :visible.sync="peopleVisible" append-to-body>
- <el-form>
- <el-form-item label="部门:">
- <el-select v-model="peopleForm.deptId" @change="handleChangeDept">
- <el-option v-for="item in peopleForm.deptList" :key="item.deptId" :label="item.deptName"
- :value="item.deptId" v-if="item.deptName != '四川中水成勘院测绘工程有限责任公司'">
- </el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="人员:">
- <el-select v-model="peopleForm.userId">
- <el-option v-for="item in peopleForm.userList" :key="item.userId" :label="item.nickName"
- :value="item.userId">
- </el-option>
- </el-select>
- </el-form-item>
- <el-form-item style="text-align: center;">
- <el-button @click="confirmPeople" type="primary">确定</el-button>
- <el-button @click="cancelChoosePeople">取消</el-button>
- </el-form-item>
- </el-form>
- </el-dialog>
- <div slot="footer" class="dialog-footer" style="text-align: center;">
- <el-button type="primary" @click="confirmPlanForm" :disabled="disabled">提 交</el-button>
- <!-- <el-button @click="cancel" :disabled="disabled">取 消</el-button> -->
- </div>
- </div>
- </template>
-
- <script>
- import { listDept } from '@/api/system/dept'
- import { listUser } from '@/api/system/user'
- import { getUsersDeptLeaderByDept } from '@/api/system/post'
- import { complete, rejectTask, returnList, returnTask, getNextFlowNode, delegate, flowTaskForm, } from "@/api/flowable/todo";
- import { listProject, getProject, addProject, updateProject, delProject, submitProject, modifyProject } from "@/api/oa/project/project";
- export default {
- props: {
- disabled: {
- type: Boolean,
- require: true,
- },
- taskForm: {
- type: Object,
- required: true
- }
- },
- data() {
- return {
- baseUrl: process.env.VUE_APP_BASE_API,
- form: {},
- rules: {},
- deptList: [],
- deptLeaderList: [],
- file: {
- fileList: []
- },
- peopleVisible: false,
- peopleForm: {
- deptId: '',
- deptList: [],
- userId: '',
- userList: []
- },
- }
- },
- created() {
- if (this.$route.query.taskName != '项目登记') {
- this.initForm();
- // this.form.projectId = this.taskForm.formId;
- this.getDeptList();
- }
- },
- methods: {
- initForm() {
- getProject(this.taskForm.formId).then(res => {
- this.form = res.data;
- if (this.form.undertakingDept != null && this.form.undertakingDept != "" && this.form.undertakingDept != undefined) {
- this.form.deptId = this.form.undertakingDeptName.split(',')
- }
- if (this.form.projectLeaderUser) {
- this.form.projectLeaderName = this.form.projectLeaderUser.nickName
- }
- this.$set(this.form, 'deptLeader', [])
- if (this.form.undertakingDept) {
- let arr = this.form.undertakingDept.split(',')
- this.getDeptLeader(arr);
- } else {
- this.$set(this.form, 'deptId', [])
- }
- this.$store.commit('SET_PROJECTNUMBER', this.form.projectNumber)
- this.$store.commit('SET_PROJECTNAME', this.form.projectName)
- this.$store.commit('SET_PROJECT', this.form)
- })
- },
- getDeptList() {
- listDept({
- deptName: undefined,
- status: undefined
- }).then(res => {
- this.deptList = res.data
- this.peopleForm.deptList = res.data
- })
- },
- getDeptLeader(val) {
- this.deptLeaderList = [];
- for (let v of val) {
- getUsersDeptLeaderByDept({ deptId: Number(v) }).then(res => {
- this.deptLeaderList.push(res.data.userId);
- this.form.deptLeader = this.deptLeaderList;
- })
- }
- },
- // 人员选择
- choosePeople() {
- this.peopleVisible = true;
- },
- // 改变部门选择
- handleChangeDept(deptId) {
- this.peopleForm.userId = '';
- listUser({ pageSize: 999999, deptId }).then(res => {
- this.peopleForm.userList = res.rows
- })
- },
- // 确定项目负责人
- confirmPeople() {
- this.form.projectLeader = this.peopleForm.userId;
- this.form.projectLeaderName = this.tagLeader()
- this.peopleVisible = false
- },
- tagLeader() {
- if (this.form.projectLeader == '' || this.form.projectLeader == undefined || this.form.projectLeader == null) {
- return undefined
- } else {
- for (let user of this.peopleForm.userList) {
- if (this.form.projectLeader == user.userId) {
- return user.nickName
- }
- }
- }
- },
- cancelChoosePeople() {
- this.peopleForm.deptId = '';
- this.peopleForm.userId = '';
- this.peopleVisible = false;
- },
- confirmPlanForm() {
- this.form.undertakingDept = this.form.deptId.join(',');
- updateProject(this.form)
- const params = { taskId: this.taskForm.taskId };
- // 获取下一个流程节点
- getNextFlowNode(params).then(res => {
- this.$set(this.taskForm.variables, "formId", this.taskForm.formId);
- this.$set(this.taskForm.variables, "budgetInitiator", this.peopleForm.userId);
- getUsersDeptLeaderByDept({ deptId: 105 }).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.form = {}
- },
- setOrganizeDocument(val) {
- let arr = val.split('/upload')
- this.form.organizeDocument = arr[1]
- if (val == "") {
- this.form.organizeDocument = ""
- }
- },
- getFileName(name) {
- if (name != null) {
- let arr = name.split('/')
- return arr[arr.length - 1];
- }
-
- },
- handleFileDelete() {
- // this.$refs.orz.handleDelete(0);
- },
- }
- }
- </script>
-
- <style lang="scss" scoped>
- .upload-list {}
- </style>
|