|
@@ -89,7 +89,52 @@
|
|
|
</el-form>
|
|
|
</el-tab-pane>
|
|
|
<el-tab-pane label="职能描述">
|
|
|
- <HcRelatedProject />
|
|
|
+ <div class="relative overflow-hidden">
|
|
|
+ <el-row :gutter="14">
|
|
|
+ <el-col :span="7">
|
|
|
+ <el-select v-model="relatedProjectForm.projectId" filterable clearable block @change="projectChange" @clear="projectClear">
|
|
|
+ <el-option v-for="(item) in projectList" :key="item.id" :label="item.projectName" :value="item.id" />
|
|
|
+ </el-select>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="7">
|
|
|
+ <el-select v-model="relatedProjectForm.contractId" filterable clearable block @change="contractChange">
|
|
|
+ <el-option v-for="(item) in contractList" :key="item.id" :label="item.contractName" :value="item.id" />
|
|
|
+ </el-select>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-select v-model="relatedProjectForm.roleId" filterable clearable block @change="roleChange">
|
|
|
+ <el-option v-for="(item) in roleList" :key="item.roleId" :label="item.roleName" :value="item.roleId" />
|
|
|
+ </el-select>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="4">
|
|
|
+ <el-button type="success" @click="addRelatedProject">确认添加</el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <el-divider border-style="dashed" />
|
|
|
+ <div v-for="(item, index) in userProjectContract" :key="index" class="relative mb-[14px] overflow-hidden">
|
|
|
+ <el-row :gutter="14">
|
|
|
+ <el-col :span="7">
|
|
|
+ <el-input v-model="item.projectName" disabled />
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="7">
|
|
|
+ <el-select :model-value="item.userContractId" popper-class="user-project-contract" filterable block>
|
|
|
+ <el-option v-for="(items, indexs) in item.dataInfo" :key="indexs" :label="items.contractName" :value="items.id">
|
|
|
+ <div class="hc-flex" @click.stop="userContractClick(items, index)">
|
|
|
+ <div class="name flex-1 text-truncate">{{ items.contractName }}</div>
|
|
|
+ <div class="del ml-10px text-red" @click.stop="delContractClick(items, index)">删除</div>
|
|
|
+ </div>
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-input v-model="item.userRoleName" disabled />
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="4">
|
|
|
+ <el-button type="danger" @click="delRelatedProject(item)">确定删除</el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
</el-tab-pane>
|
|
|
</el-tabs>
|
|
|
<template #footer>
|
|
@@ -103,9 +148,12 @@
|
|
|
import { ref, watch } from 'vue'
|
|
|
import { getDictionaryData } from '~uti/tools'
|
|
|
import { getArrValue, getObjValue, isNullES, isPhone } from 'js-fast-way'
|
|
|
-import mainApi from '~api/system/user'
|
|
|
import tenantApi from '~api/system/tenant'
|
|
|
+import projectApi from '~api/project/project'
|
|
|
+import contractApi from '~api/project/contract'
|
|
|
+import roleApi from '~api/system/role'
|
|
|
import deptApi from '~api/system/dept'
|
|
|
+import mainApi from '~api/system/user'
|
|
|
|
|
|
const props = defineProps({
|
|
|
info: {
|
|
@@ -141,6 +189,8 @@ const getDataApi = () => {
|
|
|
const { id, userType } = info
|
|
|
getTenantSelect()
|
|
|
getUserTypeData()
|
|
|
+ getProjectDataList()
|
|
|
+ getRoleDataList()
|
|
|
if (isNullES(id)) return
|
|
|
formModel.value = {
|
|
|
...info,
|
|
@@ -151,6 +201,7 @@ const getDataApi = () => {
|
|
|
return parseInt(item, 10) // 使用基数10进行解析,保证正确性
|
|
|
})
|
|
|
getDeptTreeData()
|
|
|
+ getProjectContractList()
|
|
|
console.log(info)
|
|
|
}
|
|
|
|
|
@@ -206,6 +257,102 @@ const getDeptTreeData = async () => {
|
|
|
deptTreeData.value = getArrValue(data)
|
|
|
}
|
|
|
|
|
|
+//获取当前配置好的参建项目
|
|
|
+const userProjectContract = ref([])
|
|
|
+const getProjectContractList = async () => {
|
|
|
+ const { id } = formModel.value
|
|
|
+ const { data } = await mainApi.getProjectContractList(id)
|
|
|
+ const res = getArrValue(data)
|
|
|
+ for (let i = 0; i < res.length; i++) {
|
|
|
+ const arr = getArrValue(res[i].dataInfo)
|
|
|
+ res[i].dataInfo = arr
|
|
|
+ if (arr.length > 0) {
|
|
|
+ const roleTypes = isNullES(arr[0].roleType) ? '' : arr[0].roleType + '|'
|
|
|
+ res[i].userContractId = arr[0].id
|
|
|
+ res[i].userRoleName = roleTypes + arr[0].roleName
|
|
|
+ }
|
|
|
+ }
|
|
|
+ userProjectContract.value = res
|
|
|
+}
|
|
|
+
|
|
|
+//已配置的合同段选择
|
|
|
+const userContractClick = ({ id, roleType, roleName }, index) => {
|
|
|
+ const form = userProjectContract.value[index]
|
|
|
+ const roleTypes = isNullES(roleType) ? '' : roleType + '|'
|
|
|
+ form.userContractId = id
|
|
|
+ form.userRoleName = roleTypes + roleName
|
|
|
+}
|
|
|
+
|
|
|
+//已配置的合同段删除
|
|
|
+const delContractClick = async ({ id }) => {
|
|
|
+ const { isRes } = await mainApi.removeUsersByIds(id)
|
|
|
+ if (!isRes) return
|
|
|
+ window.$message.success('删除成功')
|
|
|
+ await getProjectContractList()
|
|
|
+}
|
|
|
+
|
|
|
+//删除参建项目
|
|
|
+const delRelatedProject = async ({ userContractId }) => {
|
|
|
+ const { isRes } = await mainApi.removeUserProjectInfoAndRoleById(userContractId)
|
|
|
+ if (!isRes) return
|
|
|
+ window.$message.success('删除成功')
|
|
|
+ await getProjectContractList()
|
|
|
+}
|
|
|
+
|
|
|
+//职能描述相关数据
|
|
|
+const projectList = ref([])
|
|
|
+const getProjectDataList = async () => {
|
|
|
+ const { data } = await projectApi.page({ current: 1, size: 999 })
|
|
|
+ projectList.value = getArrValue(data?.records)
|
|
|
+}
|
|
|
+
|
|
|
+//获取合同段数据
|
|
|
+const contractList = ref([])
|
|
|
+const getContractDataList = async () => {
|
|
|
+ const { projectId } = relatedProjectForm.value
|
|
|
+ if (isNullES(projectId)) return
|
|
|
+ const { data } = await contractApi.getList(projectId)
|
|
|
+ contractList.value = getArrValue(data)
|
|
|
+}
|
|
|
+
|
|
|
+//获取角色
|
|
|
+const roleList = ref([])
|
|
|
+const getRoleDataList = async () => {
|
|
|
+ const { data } = await roleApi.treeTow()
|
|
|
+ roleList.value = getArrValue(data)
|
|
|
+}
|
|
|
+
|
|
|
+//职能描述,添加表单
|
|
|
+const relatedProjectForm = ref({ projectId: '', contractId: '', roleId: '' })
|
|
|
+
|
|
|
+//项目选择
|
|
|
+const projectChange = () => {
|
|
|
+ const { projectId } = relatedProjectForm.value
|
|
|
+ getContractDataList()
|
|
|
+}
|
|
|
+
|
|
|
+//清空选择的项目
|
|
|
+const projectClear = () => {
|
|
|
+ relatedProjectForm.value.contractId = null
|
|
|
+ contractList.value = []
|
|
|
+}
|
|
|
+
|
|
|
+//合同段选择
|
|
|
+const contractChange = () => {
|
|
|
+ const { contractId } = relatedProjectForm.value
|
|
|
+}
|
|
|
+
|
|
|
+//角色选择
|
|
|
+const roleChange = () => {
|
|
|
+ const { roleId } = relatedProjectForm.value
|
|
|
+}
|
|
|
+
|
|
|
+//添加项目合同段
|
|
|
+const addRelatedProject = () => {
|
|
|
+ const form = relatedProjectForm.value
|
|
|
+ console.log(form)
|
|
|
+}
|
|
|
+
|
|
|
//提交表单
|
|
|
const submitLoading = ref(false)
|
|
|
const dialogSubmit = async () => {
|
|
@@ -325,4 +472,7 @@ const formRules2 = {
|
|
|
margin-bottom: 14px;
|
|
|
}
|
|
|
}
|
|
|
+.user-project-contract .el-select-dropdown__item {
|
|
|
+ padding: 0 20px;
|
|
|
+}
|
|
|
</style>
|