Commit 5285e457 by 史敦盼

Merge branch 'sdp-v1'

2 parents 5976e3ac 56b26a72
......@@ -780,6 +780,14 @@ export function getPrjInfoDetail(params) {
export function getSystemInfoDetail(params) {
return post(EADC_ARRCHITECTURE + '/app-info/dApp', params)
}
// 专家人才库管理-新增人才
export function addKlPerson(params) {
return post(EADC_KNOWLEDGE_POOL + '/kl-talent-pool/adKlPerson', params)
}
// 专家人才库管理-更新人才
export function updKlPerson(params) {
return post(EADC_KNOWLEDGE_POOL + '/kl-talent-pool/upKlPerson', params)
}
export function postRequest(url, params) {
return post(EADC_ARRCHITECTURE + url, params)
}
import { EADC_ARRCHITECTURE } from '@/config/micromodule'
import { EADC_ARRCHITECTURE, EADC_KNOWLEDGE_POOL } from '@/config/micromodule'
// 列表接口url
// 批量计划管理分页查询
export const batchPlanManagement = EADC_ARRCHITECTURE + '/bat-plan-info/'
......@@ -37,3 +37,8 @@ export const queryConceptualBaseOrg = EADC_ARRCHITECTURE + '/org-info/'
// 架构遵从检查列表
export const queryArchitectureFollowExamine =
EADC_ARRCHITECTURE + '/architectureFollows/'
// 专家人才库管理-查询人才
export const queryqKLPerson = EADC_KNOWLEDGE_POOL + '/kl-talent-pool/qKLPerson/'
export const queryExpert = EADC_KNOWLEDGE_POOL + '/kl-talent-pool/'
......@@ -4,11 +4,8 @@
* @Autor: pan
* @Date: 2024-03-12 14:55:59
* @LastEditors: pan
* @LastEditTime: 2024-03-27 09:47:20
* @LastEditTime: 2024-04-01 15:56:14
-->
<!-- /**
* 搜索栏公共组件
*/ -->
<template>
<div class="form-box">
<el-form
......
......@@ -4,7 +4,7 @@
* @Autor: pan
* @Date: 2024-03-12 14:01:57
* @LastEditors: pan
* @LastEditTime: 2024-04-01 10:35:02
* @LastEditTime: 2024-04-01 11:52:46
-->
<template>
<div class="list-page">
......@@ -55,5 +55,8 @@ export default {
.formWrap {
border-bottom: 1px solid #e2e2e2;
}
/deep/ .el-tabs__header {
margin: 0;
}
}
</style>
......@@ -4,7 +4,7 @@
* @Autor: pan
* @Date: 2024-03-12 14:55:59
* @LastEditors: pan
* @LastEditTime: 2024-03-28 17:01:26
* @LastEditTime: 2024-04-01 11:54:48
-->
<!-- /**
* 搜索栏公共组件
......@@ -173,7 +173,8 @@ export default {
<style lang="scss" scoped>
.search-form-box {
display: flex;
margin-top: 10px;
margin-top: 25px;
margin-bottom: 15px;
.btn-box {
// padding-top: 5px;
display: flex;
......
......@@ -4,7 +4,7 @@
* @Autor: pan
* @Date: 2024-03-12 15:11:47
* @LastEditors: pan
* @LastEditTime: 2024-03-26 15:30:38
* @LastEditTime: 2024-04-01 17:08:42
-->
<template>
<div class="form-item">
......@@ -148,7 +148,11 @@ export default {
// 双向绑定数据值
currentVal: {
get() {
return this.value
if (this.isSelect) {
return this.value && this.value + ''
} else {
return this.value
}
},
set(val) {
this.$emit('input', val)
......
......@@ -4,7 +4,7 @@
* @Autor: pan
* @Date: 2024-03-11 14:53:40
* @LastEditors: pan
* @LastEditTime: 2024-04-01 10:28:05
* @LastEditTime: 2024-04-01 15:17:03
-->
<!-- 示例
columns: [{ label: '头像', prop: 'avatar', align: 'center', __slotName: 'avatar',callback: (row, title) => {
......@@ -64,7 +64,7 @@
v-if="item.type === 'index'"
v-bind="item"
align="center"
:key="item"
:key="item.type"
:index="indexMethod"
>
</el-table-column>
......
......@@ -349,7 +349,7 @@ const routes = [
component: () => import('@/views/collectDataConfiguration/index.vue'),
},
{
path: '/main/supervisionDatacollection', // 架构督查 - 督查资料收集
path: '/main/supervisionDataCollection', // 架构督查 - 督查资料收集
name: 'supervisionDataCollection',
component: () => import('@/views/supervisionDataCollection/index.vue'),
},
......
......@@ -4,7 +4,7 @@
* @Autor: pan
* @Date: 2024-03-21 20:58:31
* @LastEditors: pan
* @LastEditTime: 2024-03-27 11:25:47
* @LastEditTime: 2024-04-01 11:33:12
-->
<template>
<div class="searchTable">
......@@ -71,7 +71,7 @@ import SearchForm from '@/components/SearchForm.vue'
import TableConfig from '@/components/TableConfig.vue'
import { queryQyNeedReviewCount, queryArcAstSys } from '@/api/interface'
import { systemArchiSaveFactor } from '@/api/index'
import { systemArchiSaveFactor, archiIntelligenceSearchTree } from '@/api/index'
export default {
name: 'conceptualRelated',
data() {
......@@ -207,16 +207,24 @@ export default {
return arr
},
},
created() {
this.getElementTreeData()
},
methods: {
// 同步更新
fnOperation(row) {
// const extend = []
// extend.push({
// archiType: item.archiType,
// assetIdList: item.checkedCities
// })
let extend = []
this.elementTree.forEach((item) => {
if (item.checkedCities.length > 0) {
extend.push({
archiType: item.archiType,
assetIdList: item.checkedCities,
})
}
})
const params = {
// extend,
// ...row,
extend,
isExtend: 0,
}
systemArchiSaveFactor(params).then((res) => {
......@@ -227,6 +235,19 @@ export default {
}
})
},
getElementTreeData(type) {
//查询选择遵从总体架构资产类型数据
archiIntelligenceSearchTree({}).then((res) => {
if (res.code == 200) {
res.data.map((item) => {
item['isIndeterminate'] = false
item['checkAll'] = false
item['checkedCities'] = []
})
this.elementTree = res.data
}
})
},
handlePercent(scope) {
const item = scope.row
if (item.reviewPassCount && item.needCount) {
......
<!--
* @Description: 新增专家弹窗
* @Version: 2.0
* @Autor: pan
* @Date: 2024-04-01 14:39:48
* @LastEditors: pan
* @LastEditTime: 2024-04-01 17:48:32
-->
<template>
<el-dialog
:title="title"
:visible.sync="showDialog"
:close-on-click-modal="false"
width="60%"
@close="handleClose()"
@open="handleOpen()"
>
<div>
<Form ref="addForm" :form-options="formOptions" label-width="120px">
</Form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose()" size="mini">取 消</el-button>
<el-button type="primary" @click="handleSubmit" size="mini"
>确 定</el-button
>
</span></el-dialog
>
</template>
<script>
import Form from '@/components/Form.vue'
import {
getETPManagePoolName,
getETPManageAdd,
getETPManageUpdate,
} from '@/api'
export default {
props: {
title: {
type: String,
default: '',
},
visible: {
type: Boolean,
default: false,
},
rowData: {
type: Object,
default: () => {},
},
},
data() {
return {
talentPoolNameOptions: [],
}
},
components: {
Form,
},
computed: {
formOptions() {
return [
{
label: '单位', // label文字
prop: 'deptId', // 字段名
element: 'el-select', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
dictType: 'sys_org',
filterable: true,
rules: [{ required: true, trigger: 'blur', message: '不能为空' }],
},
{
label: '所属专家库', // label文字
prop: 'talentPoolName', // 字段名
element: 'el-select', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
options: this.talentPoolNameOptions,
filterable: true,
rules: [{ required: true, trigger: 'blur', message: '不能为空' }],
},
{
label: '专家姓名', // label文字
prop: 'talentName', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
rules: [{ required: true, trigger: 'blur', message: '不能为空' }],
},
{
label: '性别', // label文字
prop: 'sex', // 字段名
element: 'el-select', // 指定elementui组件
placeholder: '请选择', // elementui组件属性
dictType: 'sys_sex',
},
{
label: '出生年月', // label文字
prop: 'createMan', // 字段名
type: 'date',
valueFormat: 'yyyy-MM-dd',
element: 'el-date-picker', // 指定elementui组件
placeholder: '请选择', // elementui组件属性
},
{
label: '学历', // label文字
prop: 'education', // 字段名
element: 'el-select', // 指定elementui组件
placeholder: '请选择', // elementui组件属性
dictType: 'sys_education',
rules: [{ required: true, trigger: 'blur', message: '不能为空' }],
},
{
label: '联系方式', // label文字
prop: 'telephone', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
},
{
label: '邮箱', // label文字
prop: 'email', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
},
{
label: '专家领域', // label文字
prop: 'professionalField', // 字段名
element: 'el-select', // 指定elementui组件
placeholder: '请选择', // elementui组件属性
dictType: 'sys_professional_field',
rules: [{ required: true, trigger: 'blur', message: '不能为空' }],
},
{
label: '专家级别', // label文字
prop: 'level', // 字段名
element: 'el-select', // 指定elementui组件
placeholder: '请选择', // elementui组件属性
dictType: 'talent_level',
rules: [{ required: true, trigger: 'blur', message: '不能为空' }],
},
{
label: '成果简介', // label文字
prop: 'remark', // 字段名
type: 'textarea',
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
span: 24,
},
]
},
showDialog: {
get() {
return this.visible
},
set(value) {
this.$emit('update:visible', value)
},
},
isEdit() {
if (this.title === '修改专家信息') {
return true
} else {
return false
}
},
},
methods: {
handleSubmit() {
this.$refs['addForm'].onValidate(() => {
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
const typeApi = this.isEdit ? getETPManageUpdate : getETPManageAdd
const formInfo = this.$refs['addForm'].getData()
const params = {
...this.rowData,
...formInfo,
}
typeApi(params).then((res) => {
loading.close()
if (res.code === 200) {
this.$message.success('保存成功')
this.showDialog = false
this.handleClose()
this.$emit('querySearch')
} else {
this.$message.error(res.msg)
}
})
})
},
handleClose() {
this.showDialog = false
this.formOptions.forEach((v) => {
v.initValue = ''
})
this.$refs['addForm'].addInitValue()
this.$refs['addForm'].onReset()
},
async handleOpen() {
getETPManagePoolName().then((res) => {
if (res.code == 200) {
this.talentPoolNameOptions = res.data.map((v) => {
return {
label: v.talentPoolName,
value: v.talentPoolName,
}
})
}
})
if (Object.keys(this.rowData).length) {
this.formOptions.forEach((v) => {
v.initValue = this.rowData[v.prop]
})
this.$nextTick(() => {
this.$refs['addForm'].addInitValue()
})
} else {
this.$nextTick(() => {
this.$refs['addForm'].addInitValue()
this.$refs['addForm'].onReset()
})
}
},
},
}
</script>
<style scoped lang="scss">
@import '@/styles/elementui.scss';
</style>
<!--
* @Description: 新增人才弹窗
* @Version: 2.0
* @Autor: pan
* @Date: 2024-04-01 14:38:41
* @LastEditors: pan
* @LastEditTime: 2024-04-01 17:00:27
-->
<template>
<el-dialog
:title="title"
:visible.sync="showDialog"
:close-on-click-modal="false"
width="60%"
@close="handleClose()"
@open="handleOpen()"
>
<div>
<Form ref="addForm" :form-options="formOptions" label-width="120px">
</Form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose()" size="mini">取 消</el-button>
<el-button type="primary" @click="handleSubmit" size="mini"
>确 定</el-button
>
</span></el-dialog
>
</template>
<script>
import Form from '@/components/Form.vue'
import { addKlPerson, updKlPerson } from '@/api'
export default {
props: {
title: {
type: String,
default: '',
},
visible: {
type: Boolean,
default: false,
},
rowData: {
type: Object,
default: () => {},
},
},
data() {
return {}
},
components: {
Form,
},
computed: {
formOptions() {
return [
{
label: '单位', // label文字
prop: 'deptId', // 字段名
element: 'el-select', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
dictType: 'sys_org',
filterable: true,
rules: [{ required: true, trigger: 'blur', message: '不能为空' }],
},
{
label: '姓名', // label文字
prop: 'talentName', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
rules: [{ required: true, trigger: 'blur', message: '不能为空' }],
},
{
label: '性别', // label文字
prop: 'sex', // 字段名
element: 'el-select', // 指定elementui组件
placeholder: '请选择', // elementui组件属性
dictType: 'sys_sex',
},
{
label: '出生年月', // label文字
prop: 'birthday', // 字段名
type: 'date',
valueFormat: 'yyyy-MM-dd',
element: 'el-date-picker', // 指定elementui组件
placeholder: '请选择', // elementui组件属性
},
{
label: '学历', // label文字
prop: 'education', // 字段名
element: 'el-select', // 指定elementui组件
placeholder: '请选择', // elementui组件属性
dictType: 'sys_education',
rules: [{ required: true, trigger: 'blur', message: '不能为空' }],
},
{
label: '联系方式', // label文字
prop: 'telephone', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
},
{
label: '邮箱', // label文字
prop: 'email', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
},
{
label: '专业领域', // label文字
prop: 'professionalField', // 字段名
element: 'el-select', // 指定elementui组件
placeholder: '请选择', // elementui组件属性
dictType: 'sys_professional_field',
rules: [{ required: true, trigger: 'blur', message: '不能为空' }],
},
{
label: '成果简介', // label文字
prop: 'remark', // 字段名
type: 'textarea',
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
span: 24,
},
]
},
showDialog: {
get() {
return this.visible
},
set(value) {
this.$emit('update:visible', value)
},
},
isEdit() {
if (this.title === '修改人才信息') {
return true
} else {
return false
}
},
},
methods: {
handleSubmit() {
this.$refs['addForm'].onValidate(() => {
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
const typeApi = this.isEdit ? updKlPerson : addKlPerson
const formInfo = this.$refs['addForm'].getData()
const params = {
...this.rowData,
...formInfo,
type: 1,
}
typeApi(params).then((res) => {
loading.close()
if (res.code === 200) {
this.$message.success('保存成功')
this.showDialog = false
this.handleClose()
this.$emit('querySearch')
} else {
this.$message.error(res.msg)
}
})
})
},
handleClose() {
this.showDialog = false
this.formOptions.forEach((v) => {
v.initValue = ''
})
this.$refs['addForm'].addInitValue()
this.$refs['addForm'].onReset()
},
async handleOpen() {
if (Object.keys(this.rowData).length) {
this.formOptions.forEach((v) => {
v.initValue = this.rowData[v.prop]
})
this.$nextTick(() => {
this.$refs['addForm'].addInitValue()
})
} else {
this.$nextTick(() => {
this.$refs['addForm'].addInitValue()
this.$refs['addForm'].onReset()
})
}
},
},
}
</script>
<style scoped lang="scss">
@import '@/styles/elementui.scss';
</style>
......@@ -4,7 +4,7 @@
* @Autor: pan
* @Date: 2024-03-28 16:08:56
* @LastEditors: pan
* @LastEditTime: 2024-03-29 16:06:36
* @LastEditTime: 2024-04-01 15:32:12
-->
<template>
<div>
......@@ -25,11 +25,17 @@
<el-row class="m-t-20">
<el-col :span="6" class="flex">
<div class="label">单位</div>
<div class="value">{{ detailInfo.manageOrgId }}</div>
<div class="value">
{{ codeToName(detailInfo.manageOrgId, 'sysOrgOptions') }}
</div>
</el-col>
<el-col :span="6" class="flex">
<div class="label">部门</div>
<div class="value">{{ detailInfo.manageDeptId }}</div>
<div class="value">
{{
codeToName(detailInfo.manageDeptId, 'sysDeptOptions')
}}
</div>
</el-col>
<el-col :span="6" class="flex">
<div class="label">关联系统名称</div>
......@@ -39,7 +45,9 @@
</el-col>
<el-col :span="6" class="flex">
<div class="label">建设类型</div>
<div class="value">{{ detailInfo.buildType }}</div>
<div class="value">
{{ codeToName(detailInfo.buildType, 'buildTypeOptins') }}
</div>
</el-col>
</el-row>
<el-row class="m-t-20">
......@@ -106,7 +114,7 @@
align="center"
></el-table-column>
<el-table-column
prop="name2"
prop="fileName"
width="500"
label="资料名称"
align="center"
......@@ -181,6 +189,18 @@ export default {
type: Object,
default: () => {},
},
sysOrgOptions: {
type: Array,
default: () => [],
},
sysDeptOptions: {
type: Array,
default: () => [],
},
buildTypeOptins: {
type: Array,
default: () => [],
},
},
data() {
return {
......@@ -205,6 +225,10 @@ export default {
},
mounted() {},
methods: {
codeToName(code, options) {
const obj = this[options]?.find((v) => v.value == code) || {}
return obj.label
},
handleClose() {
this.showDialog = false
},
......
......@@ -121,6 +121,7 @@
prop="manageOrgId"
label="单位"
align="center"
width="160"
:formatter="
(row, column, cellValue, index) =>
formatterDept(row, column, cellValue, index, 'sysOrgOptions')
......@@ -185,9 +186,10 @@
<el-table-column
prop="createTime"
label="创建时间"
width="120"
align="center"
></el-table-column>
<el-table-column label="操作" width="260" align="center">
<el-table-column label="操作" width="200" align="center">
<template slot-scope="scope">
<div
style="
......@@ -677,7 +679,13 @@
</el-dialog>
<!-- 项目信息详情 -->
<ProjectDetail :row-data="rowData" :visible.sync="projectDetailVisible" />
<ProjectDetail
:sysOrgOptions="sysOrgOptions"
:sysDeptOptions="sysDeptOptions"
:buildTypeOptins="jianSheLeiXingSelect"
:row-data="rowData"
:visible.sync="projectDetailVisible"
/>
</div>
</template>
......
......@@ -40,6 +40,7 @@
v-model="searchParams.tplName"
placeholder="请选择"
style="width: 210px"
filterable
>
<el-option
v-for="item in moBanMingCheng"
......
......@@ -4,9 +4,8 @@
* @Autor: pan
* @Date: 2024-03-29 11:44:57
* @LastEditors: pan
* @LastEditTime: 2024-03-29 16:28:15
* @LastEditTime: 2024-04-01 15:34:42
-->
<template>
<div>
<el-dialog
......@@ -26,11 +25,25 @@
<el-row class="m-t-20">
<el-col :span="6" class="flex">
<div class="label">单位</div>
<div class="value">{{ systemInfoDetail.manageOrgId }}</div>
<div class="value">
{{
codeToName(
systemInfoDetail.manageOrgId,
'sysOrgOptions',
)
}}
</div>
</el-col>
<el-col :span="6" class="flex">
<div class="label">部门</div>
<div class="value">{{ systemInfoDetail.manageDeptId }}</div>
<div class="value">
{{
codeToName(
systemInfoDetail.manageDeptId,
'sysDeptOptions',
)
}}
</div>
</el-col>
<el-col :span="6" class="flex">
<div class="label">系统名称</div>
......@@ -40,7 +53,14 @@
</el-col>
<el-col :span="6" class="flex">
<div class="label">建设类型</div>
<div class="value">{{ systemInfoDetail.buildType }}</div>
<div class="value">
{{
codeToName(
systemInfoDetail.buildType,
'buildTypeOptins',
)
}}
</div>
</el-col>
</el-row>
<el-row class="m-t-20">
......@@ -124,6 +144,18 @@ export default {
type: Object,
default: () => {},
},
sysOrgOptions: {
type: Array,
default: () => [],
},
sysDeptOptions: {
type: Array,
default: () => [],
},
buildTypeOptins: {
type: Array,
default: () => [],
},
},
data() {
return {
......@@ -148,6 +180,10 @@ export default {
},
mounted() {},
methods: {
codeToName(code, options) {
const obj = this[options]?.find((v) => v.value == code) || {}
return obj.label
},
handleClose() {
this.showDialog = false
},
......
......@@ -279,8 +279,8 @@
</el-form-item>
<el-form-item label="系统类型:" prop="let4">
<el-select clearable v-model="ruleForm.let4">
<el-option label="统推" :value="1"></el-option>
<el-option label="自建" :value="2"></el-option>
<el-option label="统推" value="1"></el-option>
<el-option label="自建" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="承建单位:" prop="let5">
......@@ -315,7 +315,13 @@
</el-dialog>
<!-- 系统信息详情 -->
<SystemInfoDetail :row-data="rowData" :visible.sync="appDetailVisible" />
<SystemInfoDetail
:sysOrgOptions="sysOrgOptions"
:sysDeptOptions="sysDeptOptions"
:buildTypeOptins="jianSheLeiXingSelect"
:row-data="rowData"
:visible.sync="appDetailVisible"
/>
</div>
</template>
......@@ -436,11 +442,11 @@ export default {
//编辑
this.add_dialog = true
this.dialogTitle = '编辑系统'
this.ruleForm.let1 = row.manageOrgId
this.ruleForm.let2 = row.manageDeptId
this.ruleForm.let1 = row.manageOrgId + ''
this.ruleForm.let2 = row.manageDeptId + ''
this.ruleForm.let3 = row.appName
this.ruleForm.let4 = row.buildType
this.ruleForm.let5 = row.buildOrg
this.ruleForm.let4 = row.buildType + ''
this.ruleForm.let5 = row.buildOrg + ''
this.ruleForm.let6 = row.projectManager
this.appId = row.appId
this.$nextTick(() => {
......@@ -516,11 +522,11 @@ export default {
this.$refs.form.validate((valid) => {
if (valid) {
const params = {
manageOrgId: this.ruleForm.let1,
manageDeptId: this.ruleForm.let2,
manageOrgId: +this.ruleForm.let1,
manageDeptId: +this.ruleForm.let2,
appName: this.ruleForm.let3,
buildType: this.ruleForm.let4,
buildOrg: this.ruleForm.let5,
buildOrg: +this.ruleForm.let5,
projectManager: this.ruleForm.let6,
}
const requestParams =
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!