Commit 7600c207 by 史敦盼

需求管理,意见编制基础页面

1 parent 73d27be3
......@@ -635,3 +635,6 @@ export function addNeedInfo(params) {
export function editNeedInfo(params) {
return post('/network/need-info/upd', params)
}
export function queryPrjNeedFile(params) {
return post('/network/prj-need-file/', params)
}
......@@ -4,7 +4,7 @@
* @Autor: pan
* @Date: 2024-03-11 14:53:40
* @LastEditors: pan
* @LastEditTime: 2024-03-19 20:34:36
* @LastEditTime: 2024-03-20 15:09:49
-->
<!-- 示例
columns: [{ label: '头像', prop: 'avatar', align: 'center', __slotName: 'avatar',callback: (row, title) => {
......@@ -73,6 +73,11 @@
v-for="items in item.actionButtons"
:key="items.title"
v-bind="items"
:disabled="
items.disabledCallback
? items.disabledCallback(scope.row, items.title)
: false
"
@click="item.callback(scope.row, items.title)"
><span v-if="!items.circle">{{ items.title }}</span></el-button
>
......
......@@ -254,6 +254,21 @@ const routes = [
name: 'conceptualExamine',
component: () => import('@/views/conceptualReview/Examine.vue'),
},
{
path: '/main/demandManagement', // 需求管理列表页
name: 'demandManagement',
component: () => import('@/views/demandManagement/index.vue'),
},
{
path: '/main/conceptualViewOrg', // 概设材料意见编制
name: 'conceptualViewOrg',
component: () => import('@/views/conceptualViewOrg/index.vue'),
},
{
path: '/main/conceptualBaseManagement', // 概设评审基础管理
name: 'conceptualBaseManagement',
component: () => import('@/views/conceptualBaseManagement/index.vue'),
},
],
},
]
......
......@@ -17,7 +17,7 @@ export const buildType = [
// 评审材料名称枚举
export const archiPrjReviewEnum = [
{ label: '一致性评审', value: 'CONFORMANCE_REVIEW' },
{ label: '架构遵从', value: 'ARCHITECTURE_CONFORMANCE' },
// { label: '架构遵从', value: 'ARCHITECTURE_CONFORMANCE' },
{ label: '关键技术深度评审', value: 'KEY_TECHNOLOGY_REVIEW' },
{ label: '功能深度评审', value: 'FUNCTIONAL_DEPTH_REVIEW' },
{ label: '数据深度评审', value: 'DATA_DEPTH_REVIEW' },
......@@ -35,6 +35,8 @@ export const archiPrjReviewEnum = [
{ label: '系统实用性审查', value: 'SYSTEM_PRACTICALITY_REVIEW' },
{ label: '系统安全性审查', value: 'SYSTEM_SECURITY_REVIEW' },
{ label: '资源复用性审查', value: 'RESOURCE_REUSABILITY_REVIEW' },
{ label: '报告规范性', value: 'REPORT_NORM' },
{ label: '架构遵从', value: 'FRAMEWORK_OBEY' },
{ label: '技术路线', value: 'TECH_ROUTE' },
{ label: '功能偏差', value: 'FUNCTION_UNLIKE' },
{ label: '系统部署', value: 'APP_DEP' },
......
......@@ -5,7 +5,7 @@
<div class="left_container">
<img src="@/assets/main/system_logo.png" alt="" class="system_logo" />
<!-- <img src="@/assets/system_logo.png" alt="" class="system_logo" @click="jumpPage('在线文档编制')"> -->
<div class="logo_title">数字化架构设计与管控微应用</div>
<div class="logo_title">数字化架构设计与管控支撑工具</div>
</div>
<div class="operate_menu">
<div class="operate_menu_item">
......@@ -27,11 +27,13 @@
<div class="menu_container">
<el-popover
placement="bottom"
width="420"
class="menu_item"
style="margin-right: 80px; cursor: pointer; position: relative"
v-model="visible1"
trigger="hover"
:width="item.width"
v-for="(item, index) in menuOptions"
:key="index"
ref="popoverRef"
>
<div slot="reference">
<img
......@@ -45,640 +47,38 @@
alt=""
/>
<span class="menu_title">架构全景大屏及智能驾驶舱</span>
<span class="menu_title">{{ item.name }}</span>
<p class="under_line"></p>
</div>
<div class="menu_1_container">
<div class="menu_1_item">
<div class="menu_1_item_title">
<img src="@/assets/main/2img.png" alt="" />
<span style="margin-left: 5px">架构全景智能大屏</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">XX网数字化项目建设分析</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">公司架构蓝图实现情况分析</span>
</div>
</div>
<img class="menu_1_item_line" src="@/assets/main/line.png" alt="" />
<div class="menu_1_item">
<div class="menu_1_item_title">
<img src="@/assets/main/2img.png" alt="" />
<span style="margin-left: 5px">智能驾驶舱</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">管理智能驾驶舱</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">业务智能驾驶舱</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">项目智能驾驶舱</span>
</div>
</div>
</div>
</el-popover>
<el-popover
placement="bottom"
width="440"
class="menu_item"
style="margin-right: 80px; cursor: pointer; position: relative"
v-model="visible2"
trigger="hover"
>
<div slot="reference">
<img
class="menu_icon"
src="@/assets/main/1icon_default.png"
alt=""
/>
<img
class="menu_icon_active"
src="@/assets/main/1icon_press.png"
alt=""
/>
<span class="menu_title">总体架构资产设计与维护</span>
<p class="under_line"></p>
</div>
<div class="menu_1_container">
<div class="menu_1_item">
<div class="menu_1_item_title">
<img src="@/assets/main/2img.png" alt="" />
<span style="margin-left: 5px">架构元模型管理</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'总体架构资产设计与维护',
'架构元模型管理',
'架构元素管理',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">架构元素管理</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'总体架构资产设计与维护',
'架构元模型管理',
'架构元素关系管理',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">架构元素关系管理</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'总体架构资产设计与维护',
'架构元模型管理',
'元模型管理',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">元模型管理</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'总体架构资产设计与维护',
'架构元模型管理',
'架构视图配置',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">架构视图配置</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'总体架构资产设计与维护',
'架构元模型管理',
'元模型字典管理',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">元模型字典管理</span>
</div>
</div>
<img class="menu_1_item_line" src="@/assets/main/line.png" alt="" />
<div class="menu_1_item">
<div class="menu_1_item_title">
<img src="@/assets/main/2img.png" alt="" />
<span style="margin-left: 5px">总体架构资产维护</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'总体架构资产设计与维护',
'总体架构资产维护',
'架构资产管理',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">架构资产管理</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'总体架构资产设计与维护',
'总体架构资产维护',
'架构视图管理',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">架构视图管理</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'总体架构资产设计与维护',
'总体架构资产维护',
'企业中台服务清单',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">企业中台服务清单</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'总体架构资产设计与维护',
'总体架构资产维护',
'现状架构资产管理',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">现状架构资产管理</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'总体架构资产设计与维护',
'总体架构资产维护',
'架构演进路线资产管理',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">架构演进路线资产管理</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'总体架构资产设计与维护',
'总体架构资产维护',
'总体架构资产可视化展示',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">总体架构资产可视化展示</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'总体架构资产设计与维护',
'总体架构资产维护',
'总体架构资产智能搜索',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">总体架构资产智能搜索</span>
</div>
</div>
</div>
</el-popover>
<el-popover
placement="bottom"
width="1100"
class="menu_item"
v-model="visible3"
style="margin-right: 80px; cursor: pointer; position: relative"
trigger="hover"
>
<div slot="reference">
<img
class="menu_icon"
src="@/assets/main/2icon_default.png"
alt=""
/>
<img
class="menu_icon_active"
src="@/assets/main/2icon_press.png"
alt=""
/>
<span class="menu_title">系统架构设计与管控</span>
<p class="under_line"></p>
</div>
<div class="menu_1_container">
<div class="menu_1_item">
<div class="menu_1_item_title">
<img src="@/assets/main/2img.png" alt="" />
<span style="margin-left: 5px">系统架构资产管理</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'系统架构设计与管控',
'系统架构图设计',
'系统信息管理',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">系统信息管理</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'系统架构设计与管控',
'系统架构图设计',
'项目信息管理',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">项目信息管理</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'系统架构设计与管控',
'系统架构图设计',
'系统架构资产维护',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">系统架构资产维护</span>
</div>
</div>
<img class="menu_1_item_line" src="@/assets/main/line.png" alt="" />
<div class="menu_1_item">
<div class="menu_1_item_title">
<img src="@/assets/main/2img.png" alt="" />
<span style="margin-left: 5px">系统架构设计</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'系统架构设计与管控',
'系统架构设计',
'系统架构视图设计',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">系统架构视图设计</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'系统架构设计与管控',
'系统架构设计',
'概设阶段架构设计',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">概设阶段架构设计</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage('系统架构设计与管控', '系统架构设计', '其他视图设计')
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">其他视图设计</span>
</div>
</div>
<img class="menu_1_item_line" src="@/assets/main/line.png" alt="" />
<div class="menu_1_item">
<div class="menu_1_item_title">
<img src="@/assets/main/2img.png" alt="" />
<span style="margin-left: 5px">系统架构管控要求</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'系统架构设计与管控',
'系统架构管控要求',
'评审情况(概要设计)',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">评审情况(概要设计)</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'系统架构设计与管控',
'系统架构管控要求',
'概设架构遵从检查',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">概设架构遵从检查</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage(
'系统架构设计与管控',
'系统架构管控要求',
'概设架构政策审查',
)
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">概设架构政策审查</span>
</div>
</div>
<img class="menu_1_item_line" src="@/assets/main/line.png" alt="" />
<div class="menu_1_item">
<div class="menu_1_item_title">
<img src="@/assets/main/2img.png" alt="" />
<span style="margin-left: 5px">概要设计评审</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage('系统架构设计与管控', '概要设计评审', '批次计划管理')
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">批次计划管理</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">需求管理</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage('系统架构设计与管控', '概要设计评审', '概设材料审查')
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">概设材料审查</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">概设材料意见编制</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">概设关联业务管理</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">概设评审基础管理</span>
</div>
</div>
<img class="menu_1_item_line" src="@/assets/main/line.png" alt="" />
<div class="menu_1_item">
<div class="menu_1_item_title">
<img src="@/assets/main/2img.png" alt="" />
<span style="margin-left: 5px">架构督查</span>
</div>
<div
class="menu_1_item flex"
v-for="(item2, index2) in item.children"
:key="index2"
>
<div class="flex-column">
<div class="menu_1_item_title">
<img src="@/assets/main/2img.png" alt="" />
<span style="margin-left: 5px">{{ item2.name }}</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">收集资料配置</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">督查材料收集</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">架构督查分析</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">督查通报管理</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">督查问颗整改</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">架构遵从检查</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">技术政策审查</span>
</div>
</div>
</div>
</el-popover>
<el-popover
placement="bottom"
width="220"
class="menu_item"
style="margin-right: 80px; cursor: pointer; position: relative"
v-model="visible4"
trigger="hover"
>
<div slot="reference">
<img
class="menu_icon"
src="@/assets/main/4icon_default.png"
alt=""
/>
<img
class="menu_icon_active"
src="@/assets/main/4icon_press.png"
alt=""
/>
<span class="menu_title">架构资产服务与辅助分析</span>
<p class="under_line"></p>
</div>
<div class="menu_1_container">
<div class="menu_1_item">
<div class="menu_1_item_title">
<img src="@/assets/main/2img.png" alt="" />
<span style="margin-left: 5px">架构资产服务与辅助分析</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">架构遵从符合度检查</span>
</div>
<div class="menu_1_item_subtitle">
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">技术政策符合度检查</span>
</div>
</div>
</div>
</el-popover>
<el-popover
placement="bottom"
width="700"
v-model="visible5"
class="menu_item"
style="cursor: pointer; position: relative"
trigger="hover"
>
<div slot="reference">
<img
class="menu_icon"
src="@/assets/main/5icon_default.png"
alt=""
/>
<img
class="menu_icon_active"
src="@/assets/main/5icon_press.png"
alt=""
/>
<span class="menu_title">架构知识库</span>
<p class="under_line"></p>
</div>
<div class="menu_1_container">
<div class="menu_1_item">
<div class="menu_1_item_title">
<img src="@/assets/main/2img.png" alt="" />
<span style="margin-left: 5px">专家人才库</span>
</div>
<div
class="menu_1_item_subtitle"
@click="jumpPage('架构知识库', '专家人才库', '专家人才库管理')"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">专家人才库管理</span>
</div>
</div>
<img class="menu_1_item_line" src="@/assets/main/line.png" alt="" />
<div class="menu_1_item">
<div class="menu_1_item_title">
<img src="@/assets/main/2img.png" alt="" />
<span style="margin-left: 5px">技术政策库</span>
</div>
<div
class="menu_1_item_subtitle"
@click="jumpPage('架构知识库', '技术政策库', '技术政策结构化')"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">技术政策结构化</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage('架构知识库', '技术政策库', '技术政策库关联使用')
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">技术政策库关联使用</span>
</div>
</div>
<img class="menu_1_item_line" src="@/assets/main/line.png" alt="" />
<div class="menu_1_item">
<div class="menu_1_item_title">
<img src="@/assets/main/2img.png" alt="" />
<span style="margin-left: 5px">报告模板库</span>
</div>
<div
class="menu_1_item_subtitle"
@click="jumpPage('架构知识库', '报告模板库', '报告模板结构化')"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">报告模板结构化</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage('架构知识库', '报告模板库', '报告模板关联使用')
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">报告模板关联使用</span>
</div>
</div>
<img class="menu_1_item_line" src="@/assets/main/line.png" alt="" />
<div class="menu_1_item">
<div class="menu_1_item_title">
<img src="@/assets/main/2img.png" alt="" />
<span style="margin-left: 5px">典型案例库</span>
</div>
<div
class="menu_1_item_subtitle"
@click="jumpPage('架构知识库', '典型案例库', '典型案例库管理')"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">典型案例库管理</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage('架构知识库', '典型案例库', '典型案例库关联使用')
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">典型案例库关联使用</span>
</div>
<div
class="menu_1_item_subtitle"
@click="
jumpPage('架构知识库', '典型案例库', '总体架构资产文档库')
"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">总体架构资产文档库</span>
</div>
<div
class="menu_1_item_subtitle"
@click="jumpPage(item3.path, index)"
v-for="(item3, index3) in item2.children"
:key="index3"
>
<img src="@/assets/main/3img.png" alt="" />
<span style="margin-left: 5px">{{ item3.name }}</span>
</div>
</div>
<img
v-show="index2 < item.children.length - 1"
:key="index2"
class="menu_1_item_line m-l-40"
src="@/assets/main/line.png"
alt=""
/>
</div>
</div>
</el-popover>
......@@ -687,6 +87,18 @@
<el-breadcrumb-item>{{ breadcrumb1 }}</el-breadcrumb-item>
<el-breadcrumb-item>{{ breadcrumb2 }}</el-breadcrumb-item>
<el-breadcrumb-item>{{ breadcrumb3 }}</el-breadcrumb-item>
<!-- <el-breadcrumb-item
v-for="(item, index) in breadcrumbList"
:key="item.path"
class="flex"
>
<div
class="el-breadcrumb__inner is-link"
@click="onBreadcrumbClick(item, index)"
>
<span class="breadcrumb-title">{{ item.name }}</span>
</div>
</el-breadcrumb-item> -->
</el-breadcrumb>
</div>
<div class="left_menu_and_drawio_container">
......@@ -699,7 +111,7 @@
</template>
<script>
import $ from 'jquery'
import { menuOptions } from './menu'
export default {
components: {},
data() {
......@@ -712,6 +124,7 @@ export default {
breadcrumb1: '总体架构资产设计与维护',
breadcrumb2: '架构元模型管理',
breadcrumb3: '架构元素管理',
menuOptions: menuOptions,
}
},
mounted() {
......@@ -729,282 +142,295 @@ export default {
$(this).find('.under_line').css('display', 'none')
},
)
},
computed: {
breadcrumbList() {
return (
this.$store.getters.breadcrumbListGet[
this.$route.matched[this.$route.matched.length - 1].path
] || []
)
},
},
methods: {
onBreadcrumbClick(item, index) {
if (index !== this.breadcrumbList.length - 1) this.$router.push(item.path)
},
openDrawIO() {
// window.open(window.location.origin + '/drawio/index.html?id=23', '_self');//编辑
// window.open(window.location.origin + '/drawio/index.html', '_self');//新增
},
jumpPage(breadcrumb1_, breadcrumb2_, breadcrumb3_) {
jumpPage(path, popoverIndex) {
this.breadcrumb1 = breadcrumb1_
this.breadcrumb2 = breadcrumb2_
this.breadcrumb3 = breadcrumb3_
this.$router.push(path)
this.$refs.popoverRef[popoverIndex].doClose()
// switch (breadcrumb3_) {
// case '架构元素管理':
// this.$router.push(
// '/main/archiEleList',
// () => {},
// () => {},
// )
// this.visible2 = false
// break
// case '架构元素关系管理':
// this.$router.push(
// '/main/archi-ele-rela',
// () => {},
// () => {},
// )
// this.visible2 = false
// break
// case '架构视图配置':
// this.$router.push(
// '/main/archi-view-config',
// () => {},
// () => {},
// )
// this.visible2 = false
// break
// case '元模型字典管理':
// this.$router.push(
// '/main/meta-model-dic',
// () => {},
// () => {},
// )
// this.visible2 = false
// break
// case '元模型管理':
// this.$router.push(
// '/main/metaModelList',
// () => {},
// () => {},
// )
// this.visible2 = false
// break
// case '架构资产管理':
// this.$router.push(
// '/main/busiAssetslist',
// () => {},
// () => {},
// )
// this.visible2 = false
// break
// case '架构视图管理':
// this.$router.push(
// '/main/archiViewManage',
// () => {},
// () => {},
// )
// this.visible2 = false
// break
// case '企业中台服务清单':
// this.$router.push(
// '/main/comCenterServeList',
// () => {},
// () => {},
// )
// this.visible2 = false
// break
// case '现状架构资产管理':
// this.$router.push(
// '/main/currentAssetsList',
// () => {},
// () => {},
// )
// this.visible2 = false
// break
// case '架构演进路线资产管理':
// this.$router.push(
// '/main/archiEvoluteLine',
// () => {},
// () => {},
// )
// this.visible2 = false
// break
// case '总体架构资产可视化展示':
// this.$router.push(
// '/main/archiAssetVisualShow',
// () => {},
// () => {},
// )
// this.visible2 = false
// break
// case '总体架构资产智能搜索':
// this.$router.push(
// '/main/archiIntelligenceSearch',
// () => {},
// () => {},
// )
// this.visible2 = false
// break
// case '在线文档编制':
// this.$router.push(
// '/main/doc-demo',
// () => {},
// () => {},
// )
// break
// case '系统信息管理':
// this.$router.push(
// '/main/systemInfoManage',
// () => {},
// () => {},
// )
// this.visible3 = false
// break
// case '项目信息管理':
// this.$router.push(
// '/main/projectInfoManage',
// () => {},
// () => {},
// )
// this.visible3 = false
// break
// case '系统架构资产维护':
// this.$router.push(
// '/main/archiAssetManage',
// () => {},
// () => {},
// )
// this.visible3 = false
// break
// case '系统架构视图设计':
// this.$router.push(
// '/main/systemArchiViewDesign',
// () => {},
// () => {},
// )
// this.visible3 = false
// break
switch (breadcrumb3_) {
case '架构元素管理':
this.$router.push(
'/main/archiEleList',
() => {},
() => {},
)
this.visible2 = false
break
case '架构元素关系管理':
this.$router.push(
'/main/archi-ele-rela',
() => {},
() => {},
)
this.visible2 = false
break
case '架构视图配置':
this.$router.push(
'/main/archi-view-config',
() => {},
() => {},
)
this.visible2 = false
break
case '元模型字典管理':
this.$router.push(
'/main/meta-model-dic',
() => {},
() => {},
)
this.visible2 = false
break
case '元模型管理':
this.$router.push(
'/main/metaModelList',
() => {},
() => {},
)
this.visible2 = false
break
case '架构资产管理':
this.$router.push(
'/main/busiAssetslist',
() => {},
() => {},
)
this.visible2 = false
break
case '架构视图管理':
this.$router.push(
'/main/archiViewManage',
() => {},
() => {},
)
this.visible2 = false
break
case '企业中台服务清单':
this.$router.push(
'/main/comCenterServeList',
() => {},
() => {},
)
this.visible2 = false
break
case '现状架构资产管理':
this.$router.push(
'/main/currentAssetsList',
() => {},
() => {},
)
this.visible2 = false
break
case '架构演进路线资产管理':
this.$router.push(
'/main/archiEvoluteLine',
() => {},
() => {},
)
this.visible2 = false
break
case '总体架构资产可视化展示':
this.$router.push(
'/main/archiAssetVisualShow',
() => {},
() => {},
)
this.visible2 = false
break
case '总体架构资产智能搜索':
this.$router.push(
'/main/archiIntelligenceSearch',
() => {},
() => {},
)
this.visible2 = false
break
case '在线文档编制':
this.$router.push(
'/main/doc-demo',
() => {},
() => {},
)
break
case '系统信息管理':
this.$router.push(
'/main/systemInfoManage',
() => {},
() => {},
)
this.visible3 = false
break
case '项目信息管理':
this.$router.push(
'/main/projectInfoManage',
() => {},
() => {},
)
this.visible3 = false
break
case '系统架构资产维护':
this.$router.push(
'/main/archiAssetManage',
() => {},
() => {},
)
this.visible3 = false
break
case '系统架构视图设计':
this.$router.push(
'/main/systemArchiViewDesign',
() => {},
() => {},
)
this.visible3 = false
break
case '概设阶段架构设计':
this.$router.push(
'/main/summaryArchiDesign',
() => {},
() => {},
)
this.visible3 = false
break
case '其他视图设计':
this.$router.push(
'/main/otherArchiDesign',
() => {},
() => {},
)
this.visible3 = false
break
case '评审情况(概要设计)':
this.$router.push(
'/main/reviewSituation',
() => {},
() => {},
)
this.visible3 = false
break
case '概设架构遵从检查':
this.$router.push(
'/main/reviewArchiFollowCheck',
() => {},
() => {},
)
this.visible3 = false
break
case '概设架构政策审查':
this.$router.push(
'/main/reviewArchiPoliticeCheck',
() => {},
() => {},
)
this.visible3 = false
break
case '技术政策结构化':
this.$router.push(
'/main/techPoliticsFabric',
() => {},
() => {},
)
this.visible5 = false
break
case '技术政策库关联使用':
this.$router.push(
'/main/techPoliticsRelativeUse',
() => {},
() => {},
)
this.visible5 = false
break
case '报告模板结构化':
this.$router.push(
'/main/reportTemplateFabric',
() => {},
() => {},
)
this.visible5 = false
break
case '典型案例库管理':
this.$router.push(
'/main/typicalExampleManage',
() => {},
() => {},
)
this.visible5 = false
break
case '典型案例库关联使用':
this.$router.push(
'/main/typicalExampleRelativeUse',
() => {},
() => {},
)
this.visible5 = false
break
case '总体架构资产文档库':
this.$router.push(
'/main/totalArchiPropertyDocument',
() => {},
() => {},
)
this.visible5 = false
break
case '专家人才库管理':
this.$router.push(
'/main/etp-Manage',
() => {},
() => {},
)
this.visible5 = false
break
case '报告模板关联使用':
this.$router.push(
'/main/reportTemplateRelativeUse',
() => {},
() => {},
)
this.visible5 = false
break
case '批次计划管理':
this.$router.push(
'/main/batchPlanManagement',
() => {},
() => {},
)
this.visible5 = false
break
case '概设材料审查':
this.$router.push(
'/main/conceptualReview',
() => {},
() => {},
)
this.visible5 = false
break
}
// case '概设阶段架构设计':
// this.$router.push(
// '/main/summaryArchiDesign',
// () => {},
// () => {},
// )
// this.visible3 = false
// break
// case '其他视图设计':
// this.$router.push(
// '/main/otherArchiDesign',
// () => {},
// () => {},
// )
// this.visible3 = false
// break
// case '评审情况(概要设计)':
// this.$router.push(
// '/main/reviewSituation',
// () => {},
// () => {},
// )
// this.visible3 = false
// break
// case '概设架构遵从检查':
// this.$router.push(
// '/main/reviewArchiFollowCheck',
// () => {},
// () => {},
// )
// this.visible3 = false
// break
// case '概设架构政策审查':
// this.$router.push(
// '/main/reviewArchiPoliticeCheck',
// () => {},
// () => {},
// )
// this.visible3 = false
// break
// case '技术政策结构化':
// this.$router.push(
// '/main/techPoliticsFabric',
// () => {},
// () => {},
// )
// this.visible5 = false
// break
// case '技术政策库关联使用':
// this.$router.push(
// '/main/techPoliticsRelativeUse',
// () => {},
// () => {},
// )
// this.visible5 = false
// break
// case '报告模板结构化':
// this.$router.push(
// '/main/reportTemplateFabric',
// () => {},
// () => {},
// )
// this.visible5 = false
// break
// case '典型案例库管理':
// this.$router.push(
// '/main/typicalExampleManage',
// () => {},
// () => {},
// )
// this.visible5 = false
// break
// case '典型案例库关联使用':
// this.$router.push(
// '/main/typicalExampleRelativeUse',
// () => {},
// () => {},
// )
// this.visible5 = false
// break
// case '总体架构资产文档库':
// this.$router.push(
// '/main/totalArchiPropertyDocument',
// () => {},
// () => {},
// )
// this.visible5 = false
// break
// case '专家人才库管理':
// this.$router.push(
// '/main/etp-Manage',
// () => {},
// () => {},
// )
// this.visible5 = false
// break
// case '报告模板关联使用':
// this.$router.push(
// '/main/reportTemplateRelativeUse',
// () => {},
// () => {},
// )
// this.visible5 = false
// break
// case '批次计划管理':
// this.$router.push(
// '/main/batchPlanManagement',
// () => {},
// () => {},
// )
// this.visible5 = false
// break
// case '概设材料审查':
// this.$router.push(
// '/main/conceptualReview',
// () => {},
// () => {},
// )
// this.visible5 = false
// break
// }
},
},
}
</script>
<style scoped>
<style lang="scss" scoped>
@import '@/styles/common.scss';
.main {
height: 100%;
}
......@@ -1055,7 +481,7 @@ export default {
font-size: 14px;
font-weight: 500;
display: flex;
background-color: rgb(255, 255, 255, 0.2);
background-color: rgba(255, 255, 255, 0.2);
border-radius: 19px 19px 19px 19px;
margin-right: 24px;
justify-content: space-around;
......
export const menuOptions = [
{
name: '架构全景大屏及智能驾驶舱',
width: '420',
children: [
{
name: '架构全景智能大屏',
children: [
{
name: 'XX网数字化项目建设分析',
path: '',
},
{
name: '公司架构蓝图实现情况分析',
path: '',
},
],
},
{
name: '智能驾驶舱',
children: [
{
name: '管理智能驾驶舱',
path: '',
},
{
name: '业务智能驾驶舱',
path: '',
},
{
name: '项目智能驾驶舱',
path: '',
},
],
},
],
},
{
name: '总体架构资产设计与维护',
width: '440',
children: [
{
name: '架构元模型管理',
children: [
{
name: '架构元素管理',
path: '/main/archiEleList',
},
{
name: '架构元素关系管理',
path: '/main/archi-ele-rela',
},
{
name: '元模型管理',
path: '/main/metaModelList',
},
{
name: '架构视图配置',
path: '/main/archi-view-config',
},
{
name: '元模型字典管理',
path: '/main/meta-model-dic',
},
],
},
{
name: '总体架构资产维护',
children: [
{
name: '架构资产管理',
path: '',
},
{
name: '架构视图管理',
path: '/main/archiViewManage',
},
{
name: '企业中台服务清单',
path: '/main/comCenterServeList',
},
{
name: '现状架构资产管理',
path: '/main/currentAssetsList',
},
{
name: '架构演进路线资产管理',
path: '/main/archiEvoluteLine',
},
{
name: '总体架构资产可视化展示',
path: '/main/archiAssetVisualShow',
},
{
name: '总体架构资产智能搜索',
path: '/main/archiIntelligenceSearch',
},
],
},
],
},
{
name: '系统架构设计与管控',
width: '1100',
children: [
{
name: '系统架构资产管理',
children: [
{
name: '系统信息管理',
path: '/main/systemInfoManage',
},
{
name: '项目信息管理',
path: '/main/projectInfoManage',
},
{
name: '系统架构资产维护',
path: '/main/archiAssetManage',
},
],
},
{
name: '系统架构设计',
children: [
{
name: '系统架构视图设计',
path: '/main/systemArchiViewDesign',
},
{
name: '概设阶段架构设计',
path: '/main/summaryArchiDesign',
},
{
name: '其他视图设计',
path: '/main/otherArchiDesign',
},
],
},
{
name: '系统架构管控要求',
children: [
{
name: '评审情况(概要设计)',
path: '/main/reviewSituation',
},
{
name: '概设架构遵从检查',
path: '/main/reviewArchiFollowCheck',
},
{
name: '概设架构政策审查',
path: '/main/reviewArchiPoliticeCheck',
},
],
},
{
name: '概要设计评审',
children: [
{
name: '批次计划管理',
path: '/main/batchPlanManagement',
},
{
name: '需求管理',
path: '/main/demandManagement',
},
{
name: '概设材料审查',
path: '/main/conceptualReview',
children: [
{
name: '审查',
path: '/main/conceptualExamine',
},
],
},
{
name: '概设材料意见编制',
path: '/main/conceptualViewOrg',
},
{
name: '概设关联业务管理',
path: '',
},
{
name: '概设评审基础管理',
path: '/main/conceptualBaseManagement',
},
],
},
{
name: '架构督查',
children: [
{
name: '收集资料配置',
path: '',
},
{
name: '督查材料收集',
path: '',
},
{
name: '架构督查分析',
path: '',
},
{
name: '督查通报管理',
path: '',
},
{
name: '督查问颗整改',
path: '',
},
{
name: '架构遵从检查',
path: '',
},
{
name: '技术政策审查',
path: '',
},
],
},
],
},
{
name: '架构资产服务与辅助分析',
width: '220',
children: [
{
name: '架构资产服务与辅助分析',
children: [
{
name: '架构遵从符合度检查',
path: '',
},
{
name: '技术政策符合度检查',
path: '',
},
],
},
],
},
{
name: '架构知识库',
width: '700',
children: [
{
name: '专家人才库',
children: [
{
name: '专家人才库管理',
path: '/main/etp-Manage',
},
],
},
{
name: '技术政策库',
children: [
{
name: '技术政策结构化',
path: '/main/techPoliticsFabric',
},
{
name: '技术政策库关联使用',
path: '/main/techPoliticsRelativeUse',
},
],
},
{
name: '报告模板库',
children: [
{
name: '报告模板结构化',
path: '/main/reportTemplateFabric',
},
{
name: '报告模板关联使用',
path: '/main/reportTemplateRelativeUse',
},
],
},
{
name: '典型案例库',
children: [
{
name: '典型案例库管理',
path: '/main/typicalExampleManage',
},
{
name: '典型案例库关联使用',
path: '/main/typicalExampleRelativeUse',
},
{
name: '总体架构资产文档库',
path: '/main/totalArchiPropertyDocument',
},
],
},
],
},
]
......@@ -216,7 +216,6 @@ export default {
...row,
state: 2,
}
console.log(params)
editBatchPlan(params).then((res) => {
if (res.code === 200) {
this.$message.success('提交成功')
......
<template>
<div class="searchTable">
<list-page>
<template #tabWrap>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane
:label="item.label"
:name="item.name"
v-for="item in tabOptions"
:key="item.name"
>
</el-tab-pane>
</el-tabs>
</template>
<!-- 查询表单插槽 -->
<template #formWrap>
<SearchForm @onSearch="querySearch" :form-options="formOptions" />
</template>
<!-- 中部操作按钮 -->
<template #operationWrap>
<template>
<el-button
type="primary"
icon="el-icon-document-add"
size="medium"
plain
>新建</el-button
>
<el-button
type="primary"
icon="el-icon-download"
size="medium"
plain
v-if="activeName === '1'"
>导出</el-button
>
</template>
</template>
<!-- 表格插槽 -->
<template #tableWrap>
<table-config
ref="searchTable"
@selection-change="selectionChange"
:query="query"
:columns="columns"
:key="activeName"
>
<template #filesValue="{ data }">
<span>{{ handleFileName(data) }}</span>
</template>
</table-config>
</template>
</list-page>
</div>
</template>
<script>
import ListPage from '@/components/ListPage.vue'
import SearchForm from '@/components/SearchForm.vue'
import TableConfig from '@/components/TableConfig.vue'
import { queryDemandManagement } from '@/api/interface'
import { editNeedInfo } from '@/api'
import { buildType, approvalStatusOptions } from '@/utils/dictionary'
export default {
name: 'conceptualBaseManagement',
data() {
return {
query: {
url: queryDemandManagement,
method: 'post',
queryParam: {},
},
activeName: '1',
tabOptions: [
{ label: '组织机构管理', name: '1' },
{ label: '集成管理', name: '2' },
],
selectRows: {},
visible: false,
rowData: {},
dialogTitle: '',
approvalVisible: false,
}
},
components: { ListPage, SearchForm, TableConfig },
computed: {
formOptions() {
let arr = []
if (this.activeName === '1') {
arr = [
{
label: '机构名称', // label文字
prop: 'orgName', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
},
{
label: '主体类型', // label文字
prop: 'type', // 字段名
element: 'el-select', // 指定elementui组件
placeholder: '请选择', // elementui组件属性
},
]
} else {
arr = [
{
label: '事项名称', // label文字
prop: 'orgName', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
},
{
label: '状态', // label文字
prop: 'type', // 字段名
element: 'el-select', // 指定elementui组件
placeholder: '请选择', // elementui组件属性
},
]
}
return arr
},
columns() {
let arr = [
{ type: 'selection', width: '55px' },
{ label: '序号', type: 'index', width: '80px' },
]
if (this.activeName === '1') {
arr = [
...arr,
{
label: '机构名称',
prop: 'orgName',
width: '300px',
},
{
label: '主体类型',
prop: 'createTime',
},
{
label: '上级单位',
// width: '120px',
prop: 'state2',
},
]
} else {
arr = [
...arr,
{
label: '事项名称',
prop: 'orgName',
width: '200px',
},
{
label: '创建人',
prop: 'createMan',
},
{
label: '创建时间',
prop: 'createTime',
},
{
label: '事项描述',
prop: 'des',
},
{
label: '状态',
prop: 'state',
},
]
}
arr = [
...arr,
{
label: '备注',
prop: 'remark',
},
{
label: '操作',
type: 'operation',
width: '200px',
actionButtons: [
{
title: '编辑',
type: 'primary',
size: 'mini',
plain: true,
icon: 'el-icon-edit',
},
{
title: '删除',
type: 'danger',
size: 'mini',
plain: true,
icon: 'el-icon-delete',
},
],
callback: (row, title) => {
// this.fnOperation(row, title)
},
},
]
return arr
},
},
mounted() {},
methods: {
fnAdd() {
this.dialogTitle = '新增需求'
this.rowData = {}
this.visible = true
},
// 处理所需材料名称显示
handleFileName(scope) {
const filesValue = JSON.parse(scope.row.filesValue)
const str = filesValue.map((v) => v.name)
return str.join(',')
},
// 表格勾选的数据
selectionChange(data) {
this.selectRows = data
},
querySearch(data) {
this.query.queryParam = {
...this.query.queryParam,
...data,
}
this.$refs.searchTable.queryData()
},
handleClick(tab, event) {
// console.log(tab, event)
},
/**
* @description: 操作按钮
* @param {Object} row 当前操作行数据
* @param {String} title 当前操作按钮名称
* @author: pan
*/
fnOperation(row, title) {
switch (title) {
case '编辑':
this.fnEdit(row)
break
case '删除':
this.fnDel(row)
break
case '提交':
this.fnSubmit(row)
break
case '审批':
this.fnApproval(row)
break
case '发布':
this.fnRelease(row)
default:
break
}
},
fnRelease(row) {
this.$confirm('是否确认发布?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
const params = {
...row,
state: 1,
filesValue: JSON.parse(row.filesValue),
}
editNeedInfo(params).then((res) => {
if (res.code === 200) {
this.$message.success('发布成功')
this.$refs.searchTable.queryData()
} else {
this.$message.error(res.msg)
}
})
})
.catch(() => {})
},
fnApproval(row) {
this.rowData = row
this.approvalVisible = true
},
fnSubmit(row) {
this.$confirm('是否确认提交?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
const params = {
...row,
approveState: 2,
filesValue: JSON.parse(row.filesValue),
}
editNeedInfo(params).then((res) => {
if (res.code === 200) {
this.$message.success('提交成功')
this.$refs.searchTable.queryData()
} else {
this.$message.error(res.msg)
}
})
})
.catch(() => {})
},
fnEdit(row) {
this.dialogTitle = '修改需求'
this.rowData = row
this.visible = true
},
fnDel(row) {
this.$confirm('是否确认删除?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
const params = {
...row,
filesValue: JSON.parse(row.filesValue),
delFlag: 1,
}
editNeedInfo(params).then((res) => {
if (res.code === 200) {
this.$message.success('删除成功')
this.$refs.searchTable.queryData()
} else {
this.$message.error('删除失败')
}
})
})
.catch(() => {})
},
},
}
</script>
<style scoped lang="scss">
@import '@/styles/common.scss';
</style>
......@@ -40,6 +40,7 @@
type="primary"
size="medium"
plain
@click="fnMaterialAnalysis()"
>材料解析</el-button
>
<template v-if="activeName === '2'">
......@@ -103,7 +104,7 @@
</template>
<script>
import { getWordImg } from '@/api/index'
// import { getWordImg } from '@/api/index'
import ListPage from '@/components/ListPage.vue'
import SearchForm from '@/components/SearchForm.vue'
import TableConfig from '@/components/TableConfig.vue'
......@@ -154,7 +155,11 @@ export default {
'备注',
'备注',
],
activeSubTabItem: { label: '报告规范性', name: '1' },
activeSubTabItem: {
label: '报告规范性',
value: 'REPORT_NORM',
name: '1',
},
leftContentTypeOptions: ['word', 'img', 'word', 'word', 'word'],
rightContentTypeOptions: ['word', 'img', 'img', 'table', 'word'],
}
......@@ -173,28 +178,28 @@ export default {
type: 'year',
valueFormat: 'yyyy',
element: 'el-date-picker', // 指定elementui组件
initValue: '', // 字段初始值
initValue: undefined, // 字段初始值
placeholder: '请选择', // elementui组件属性
},
{
label: '批次计划', // label文字
prop: 'batName', // 字段名
element: 'el-input', // 指定elementui组件
initValue: '', // 字段初始值
initValue: undefined, // 字段初始值
placeholder: '请输入内容', // elementui组件属性
},
{
label: '需求名称', // label文字
prop: 'needName', // 字段名
element: 'el-input', // 指定elementui组件
initValue: '', // 字段初始值
initValue: undefined, // 字段初始值
placeholder: '请输入内容', // elementui组件属性
},
{
label: '建设类型', // label文字
prop: 'needType', // 字段名
element: 'el-select', // 指定elementui组件
initValue: '', // 字段初始值
initValue: undefined, // 字段初始值
placeholder: '请选择', // elementui组件属性
dictType: 'build_type',
},
......@@ -202,7 +207,7 @@ export default {
label: '项目名称', // label文字
prop: 'prjName', // 字段名
element: 'el-input', // 指定elementui组件
initValue: '', // 字段初始值
initValue: undefined, // 字段初始值
placeholder: '请输入内容', // elementui组件属性
},
]
......@@ -276,7 +281,7 @@ export default {
...arr,
{
label: '合规性检查',
prop: 'remark',
prop: 'reviewSuggestion',
width: '220px',
},
]
......@@ -286,7 +291,7 @@ export default {
...arr,
{
label: '备注',
prop: 'remark',
prop: 'reviewSuggestion',
width: '220px',
},
]
......@@ -324,26 +329,15 @@ export default {
return false
},
},
mounted() {
const params = {
// needId: 0,
// prjId: 0,
// reviewEnum: '',
}
// this.src = 'data:image/png;base64,' + str
// getWordImg(params).then((res) => {
// // this.src = this.decrypt(
// // 'data:image/png;base64,' + res.data.docParserList[0].tableByte,
// // )
// this.src = res.data.docParserList[0].tableByte
// // return
// // this.src = 'data:image/png;base64,' + res.data.docParserList[0].docContent
// // const blob = base64ToBlob(res.data.docParserList[0].tableByte)
// // this.src = URL.createObjectURL(blob)
// })
},
mounted() {},
methods: {
// 材料解析
fnMaterialAnalysis() {
if (this.selectRows.length == 0) {
return this.$message.warning('请选择一条数据')
}
// xxx
},
// 导出重复建设风险报告
handlExportRiskReport() {
const params = {
......@@ -399,6 +393,9 @@ export default {
},
handleClick(tab, event) {
// console.log(tab, event)
// this.activeSubTabItem = tab
this.query.queryParam.reviewEnum = this.getArchiPrjReviewEnum()
this.$refs.searchTable.queryData()
},
handleSubClick(tab, event) {
// console.log(tab, event)
......
<template>
<el-dialog
:title="title"
:visible.sync="showDialog"
:close-on-click-modal="false"
width="60%"
@close="handleClose()"
>
<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 { addBatchPlan, editBatchPlan } 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: 'batName', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
},
{
label: '修改完成时间', // label文字
prop: 'createTime', // 字段名
type: 'date',
valueFormat: 'yyyy-MM-dd',
element: 'el-date-picker', // 指定elementui组件
placeholder: '请选择', // elementui组件属性
rules: [{ required: true, trigger: 'change', message: '不能为空' }],
},
{
label: '推送至', // label文字
prop: 'remark', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
},
]
},
showDialog: {
get() {
return this.visible
},
set(value) {
this.$emit('update:visible', value)
},
},
},
mounted() {},
methods: {
handleSubmit() {
this.$refs['addForm'].onValidate(() => {
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
const formInfo = this.$refs['addForm'].getData()
const typeApi = this.isEdit ? editBatchPlan : addBatchPlan
const params = {
...this.rowData,
...formInfo,
state: 1,
}
typeApi(params).then((res) => {
if (res.code === 200) {
loading.close()
this.$message.success('保存成功')
this.showDialog = false
this.handleClose()
this.$emit('querySearch')
}
})
})
},
handleClose() {
this.showDialog = false
this.formOptions.forEach((v) => {
v.initValue = ''
})
this.$refs['addForm'].addInitValue()
this.$refs['addForm'].onReset()
},
},
}
</script>
<style scoped lang="scss">
@import '@/styles/elementui.scss';
</style>
<template>
<div class="searchTable">
<list-page>
<template #tabWrap>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane
:label="item.label"
:name="item.name"
v-for="item in tabOptions"
:key="item.name"
>
</el-tab-pane>
</el-tabs>
</template>
<!-- 查询表单插槽 -->
<template #formWrap>
<SearchForm @onSearch="querySearch" :form-options="formOptions" />
</template>
<!-- 中部操作按钮 -->
<template #operationWrap>
<template v-if="activeName === '1'">
<el-button type="primary" size="medium" plain @click="fnAdd()"
>材料推送</el-button
>
<el-button type="primary" size="medium" plain @click="fnAdd()"
>修改材料反馈</el-button
>
<el-button type="primary" size="medium" plain @click="fnAdd()"
>在线辅助审查</el-button
>
</template>
<template v-else>
<el-button type="primary" size="medium" plain>正式评审意见</el-button>
<el-button type="primary" size="medium" plain>发送评审意见</el-button>
</template>
</template>
<!-- 表格插槽 -->
<template #tableWrap>
<table-config
ref="searchTable"
@selection-change="selectionChange"
:query="query"
:columns="columns"
:key="activeName"
>
<template #filesValue="{ data }">
<span>{{ handleFileName(data) }}</span>
</template>
</table-config>
</template>
</list-page>
</div>
</template>
<script>
import ListPage from '@/components/ListPage.vue'
import SearchForm from '@/components/SearchForm.vue'
import TableConfig from '@/components/TableConfig.vue'
import { queryDemandManagement } from '@/api/interface'
import { editNeedInfo } from '@/api'
import { buildType, approvalStatusOptions } from '@/utils/dictionary'
export default {
name: 'conceptualViewOrg',
data() {
return {
query: {
url: queryDemandManagement,
method: 'post',
queryParam: {},
},
activeName: '1',
tabOptions: [
{ label: '概设材料修改', name: '1' },
{ label: '意见生成与流转', name: '2' },
],
selectRows: {},
visible: false,
rowData: {},
dialogTitle: '',
approvalVisible: false,
}
},
components: { ListPage, SearchForm, TableConfig },
computed: {
formOptions() {
let arr = [
{
label: '项目名称', // label文字
prop: 'batName', // 字段名
element: 'el-input', // 指定elementui组件
initValue: '', // 字段初始值
placeholder: '请输入内容', // elementui组件属性
},
{
label: '需求名称', // label文字
prop: 'needName', // 字段名
element: 'el-input', // 指定elementui组件
initValue: '', // 字段初始值
placeholder: '请输入内容', // elementui组件属性
},
{
label: '年度', // label文字
prop: 'year', // 字段名
type: 'year',
valueFormat: 'yyyy',
element: 'el-date-picker', // 指定elementui组件
initValue: '', // 字段初始值
placeholder: '请选择', // elementui组件属性
},
{
label: '批次计划', // label文字
prop: 'batName', // 字段名
element: 'el-input', // 指定elementui组件
initValue: '', // 字段初始值
placeholder: '请输入内容', // elementui组件属性
},
{
label: '创建时间', // label文字
prop: 'createTime', // 字段名
type: 'date',
valueFormat: 'yyyy-MM-dd',
element: 'el-date-picker', // 指定elementui组件
initValue: '', // 字段初始值
placeholder: '请选择', // elementui组件属性
},
]
return arr
},
columns() {
let arr = [
{ type: 'selection', width: '55px' },
{ label: '序号', type: 'index', width: '80px' },
{ label: '年度', prop: 'year' },
{ label: '批次名称', prop: 'batName', width: '200px' },
{
label: '需求名称',
width: '300px',
prop: 'needName',
},
{
label: '项目名称',
prop: 'prjName',
width: '320px',
},
{
label: '关联机构',
width: '200px',
prop: 'orgName',
},
{
label: '材料',
width: '200px',
prop: 'filesValue',
__slotName: 'filesValue',
},
]
if (this.activeName === '1') {
arr = [
...arr,
{
label: '推送状态',
prop: 'state',
},
{
label: '修改剩余时间',
prop: 'createTime',
width: '120px',
},
{
label: '在线评审状态',
width: '120px',
prop: 'state2',
},
]
} else {
arr = [
...arr,
{
label: '发送状态',
prop: 'state',
},
]
}
arr = [
...arr,
{
label: '意见内容',
prop: 'remark',
width: '200px',
},
]
return arr
},
},
mounted() {},
methods: {
fnAdd() {
this.dialogTitle = '新增需求'
this.rowData = {}
this.visible = true
},
// 处理所需材料名称显示
handleFileName(scope) {
const filesValue = JSON.parse(scope.row.filesValue)
const str = filesValue.map((v) => v.name)
return str.join(',')
},
// 表格勾选的数据
selectionChange(data) {
this.selectRows = data
},
querySearch(data) {
this.query.queryParam = {
...this.query.queryParam,
...data,
}
this.$refs.searchTable.queryData()
},
handleClick(tab, event) {
// console.log(tab, event)
},
/**
* @description: 操作按钮
* @param {Object} row 当前操作行数据
* @param {String} title 当前操作按钮名称
* @author: pan
*/
fnOperation(row, title) {
switch (title) {
case '编辑':
this.fnEdit(row)
break
case '删除':
this.fnDel(row)
break
case '提交':
this.fnSubmit(row)
break
case '审批':
this.fnApproval(row)
break
case '发布':
this.fnRelease(row)
default:
break
}
},
fnRelease(row) {
this.$confirm('是否确认发布?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
const params = {
...row,
state: 1,
filesValue: JSON.parse(row.filesValue),
}
editNeedInfo(params).then((res) => {
if (res.code === 200) {
this.$message.success('发布成功')
this.$refs.searchTable.queryData()
} else {
this.$message.error(res.msg)
}
})
})
.catch(() => {})
},
fnApproval(row) {
this.rowData = row
this.approvalVisible = true
},
fnSubmit(row) {
this.$confirm('是否确认提交?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
const params = {
...row,
approveState: 2,
filesValue: JSON.parse(row.filesValue),
}
editNeedInfo(params).then((res) => {
if (res.code === 200) {
this.$message.success('提交成功')
this.$refs.searchTable.queryData()
} else {
this.$message.error(res.msg)
}
})
})
.catch(() => {})
},
fnEdit(row) {
this.dialogTitle = '修改需求'
this.rowData = row
this.visible = true
},
fnDel(row) {
this.$confirm('是否确认删除?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
const params = {
...row,
filesValue: JSON.parse(row.filesValue),
delFlag: 1,
}
editNeedInfo(params).then((res) => {
if (res.code === 200) {
this.$message.success('删除成功')
this.$refs.searchTable.queryData()
} else {
this.$message.error('删除失败')
}
})
})
.catch(() => {})
},
},
}
</script>
<style scoped lang="scss">
@import '@/styles/common.scss';
</style>
......@@ -12,7 +12,7 @@
<Form ref="addForm" :form-options="formOptions" label-width="120px">
<!-- 选择项目自定义 -->
<template slot="choosePrj" slot-scope="{ data }">
<el-input v-model="prjName" readonly>
<el-input v-model="prjInfo.prjName" readonly>
<div slot="append" @click="operation('openChoosePrj', data)">
选择项目
</div>
......@@ -58,7 +58,11 @@ export default {
},
data() {
return {
prjName: '',
prjInfo: {
prjName: '',
prjId: '',
prjCode: '',
},
choosePrjVisible: false,
}
},
......@@ -77,6 +81,16 @@ export default {
rules: [{ required: true, trigger: 'blur', message: '不能为空' }],
},
{
label: '批次年度', // label文字
prop: 'year', // 字段名
type: 'year',
valueFormat: 'yyyy',
element: 'el-date-picker', // 指定elementui组件
// initValue: new Date().format('yyyy'), // 字段初始值
placeholder: '请选择', // elementui组件属性
rules: [{ required: true, trigger: 'change', message: '不能为空' }],
},
{
label: '选择项目', // label文字
prop: 'prjName', // 字段名
__slotName: 'choosePrj',
......@@ -111,6 +125,7 @@ export default {
element: 'el-input', // 指定elementui组件
initValue: '', // 字段初始值
placeholder: '请输入内容', // elementui组件属性
readonly: true,
},
{
label: '创建时间', // label文字
......@@ -120,6 +135,7 @@ export default {
element: 'el-date-picker', // 指定elementui组件
initValue: new Date().format('yyyy-MM-dd'), // 字段初始值
placeholder: '请选择', // elementui组件属性
readonly: true,
},
{
label: '备注', // label文字
......@@ -141,7 +157,7 @@ export default {
},
},
isEdit() {
if (this.title === '修改批次计划') {
if (this.title === '修改需求') {
return true
} else {
return false
......@@ -151,9 +167,13 @@ export default {
mounted() {},
methods: {
selectData(data) {
this.prjName = data[0].prjName
this.prjInfo = data[0]
this.$nextTick(() => {
this.$set(this.$refs['addForm'].formData, 'prjName', this.prjName)
this.$set(
this.$refs['addForm'].formData,
'prjName',
this.prjInfo.prjName,
)
this.$refs['addForm'].$refs['formRef'].clearValidate('prjName')
})
},
......@@ -168,12 +188,20 @@ export default {
spinner: 'el-icon-loading',
})
const formInfo = this.$refs['addForm'].getData()
const filesValue = formInfo.filesValue.map((v) => {
return {
name: v,
}
})
const typeApi = this.isEdit ? editNeedInfo : addNeedInfo
const params = {
...this.rowData,
...formInfo,
state: 1,
filesValue,
approveState: 1,
needType: 1,
prjId: this.prjInfo.prjId,
prjCode: this.prjInfo.prjCode,
}
typeApi(params).then((res) => {
loading.close()
......@@ -197,14 +225,27 @@ export default {
v.initValue = ''
}
})
this.prjName = ''
this.prjInfo = {}
this.$refs['addForm'].addInitValue()
this.$refs['addForm'].onReset()
},
handleOpen() {
if (Object.keys(this.rowData).length) {
for (const key in this.prjInfo) {
if (Object.hasOwnProperty.call(this.prjInfo, key)) {
this.prjInfo[key] = this.rowData[key]
}
}
this.$nextTick(() => {
this.$refs['addForm'].$refs['formRef'].clearValidate('prjName')
})
this.formOptions.forEach((v) => {
v.initValue = this.rowData[v.prop]
if (v.prop === 'filesValue') {
let arr = JSON.parse(this.rowData[v.prop])
v.initValue = arr.map((v) => v.name)
} else {
v.initValue = this.rowData[v.prop]
}
})
this.$nextTick(() => {
this.$refs['addForm'].addInitValue()
......
<template>
<el-dialog
:title="title"
:visible.sync="showDialog"
:close-on-click-modal="false"
width="30%"
@close="handleClose()"
>
<div>
<template>
<el-radio v-model="radio" :label="3">同意</el-radio>
<el-radio v-model="radio" :label="4">不同意</el-radio>
</template>
<Form
ref="approvalForm"
: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 { editNeedInfo } from '@/api/index.js'
export default {
props: {
title: {
type: String,
default: '',
},
visible: {
type: Boolean,
default: false,
},
rowData: {
type: Object,
default: () => {},
},
},
data() {
return {
radio: 3,
}
},
components: {
Form,
},
computed: {
formOptions() {
return [
{
label: '意见描述', // label文字
prop: 'remark', // 字段名
type: 'textarea',
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
span: 24,
rules: [{ required: true, trigger: 'blur', message: '不能为空' }],
},
]
},
showDialog: {
get() {
return this.visible
},
set(value) {
this.$emit('update:visible', value)
},
},
},
mounted() {},
methods: {
handleSubmit() {
this.$refs['approvalForm'].onValidate(() => {
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
const formInfo = this.$refs['approvalForm'].getData()
const params = {
...this.rowData,
...formInfo,
approveState: this.radio,
filesValue: JSON.parse(this.rowData.filesValue),
}
editNeedInfo(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.formOptions.forEach((v) => {
v.initValue = ''
})
this.radio = 3
this.$refs['approvalForm'].addInitValue()
this.$refs['approvalForm'].onReset()
this.showDialog = false
},
},
}
</script>
<style scoped lang="scss">
@import '@/styles/elementui.scss';
</style>
<!--
* @Description: 需求提报-保存state 2 提交approveState 2
* @Version: 2.0
* @Autor: pan
* @Date: 2024-03-20 17:53:35
* @LastEditors: pan
* @LastEditTime: 2024-03-21 10:36:24
-->
<template>
<div>
<el-dialog
:title="title"
:visible.sync="showDialog"
:close-on-click-modal="false"
width="60%"
@close="handleClose()"
@open="fnQueryPrjNeedFile()"
>
<div>
<div style="text-align: left; margin-left: 10px">资料清单:</div>
<el-table :data="tableData" stripe border>
<el-table-column
type="index"
label="序号"
width="80"
align="center"
></el-table-column>
<el-table-column
prop="busiFileName"
label="资料类型"
align="center"
></el-table-column>
<el-table-column label="资料名称" align="center">
<template slot-scope="scope">
<el-upload
class="upload-demo"
action="/api/file/oss/upload"
ref="upload"
:on-remove="
(file, fileList) => handleRemove(file, fileList, scope.row)
"
:on-success="
(res, file, fileList) =>
handleFileUploadSuccess(res, file, fileList, scope.row)
"
:limit="1"
:file-list="scope.row.fileUrl ? [scope.row] : []"
>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</template>
</el-table-column>
</el-table>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose()" size="mini">取 消</el-button>
<el-button @click="fnOperation('save')" size="mini">保 存</el-button>
<el-button type="primary" @click="fnOperation('submit')" size="mini"
>提 交</el-button
>
</span></el-dialog
>
</div>
</template>
<script>
import { editNeedInfo, queryPrjNeedFile } from '@/api'
import { materialOptions } from '@/utils/dictionary'
export default {
props: {
title: {
type: String,
default: '',
},
visible: {
type: Boolean,
default: false,
},
rowData: {
type: Object,
default: () => {},
},
},
data() {
return {
tableData: [],
}
},
components: {},
computed: {
// tableData() {
// let arr = []
// if (this.rowData.filesValue) {
// arr = JSON.parse(this.rowData.filesValue)
// arr = arr.map((v) => {
// return {
// fileName: v.name,
// fileId: v.fileName,
// fileUrl: v.fileUrl,
// name: v.fileName,
// url: v.fileUrl,
// }
// })
// }
// return arr
// },
showDialog: {
get() {
return this.visible
},
set(value) {
this.$emit('update:visible', value)
},
},
},
mounted() {},
methods: {
fnOperation(type) {
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
let params = {
...this.rowData,
filesValue: JSON.parse(this.rowData.filesValue),
}
if (type === 'save') {
params = {
...params,
state: 2,
}
} else {
params = {
...params,
approveState: 2,
}
}
editNeedInfo(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
},
// 文件上传逻辑
handleRemove(file, fileList, row) {
//文件移出
row = []
},
handleFileUploadSuccess(res, file, fileList, row) {
//文件上传
row = {
fileName: file.name,
fileId: file.response.data.fileId,
fileUrl: file.response.data.viewUrl,
}
console.log('file', row)
},
fnQueryPrjNeedFile() {
console.log('this.rowData', this.rowData)
let busiFileNameList = JSON.parse(this.rowData.filesValue)
busiFileNameList = busiFileNameList.map((v) => v.name)
const params = {
busiFileNameList,
busiId: this.rowData.prjId,
busiIdType: 1,
}
queryPrjNeedFile(params).then((res) => {
if (res.code === 200) {
this.tableData = res.data.map((v) => {
return {
...v,
name: v.fileName,
url: v.fileUrl,
}
})
}
})
},
},
}
</script>
<style scoped lang="scss">
@import '@/styles/elementui.scss';
</style>
<template>
<div class="searchTable">
<list-page>
<template #tabWrap>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane
:label="item.label"
:name="item.name"
v-for="item in tabOptions"
:key="item.name"
>
</el-tab-pane>
</el-tabs>
</template>
<!-- 查询表单插槽 -->
<template #formWrap>
<SearchForm @onSearch="querySearch" :form-options="formOptions" />
</template>
<!-- 中部操作按钮 -->
<template #operationWrap>
<el-button
v-if="activeName === '1'"
icon="el-icon-document-add"
type="primary"
size="medium"
plain
@click="fnAdd()"
>新建</el-button
>
</template>
<!-- 表格插槽 -->
<template #tableWrap>
<table-config
ref="searchTable"
@selection-change="selectionChange"
:query="query"
:columns="columns"
:key="activeName"
>
<template #filesValue="{ data }">
<span>{{ handleFileName(data) }}</span>
</template>
</table-config>
</template>
</list-page>
<!-- 新增弹窗 -->
<Add
@querySearch="querySearch"
:visible.sync="visible"
:row-data="rowData"
:title="dialogTitle"
></Add>
<ApprovalDialog
:row-data="rowData"
@querySearch="querySearch"
title="审批"
:visible.sync="approvalVisible"
/>
<DemandSubDialog
:row-data="rowData"
@querySearch="querySearch"
title="需求提报"
:visible.sync="demandSubVisible"
/>
</div>
</template>
<script>
import ListPage from '@/components/ListPage.vue'
import SearchForm from '@/components/SearchForm.vue'
import TableConfig from '@/components/TableConfig.vue'
import Add from './Add.vue'
import ApprovalDialog from './ApprovalDialog.vue'
import DemandSubDialog from '@/views/demandManagement/DemandSubDialog'
import { queryDemandManagement } from '@/api/interface'
import { editNeedInfo } from '@/api'
import { buildType, approvalStatusOptions } from '@/utils/dictionary'
export default {
name: 'demandManagement',
data() {
return {
query: {
url: queryDemandManagement,
method: 'post',
queryParam: {
needType: 1,
},
},
activeName: '1',
tabOptions: [
{ label: '需求发布', name: '1' },
{ label: '需求确认', name: '2' },
],
selectRows: {},
visible: false,
rowData: {},
dialogTitle: '',
approvalVisible: false,
demandSubVisible: false,
}
},
components: {
ListPage,
SearchForm,
TableConfig,
Add,
ApprovalDialog,
DemandSubDialog,
},
computed: {
formOptions() {
let arr = [
{
label: '需求名称', // label文字
prop: 'needName', // 字段名
element: 'el-input', // 指定elementui组件
initValue: '', // 字段初始值
placeholder: '请输入内容', // elementui组件属性
},
{
label: '年度', // label文字
prop: 'year', // 字段名
type: 'year',
valueFormat: 'yyyy',
element: 'el-date-picker', // 指定elementui组件
initValue: '', // 字段初始值
placeholder: '请选择', // elementui组件属性
},
{
label: '批次计划', // label文字
prop: 'batName', // 字段名
element: 'el-input', // 指定elementui组件
initValue: '', // 字段初始值
placeholder: '请输入内容', // elementui组件属性
},
]
if (this.activeName === '1') {
arr = [
...arr,
{
label: '创建时间', // label文字
prop: 'createTime', // 字段名
type: 'date',
valueFormat: 'yyyy-MM-dd',
element: 'el-date-picker', // 指定elementui组件
initValue: '', // 字段初始值
placeholder: '请选择', // elementui组件属性
},
]
} else {
arr = [
...arr,
{
label: '项目名称', // label文字
prop: 'prjName', // 字段名
element: 'el-input', // 指定elementui组件
initValue: '', // 字段初始值
placeholder: '请输入内容', // elementui组件属性
},
]
}
return arr
},
columns() {
let arr = [
{ type: 'selection', width: '55px' },
{ label: '序号', type: 'index', width: '80px' },
{ label: '批次年度', prop: 'year' },
{ label: '批次名称', prop: 'batName', width: '200px' },
{
label: '项目名称',
prop: 'prjName',
width: '320px',
},
{
label: '需求名称',
width: '300px',
prop: 'needName',
},
{
label: '关联组织机构',
width: '200px',
prop: 'orgName',
},
{
label: '所需材料',
width: '200px',
prop: 'filesValue',
__slotName: 'filesValue',
},
]
if (this.activeName === '1') {
arr = [
...arr,
{ label: '创建人', prop: 'createMan' },
{ label: '创建时间', width: '120px', prop: 'createTime' },
{
label: '状态',
prop: 'approveState',
options: approvalStatusOptions,
collectionType: 'approveState',
},
{ label: '备注', prop: 'remark' },
{
label: '操作',
type: 'operation',
width: '440px',
actionButtons: [
{
title: '编辑',
type: 'primary',
size: 'mini',
plain: true,
icon: 'el-icon-edit',
disabledCallback: (row, title) => {
if (row.approveState != 1) {
return true
}
},
},
{
title: '删除',
type: 'danger',
size: 'mini',
plain: true,
icon: 'el-icon-delete',
disabledCallback: (row, title) => {
if (row.approveState != 1) {
return true
}
},
},
{
title: '提交',
size: 'mini',
icon: 'el-icon-circle-check',
type: 'primary',
plain: true,
disabledCallback: (row, title) => {
if (row.approveState != 1) {
return true
}
},
},
{
title: '审批',
size: 'mini',
icon: 'el-icon-s-check',
type: 'primary',
plain: true,
disabledCallback: (row, title) => {
if (row.approveState != 2) {
return true
}
},
},
{
title: '发布',
size: 'mini',
icon: 'el-icon-s-promotion',
type: 'primary',
plain: true,
disabledCallback: (row, title) => {
if (row.approveState == 3 && row.state == 2) {
return false
} else {
return true
}
},
},
],
callback: (row, title) => {
this.fnOperation(row, title)
},
},
]
} else {
arr = [
...arr,
{
label: '建设类型',
width: '100px',
prop: 'buildType',
options: buildType,
collectionType: 'buildType',
},
// { label: '需求状态', prop: 'needType' },
{
label: '审核状态',
prop: 'approveState',
collectionType: 'approvalStatusOptions',
options: approvalStatusOptions,
},
{ label: '备注', prop: 'remark' },
{
label: '操作',
type: 'operation',
width: '300px',
actionButtons: [
{
title: '需求提报',
size: 'mini',
icon: 'el-icon-circle-check',
type: 'primary',
plain: true,
},
{
title: '提交',
size: 'mini',
icon: 'el-icon-circle-check',
type: 'primary',
plain: true,
},
{
title: '审批',
size: 'mini',
icon: 'el-icon-s-check',
type: 'primary',
plain: true,
},
],
callback: (row, title) => {
this.fnOperation(row, title)
},
},
]
}
return arr
},
},
mounted() {},
methods: {
fnAdd() {
this.dialogTitle = '新增需求'
this.rowData = {}
this.visible = true
},
// 处理所需材料名称显示
handleFileName(scope) {
const filesValue = JSON.parse(scope.row.filesValue)
const str = filesValue.map((v) => v.name)
return str.join(',')
},
// 表格勾选的数据
selectionChange(data) {
this.selectRows = data
},
querySearch(data) {
this.query.queryParam = {
...this.query.queryParam,
...data,
}
this.$refs.searchTable.queryData()
},
handleClick(tab, event) {
this.query.queryParam.needType = +this.activeName
// console.log(tab, event)
},
/**
* @description: 操作按钮
* @param {Object} row 当前操作行数据
* @param {String} title 当前操作按钮名称
* @author: pan
*/
fnOperation(row, title) {
switch (title) {
case '编辑':
this.fnEdit(row)
break
case '删除':
this.fnDel(row)
break
case '提交':
this.fnSubmit(row)
break
case '审批':
this.fnApproval(row)
break
case '发布':
this.fnRelease(row)
break
case '需求提报':
this.fnDemandSub(row)
break
default:
break
}
},
fnDemandSub(row) {
this.rowData = row
this.demandSubVisible = true
},
fnRelease(row) {
this.$confirm('是否确认发布?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
const params = {
...row,
state: 1,
needType: 2,
filesValue: JSON.parse(row.filesValue),
}
editNeedInfo(params).then((res) => {
if (res.code === 200) {
this.$message.success('发布成功')
this.$refs.searchTable.queryData()
} else {
this.$message.error(res.msg)
}
})
})
.catch(() => {})
},
fnApproval(row) {
this.rowData = row
this.approvalVisible = true
},
fnSubmit(row) {
this.$confirm('是否确认提交?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
const params = {
...row,
approveState: 2,
filesValue: JSON.parse(row.filesValue),
}
editNeedInfo(params).then((res) => {
if (res.code === 200) {
this.$message.success('提交成功')
this.$refs.searchTable.queryData()
} else {
this.$message.error(res.msg)
}
})
})
.catch(() => {})
},
fnEdit(row) {
this.dialogTitle = '修改需求'
this.rowData = row
this.visible = true
},
fnDel(row) {
this.$confirm('是否确认删除?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
const params = {
...row,
filesValue: JSON.parse(row.filesValue),
delFlag: 1,
}
editNeedInfo(params).then((res) => {
if (res.code === 200) {
this.$message.success('删除成功')
this.$refs.searchTable.queryData()
} else {
this.$message.error('删除失败')
}
})
})
.catch(() => {})
},
},
}
</script>
<style scoped lang="scss">
@import '@/styles/common.scss';
</style>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!