Merge remote-tracking branch 'origin/master'
New file |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog |
| | | :title="`选择候选部门`" |
| | | :visible.sync="show" |
| | | width="65%" |
| | | :destroy-on-close="true" |
| | | :close-on-click-modal="false" |
| | | :modal="false" |
| | | :before-close="close"> |
| | | <el-tree |
| | | ref="tree" |
| | | :data="deptTree" |
| | | show-checkbox |
| | | node-key="id" |
| | | :check-strictly="true" |
| | | :default-expanded-keys="['dept:100']" |
| | | @check-change="handleCheckChange" |
| | | > |
| | | </el-tree> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" @click="submit">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import {flowableDeptTreeSelect} from "@/api/system/user"; |
| | | |
| | | export default { |
| | | name: "MyDept", |
| | | props: { |
| | | show: { |
| | | required: true, |
| | | type: Boolean |
| | | }, |
| | | checkeds: { |
| | | required: true |
| | | } |
| | | }, |
| | | watch: { |
| | | checkeds: { |
| | | handler(newV) { |
| | | if (newV && newV.length > 0) { |
| | | this.checkList = newV |
| | | this.$nextTick(() => { |
| | | if (this.$refs.tree) { |
| | | this.$refs.tree.setCheckedKeys(newV.map(item => item.id)); |
| | | } |
| | | }); |
| | | } else { |
| | | this.checkList = [] |
| | | } |
| | | }, |
| | | deep: true |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | deptTree: [], |
| | | checkList: [], |
| | | } |
| | | }, |
| | | created() { |
| | | flowableDeptTreeSelect().then(res => { |
| | | this.deptTree = res.data |
| | | }) |
| | | }, |
| | | methods: { |
| | | setCheckList(newV) { |
| | | if (newV && newV.length > 0) { |
| | | this.checkList = newV |
| | | this.$nextTick(() => { |
| | | if (this.$refs.tree) { |
| | | this.$refs.tree.setCheckedKeys(newV.map(item => item.id)); |
| | | } |
| | | }); |
| | | } else { |
| | | this.checkList = [] |
| | | } |
| | | }, |
| | | handleCheckChange(data, checked, indeterminate) { |
| | | if (checked) { |
| | | if (this.checkList.indexOf(data) === -1) { |
| | | this.checkList.push(data) |
| | | } |
| | | } else { |
| | | this.checkList = this.checkList.filter(item => item !== data) |
| | | } |
| | | console.log(data, checked, indeterminate); |
| | | }, |
| | | close() { |
| | | this.$emit("close") |
| | | }, |
| | | submit() { |
| | | this.$emit("submit", this.checkList) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | |
| | | :title="`选择候选部门`" |
| | | :visible.sync="show" |
| | | width="65%" |
| | | |
| | | :destroy-on-close="true" |
| | | :close-on-click-modal="false" |
| | | :modal="false" |
| | |
| | | }, |
| | | handleCheckChange(data, checked, indeterminate) { |
| | | if (checked) { |
| | | this.checkList.push(data) |
| | | if (this.checkList.indexOf(data) === -1) { |
| | | this.checkList.push(data) |
| | | } |
| | | } else { |
| | | this.checkList = this.checkList.filter(item => item !== data) |
| | | } |
New file |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog |
| | | :title="`选择候选角色`" |
| | | :visible.sync="show" |
| | | width="65%" |
| | | :destroy-on-close="true" |
| | | :close-on-click-modal="false" |
| | | :modal="false" |
| | | :before-close="close"> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"> |
| | | <el-form-item label="角色名称" prop="roleName"> |
| | | <el-input |
| | | v-model="queryParams.roleName" |
| | | placeholder="请输入角色名称" |
| | | clearable |
| | | style="width: 240px" |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <el-table ref="dataTable" v-loading="loading" :data="roleList" @selection-change="handleMultipleRoleSelect"> |
| | | <el-table-column type="selection" width="50" align="center" /> |
| | | <el-table-column label="角色编号" prop="roleId" width="120" /> |
| | | <el-table-column label="角色名称" prop="roleName" :show-overflow-tooltip="true" width="150" /> |
| | | <el-table-column label="权限字符" prop="roleKey" :show-overflow-tooltip="true" width="150" /> |
| | | <el-table-column label="显示顺序" prop="roleSort" width="100" /> |
| | | <el-table-column label="创建时间" align="center" prop="createTime" width="180"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.createTime) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <pagination |
| | | v-show="total>0" |
| | | :total="total" |
| | | :page-sizes="[5,10]" |
| | | layout="prev, pager, next" |
| | | :page.sync="queryParams.pageNum" |
| | | :limit.sync="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" @click="submit">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { listRole} from "@/api/system/role"; |
| | | import {StrUtil} from "@/utils/StrUtil"; |
| | | |
| | | export default { |
| | | name: "MyRole", |
| | | dicts: ['sys_normal_disable'], |
| | | // 接受父组件的值 |
| | | props: { |
| | | show: { |
| | | type: Boolean, |
| | | required: true, |
| | | default: true |
| | | }, |
| | | // 回显数据传值 |
| | | selectValues: { |
| | | type: Array, |
| | | default: [], |
| | | required: false |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | // 遮罩层 |
| | | loading: true, |
| | | // 选中数组 |
| | | ids: [], |
| | | // 非单个禁用 |
| | | single: true, |
| | | // 非多个禁用 |
| | | multiple: true, |
| | | // 显示搜索条件 |
| | | showSearch: true, |
| | | // 总条数 |
| | | total: 0, |
| | | // 角色表格数据 |
| | | roleList: [], |
| | | // 弹出层标题 |
| | | title: "", |
| | | // 是否显示弹出层 |
| | | open: false, |
| | | // 查询参数 |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 5, |
| | | roleName: undefined, |
| | | roleKey: undefined, |
| | | status: undefined |
| | | }, |
| | | // 表单参数 |
| | | form: {}, |
| | | radioSelected: 0, // 单选框传值 |
| | | selectRoleList: [] // 回显数据传值 |
| | | }; |
| | | }, |
| | | watch: { |
| | | selectValues: { |
| | | deep: true, |
| | | handler(newVal) { |
| | | if (newVal && newVal.length > 0) { |
| | | this.$nextTick(() => { |
| | | this.$refs.dataTable.clearSelection(); |
| | | this.selectRoleList = [] |
| | | newVal.forEach(item => { |
| | | this.roleList.forEach(role => { |
| | | if (item.roleId === role.roleId) { |
| | | this.selectRoleList.push(role) |
| | | this.$refs.dataTable.toggleRowSelection(role) |
| | | } |
| | | }) |
| | | }); |
| | | }) |
| | | } else { |
| | | this.selectRoleList = [] |
| | | } |
| | | } |
| | | }, |
| | | roleList: { |
| | | deep: true, |
| | | handler(newVal) { |
| | | if (newVal && newVal.length > 0) { |
| | | this.$nextTick(() => { |
| | | this.$refs.dataTable.clearSelection(); |
| | | this.selectValues.forEach(item => { |
| | | newVal.forEach(role => { |
| | | if (item.roleId === role.roleId) { |
| | | this.$refs.dataTable.toggleRowSelection(role) |
| | | } |
| | | }) |
| | | }); |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.getList(); |
| | | }, |
| | | methods: { |
| | | setChecked(val) { |
| | | if (val && val.length > 0) { |
| | | this.$nextTick(() => { |
| | | this.$refs.dataTable.clearSelection(); |
| | | this.selectRoleList = val |
| | | val.forEach(check => { |
| | | this.roleList.forEach(item => { |
| | | if (check.roleId === item.roleId) { |
| | | this.$refs.dataTable.toggleRowSelection(item) |
| | | } |
| | | }) |
| | | }) |
| | | }); |
| | | } else { |
| | | this.selectRoleList = [] |
| | | } |
| | | }, |
| | | close() { |
| | | this.$emit("close") |
| | | }, |
| | | submit() { |
| | | this.$emit("submit", this.selectRoleList) |
| | | }, |
| | | /** 查询角色列表 */ |
| | | getList() { |
| | | this.loading = true; |
| | | listRole(this.queryParams).then(response => { |
| | | this.roleList = response.rows; |
| | | this.total = response.total; |
| | | this.loading = false; |
| | | } |
| | | ); |
| | | }, |
| | | // 多选框选中数据 |
| | | handleMultipleRoleSelect(selection) { |
| | | this.selectRoleList = selection |
| | | }, |
| | | /** 搜索按钮操作 */ |
| | | handleQuery() { |
| | | this.queryParams.pageNum = 1; |
| | | this.getList(); |
| | | }, |
| | | /** 重置按钮操作 */ |
| | | resetQuery() { |
| | | this.handleQuery(); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | | |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog |
| | | :title="`选择转办接收人员`" |
| | | :visible.sync="show" |
| | | width="65%" |
| | | :destroy-on-close="true" |
| | | :close-on-click-modal="false" |
| | | :modal="false" |
| | | :before-close="close"> |
| | | <el-row :gutter="20"> |
| | | <!--部门数据--> |
| | | <el-col :span="6" :xs="24"> |
| | | <div class="head-container"> |
| | | <el-input |
| | | v-model="deptName" |
| | | placeholder="请输入部门名称" |
| | | clearable |
| | | size="small" |
| | | prefix-icon="el-icon-search" |
| | | style="margin-bottom: 20px" |
| | | /> |
| | | </div> |
| | | <div class="head-container"> |
| | | <el-tree |
| | | :data="deptOptions" |
| | | :props="defaultProps" |
| | | :expand-on-click-node="false" |
| | | :filter-node-method="filterNode" |
| | | ref="tree" |
| | | node-key="id" |
| | | default-expand-all |
| | | highlight-current |
| | | @node-click="handleNodeClick" |
| | | /> |
| | | </div> |
| | | </el-col> |
| | | <!--用户数据--> |
| | | <el-col :span="18" :xs="24"> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="用户名称" prop="userName"> |
| | | <el-input |
| | | v-model="queryParams.userName" |
| | | placeholder="请输入用户名称" |
| | | clearable |
| | | style="width: 150px" |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-table ref="dataTable" v-loading="loading" :row-key="getRowKey" :data="userList" @selection-change="handleUserSelect"> |
| | | <el-table-column type="selection" align="center" /> |
| | | <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" /> |
| | | <el-table-column label="登录账号" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="用户姓名" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" /> |
| | | </el-table> |
| | | <pagination |
| | | v-show="total>0" |
| | | :total="total" |
| | | :page-sizes="[5,10]" |
| | | layout="prev, pager, next" |
| | | :page.sync="queryParams.pageNum" |
| | | :limit.sync="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | </el-col> |
| | | </el-row> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button type="danger" @click="getSelected">确认</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { listUser, deptTreeSelect } from "@/api/system/user"; |
| | | import Treeselect from "@riophae/vue-treeselect"; |
| | | import "@riophae/vue-treeselect/dist/vue-treeselect.css"; |
| | | import {StrUtil} from '@/utils/StrUtil' |
| | | |
| | | export default { |
| | | name: "SingleUser", |
| | | dicts: ['sys_normal_disable', 'sys_user_sex'], |
| | | components: { Treeselect }, |
| | | // 接受父组件的值 |
| | | props: { |
| | | show: { |
| | | required: true, |
| | | type: Boolean |
| | | }, |
| | | // 回显数据传值 |
| | | selectUserList: { |
| | | type: Number, |
| | | default: null, |
| | | required: false |
| | | }, |
| | | |
| | | }, |
| | | data() { |
| | | return { |
| | | innerSelected: [], |
| | | // 遮罩层 |
| | | loading: true, |
| | | // 选中数组 |
| | | ids: [], |
| | | // 显示搜索条件 |
| | | showSearch: true, |
| | | // 总条数 |
| | | total: 0, |
| | | // 用户表格数据 |
| | | userList: [], |
| | | // 弹出层标题 |
| | | title: "", |
| | | // 部门树选项 |
| | | deptOptions: undefined, |
| | | // 是否显示弹出层 |
| | | open: false, |
| | | // 部门名称 |
| | | deptName: undefined, |
| | | // 表单参数 |
| | | form: {}, |
| | | defaultProps: { |
| | | children: "children", |
| | | label: "label" |
| | | }, |
| | | // 查询参数 |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 5, |
| | | userName: undefined, |
| | | phonenumber: undefined, |
| | | status: undefined, |
| | | deptId: undefined |
| | | }, |
| | | // 列信息 |
| | | columns: [ |
| | | { key: 0, label: `用户编号`, visible: true }, |
| | | { key: 1, label: `用户名称`, visible: true }, |
| | | { key: 2, label: `用户昵称`, visible: true }, |
| | | { key: 3, label: `部门`, visible: true }, |
| | | { key: 4, label: `手机号码`, visible: true }, |
| | | { key: 5, label: `状态`, visible: true }, |
| | | { key: 6, label: `创建时间`, visible: true } |
| | | ], |
| | | radioSelected: 0, // 单选框传值 |
| | | }; |
| | | }, |
| | | watch: { |
| | | // 根据名称筛选部门树 |
| | | deptName(val) { |
| | | this.$refs.tree.filter(val); |
| | | }, |
| | | selectUserList: { |
| | | deep: true, |
| | | handler(newVal) { |
| | | console.log(this.selectValues, "传入的值是") |
| | | this.setChecked(newVal) |
| | | }, |
| | | }, |
| | | userList: { |
| | | deep: true, |
| | | handler(newVal) { |
| | | this.$nextTick(() => { |
| | | this.$refs.dataTable.clearSelection(); |
| | | this.innerSelected.forEach(check => { |
| | | newVal.forEach(item => { |
| | | if (check.userId === item.userId) { |
| | | this.$refs.dataTable.toggleRowSelection(item) |
| | | } |
| | | }) |
| | | }) |
| | | }); |
| | | }, |
| | | }, |
| | | }, |
| | | mounted() { |
| | | this.getList(); |
| | | this.getDeptTree(); |
| | | }, |
| | | methods: { |
| | | setChecked(val) { |
| | | this.$nextTick(() => { |
| | | this.$refs.dataTable.clearSelection(); |
| | | this.innerSelected = val |
| | | val.forEach(check => { |
| | | this.userList.forEach(item => { |
| | | if (check.userId === item.userId) { |
| | | this.$refs.dataTable.toggleRowSelection(item) |
| | | } |
| | | }) |
| | | }) |
| | | }); |
| | | }, |
| | | /** 查询用户列表 */ |
| | | getList() { |
| | | this.loading = true; |
| | | listUser(this.queryParams).then(response => { |
| | | this.userList = response.rows; |
| | | this.total = response.total; |
| | | this.loading = false; |
| | | } |
| | | ); |
| | | }, |
| | | /** 查询部门下拉树结构 */ |
| | | getDeptTree() { |
| | | deptTreeSelect().then(response => { |
| | | this.deptOptions = response.data; |
| | | }); |
| | | }, |
| | | // 保存选中的数据id,row-key就是要指定一个key标识这一行的数据 |
| | | getRowKey (row) { |
| | | return row.id |
| | | }, |
| | | // 筛选节点 |
| | | filterNode(value, data) { |
| | | if (!value) return true; |
| | | return data.label.indexOf(value) !== -1; |
| | | }, |
| | | // 节点单击事件 |
| | | handleNodeClick(data) { |
| | | this.queryParams.deptId = data.id; |
| | | this.handleQuery(); |
| | | }, |
| | | // 传递选中值 |
| | | handleUserSelect(selectionList) { |
| | | console.log("选中值", selectionList) |
| | | this.innerSelected = selectionList |
| | | }, |
| | | getSelected() { |
| | | this.$emit('submit', this.innerSelected); |
| | | }, |
| | | /** 搜索按钮操作 */ |
| | | handleQuery() { |
| | | this.queryParams.pageNum = 1; |
| | | this.getList(); |
| | | }, |
| | | /** 重置按钮操作 */ |
| | | resetQuery() { |
| | | this.dateRange = []; |
| | | this.resetForm("queryForm"); |
| | | this.queryParams.deptId = undefined; |
| | | this.$refs.tree.setCurrentKey(null); |
| | | this.handleQuery(); |
| | | }, |
| | | close() { |
| | | this.$emit("close") |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | | |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog |
| | | :title="`选择转办接收人员`" |
| | | :visible.sync="show" |
| | | width="65%" |
| | | :destroy-on-close="true" |
| | | :close-on-click-modal="false" |
| | | :modal="false" |
| | | :before-close="close"> |
| | | <el-row :gutter="20"> |
| | | <!--部门数据--> |
| | | <el-col :span="6" :xs="24"> |
| | | <div class="head-container"> |
| | | <el-input |
| | | v-model="deptName" |
| | | placeholder="请输入部门名称" |
| | | clearable |
| | | size="small" |
| | | prefix-icon="el-icon-search" |
| | | style="margin-bottom: 20px" |
| | | /> |
| | | </div> |
| | | <div class="head-container"> |
| | | <el-tree |
| | | :data="deptOptions" |
| | | :props="defaultProps" |
| | | :expand-on-click-node="false" |
| | | :filter-node-method="filterNode" |
| | | ref="tree" |
| | | node-key="id" |
| | | default-expand-all |
| | | highlight-current |
| | | @node-click="handleNodeClick" |
| | | /> |
| | | </div> |
| | | </el-col> |
| | | <!--用户数据--> |
| | | <el-col :span="18" :xs="24"> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="用户名称" prop="userName"> |
| | | <el-input |
| | | v-model="queryParams.userName" |
| | | placeholder="请输入用户名称" |
| | | clearable |
| | | style="width: 150px" |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-table ref="dataTable" v-loading="loading" :row-key="getRowKey" :data="userList" @selection-change="handleUserSelect"> |
| | | <el-table-column type="selection" /> |
| | | <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" /> |
| | | <el-table-column label="登录账号" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="用户姓名" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" /> |
| | | </el-table> |
| | | <pagination |
| | | v-show="total>0" |
| | | :total="total" |
| | | :page-sizes="[5,10]" |
| | | layout="prev, pager, next" |
| | | :page.sync="queryParams.pageNum" |
| | | :limit.sync="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | </el-col> |
| | | </el-row> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button type="danger" @click="getSelected">确认</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { listUser, deptTreeSelect } from "@/api/system/user"; |
| | | import Treeselect from "@riophae/vue-treeselect"; |
| | | import "@riophae/vue-treeselect/dist/vue-treeselect.css"; |
| | | import {StrUtil} from '@/utils/StrUtil' |
| | | |
| | | export default { |
| | | name: "SingleUser", |
| | | dicts: ['sys_normal_disable', 'sys_user_sex'], |
| | | components: { Treeselect }, |
| | | // 接受父组件的值 |
| | | props: { |
| | | show: { |
| | | required: true, |
| | | type: Boolean |
| | | }, |
| | | // 回显数据传值 |
| | | selectUser: { |
| | | default: null, |
| | | required: false |
| | | }, |
| | | |
| | | }, |
| | | data() { |
| | | return { |
| | | innerSelected: null, |
| | | // 遮罩层 |
| | | loading: true, |
| | | // 选中数组 |
| | | ids: [], |
| | | // 显示搜索条件 |
| | | showSearch: true, |
| | | // 总条数 |
| | | total: 0, |
| | | // 用户表格数据 |
| | | userList: [], |
| | | // 弹出层标题 |
| | | title: "", |
| | | // 部门树选项 |
| | | deptOptions: undefined, |
| | | // 是否显示弹出层 |
| | | open: false, |
| | | // 部门名称 |
| | | deptName: undefined, |
| | | // 表单参数 |
| | | form: {}, |
| | | defaultProps: { |
| | | children: "children", |
| | | label: "label" |
| | | }, |
| | | // 查询参数 |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 5, |
| | | userName: undefined, |
| | | phonenumber: undefined, |
| | | status: undefined, |
| | | deptId: undefined |
| | | }, |
| | | // 列信息 |
| | | columns: [ |
| | | { key: 0, label: `用户编号`, visible: true }, |
| | | { key: 1, label: `用户名称`, visible: true }, |
| | | { key: 2, label: `用户昵称`, visible: true }, |
| | | { key: 3, label: `部门`, visible: true }, |
| | | { key: 4, label: `手机号码`, visible: true }, |
| | | { key: 5, label: `状态`, visible: true }, |
| | | { key: 6, label: `创建时间`, visible: true } |
| | | ], |
| | | radioSelected: 0, // 单选框传值 |
| | | selectUserList: [] // 回显数据传值 |
| | | }; |
| | | }, |
| | | watch: { |
| | | // 根据名称筛选部门树 |
| | | deptName(val) { |
| | | this.$refs.tree.filter(val); |
| | | }, |
| | | selectUser: { |
| | | deep: true, |
| | | handler(newVal) { |
| | | if (newVal) { |
| | | this.$nextTick(() => { |
| | | this.$refs.dataTable.clearSelection(); |
| | | this.userList.forEach(item => { |
| | | if (newVal === item.userId) { |
| | | this.innerSelected = item |
| | | this.$refs.dataTable.toggleRowSelection(item) |
| | | } |
| | | }) |
| | | }); |
| | | } else { |
| | | this.innerSelected = null; |
| | | } |
| | | }, |
| | | }, |
| | | userLst: { |
| | | deep: true, |
| | | handler(newVal) { |
| | | if (newVal) { |
| | | this.$nextTick(() => { |
| | | this.$refs.dataTable.clearSelection(); |
| | | if (! this.innerSelected) { |
| | | newVal.forEach(item => { |
| | | if (this.innerSelected.userId === item.userId) { |
| | | this.innerSelected = item |
| | | this.$refs.dataTable.toggleRowSelection(item) |
| | | } |
| | | }) |
| | | } |
| | | }); |
| | | } else { |
| | | this.innerSelected = null; |
| | | } |
| | | }, |
| | | }, |
| | | }, |
| | | mounted() { |
| | | this.getList(); |
| | | this.getDeptTree(); |
| | | }, |
| | | methods: { |
| | | setChecked(val) { |
| | | if (val) { |
| | | this.$nextTick(() => { |
| | | this.$refs.dataTable.clearSelection(); |
| | | this.userList.forEach(item => { |
| | | if (val.userId === item.userId) { |
| | | this.innerSelected = item |
| | | this.$refs.dataTable.toggleRowSelection(item) |
| | | } |
| | | }) |
| | | }); |
| | | } else { |
| | | this.innerSelected = null |
| | | } |
| | | }, |
| | | /** 查询用户列表 */ |
| | | getList() { |
| | | this.loading = true; |
| | | listUser(this.queryParams).then(response => { |
| | | this.userList = response.rows; |
| | | this.total = response.total; |
| | | this.loading = false; |
| | | } |
| | | ); |
| | | }, |
| | | /** 查询部门下拉树结构 */ |
| | | getDeptTree() { |
| | | deptTreeSelect().then(response => { |
| | | this.deptOptions = response.data; |
| | | }); |
| | | }, |
| | | // 保存选中的数据id,row-key就是要指定一个key标识这一行的数据 |
| | | getRowKey (row) { |
| | | return row.id |
| | | }, |
| | | // 筛选节点 |
| | | filterNode(value, data) { |
| | | if (!value) return true; |
| | | return data.label.indexOf(value) !== -1; |
| | | }, |
| | | // 节点单击事件 |
| | | handleNodeClick(data) { |
| | | this.queryParams.deptId = data.id; |
| | | this.handleQuery(); |
| | | }, |
| | | // 传递选中值 |
| | | handleUserSelect(selectionList) { |
| | | if (selectionList && selectionList.length > 1) { |
| | | this.$refs.dataTable.clearSelection(); |
| | | this.$refs.dataTable.toggleRowSelection(selectionList[selectionList.length - 1]); |
| | | } |
| | | if (selectionList && selectionList.length > 0) { |
| | | this.innerSelected = selectionList[selectionList.length - 1] |
| | | console.log(this.innerSelected) |
| | | } else { |
| | | this.innerSelected = null |
| | | } |
| | | }, |
| | | getSelected() { |
| | | this.$emit('submit', this.innerSelected); |
| | | }, |
| | | /** 搜索按钮操作 */ |
| | | handleQuery() { |
| | | this.queryParams.pageNum = 1; |
| | | this.getList(); |
| | | }, |
| | | /** 重置按钮操作 */ |
| | | resetQuery() { |
| | | this.dateRange = []; |
| | | this.resetForm("queryForm"); |
| | | this.queryParams.deptId = undefined; |
| | | this.$refs.tree.setCurrentKey(null); |
| | | this.handleQuery(); |
| | | }, |
| | | close() { |
| | | this.$emit("close") |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | | /deep/ .el-table__header-wrapper .el-checkbox{ |
| | | display:none |
| | | } |
| | | </style> |
| | |
| | | path: 'task/myProcess/send/index', |
| | | component: () => import('@/views/flowable/task/myProcess/send/index'), |
| | | name: 'SendRecord', |
| | | meta: { title: '流程发起', icon: '' } |
| | | meta: { title: '流程办理', icon: '' } |
| | | } |
| | | ] |
| | | }, |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-card class="box-card" > |
| | | <div slot="header" class="clearfix"> |
| | | <span class="el-icon-document">任务详情</span> |
| | | <div slot="header" class="clearfix" style="display: flex"> |
| | | <div style="flex: 1" class="el-icon-document">{{`任务详情:` + this.goBackParams.processName}}</div> |
| | | <div style="flex: 2">{{projectName + '——' + flowName}}</div> |
| | | <el-button style="float: right;" size="mini" type="danger" @click="goBack">关闭</el-button> |
| | | </div> |
| | | <el-tabs tab-position="top" v-model="activeName" @tab-click="handleClick"> |
| | | <!--表单信息--> |
| | | <el-tab-pane label="表单信息" name="1"> |
| | | <el-col :span="16" :offset="4" v-if="formDataList && formDataList.length > 0"> |
| | | <div v-for="(formDataObj, index) in formDataList" :key="index" class="form-warp"> |
| | | <div v-if="formDataObj.current" style="margin-bottom: 15px;color: #409eff">当前阶段:<span style="color: red">{{formDataObj.beforeNodeName}}</span></div> |
| | | <div v-else style="margin-bottom: 15px;color: #409eff">前置阶段:<span style="color: #d5904b">{{formDataObj.beforeNodeName}}</span></div> |
| | | <v-form-render :form-data="formDataObj.formJson" :ref="'form' + index"/> |
| | | <el-col :span="16" :offset="4"> |
| | | <div v-if="formDataList && formDataList.length > 0"> |
| | | <div v-for="(formDataObj, index) in formDataList" :key="index" class="form-warp"> |
| | | <div v-if="formDataObj.current" style="margin-bottom: 15px;color: #409eff">当前阶段:<span style="color: red">{{formDataObj.beforeNodeName}}</span></div> |
| | | <div v-else style="margin-bottom: 15px;color: #409eff">前置阶段:<span style="color: #d5904b">{{formDataObj.beforeNodeName}}</span></div> |
| | | <div v-if="formDataObj.formJson !== null && formDataObj.formJson !== ''"> |
| | | <v-form-render :form-data="formDataObj.formJson" :ref="'form' + index"/> |
| | | </div> |
| | | <div v-else> |
| | | <el-alert |
| | | title="节点无表单数据" |
| | | type="info" |
| | | :closable="false" |
| | | > |
| | | </el-alert> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div v-else> |
| | | <el-alert |
| | | title="当前节点无表单数据" |
| | | type="info" |
| | | :closable="false" |
| | | > |
| | | </el-alert> |
| | | <el-alert |
| | | style="margin-top: 20px" |
| | | title="前置节点无表单数据" |
| | | type="info" |
| | | :closable="false" |
| | | > |
| | | </el-alert> |
| | | </div> |
| | | </el-col> |
| | | </el-tab-pane> |
| | |
| | | props: {}, |
| | | data() { |
| | | return { |
| | | projectName: '', |
| | | flowName: '', |
| | | // 模型xml数据 |
| | | flowData: {}, |
| | | formDataList: [], // 表单列表 |
| | |
| | | this.taskForm.taskId = this.$route.query && this.$route.query.taskId; |
| | | this.taskForm.procInsId = this.$route.query && this.$route.query.procInsId; |
| | | this.goBackParams = this.$route.query && this.$route.query.goBackParams; |
| | | this.projectName = this.$route.query && this.$route.query.projectName; |
| | | this.flowName = this.$route.query && this.$route.query.flowName; |
| | | // 流程任务重获取变量表单 |
| | | this.processVariables( this.taskForm.taskId) |
| | | this.getFlowRecordList(this.taskForm.procInsId, this.taskForm.deployId); |
| | |
| | | path: '/projectFlow/detail', |
| | | query: { |
| | | projectId: this.goBackParams.projectId, |
| | | processDefId: this.goBackParams.processDefId |
| | | processDefId: this.goBackParams.processDefId, |
| | | processName: this.goBackParams.processName |
| | | } |
| | | }) |
| | | }, |
| | |
| | | } |
| | | |
| | | .form-warp { |
| | | min-width: 700px; |
| | | padding: 20px; |
| | | margin-top: 5px; |
| | | margin-bottom: 20px; |
| | | box-shadow: |
| | | inset 0 -3em 3em rgba(0, 0, 0, 0.1), |
| | | 0 0 0 2px rgb(239, 239, 239), |
| | | 0.3em 0.3em 1em rgba(0, 0, 0, 0.3); |
| | | box-shadow: rgba(67, 71, 85, 0.27) 0px 0px 0.25em, rgba(90, 125, 188, 0.05) 0px 0.25em 1em; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-card class="box-card" > |
| | | <div slot="header" class="clearfix"> |
| | | <span class="el-icon-document">{{`流程处理:` + processName}}</span> |
| | | <div slot="header" class="clearfix" style="display: flex"> |
| | | <div style="flex: 1" class="el-icon-document">{{`任务办理:` + processName}}</div> |
| | | <div style="flex: 2">{{projectName + '——' + flowName}}</div> |
| | | <el-button style="float: right;" size="mini" type="danger" @click="goBack">关闭</el-button> |
| | | </div> |
| | | <el-tabs tab-position="top" v-model="activeName" @tab-click="handleClick"> |
| | |
| | | <!--初始化流程加载表单信息--> |
| | | <el-col :span="16" :offset="4" v-if="formDataList && formDataList.length > 0"> |
| | | <div v-for="(formDataObj, index) in formDataList" :key="index" class="form-warp" style="position: relative"> |
| | | <div v-if="!formDataObj.current" style="position: absolute; top: 2px; right: 2px"> |
| | | <el-button type="danger" @click="openRejectTask(formDataObj.beforeNodeDefId)">驳回</el-button> |
| | | <!-- 前置节点可驳回 --> |
| | | <div v-if="!formDataObj.current" style="position: absolute; top: 4px; right: 4px"> |
| | | <el-button type="danger" size="small" @click="openRejectTask(formDataObj.beforeNodeDefId)">驳 回</el-button> |
| | | </div> |
| | | <div v-if="formDataObj.current" style="margin-bottom: 15px;color: #409eff">当前阶段:<span style="color: red">{{formDataObj.beforeNodeName}}</span></div> |
| | | <div v-else style="margin-bottom: 15px;color: #409eff">前置阶段:<span style="color: #d5904b">{{formDataObj.beforeNodeName}}</span></div> |
| | | <!-- 当前节点可协同、转办等操作 --> |
| | | <div v-else style="position: absolute; top: 4px; right: 4px; display: flex;justify-content: center; align-items: center;"> |
| | | <el-button size="small" type="primary" @click="submitForm">确认并提交</el-button> |
| | | <el-button size="small" type="primary" disabled @click="submitForm">协同办理(功能开发中)</el-button> |
| | | <el-button size="small" type="primary" @click="openDelegation(formDataList[0].beforeNodeName)">转办</el-button> |
| | | </div> |
| | | <div v-if="formDataObj.current" style="margin-bottom: 15px;color: #E6A23C">当前阶段:<span style="color: #409EFF">{{formDataObj.beforeNodeName}}</span></div> |
| | | <div v-else style="margin-bottom: 15px;color: #E6A23C">前置阶段:<span style="color: #F56C6C">{{formDataObj.beforeNodeName}}</span></div> |
| | | <v-form-render :form-data="formDataObj.formJson" :ref="'form' + index"/> |
| | | </div> |
| | | |
| | | <!-- <v-form-render :form-data="formRenderData" ref="vFormRef"/>--> |
| | | <div style="display: flex;justify-content: center; align-items: center; margin: 20px 0"> |
| | | <el-button type="primary" @click="submitForm">确认并提交</el-button> |
| | | <el-button type="primary" disabled @click="submitForm">协同办理(功能开发中)</el-button> |
| | | <el-button type="primary" @click="openDelegation(formDataList[0].beforeNodeName)">转办</el-button> |
| | | <!-- <el-button type="primary" @click="resetForm">重 置</el-button>--> |
| | | </div> |
| | | </el-col> |
| | | </el-tab-pane> |
| | |
| | | </el-alert> |
| | | <el-form-item label="用户类型" prop="peopleType"> |
| | | <el-select v-model="delegationForm.peopleType" @change="peopleTypeChange" placeholder="请选择用户类型"> |
| | | <el-option label="指定人员" disabled value="FIX_USER"></el-option> |
| | | <el-option label="候选用户" disabled value="USER"></el-option> |
| | | <el-option label="指定人员" value="FIX_USER"></el-option> |
| | | <el-option label="候选用户" value="USER"></el-option> |
| | | <el-option label="候选部门" value="DEPT"></el-option> |
| | | <el-option label="候选角色" disabled value="ROLE"></el-option> |
| | | <el-option label="候选角色" value="ROLE"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item v-if="delegationForm.peopleType === 'DEPT'" label="候选部门" prop="targetId"> |
| | | <Dept ref="dept" :checkeds="delegationDeptSelect" :show="deptShow" @close="closeDept" @submit="getDeptSelect"/> |
| | | <MyDept ref="dept" :checkeds="delegationDeptSelect" :show="deptShow" @close="closeDept" @submit="getDeptSelect"/> |
| | | <div style="display: flex;align-items: center"> |
| | | <div>{{deptNames}}</div> |
| | | <el-button style="margin-left: 8px" type="text" @click="editDept">编辑</el-button> |
| | | <div> |
| | | <el-tag v-for="dept in delegationDeptSelect" :key="dept.id + 'zxc'" type="info" closable @close="removeDept(dept)">{{dept.label}}</el-tag> |
| | | </div> |
| | | <el-button style="margin-left: 8px" type="text" @click="editDept">选择</el-button> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item v-if="delegationForm.peopleType === 'FIX_USER'" label="指定用户" prop="targetId"> |
| | | <single-user ref="singleUser" :select-user="delegationForm.targetId" :show="singleUserShow" @close="closeSingleUser" @submit="getSingleUserSelect"/> |
| | | <div style="display: flex;align-items: center"> |
| | | <div> |
| | | <el-tag v-for="user in delegationUserSelect" :key="user.userId + 'abc'" type="info" closable @close="removeSingleUser(user)">{{user.nickName}}</el-tag> |
| | | </div> |
| | | <el-button style="margin-left: 8px" type="text" @click="editSingleUser">选择</el-button> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item v-if="delegationForm.peopleType === 'USER'" label="候选用户" prop="targetId"> |
| | | <mult-user ref="multUser" :select-user="delegationUserSelect" :show="multUserShow" @close="closeMultUser" @submit="getMultUserSelect"/> |
| | | <div style="display: flex;align-items: center"> |
| | | <div> |
| | | <el-tag v-for="user in delegationUserSelect" :key="user.userId + 'qwe'" type="info" closable @close="removeMultUser(user)">{{user.nickName}}</el-tag> |
| | | </div> |
| | | <el-button style="margin-left: 8px" type="text" @click="editMultUser">选择</el-button> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item v-if="delegationForm.peopleType === 'ROLE'" label="候选角色" prop="targetId"> |
| | | <my-role ref="role" :select-values="delegationRoleSelect" :show="roleShow" @close="closeRole" @submit="getRoleSelect"/> |
| | | <div style="display: flex;align-items: center"> |
| | | <div> |
| | | <el-tag v-for="role in delegationRoleSelect" :key="role.roleId + 'rty'" type="info" closable @close="removeRole(role)">{{role.roleName}}</el-tag> |
| | | </div> |
| | | <el-button style="margin-left: 8px" type="text" @click="editRole">选择</el-button> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | <script> |
| | | import {definitionStart, flowXmlAndNode} from "@/api/flowable/definition"; |
| | | import BpmnViewer from '@/components/Process/viewer'; |
| | | import Dept from '@/components/flow/Dept' |
| | | import MyDept from '@/components/flow/Dept/MyDept' |
| | | import SingleUser from '@/components/flow/User/SingleUser' |
| | | import MultUser from '@/components/flow/User/MultUser' |
| | | import MyRole from '@/components/flow/Role/MyRole' |
| | | import {completeSubmitFormTask} from "@/api/flowable/process"; |
| | | import { flowTaskForm } from "@/api/flowable/todo"; |
| | | import {getNextFlowNodeByStart} from "@/api/flowable/todo"; |
| | | import FlowUser from '@/components/flow/User' |
| | | import FlowRole from '@/components/flow/Role' |
| | | import {rejectTask} from "@/api/flowable/process"; |
| | | import {taskDelegation} from "@/api/projectProcess/projectProcess"; |
| | | |
| | |
| | | name: "Record", |
| | | components: { |
| | | BpmnViewer, |
| | | FlowUser, |
| | | FlowRole, |
| | | Dept, |
| | | MyRole, |
| | | MyDept, |
| | | SingleUser, |
| | | MultUser, |
| | | }, |
| | | props: {}, |
| | | data() { |
| | | return { |
| | | deptShow: false, // 部门显示 |
| | | deptNames: '', // 选中的部门名称 |
| | | projectName: '', |
| | | flowName: '', |
| | | roleShow: false, // 角色组显示 |
| | | delegationRoleSelect: [], // 选中角色 |
| | | multUserShow: false, // 用户组显示 |
| | | singleUserShow: false, // 指定用户显示 |
| | | delegationUserSelect: [], // 选中的用户 |
| | | deptShow: false, // 部门组显示 |
| | | delegationDeptSelect: [], // 选中部门 |
| | | delegationFormRules: { |
| | | peopleType: [ |
| | |
| | | this.processName = this.$route.query && this.$route.query.processName; |
| | | this.deployId = this.$route.query && this.$route.query.deployId; |
| | | this.taskId = this.$route.query && this.$route.query.taskId; |
| | | this.projectName = this.$route.query && this.$route.query.projectName; |
| | | this.flowName = this.$route.query && this.$route.query.flowName; |
| | | // 初始化表单 |
| | | this.procDefId = this.$route.query && this.$route.query.procDefId; |
| | | this.goBackParams = this.$route.query && this.$route.query.goBackParams; |
| | |
| | | this.getFlowFormData(this.taskId); |
| | | }, |
| | | methods: { |
| | | removeDept(dept) { |
| | | let index = this.delegationDeptSelect.indexOf(dept); |
| | | if (index !== -1) { |
| | | this.delegationDeptSelect.splice(index, 1); |
| | | } |
| | | this.delegationForm.targetId = this.delegationDeptSelect.map(item => item.id).join(",") |
| | | }, |
| | | removeRole(role) { |
| | | let index = this.delegationRoleSelect.indexOf(role); |
| | | if (index !== -1) { |
| | | this.delegationRoleSelect.splice(index, 1); |
| | | } |
| | | this.delegationForm.targetId = this.delegationRoleSelect.map(item => item.roleId).join(",") |
| | | }, |
| | | removeMultUser(user) { |
| | | let index = this.delegationUserSelect.indexOf(user); |
| | | if (index !== -1) { |
| | | this.delegationUserSelect.splice(index, 1); |
| | | } |
| | | this.delegationForm.targetId = this.delegationUserSelect.map(item => item.userId).join(",") |
| | | }, |
| | | removeSingleUser(user) { |
| | | // 因为只能选一个用户,所以删了就没了 |
| | | this.delegationUserSelect = [] |
| | | this.delegationForm.targetId = '' |
| | | }, |
| | | getTips() { |
| | | if (this.delegationForm.peopleType === 'USER' || this.delegationForm.peopleType === 'FIX_USER') { |
| | | return this.delegationUserSelect.map(item => item.nickName).join("、") |
| | | } else if (this.delegationForm.peopleType === 'DEPT') { |
| | | return this.delegationDeptSelect.map(item => item.label).join("、") |
| | | } else if (this.delegationForm.peopleType === 'ROLE') { |
| | | return this.delegationRoleSelect.map(item => item.roleName).join("、") |
| | | } |
| | | }, |
| | | delegation() { |
| | | this.$confirm(`确定要将此任务交由【${this.deptNames}】处理吗?`, '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | taskDelegation(this.delegationForm).then(res => { |
| | | this.$message.success("已发起转办申请") |
| | | this.goBack() |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已取消转办操作' |
| | | }); |
| | | this.$refs['delegationForm'].validate((valid) => { |
| | | if (valid) { |
| | | this.$confirm(`确定要将此任务交由【${this.getTips()}】处理吗?`, '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | taskDelegation(this.delegationForm).then(res => { |
| | | this.$message.success("已发起转办申请") |
| | | this.goBack() |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已取消转办操作' |
| | | }); |
| | | }); |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | peopleTypeChange(val) { |
| | |
| | | this.$refs.dept.setCheckList(this.delegationDeptSelect) |
| | | }) |
| | | this.deptShow = true |
| | | } else if (val === 'FIX_USER') { |
| | | this.singleUserShow = true |
| | | } else if (val === 'USER') { |
| | | this.multUserShow = true |
| | | } else if (val === 'ROLE') { |
| | | this.roleShow = true |
| | | } |
| | | }, |
| | | editDept() { |
| | |
| | | }) |
| | | this.deptShow = true |
| | | }, |
| | | getDeptSelect(list, names) { |
| | | console.log(list, names) |
| | | if (list) { |
| | | this.delegationForm.targetId = list |
| | | this.delegationDeptSelect = list.split(",") |
| | | this.deptNames = names |
| | | editSingleUser() { |
| | | if (this.delegationUserSelect && this.delegationUserSelect.length > 0) { |
| | | this.$nextTick(() => { |
| | | this.$refs.singleUser.setChecked(this.delegationUserSelect[0]) |
| | | }) |
| | | } |
| | | this.singleUserShow = true |
| | | }, |
| | | editRole() { |
| | | if (this.delegationRoleSelect && this.delegationRoleSelect.length > 0) { |
| | | this.$nextTick(() => { |
| | | this.$refs.role.setChecked(this.delegationRoleSelect) |
| | | }) |
| | | } |
| | | this.roleShow = true |
| | | }, |
| | | editMultUser() { |
| | | if (this.delegationForm.targetId) { |
| | | this.$nextTick(() => { |
| | | this.$refs.multUser.setChecked(this.delegationUserSelect) |
| | | }) |
| | | } |
| | | this.multUserShow = true |
| | | }, |
| | | getDeptSelect(deptList) { |
| | | if (deptList && deptList.length > 0) { |
| | | this.delegationForm.targetId = deptList.map(item => item.id).join(",") |
| | | this.delegationDeptSelect = deptList |
| | | } |
| | | this.deptShow = false |
| | | }, |
| | | getMultUserSelect(userList) { |
| | | if (userList && userList.length > 0) { |
| | | this.delegationForm.targetId = userList.map(item => item.userId).join(",") |
| | | this.delegationUserSelect = userList |
| | | } else { |
| | | this.delegationForm.targetId = '' |
| | | this.delegationUserSelect = [] |
| | | } |
| | | this.multUserShow = false |
| | | }, |
| | | getRoleSelect(roleList) { |
| | | if (roleList && roleList.length > 0) { |
| | | this.delegationForm.targetId = roleList.map(item => item.roleId).join(",") |
| | | this.delegationRoleSelect = roleList |
| | | } else { |
| | | this.delegationForm.targetId = '' |
| | | this.delegationRoleSelect = [] |
| | | } |
| | | this.roleShow = false |
| | | }, |
| | | getSingleUserSelect(user) { |
| | | if (user) { |
| | | this.delegationForm.targetId = user.userId |
| | | this.delegationUserSelect = [user] |
| | | } else { |
| | | this.delegationForm.targetId = '' |
| | | this.delegationUserSelect = [] |
| | | } |
| | | this.singleUserShow = false |
| | | }, |
| | | closeDept() { |
| | | console.log(this.deptNames) |
| | | this.deptShow = false |
| | | }, |
| | | closeSingleUser() { |
| | | this.singleUserShow = false |
| | | }, |
| | | closeRole() { |
| | | this.roleShow = false |
| | | }, |
| | | closeMultUser() { |
| | | this.multUserShow = false |
| | | }, |
| | | openDelegation(taskName) { |
| | | this.delegationForm.taskName = taskName |
| | |
| | | path: '/projectFlow/detail', |
| | | query: { |
| | | projectId: this.goBackParams.projectId, |
| | | processDefId: this.goBackParams.processDefId |
| | | processDefId: this.goBackParams.processDefId, |
| | | processName: this.goBackParams.processName |
| | | } |
| | | }) |
| | | }, |
| | |
| | | } |
| | | |
| | | .form-warp { |
| | | min-width: 700px; |
| | | padding: 20px; |
| | | margin-top: 5px; |
| | | margin-bottom: 20px; |
| | | box-shadow: |
| | | inset 0 -3em 3em rgba(0, 0, 0, 0.1), |
| | | 0 0 0 2px rgb(239, 239, 239), |
| | | 0.3em 0.3em 1em rgba(0, 0, 0, 0.3); |
| | | box-shadow: rgba(67, 71, 85, 0.27) 0px 0px 0.25em, rgba(90, 125, 188, 0.05) 0px 0.25em 1em; |
| | | } |
| | | </style> |
| | |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="项目码"> |
| | | <el-select v-model="queryParams.projectColorCode" clearable placeholder="请选择" class="select-option" |
| | | <el-select v-model="queryParams.coding" clearable placeholder="请选择" class="select-option" |
| | | @change="handleQuery"> |
| | | <el-option v-for="item in dict.type.sys_project_code" :key="item.value" :label="item.label" |
| | | :value="item.value"/> |
| | |
| | | <template v-if="item.slotName === 'projectStatus'"> |
| | | <dict-tag :options="dict.type.sys_project_status" :value="scope.row.projectStatus"/> |
| | | </template> |
| | | <!-- projectColorCode插槽 --> |
| | | <template v-if="item.slotName === 'projectColorCode'"> |
| | | <dict-tag :options="dict.type.sys_project_code" :value="scope.row.projectColorCode"/> |
| | | <!-- coding插槽 --> |
| | | <template v-if="item.slotName === 'coding'"> |
| | | <dict-tag :options="dict.type.sys_project_code" :value="scope.row.coding"/> |
| | | </template> |
| | | <!-- projectType插槽 --> |
| | | <template v-if="item.slotName === 'projectType'"> |
| | |
| | | projectType: '', // 项目类型 |
| | | importanceType: '', // 重点分类 |
| | | projectStatus: '', // 项目状态 |
| | | projectColorCode: '', // 项目码 |
| | | coding: '', // 项目码 |
| | | investmentType: '', // 资金类型 |
| | | projectPhase: '', // 项目阶段 |
| | | investType: '', // 投资类别 |
| | |
| | | export const current = [ |
| | | {id: 'projectName', label: '项目名称', visible: true}, |
| | | {id: 'projectOwnerUnit', label: '业主单位', visible: true}, |
| | | {id: 'projectColorCode', label: '项目码', slotName: 'projectColorCode', visible: true}, |
| | | {id: 'coding', label: '项目码', slotName: 'coding', visible: true}, |
| | | {id: 'projectCode', label: '项目代码', visible: true}, |
| | | {id: 'projectType', label: '项目类型', slotName: 'projectType', visible: true}, |
| | | {id: 'projectPhase', label: '项目阶段', visible: true}, |
| | |
| | | export const currentRest = [ |
| | | { id: 'projectName', label: '项目名称', visible: true }, |
| | | { id: 'projectOwnerUnit', label: '业主单位', visible: true }, |
| | | { id: 'projectColorCode', label: '项目码', slotName: 'projectColorCode', visible: true }, |
| | | { id: 'coding', label: '项目码', slotName: 'coding', visible: true }, |
| | | { id: 'projectCode', label: '项目代码', visible: true }, |
| | | { id: 'projectType', label: '项目类型', slotName: 'projectType', visible: true }, |
| | | { id: 'projectPhase', label: '项目阶段', visible: true }, |
| | |
| | | <template v-if="item.slotName === 'projectStatus'"> |
| | | <dict-tag :options="dict.type.sys_project_status" :value="scope.row.projectStatus"/> |
| | | </template> |
| | | <!-- projectColorCode插槽 --> |
| | | <template v-if="item.slotName === 'projectColorCode'"> |
| | | <!-- coding插槽 --> |
| | | <template v-if="item.slotName === 'coding'"> |
| | | <dict-tag :options="dict.type.sys_project_code" :value="scope.row.coding"/> |
| | | </template> |
| | | <!-- projectType插槽 --> |
| | |
| | | projectType: '', // 项目类型 |
| | | importanceType: '', // 重点分类 |
| | | projectStatus: '', // 项目状态 |
| | | projectColorCode: '', // 项目码 |
| | | coding: '', // 项目码 |
| | | investmentType: '', // 资金类型 |
| | | projectPhase: '', // 项目阶段 |
| | | investType: '', // 投资类别 |
| | |
| | | export const current = [ |
| | | {id: 'projectName', label: '项目名称', visible: true}, |
| | | {id: 'projectOwnerUnit', label: '业主单位', visible: true}, |
| | | {id: 'projectColorCode', label: '项目码', slotName: 'projectColorCode', visible: true}, |
| | | {id: 'coding', label: '项目码', slotName: 'coding', visible: true}, |
| | | {id: 'projectCode', label: '项目代码', visible: true}, |
| | | {id: 'projectType', label: '项目类型', slotName: 'projectType', visible: true}, |
| | | {id: 'projectPhase', label: '项目阶段', visible: true}, |
| | |
| | | export const currentRest = [ |
| | | {id: 'projectName', label: '项目名称', visible: true}, |
| | | {id: 'projectOwnerUnit', label: '业主单位', visible: true}, |
| | | {id: 'projectColorCode', label: '项目码', slotName: 'projectColorCode', visible: true}, |
| | | {id: 'coding', label: '项目码', slotName: 'coding', visible: true}, |
| | | {id: 'projectCode', label: '项目代码', visible: true}, |
| | | {id: 'projectType', label: '项目类型', slotName: 'projectType', visible: true}, |
| | | {id: 'projectPhase', label: '项目阶段', visible: true}, |
| | | {id: 'totalInvestment', label: '总投资额', visible: true}, |
| | | {id: 'yearInvestAmount', label: '本年计划投资', visible: true}, |
| | | {id: 'planStartTime', label: '项目年份', slotName: 'planStartTime', visible: true}, |
| | | {id: 'projectStatus', label: '项目状态', slotName: 'projectStatus', visible: true}, |
| | | {id: 'investType', label: '投资类别', slotName: 'investType', visible: true}, |
| | | {id: 'content', label: '建设内容', visible: false}, |
| | | {id: 'fundType', label: '资金类型', visible: false}, |
| | | {id: 'projectContactPerson', label: '项目联系人', visible: false}, |
| | | {id: 'contact', label: '联系方式', visible: false}, |
| | | {id: 'engineeringIdList', label: '关联工程', visible: false}, |
| | | {id: 'competentDepartmentList', label: '主管部门', visible: false}, |
| | | {id: 'area', label: '行政区划', visible: false}, |
| | | {id: 'managementCentralizationList', label: '管理归口', visible: false}, |
| | | {id: 'projectApprovalType', label: '项目审批类型', visible: false}, |
| | | {id: 'importanceType', label: '重点分类', slotName: 'importanceType', visible: false}, |
| | | {id: 'setTime', label: '立项时间', visible: false}, |
| | | {id: 'planCompleteTime', label: '计划竣工时间', visible: false}, |
| | | {id: 'winUnit', label: '中标单位', visible: false}, |
| | | {id: 'winAmount', label: '中标金额', visible: false}, |
| | | {id: 'winTime', label: '中标时间', visible: false}, |
| | | {id: 'year', label: '年度投资计划', visible: false}, |
| | | {id: 'address', label: '项目地址', visible: false}, |
| | | {id: 'projectBudget', label: '项目预算', visible: false}, |
| | | {id: 'beCrossRegion', label: '建设地点是否跨域', visible: false}, |
| | | {id: 'constructionLocation', label: '项目建设地点', visible: false}, |
| | | {id: 'detailedAddress', label: '建设详细地址', visible: false}, |
| | | {id: 'beCompensationProject', label: '是否是补码项目', visible: false}, |
| | | {id: 'compensationReason', label: '补码原因', visible: false}, |
| | | {id: 'plannedStartDate', label: '计划开工时间', visible: false}, |
| | | {id: 'expectedCompletionDate', label: '拟建成时间', visible: false}, |
| | | {id: 'nationalIndustryClassification', label: '国际行业分类', visible: false}, |
| | | {id: 'industryClassification', label: '所属行业分类', visible: false}, |
| | | {id: 'projectNature', label: '项目建成性质', visible: false}, |
| | | {id: 'projectAttribute', label: '项目属性', visible: false}, |
| | | {id: 'useEarth', label: '是否使用土地', visible: false}, |
| | | {id: 'contentScale', label: '主要建设内容及规模', visible: false}, |
| | | {id: 'code', label: '建管平台代码', visible: false}, |
| | | {id: 'projectUnit', label: '项目单位', visible: false}, |
| | | {id: 'projectUnitType', label: '项目单位类型', visible: false}, |
| | | {id: 'registrationType', label: '登记注册类型', visible: false}, |
| | | {id: 'holdingSituation', label: '控股情况', visible: false}, |
| | | {id: 'certificateType', label: '证照类型', visible: false}, |
| | | {id: 'certificateNumber', label: '证件号码', visible: false}, |
| | | {id: 'registeredAddress', label: '注册地址', visible: false}, |
| | | {id: 'registeredCapital', label: '注册资金', visible: false}, |
| | | {id: 'legal_representative', label: '法人代表', visible: false}, |
| | | {id: 'fixedPhone', label: '固定电话', visible: false}, |
| | | {id: 'legalPersonIdcard', label: '法人身份证号', visible: false}, |
| | | {id: 'projectContactPerson', label: '项目联系人', visible: false}, |
| | | {id: 'phone', label: '移动电话', visible: false}, |
| | | {id: 'contactIdcard', label: '联系人身份证号', visible: false}, |
| | | {id: 'wechat', label: '微信号', visible: false}, |
| | | {id: 'contactAddress', label: '联系人通讯地址', visible: false}, |
| | | {id: 'postCode', label: '邮政编码', visible: false}, |
| | | {id: 'email', label: '电子邮箱', visible: false}, |
| | | {id: 'totalInvestment', label: '项目总投资额', visible: false}, |
| | | {id: 'principal', label: '项目本金', visible: false}, |
| | | {id: 'governmentInvestmentTotal', label: '政府投资', visible: false}, |
| | | {id: 'centralInvestmentTotal', label: '中央投资', visible: false}, |
| | | {id: 'centralBudgetInvestment', label: '中央预算投资', visible: false}, |
| | | {id: 'centralFiscalInvestment', label: '中央财政', visible: false}, |
| | | {id: 'centralSpecialBondInvestment', label: '中央专项债券筹集的专项建设资金', visible: false}, |
| | | {id: 'centralSpecialFundInvestment', label: '中央专项建设基金', visible: false}, |
| | | {id: 'provincialInvestmentTotal', label: '省级投资', visible: false}, |
| | | {id: 'provincialBudgetInvestment', label: '省预算内投资', visible: false}, |
| | | {id: 'provincialFiscalInvestment', label: '省财政性建设投资', visible: false}, |
| | | {id: 'provincialSpecialFundInvestment', label: '省专项建设资金', visible: false}, |
| | | {id: 'cityInvestmentTotal', label: '市(州)投资', visible: false}, |
| | | {id: 'cityBudgetInvestment', label: '市(州)预算内投资', visible: false}, |
| | | {id: 'cityFiscalInvestment', label: '市(州)财政性投资', visible: false}, |
| | | {id: 'citySpecialFundInvestment', label: '市(州)专项资金', visible: false}, |
| | | {id: 'countyInvestmentTotal', label: '县(市、区)投资', visible: false}, |
| | | {id: 'countyBudgetInvestment', label: '区(县)预算内投资', visible: false}, |
| | | {id: 'countyFiscalInvestment', label: '区(县)财政性建设资金', visible: false}, |
| | | {id: 'countySpecialFundInvestment', label: '区(县)专项资金', visible: false}, |
| | | {id: 'domesticLoanTotal', label: '国内贷款', visible: false}, |
| | | {id: 'bankLoan', label: '银行贷款', visible: false}, |
| | | {id: 'foreignInvestmentTotal', label: '外商投资', visible: false}, |
| | | {id: 'enterpriseSelfRaisedTotal', label: '企业自筹', visible: false}, |
| | | {id: 'otherInvestmentTotal', label: '其他投资', visible: false} |
| | | ]; |
| | | |
| | | |
| | | |
| | | // 流程推进列表使用 |
| | | export const projectProcessCurrent = [ |
| | | {id: 'projectName', label: '项目名称', visible: true}, |
| | | {id: 'flowableProcessName', label: '绑定流程', visible: true, minWidth: 200, showOverflowTooltip: true}, |
| | | {id: 'projectOwnerUnit', label: '业主单位', visible: true}, |
| | | {id: 'coding', label: '项目码', slotName: 'coding', visible: true}, |
| | | {id: 'projectCode', label: '项目代码', visible: true}, |
| | | {id: 'projectType', label: '项目类型', slotName: 'projectType', visible: true}, |
| | | {id: 'projectPhase', label: '项目阶段', visible: true}, |
| | | {id: 'totalInvestment', label: '总投资额', visible: true}, |
| | | {id: 'yearInvestAmount', label: '本年计划投资', visible: true}, |
| | | {id: 'planStartTime', label: '项目年份', slotName: 'planStartTime', visible: true}, |
| | | {id: 'projectStatus', label: '项目状态', slotName: 'projectStatus', visible: true}, |
| | | {id: 'investType', label: '投资类别', slotName: 'investType', visible: true}, |
| | | {id: 'content', label: '建设内容', visible: false}, |
| | | {id: 'fundType', label: '资金类型', visible: false}, |
| | | {id: 'projectContactPerson', label: '项目联系人', visible: false}, |
| | | {id: 'contact', label: '联系方式', visible: false}, |
| | | {id: 'engineeringIdList', label: '关联工程', visible: false}, |
| | | {id: 'competentDepartmentList', label: '主管部门', visible: false}, |
| | | {id: 'area', label: '行政区划', visible: false}, |
| | | {id: 'managementCentralizationList', label: '管理归口', visible: false}, |
| | | {id: 'projectApprovalType', label: '项目审批类型', visible: false}, |
| | | {id: 'importanceType', label: '重点分类', slotName: 'importanceType', visible: false}, |
| | | {id: 'setTime', label: '立项时间', visible: false}, |
| | | {id: 'planCompleteTime', label: '计划竣工时间', visible: false}, |
| | | {id: 'winUnit', label: '中标单位', visible: false}, |
| | | {id: 'winAmount', label: '中标金额', visible: false}, |
| | | {id: 'winTime', label: '中标时间', visible: false}, |
| | | {id: 'year', label: '年度投资计划', visible: false}, |
| | | {id: 'address', label: '项目地址', visible: false}, |
| | | {id: 'projectBudget', label: '项目预算', visible: false}, |
| | | {id: 'beCrossRegion', label: '建设地点是否跨域', visible: false}, |
| | | {id: 'constructionLocation', label: '项目建设地点', visible: false}, |
| | | {id: 'detailedAddress', label: '建设详细地址', visible: false}, |
| | | {id: 'beCompensationProject', label: '是否是补码项目', visible: false}, |
| | | {id: 'compensationReason', label: '补码原因', visible: false}, |
| | | {id: 'plannedStartDate', label: '计划开工时间', visible: false}, |
| | | {id: 'expectedCompletionDate', label: '拟建成时间', visible: false}, |
| | | {id: 'nationalIndustryClassification', label: '国际行业分类', visible: false}, |
| | | {id: 'industryClassification', label: '所属行业分类', visible: false}, |
| | | {id: 'projectNature', label: '项目建成性质', visible: false}, |
| | | {id: 'projectAttribute', label: '项目属性', visible: false}, |
| | | {id: 'useEarth', label: '是否使用土地', visible: false}, |
| | | {id: 'contentScale', label: '主要建设内容及规模', visible: false}, |
| | | {id: 'code', label: '建管平台代码', visible: false}, |
| | | {id: 'projectUnit', label: '项目单位', visible: false}, |
| | | {id: 'projectUnitType', label: '项目单位类型', visible: false}, |
| | | {id: 'registrationType', label: '登记注册类型', visible: false}, |
| | | {id: 'holdingSituation', label: '控股情况', visible: false}, |
| | | {id: 'certificateType', label: '证照类型', visible: false}, |
| | | {id: 'certificateNumber', label: '证件号码', visible: false}, |
| | | {id: 'registeredAddress', label: '注册地址', visible: false}, |
| | | {id: 'registeredCapital', label: '注册资金', visible: false}, |
| | | {id: 'legal_representative', label: '法人代表', visible: false}, |
| | | {id: 'fixedPhone', label: '固定电话', visible: false}, |
| | | {id: 'legalPersonIdcard', label: '法人身份证号', visible: false}, |
| | | {id: 'projectContactPerson', label: '项目联系人', visible: false}, |
| | | {id: 'phone', label: '移动电话', visible: false}, |
| | | {id: 'contactIdcard', label: '联系人身份证号', visible: false}, |
| | | {id: 'wechat', label: '微信号', visible: false}, |
| | | {id: 'contactAddress', label: '联系人通讯地址', visible: false}, |
| | | {id: 'postCode', label: '邮政编码', visible: false}, |
| | | {id: 'email', label: '电子邮箱', visible: false}, |
| | | {id: 'totalInvestment', label: '项目总投资额', visible: false}, |
| | | {id: 'principal', label: '项目本金', visible: false}, |
| | | {id: 'governmentInvestmentTotal', label: '政府投资', visible: false}, |
| | | {id: 'centralInvestmentTotal', label: '中央投资', visible: false}, |
| | | {id: 'centralBudgetInvestment', label: '中央预算投资', visible: false}, |
| | | {id: 'centralFiscalInvestment', label: '中央财政', visible: false}, |
| | | {id: 'centralSpecialBondInvestment', label: '中央专项债券筹集的专项建设资金', visible: false}, |
| | | {id: 'centralSpecialFundInvestment', label: '中央专项建设基金', visible: false}, |
| | | {id: 'provincialInvestmentTotal', label: '省级投资', visible: false}, |
| | | {id: 'provincialBudgetInvestment', label: '省预算内投资', visible: false}, |
| | | {id: 'provincialFiscalInvestment', label: '省财政性建设投资', visible: false}, |
| | | {id: 'provincialSpecialFundInvestment', label: '省专项建设资金', visible: false}, |
| | | {id: 'cityInvestmentTotal', label: '市(州)投资', visible: false}, |
| | | {id: 'cityBudgetInvestment', label: '市(州)预算内投资', visible: false}, |
| | | {id: 'cityFiscalInvestment', label: '市(州)财政性投资', visible: false}, |
| | | {id: 'citySpecialFundInvestment', label: '市(州)专项资金', visible: false}, |
| | | {id: 'countyInvestmentTotal', label: '县(市、区)投资', visible: false}, |
| | | {id: 'countyBudgetInvestment', label: '区(县)预算内投资', visible: false}, |
| | | {id: 'countyFiscalInvestment', label: '区(县)财政性建设资金', visible: false}, |
| | | {id: 'countySpecialFundInvestment', label: '区(县)专项资金', visible: false}, |
| | | {id: 'domesticLoanTotal', label: '国内贷款', visible: false}, |
| | | {id: 'bankLoan', label: '银行贷款', visible: false}, |
| | | {id: 'foreignInvestmentTotal', label: '外商投资', visible: false}, |
| | | {id: 'enterpriseSelfRaisedTotal', label: '企业自筹', visible: false}, |
| | | {id: 'otherInvestmentTotal', label: '其他投资', visible: false} |
| | | ]; |
| | | export const projectProcessCurrentRest = [ |
| | | {id: 'projectName', label: '项目名称', visible: true}, |
| | | {id: 'flowableProcessName', label: '绑定流程', visible: true, minWidth: 200, showOverflowTooltip: true}, |
| | | {id: 'projectOwnerUnit', label: '业主单位', visible: true}, |
| | | {id: 'coding', label: '项目码', slotName: 'coding', visible: true}, |
| | | {id: 'projectCode', label: '项目代码', visible: true}, |
| | | {id: 'projectType', label: '项目类型', slotName: 'projectType', visible: true}, |
| | | {id: 'projectPhase', label: '项目阶段', visible: true}, |
| | |
| | | {{ scope.row.reportStatus === 0 ? '已上报' : '未上报' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="项目码" align="center" prop="projectColorCode"> |
| | | <el-table-column label="项目码" align="center" prop="coding"> |
| | | <template slot-scope="scope"> |
| | | <el-tag type="success" v-if="scope.row.projectColorCode === 'green'">绿</el-tag> |
| | | <el-tag type="success" v-if="scope.row.coding === 'green'">绿</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="项目代码" align="center" prop="projectCode" /> |
| | |
| | | {{ scope.row.reportStatus === 0 ? '已上报' : '未上报' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="项目码" align="center" prop="projectColorCode"> |
| | | <el-table-column label="项目码" align="center" prop="coding"> |
| | | <template slot-scope="scope"> |
| | | <el-tag type="success" v-if="scope.row.projectColorCode === 'green'">绿</el-tag> |
| | | <el-tag type="success" v-if="scope.row.coding === 'green'">绿</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="项目代码" align="center" prop="projectCode" /> |
| | |
| | | <h2>项目名称:{{detailData.projectName}}</h2> |
| | | </div> |
| | | <div class="project-info"> |
| | | <div class="project-info-item"></div> |
| | | <div class="project-info-item">流程名称:{{queryParams.processName}}</div> |
| | | <div class="project-info-item">项目代码:{{detailData.projectCode}}</div> |
| | | <div class="project-info-item"> |
| | | <div style="color: black"> |
| | |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="processName" |
| | | label="流程名称" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="promoterUnitName" |
| | | label="发起单位" |
| | | > |
| | |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | prop="handlerType" |
| | | label="处理方类型" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-tag v-if="scope.row.handlerType === 'USER'">人员账号</el-tag> |
| | | <el-tag type="success" v-else-if="scope.row.handlerType === 'DEPT'">单位</el-tag> |
| | | <el-tag type="info" v-else-if="scope.row.handlerType === 'ROLE'">角色</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="handlerUnitName" |
| | | label="处理单位" |
| | | :formatter="unitFormatter" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="handlerName" |
| | | label="候选处理人" |
| | | :formatter="candidateFormatter" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="handlerName" |
| | | label="实际处理人" |
| | | :formatter="finalFinishedFormatter" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | prop="taskStatus" |
| | | label="任务状态" |
| | | > |
| | |
| | | } from "@/api/projectProcess/projectProcess"; |
| | | |
| | | export default { |
| | | name: "index", |
| | | name: "Detail", |
| | | data() { |
| | | return { |
| | | loading: false, |
| | |
| | | currentPage: 1, |
| | | projectId: null, |
| | | processDefId: null, |
| | | processName: '' // 流程名称 |
| | | } |
| | | } |
| | | }, |
| | |
| | | console.log(this.$route.query, "参数") |
| | | this.queryParams.projectId = this.$route.query.projectId |
| | | this.queryParams.processDefId = this.$route.query.processDefId |
| | | this.queryParams.processName = this.$route.query.processName |
| | | this.loading = true |
| | | this.getProjectProcessInfo() |
| | | }, |
| | | methods: { |
| | | unitFormatter(row) { |
| | | if (row.handlerType === 'USER') { |
| | | return null; |
| | | } else if (row.handlerType === 'DEPT') { |
| | | return row.handlerUnitName.join("、") |
| | | } else if (row.handlerType === 'ROLE') { |
| | | return row.handlerUnitName.join('、') |
| | | } |
| | | }, |
| | | candidateFormatter(row) { |
| | | if (row.handlerType === 'USER') { |
| | | return row.handlerName.join('、') |
| | | } else if (row.handlerType === 'DEPT') { |
| | | return row.handlerUnitName.join('、') |
| | | } else if (row.handlerType === 'ROLE') { |
| | | return row.handlerUnitName.join('、') |
| | | } |
| | | }, |
| | | finalFinishedFormatter(row) { |
| | | // 不是已完成的状态没有实际处理人,已完成的状态只有一个人 |
| | | if (row.taskStatus !== '已完成') { |
| | | return null |
| | | } else { |
| | | return row.handlerName |
| | | } |
| | | }, |
| | | showHandle(row) { |
| | | console.log(this.$store.state.user, "用户信息") |
| | | if (row.taskStatus === '待办') { |
| | | if (row.handlerType === "USER") { |
| | | return this.$store.state.user.id === row.handlerId |
| | | console.log(row.handlerId.indexOf(this.$store.state.user.id) !== -1, "我是不是") |
| | | return row.handlerId.indexOf(this.$store.state.user.id) !== -1 |
| | | } else if (row.handlerType === "DEPT") { |
| | | console.log(this.$store.state.user.deptId, "部门id", row.handlerUnitId) |
| | | return this.$store.state.user.deptId === row.handlerUnitId |
| | | return row.handlerUnitId.indexOf(this.$store.state.user.deptId) !== -1 |
| | | // return this.$store.state.user.name === '市发展改革委' || this.$store.state.user.name === '市住建局' |
| | | } else if (row.handlerType === "ROLE") { |
| | | return this.$auth.hasRole(row.handlerUnitName) |
| | |
| | | deployId: row.deployId, |
| | | procDefId: row.processDefId, |
| | | processName: row.taskName, |
| | | flowName: this.queryParams.processName, |
| | | projectName: this.detailData.projectName, |
| | | taskId: row.taskId, |
| | | showAuditing: res.data, |
| | | goBackParams: this.queryParams |
| | |
| | | goToProcessDetail(row) { |
| | | this.$router.push({ path: '/flowable/task/myProcess/detail/index', |
| | | query: { |
| | | projectName: this.detailData.projectName, |
| | | flowName: this.queryParams.processName, |
| | | procInsId: row.processInsId, |
| | | deployId: row.deployId, |
| | | taskId: row.taskId, |
| | |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="项目码"> |
| | | <el-select v-model="queryParams.projectColorCode" clearable placeholder="请选择" class="select-option" @change="handleQuery"> |
| | | <el-select v-model="queryParams.coding" clearable placeholder="请选择" class="select-option" @change="handleQuery"> |
| | | <el-option v-for="item in dict.type.sys_project_code" :key="item.value" :label="item.label" |
| | | :value="item.value"/> |
| | | </el-select> |
| | |
| | | :prop="item.id" |
| | | :label="item.label" |
| | | :min-width="item.minWidth" |
| | | :show-overflow-tooltip="item.showOverflowTooltip" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <!-- 使用具名插槽 --> |
| | |
| | | <template v-if="item.slotName === 'projectStatus'"> |
| | | <dict-tag :options="dict.type.sys_project_status" :value="scope.row.projectStatus"/> |
| | | </template> |
| | | <!-- projectColorCode插槽 --> |
| | | <template v-if="item.slotName === 'projectColorCode' || item.slotName === 'coding'"> |
| | | <div v-if="scope.row.projectColorCode"> |
| | | <dict-tag :options="dict.type.sys_project_code" :value="scope.row.projectColorCode"/> |
| | | </div> |
| | | <div v-else> |
| | | <dict-tag :options="dict.type.sys_project_code" :value="scope.row.coding"/> |
| | | </div> |
| | | <!-- coding插槽 --> |
| | | <template v-if="item.slotName === 'coding' || item.slotName === 'coding'"> |
| | | <dict-tag :options="dict.type.sys_project_code" :value="scope.row.coding"/> |
| | | </template> |
| | | <!-- projectType插槽 --> |
| | | <template v-if="item.slotName === 'projectType'"> |
| | |
| | | import { listDefinition } from "@/api/flowable/definition"; |
| | | import {listInfo, getInfo, delInfo, addInfo, updateInfo} from "@/api/projectEngineering/projectInfo"; |
| | | import { getProjectProcess } from "@/api/projectProcess/projectProcess" |
| | | import {current, currentRest} from '@/views/projectEngineering/projectLibrary/list'; |
| | | import {projectProcessCurrent, projectProcessCurrentRest} from '@/views/projectEngineering/projectLibrary/list'; |
| | | import FileDialog from '@/views/projectEngineering/projectLibrary/component/FileDialog'; |
| | | import RunProcess from "@/views/projectProcess/components/RunProcess"; |
| | | import {getProcessConfigInfoList} from "@/api/projectProcess/processConfigInfo"; |
| | |
| | | projectType: '', // 项目类型 |
| | | importanceType: '', // 重点分类 |
| | | projectStatus: '', // 项目状态 |
| | | projectColorCode: '', // 项目码 |
| | | coding: '', // 项目码 |
| | | investmentType: '', // 资金类型 |
| | | projectPhase: '', // 项目阶段 |
| | | investType: '', // 投资类别 |
| | |
| | | if(projectCategory){ |
| | | this.isProjectCategory = true; |
| | | } |
| | | const columns = current.map((item, index) => { |
| | | const columns = projectProcessCurrent.map((item, index) => { |
| | | item.index = index + 1; |
| | | item.key = index; |
| | | item.serialNumber = index + 1; |
| | |
| | | path: '/projectFlow/detail', |
| | | query: { |
| | | projectId: row.id, |
| | | processDefId: row.processDefId |
| | | processDefId: row.processDefId, |
| | | processName: row.flowableProcessName |
| | | } |
| | | }) |
| | | }, |
| | |
| | | }, |
| | | // 重置排序的方法 |
| | | handleResetSort() { |
| | | this.defaultColumns = currentRest.map((item, index) => { |
| | | this.defaultColumns = projectProcessCurrentRest.map((item, index) => { |
| | | item.index = index + 1; |
| | | item.key = index; |
| | | item.serialNumber = index + 1 |
| | | return item; |
| | | }); |
| | | this.columns = currentRest.map((item, index) => { |
| | | this.columns = projectProcessCurrentRest.map((item, index) => { |
| | | item.index = index + 1; |
| | | item.key = index; |
| | | item.serialNumber = index + 1 |