123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- <!--
- * @Author: ysh
- * @Date: 2024-03-19 09:24:06
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2024-08-05 14:36:35
- -->
- <template>
- <div class="app-container">
- <h2 style="text-align: center;">项目安排</h2>
- <el-form ref="arrangeForm" :model="form" :rules="rules" label-width="120px" :disabled="disabled">
- <el-row :gutter="20">
- <el-col :span="12" :xs="24">
- <el-form-item label="承担部门:" prop="deptId">
- <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-select v-model="peopleForm.deptId" @change="handleChangeDept" clearable style="width:60%">
- <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-select v-model="form.projectLeader" placeholder="请选择项目负责人" clearable style="width:40%">
- <el-option v-for="item in peopleForm.userList" :key="item.userId" :label="item.nickName"
- :value="item.userId" />
- </el-select>
- </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 peopleForm.allDeptUserList" :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">
- <div v-if="form.organizeDocument" 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>
- <FileUpload v-if="taskName == '项目安排'" ref="orz" :limit="1" :filePathName="'组织交底文件'"
- :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']" @input="setOrganizeDocument">
- </FileUpload>
- </el-form-item>
- </el-col>
- </el-row> -->
- </el-form>
- <div slot="footer" class="dialog-footer" style="text-align: center;">
- <el-button type="warning" @click="save" :disabled="disabled">保 存</el-button>
- <el-button type="primary" @click="confirmPlanForm" :disabled="disabled">提 交</el-button>
- </div>
- </div>
- </template>
-
- <script>
- import { listDept } from '@/api/system/dept'
- import { listUser } from '@/api/system/user'
- import { getUsersDeptLeaderByDept, getDeptLeadersByDeptId, getUsersManageLeaderByDept } 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
- },
- taskForm: {
- type: Object,
- required: true
- },
- taskName: {
- type: String,
- required: true
- }
- },
- data() {
- return {
- baseUrl: process.env.VUE_APP_BASE_API,
- form: {},
- rules: {
- deptId: [
- { required: true, message: "请选择承担部门", trigger: "change" }
- ],
- projectLeader: [
- { required: true, message: "请选择项目负责人", trigger: "change" }
- ]
- },
- deptList: [],
- deptLeaderList: [],
- file: {
- fileList: []
- },
- peopleVisible: false,
- peopleForm: {
- deptId: '',
- deptList: [],
- userId: '',
- userList: [],
- allDeptUserList: []
- },
- }
- },
- created() {
-
- },
- mounted() {
- this.getDeptList();
- this.initForm();
- },
- methods: {
- async initForm() {
- let datas = await listProject({ projectId: this.taskForm.formId });
- if (datas.rows.length > 0) {
- 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(',')).map(Number)
- this.$set(this.form, 'deptId', arr)
- 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;
- })
- }
- val.forEach(item => {
- listUser({ pageSize: 999, deptId: item }).then(res => {
- res.rows.forEach(row => {
- this.peopleForm.allDeptUserList.push(row)
- })
- })
- })
- this.handleChangeDept(val[0])
- },
- // 人员选择
- choosePeople() {
- this.peopleVisible = true;
- },
- // 改变部门选择
- handleChangeDept(deptId) {
- this.peopleForm.userId = '';
- this.$set(this.peopleForm, 'deptId', deptId)
- 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;
- },
- save() {
- this.$refs['arrangeForm'].validate((vaild) => {
- if (vaild) {
- this.form.projectId = this.taskForm.formId;
- this.form.undertakingDept = this.form.deptId.join(',');
- updateProject(this.form).then(res => {
- this.$message.success('保存成功')
- })
- } else {
- this.$message.error('请完善必填项')
- }
- })
- },
- confirmPlanForm() {
- this.$confirm('项目安排之后会自动发起预算编制、技术方案、技术交底、安全交底四个子流程,将无法进行撤回操作,是否继续提交?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(async () => {
- this.save();
- let resData = await getUsersManageLeaderByDept({ deptId: 105 });
- let approvalId;
- if (resData.data) {
- approvalId = resData.data[0].userId;
- }
- this.$refs['arrangeForm'].validate((vaild) => {
- if (vaild) {
- 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 || this.form.projectLeader);
- this.$set(this.taskForm.variables, "planInitiator", this.peopleForm.userId || this.form.projectLeader);
- this.$set(this.taskForm.variables, "approval", approvalId);
- complete(this.taskForm).then(response => {
- this.$modal.msgSuccess(response.msg);
- this.$emit('goBack');
- });
- })
- } else {
- this.$message.error('请完善必填项')
- }
- })
- })
-
- },
- 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></style>
|