Commit 604b4081 by peiqiQQQ

架构督查分析 技术政策审查开发联调 收集资料 督查材料修改

1 parent 63f10ec5
/* guo
架构督查 api
*/
import { EADC_ARRCHITECTURE } from '@/config/micromodule'
import { EADC_ARRCHITECTURE, EADC_KNOWLEDGE_POOL } from '@/config/micromodule'
// 收集资料配置 查询
export const collectDataSearch = EADC_ARRCHITECTURE + '/Collect/CollectInformation/'
......@@ -9,5 +9,17 @@ export const collectDataSearch = EADC_ARRCHITECTURE + '/Collect/CollectInformati
export const collectDataConfiguration = EADC_ARRCHITECTURE + '/Collect/information/'
// 督查材料收集 查询
export const supervisionData = EADC_ARRCHITECTURE + '/Collect/supervisionData/'
// 架构督查分析 查询
export const architectureInspectionAnalysis = EADC_ARRCHITECTURE + '/supervindex/selectSupervindex'
// 架构督查分析 查询 tab1 tab2
export const architectureInspectionAnalysis = EADC_ARRCHITECTURE + '/supervIndex/selectSupervIndex'
export const selectSupervAnalysis = EADC_ARRCHITECTURE + '/supervAnalysis/selectSupervAnalysis'
// 详情 tab1 tab2
export const architectureDetail = EADC_ARRCHITECTURE + '/supervIndex/selectSupervIndex'
// 政策 查询 添加查询
export const artPolicyExamine = EADC_ARRCHITECTURE + '/klTechPolicyCheck/'
export const artPolicyExamineAdd = EADC_KNOWLEDGE_POOL + '/kl-tech-policy/'
// 审查 查询
export const examineSearch = EADC_ARRCHITECTURE + '/prj-info/'
......@@ -316,6 +316,11 @@ const routes = [
name:'architectureInspectionAnalysis',
component:()=> import('@/views/architectureInspectionAnalysis/index.vue'),
},
{
path:'/main/examine',// 架构督查 - 架构督查分析
name:'examine',
component:()=> import('@/views/artPolicyExamine/Examine.vue'),
}
],
},
]
......
......@@ -6,20 +6,26 @@ export const stateCode = [
{ label: '未发布', value: 0 },
{ label: '已发布', value: 1 },
]
// 指标级别
export const indexLevel = [
{ label: '一级指标', value: '1' },
{ label: '二级指标', value: '2' },
{ label: '三级指标', value: '3' },
]
// 材料类型
export const materialTypeList = [
{ label: '项目可行性研究报告', id: '0'},
{ label: '技术规范书', id: '1'},
{ label: '项目启动文件', id: '2'},
{ label: '业务需求说明书', id: '3'},
{ label: '软件需求说明书', id: '4'},
{ label: '概要设计说明书', id: '5'},
{ label: '详细设计说明书', id: '6'},
{ label: '数据库设计说明书', id: '7'},
{ label: '实施方案', id: '8'},
{ label: '安全防护方案', id: '9'},
{ label: '系统部署方案', id: '10'},
{ label: '系统应急预案及快速恢复方案', id: '11'},
{ label: '项目可行性研究报告', value: '0'},
{ label: '技术规范书', value: '1'},
{ label: '项目启动文件', value: '2'},
{ label: '业务需求说明书', value: '3'},
{ label: '软件需求说明书', value: '4'},
{ label: '概要设计说明书', value: '5'},
{ label: '详细设计说明书', value: '6'},
{ label: '数据库设计说明书', value: '7'},
{ label: '实施方案', value: '8'},
{ label: '安全防护方案', value: '9'},
{ label: '系统部署方案', value: '10'},
{ label: '系统应急预案及快速恢复方案', value: '11'},
]
export const superStateCode = [
{ label: '未发布', value: 0 },
......
<template>
<el-dialog
:title="title"
:visible.sync="showDialog"
:close-on-click-modal="false"
width="42%"
@close="handleClose()"
@open="handleOpen"
>
<el-form :inline="true" id="addForm" ref="addForm" :rules="rules" :model="formInfo" label-width="auto" style="text-align: left;">
<template v-if="title == '新增督查指标' || rowData.tab == 'one'">
<el-form-item label="督查方案" prop="supervCode">
<el-select v-model="formInfo.supervCode" size="small" placeholder="请选择" @change="changeSupervCode" :disabled='!display' clearable>
<el-option v-for="item in supervNameList" :key="item.text" :label="item.value" :value="item.text">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="权重" prop="weight">
<el-input type="number" min="0" v-model="formInfo.weight" size="small" placeholder="请输入内容" > </el-input>
</el-form-item>
<br />
<el-form-item label="督查指标" prop="indexName">
<el-radio-group v-model="formInfo.indexLevel" @change="changeRadio" >
<el-radio v-for="item in radioList" :key="item.value" :label="item.value" :disabled='!display'>{{ item.label }}</el-radio >
</el-radio-group>
<br />
<el-select v-if="(formInfo.indexLevel == '2' || formInfo.indexLevel == '3') && display" v-model="formInfo.zhibiao1" size="small" placeholder="请选择" clearable @change="getZhibiaoList('3')">
<el-option v-for="item in zhibiaoList1" :key="item.text" :label="item.value" :value="item.text">
</el-option>
</el-select>
<el-select v-if="formInfo.indexLevel == '3' && display" v-model="formInfo.zhibiao2" size="small" placeholder="请选择" clearable>
<el-option v-for="item in zhibiaoList2" :key="item.text" :label="item.value" :value="item.text">
</el-option>
</el-select>
<el-input v-model="formInfo.indexName" size="small" placeholder="请输入内容" > </el-input>
</el-form-item>
</template>
<template v-if="rowData.tab == 'two'">
<el-form-item label="督查指标名称" prop="indexName">
<el-input v-model="formInfo.indexName" size="small" placeholder="请输入内容" > </el-input>
</el-form-item>
<el-form-item label="评分" prop="score" class="scoreClass">
<el-input type="number" min="1" max='5' v-model="formInfo.score" size="small" placeholder="请输入内容" > </el-input>
</el-form-item>
<br />
<el-form-item label="评审意见" prop="opinion" class="textarea">
<el-input type="textarea" v-model="formInfo.opinion" :rows="3" show-word-limit placeholder="请输入内容" ></el-input>
</el-form-item>
</template>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleSubmit" size="mini" >保 存</el-button >
<el-button @click="handleClose()" size="mini">取 消</el-button>
</span>
</el-dialog>
</template>
<script>
import Form from '@/views/collectDataConfiguration/Form.vue'
export default {
components: { Form },
props: {
title: {
type: String,
default: '',
},
visible: {
type: Boolean,
default: false,
},
rowData: {
type: Object,
default: () => {},
},
edit:{
type: Boolean,
default: false
}
},
computed: {
showDialog: {
get() {
return this.visible
},
set(value) {
this.$emit('update:visible', value)
},
},
},
data(){
return {
supervNameList: [],
formInfo: {},
zhibiaoList1: [],
zhibiaoList2: [],
radioList: [
{ value: '1', label: '一级指标' },
{ value: '2', label: '二级指标' },
{ value: '3', label: '三级指标' },
],
display: true,
rules: {
supervCode: [{ required: true, message: '必填项', trigger: 'change' }],
weight: [{ required: true, message: '必填项', trigger: 'blur' }],
indexName: [{ required: true, message: '必填项', trigger: 'blur' }],
score: [{ required: true, message: '必填项', trigger: 'blur' }],
}
}
},
methods: {
getSupervNameList(){
this.$postRequest('/supervIndex/selectDrop', {}).then(res => {
if (res.code === 200) {
this.supervNameList = res.data
} else {
this.supervNameList = []
}
})
},
changeSupervCode(){
// this.changeRadio(this.selectRadio)
this.formInfo.indexLevel = '1'
},
changeRadio(v){
this.selectRadio = v
if(v != '1'){
if(!!this.formInfo.supervCode){
this.getZhibiaoList('2')
}else{
this.$message.warning('请选择督查方案')
}
}
},
getZhibiaoList(level){
this.$postRequest('/supervIndex/selectIndexLevelDrop', {indexLevel: level, supervCode: this.formInfo.supervCode}).then(res => {
if (res.code === 200) {
if(level == '2'){
this.zhibiaoList1 = res.data
}else{
this.zhibiaoList2 = res.data
}
} else {
this.zhibiaoList1 = []
this.zhibiaoList2 = []
}
})
},
handleSubmit() {
this.$refs.addForm.validate((valid) => {
if (valid) {
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
let supervName = this.supervNameList.find(item => item.text == this.formInfo.supervCode).value
let upIndex = this.formInfo.indexLevel - 1 == 0 ? '' : this.formInfo.indexLevel - 1 + ''
let params = this.rowData.tab == 'two' ? {
supervCode: this.formInfo.supervCode,
opinion: this.formInfo.opinion,
score: this.formInfo.score,
id: this.formInfo.id
} : {
...this.formInfo,
supervName,
upIndex
}
let url = this.display ? '/supervIndex/ad' : this.rowData.tab == 'two' ? '/supervIndex/updPf' : '/supervIndex/upd' // 编辑
console.log(params, 'params', url);
this.$postRequest(url, params).then(res => {
if (res.code === 200) {
loading.close()
this.$message.success('保存成功')
this.handleClose()
this.$emit('querySearch', this.display)
}
})
}
})
},
handleClose() {
this.showDialog = false
},
async handleOpen() {
this.getSupervNameList()
if (Object.keys(this.rowData).length) {
this.formInfo = JSON.parse(JSON.stringify(this.rowData))
this.display = false
} else {
this.$nextTick(() => {
this.display = true
this.addInitValue()
this.$refs.addForm.resetFields()
})
}
},
// 添加初始值
addInitValue() {
this.formInfo = {
supervCode: '',
weight: 0,
indexLevel: '1',
// zhibiao1: '',
// zhibiao2: '',
indexName: '',
}
},
}
}
</script>
<style lang="scss" scoped>
@import '@/styles/elementui.scss';
/deep/ .scoreClass {
.el-input {
width: 160px ;
}
}
/deep/ .textarea{
width: 60%;
white-space: nowrap;
.el-form-item__content{
width: 100%;
}
}
.zhibiao1{
float: left;
}
</style>
\ No newline at end of file
<template>
<el-dialog
:title="'指标清单'"
:visible.sync="showDialog"
width="90%"
@close="showDialog = false"
>
<table-config
ref="searchTable"
:query="query"
:columns="columns"
id-key="elementId"
>
</table-config>
</el-dialog>
</template>
<script>
import { architectureDetail } from '@/api/architectureInspection'
import TableConfig from '@/views/collectDataConfiguration/TableConfig.vue'
import { stateCode, indexLevel } from '@/utils/architectureInspectionDis'
export default {
components: { TableConfig },
props: {
title: {
type: String,
default: '',
},
prjCodeDetail: {
type: String,
default: '',
},
visible: {
type: Boolean,
default: false,
},
},
watch: {
visible: {
handler(v){
if(v){
this.search()
}
}
},
},
data(){
return {
query: {
url: architectureDetail,
method: 'post',
queryParam: {
supervCode: '',
},
},
}
},
computed: {
columns() {
let arr = [
{ label: '序号', type: 'index', width: '80px' },
{ label: '督查方案名称', prop: 'supervName'},
{ label: '督查编码', prop: 'supervCode', width: '150px' },
{ label: '指标名称', prop: 'indexName',width: '150px' },
{ label: '指标级别', prop: 'indexLevel', width: '100px',collectionType: 'indexLevel',
options: indexLevel,
},
{ label: '指标权重', prop: 'weight', width: '100px'},
{ label: '创建时间', prop: 'createTime', width: '100px'},
{ label: '状态', prop: 'state', width: '100px', collectionType: 'stateCode',
options: stateCode,},
]
let operation = [
{
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)
},
},
]
if(this.title == '指标清单'){
return [...arr, ...operation]
}else{
return [...arr,
{ label: '评分', prop: 'score', width: '100px' },
{ label: '评审意见', prop: 'opinion', width: '150px'},
...operation]
}
},
showDialog: {
get() {
return this.visible
},
set(value) {
this.$emit('update:visible', value)
},
}
},
methods: {
async search(){
if(this.title == '督查名称'){
this.query.queryParam = {
supervCode: this.prjCodeDetail,
state: "1",
indexLevel: "3"
}
}else{
this.query.queryParam = {
supervCode: this.prjCodeDetail,
}
}
this.$nextTick(() => {
this.$refs.searchTable.queryData()
})
},
/**
* @description: 操作按钮
* @param {Object} row 当前操作行数据
* @param {String} title 当前操作按钮名称
* @author: pan
*/
fnOperation(row, title) {
switch (title) {
case '编辑':
this.fnEdit(row)
break
case '删除':
this.fnDel(row)
break
default:
break
}
},
// 删除
fnDel(row) {
this.$confirm('是否确认删除?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
this.$postRequest('/supervIndex/del', {id: row.id}).then(res => {
if (res.code === 200) {
this.$message.success('删除成功')
this.$refs.searchTable.queryData()
} else {
this.$message.error(res.msg)
}
})
})
.catch(() => {})
},
// 编辑
fnEdit(row) {
this.rowData = row
this.$emit('editClick', row, this.title)
},
}
}
</script>
<style lang="scss" scoped>
@import '@/styles/elementui.scss';
::v-deep .el-dialog__body{
height: 58vh;
}
</style>
\ No newline at end of file
<template>
<el-dialog
:title="'指标清单'"
:visible.sync="showDialog"
width="90%"
@close="showDialog = false"
@open="handleOpen"
>
<el-form :inline="true" id="addForm" ref="addForm" :model="formInfo" label-width="auto" style="text-align: left;">
<el-form-item label="政策名称" prop="policyName">
<el-input v-model="formInfo.policyName" size="small" placeholder="请输入内容" > </el-input>
</el-form-item>
<el-form-item label="" prop="">
<el-button type="primary" @click="querySearch" size="mini" >查询</el-button >
</el-form-item>
</el-form>
<table-config
ref="searchTable"
:query="query"
:columns="columns"
id-key="elementId"
@selection-change="selectionChange"
>
</table-config>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleSubmit" size="mini" >保 存</el-button >
<el-button @click="handleClose()" size="mini">取 消</el-button>
</span>
</el-dialog>
</template>
<script>
import TableConfig from '@/views/collectDataConfiguration/TableConfig.vue'
import { artPolicyExamineAdd } from '@/api/architectureInspection'
export default {
components: { TableConfig },
props: {
title: {
type: String,
default: '',
},
prjCodeDetail: {
type: String,
default: '',
},
visible: {
type: Boolean,
default: false,
},
},
computed: {
columns() {
let arr = [
{ type: 'selection',prop: 'selection', width: '55px' },
{ label: '序号', type: 'index', width: '80px' },
{ label: '政策名称', prop: 'policyName', width: '100px' },
{ label: '政策描述', prop: 'policyContent', },
{ label: '适用范围', prop: 'scope_', },
{ label: '发布部门', prop: 'deptName', },
{ label: '级别', prop: 'level_', },
{ label: '启用时间', prop: 'startTime', },
{ label: '创建人', prop: 'createMan', },
{ label: '创建时间', prop: 'createTime', },
]
return arr
},
showDialog: {
get() {
return this.visible
},
set(value) {
this.$emit('update:visible', value)
},
}
},
data(){
return {
formInfo: {
policyName: '',
},
query: {
url: artPolicyExamineAdd,
method: 'post',
queryParam: {
policyName: '',
state: '1'
},
},
selectId: '',
}
},
methods: {
querySearch(data) {
this.query.queryParam = {
...this.query.queryParam,
...data,
}
this.query.queryParam.policyName = this.forEach.policyName
this.$refs.searchTable.queryData()
},
selectionChange(data) {
let idArr = []
data.forEach(item => {
idArr.push(item.policyCode)
})
this.selectId = idArr.join(',')
},
handleSubmit(){
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
this.$postRequest('/klTechPolicyCheck/ad/', {policyCode: this.selectId, state: '1'}).then(res => {
if (res.code === 200) {
loading.close()
this.$message.success('保存成功')
this.handleClose()
this.$emit('querySearch')
}
})
},
handleClose() {
this.showDialog = false
},
async handleOpen() {
this.$nextTick(() => {
this.$refs.searchTable.clearSelection()
})
},
}
}
</script>
<style lang="scss" scoped>
@import '@/styles/elementui.scss';
::v-deep .el-dialog__body{
height: 58vh;
}
</style>
\ No newline at end of file
<template>
<div class="tab-component flex-column h-100 searchTable">
<div class="content flex">
<div class="left_container m-r-10 flex-column">
<div class="left_container_title">
<i class="el-icon-caret-right icon"></i>
<span>评审标准</span>
</div>
<div class="left_container_content flex-1">
<div class="office w-100 h-100">
<vab-only-office
id="office-preview-tab1-1"
:documentServerUrl="documentServerUrl"
:config="config"
/>
</div>
</div>
</div>
<div class="right_container flex-column">
<div class="right_container_title flex-b-c">
<div class="flex">
<i class="el-icon-caret-right icon"></i>
<span>评审内容</span>
</div>
<el-select class="select-title" v-model="select">
<el-option label="概要设计说明书.doc" value="1"></el-option>
</el-select>
<el-button type="primary" size='mini' class="backBtn" @click="backRoute">返回</el-button>
</div>
<div class="right_container_content flex-1">
<div class="office w-100 h-100">
<vab-only-office
id="office-preview-tab1-2"
:documentServerUrl="documentServerUrl"
:config="config"
/>
</div>
</div>
</div>
</div>
<div class="bottom_container">
<div class="flex-b-c p-r-20 m-tb-15">
<div class="flex-c">
<span class="m-r-50 p-l-20 bottom_container_title">评审结果</span>
<div class="label m-r-10">是否满足接入要求:</div>
<el-select v-model="isMeet" class="leftSelect">
<el-option
v-for="item in selectOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<el-button type="primary" size="medium" @click="handleSave"
>保存结果</el-button
>
</div>
<el-input
type="textarea"
:rows="4"
v-model="resultContent"
v-no-backslash
class="w-100"
placeholder="请输入"
></el-input>
</div>
</div>
</template>
<script>
import vabOnlyOffice from '@/components/onlyOffice/index.vue'
import {
saveReviewArchiFollowCheckRightSuggestion,
queryReviewArchiFollowCheckRightSuggestionDetails,
} from '@/api/index.js'
export default {
name: 'tab1',
components: { vabOnlyOffice },
data() {
return {
resultContent: '',
isMeet: null,
selectOptions: [
{
label: '是',
value: 1,
},
{
label: '否',
value: 0,
},
],
select: '1',
documentServerUrl: 'http://192.168.0.120:18050/',
config: {
document: {
fileType: 'docx',
// 给服务端用的唯一id,同一个id就会获取服务器缓存里的文件(有这个key,就会先根据它去缓存里找),这项如果最开始只是先试用,可以先给个空字符串
key: '71df19fbd1',
// 文件名
title: '65f90a662c18a9e9f1878156.docx',
//相关权限
// permissions: {
// copy: true, //定义内容是否可以复制到剪贴板。如果该参数设置为false,则只能在当前文档编辑器中粘贴内容。默认值为true。
// download: true, //定义文档是可以下载还是只能在线查看或编辑。如果下载权限设置为“假”的下载为...菜单选项将是缺席的文件菜单。默认值为true。
// edit: true, //定义文档是可以编辑还是只能查看。如果编辑权限设置为“true”,则文件菜单将包含编辑文档菜单选项;请注意,如果编辑权限设置为“false”,文档将在查看器中打开,即使模式参数设置为edit,您也无法将其切换到编辑器。默认值为true。
// print: true, //定义是否可以打印文档。如果打印权限设置为“false”的打印菜单选项将是缺席的文件菜单。默认值为true
// },
// 所要渲染的文件的绝对路径,这个参数很重要,它传的不是文件的本地地址,而是需要把文件传到项目所依赖的服务器,然后拿到文件在服务器的url地址(这个一般情况需要后端支持)才可以用,这个参数决定了能不能实例化出来onlyoffice对象
url: 'http://192.168.0.120:7005/downloadFile/29',
},
documentType: 'word',
height: '100%',
width: '100%',
editorConfig: {
//语言:zh-CN简体中文/en英文
lang: 'zh-CN',
//阅读状态 view/edit
mode: 'edit',
customization: {
//是否显示插件
plugins: false,
forcesave: true,
},
user: {
// 当前正在view/edit此文档的用户信息
name: '',
},
// 指定文档存储服务器的绝对路径
callbackUrl: 'http://192.168.0.120:7005/callback?fileId=29',
},
},
}
},
created() {
this.getDetail()
},
methods: {
getDetail() {
const params = {
reviewEnum: 'OPERATIONAL_SAFETY_COMPLIANCE_REVIEW',
prjId: this.$route.query.prjId,
}
queryReviewArchiFollowCheckRightSuggestionDetails(params).then((res) => {
if (res.code === 200) {
this.resultContent = res.data.reviewSuggestion
this.isMeet = res.data.reviewState
}
})
},
handleSave() {
const params = {
reviewEnum: 'OPERATIONAL_SAFETY_COMPLIANCE_REVIEW',
prjId: this.$route.query.prjId,
reviewState: this.isMeet,
reviewSuggestion: this.resultContent,
}
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
saveReviewArchiFollowCheckRightSuggestion(params).then((res) => {
loading.close()
if (res.code == 200) {
this.$message.success('保存成功')
} else {
this.$message.error(res.msg)
}
})
},
backRoute(){
this.$router.push({path: '/main/artPolicyExamine', query: {activeName: '2'}})
},
},
}
</script>
<style lang="scss" scoped>
@import '@/styles/common.scss';
@import '@/views/reviewArchiPoliticeCheck/index.scss';
.backBtn{
position: absolute;
right: 10px;
top: 10px;
}
</style>
<!--
* @Description: 架构督查-技术政策审查
* @Version: 2.0
* @Autor: pan
* @Date: 2024-03-26 18:27:18
* @LastEditors: pan
* @LastEditTime: 2024-03-26 19:26:03
-->
<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" />
<SearchForm ref="SearchForm" @onSearch="querySearch" :form-options="formOptions" />
</template>
<!-- 中部操作按钮 -->
<template #operationWrap v-if="activeName == '1'">
<el-button type="primary" icon="el-icon-document-add" size="medium" plain @click="fnAdd" >添加</el-button >
</template>
<!-- 表格插槽 -->
<template #tableWrap>
<table-config
......@@ -24,6 +31,10 @@
</table-config>
</template>
</list-page>
<AddTabelList
@querySearch="querySearch"
:visible.sync="visible"
:title="dialogTitle"/>
</div>
</template>
......@@ -31,108 +42,128 @@
import ListPage from '@/components/ListPage.vue'
import SearchForm from '@/components/SearchForm.vue'
import TableConfig from '@/components/TableConfig.vue'
import { updReportManage, delReportManage } from '@/api/index.js'
import { querySupervisionNotifyManagement } from '@/api/interface'
import { buildType } from '@/utils/dictionary'
import AddTabelList from './AddTabelList.vue'
import { artPolicyExamine, examineSearch } from '@/api/architectureInspection'
export default {
name: 'supervisionNotifyManagement',
components: {
ListPage,
SearchForm,
TableConfig,
},
name: 'artPolicyExamine',
components: { ListPage, SearchForm, TableConfig, AddTabelList },
data() {
return {
selectRows: [],
query: {
url: querySupervisionNotifyManagement,
url: this.$route.query.activeName ? examineSearch : artPolicyExamine,
method: 'post',
queryParam: {},
},
activeName: this.$route.query.activeName ? this.$route.query.activeName : '1',
tabOptions: [
{ label: '技术政策', name: '1' },
{ label: '审查', name: '2' },
],
visible: false,
rowData: {},
dialogTitle: '',
approvalVisible: false,
}
},
computed: {
formOptions() {
return [
{
label: '年度', // label文字
prop: 'year', // 字段名
type: 'year',
valueFormat: 'yyyy',
element: 'el-date-picker', // 指定elementui组件
placeholder: '请选择', // elementui组件属性
},
{
label: '建设类型',
width: '100px',
prop: 'buildType',
element: 'el-select', // 指定elementui组件
dictType: 'build_type',
placeholder: '请选择', // elementui组件属性
},
{
label: '项目名称', // label文字
prop: 'prjName', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
},
]
if(this.activeName == '2'){
return [
{
label: '项目名称', // label文字
prop: 'prjName', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
},
]
}else{
return [
{
label: '政策名称', // label文字
prop: 'policyName', // 字段名
element: 'el-input', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性
},
]
}
},
columns() {
return [
// { label: '序号', type: 'index', width: '80px' },
{ label: '年份', prop: 'year', width: '100px' },
{
label: '建设类型', // label文字
prop: 'buildType', // 字段名
options: buildType,
collectionType: true,
width: '120px',
},
{
label: '项目名称',
prop: 'prjName',
},
{
label: '操作',
type: 'operation',
width: '240px',
actionButtons: [
{
title: '审查',
type: 'primary',
size: 'mini',
plain: true,
icon: 'el-icon-edit',
},
{
title: '查看结果',
type: 'primary',
size: 'mini',
plain: true,
icon: 'el-icon-view',
if(this.activeName == '2'){
return [
{ label: '序号', type: 'index', width: '80px' },
{ label: '单位', prop: 'manageOrgId', width: '100px' },
{ label: '部门', prop: 'manageDeptId', width: '100px' },
{ label: '系统名称', prop: 'appName' },
{ label: '建设类型', prop: 'buildType', width: '100px' },
{ label: '项目名称', prop: 'prjName' },
{ label: '项目类型', prop: 'prjPlanClass', width: '100px' },
{ label: '承建单位', prop: 'buildOrg', width: '100px' },
{ label: '项目经理', prop: 'projectManager', width: '100px' },
{ label: '创建人', prop: 'createMan', width: '100px' },
{ label: '创建时间', prop: 'createTime', width: '100px' },
{
label: '操作', type: 'operation', width: '200px',
actionButtons: [
{
title: '审查',
type: 'primary',
size: 'mini',
plain: true,
icon: 'el-icon-circle-check',
disabledCallback: (row, title) => {
return row.state == '1' ? true : false
},
},
],
callback: (row, title) => {
this.fnOperation(row, title)
},
],
callback: (row, title) => {
this.fnOperation(row, title)
},
},
]
]
}else{
return [
{ label: '序号', type: 'index', width: '80px' },
{ label: '政策名称', prop: 'policyName', width: '100px' },
{ label: '政策描述', prop: 'policyContent', },
{ label: '适用范围', prop: 'scope_', },
{ label: '发布部门', prop: 'deptName', },
{ label: '级别', prop: 'level_', },
{ label: '启用时间', prop: 'startTime', },
{ label: '创建人', prop: 'createMan', },
{ label: '创建时间', prop: 'createTime', },
]
}
},
},
created() {},
methods: {
querySearch(data) {
if(this.activeName == '1'){
this.query.url = artPolicyExamine
this.query.queryParam = {
policyName: undefined
}
}else{
this.query.url = examineSearch
this.query.queryParam = {
prjName: undefined
}
}
this.query.queryParam = {
...this.query.queryParam,
...data,
}
this.$refs.searchTable.queryData()
},
fnAdd() {
this.visible = true
// this.rowData = {}
this.dialogTitle = '新增督查指标'
},
handleClick(tab, event) {
this.$refs.SearchForm.onReset()
// this.query.queryParam = {}
this.querySearch()
},
/**
* @description: 操作按钮
* @param {Object} row 当前操作行数据
......@@ -140,17 +171,16 @@ export default {
* @author: pan
*/
fnOperation(row, title) {
switch (title) {
case '审查':
// this.fnEdit(row)
break
case '查看结果':
// this.fnEdit(row)
break
default:
break
}
switch (title) {
case '审查':
this.fnSubmit(row)
break
default:
break
}
},
fnSubmit(row){
this.$router.push('/main/examine')
},
},
}
......
......@@ -15,7 +15,7 @@
<!-- 收集材料类型自定义 -->
<template slot="materialType" slot-scope="{ data }">
<el-checkbox-group v-model="formInfo.materialType">
<el-checkbox v-for="item in materialTypeList" :key="item.label" :label="item.id">{{item.label}}</el-checkbox>
<el-checkbox v-for="item in materialTypeList" :key="item.label" :label="item.value">{{item.label}}</el-checkbox>
</el-checkbox-group>
</template>
<template slot="supervision" slot-scope="{ data }">
......@@ -196,12 +196,17 @@ export default {
})
const formInfo = this.$refs['addForm'].getData()
let materialType = this.formInfo.materialType.filter(item => !!item).join(',')
let params = {
let params = !this.edit ? {
...formInfo,
materialType,
supervision: this.selectId
supervision: this.selectId
} : {
...this.rowData,
...formInfo,
materialType,
supervision: this.rowData.supervision
}
let url = !this.edit ? 'Collect/ad' : 'Collect/upd' // 编辑
let url = !this.edit ? '/Collect/ad' : '/Collect/upd' // 编辑
this.$postRequest(url, params).then(res => {
if (res.code === 200) {
loading.close()
......
......@@ -42,10 +42,9 @@ export default {
},
watch: {
prjCodeDetail(v){
console.log(v);
this.query.queryParam.prjCode = v
this.search()
},
},
},
data(){
return {
......@@ -118,6 +117,7 @@ export default {
</script>
<style lang="scss" scoped>
@import '@/styles/elementui.scss';
::v-deep .el-dialog__body{
height: 36vh;
}
......
......@@ -37,6 +37,7 @@
stripe
border
height="100%"
:row-class-name="tableRowClass"
>
<!-- <el-table-column
v-if="isCheck"
......@@ -222,16 +223,17 @@ export default {
let stateVal = state.split(',')
let labelValue = ''
stateVal.forEach(valItem => {
const arr = item.options.find((v) => v.id == valItem) || {}
const arr = item.options.find((v) => v.value == valItem) || {}
labelValue += `,${arr.label}`
});
return labelValue.slice(1, labelValue.length)
}{
let val = state
if (!val) {
val = item.emptyToNum || 0
}
const obj = item.options.find((v) => v.value ? v.value : v.id == val) || {}
// if (!val) {
// val = item.emptyToNum || 0
// }
// let obj = item.options.find(item => item.value == val)
const obj = item.options.find((v) => v.value == val) || {}
return obj['label']
}
},
......@@ -283,23 +285,50 @@ export default {
} finally {
this.loading = false
// console.log('result', result)
const { data } = result
if (result && result.code === 200) {
if(result.data){
const { data } = result
if (result && result.code === 200) {
this.pagination.totalRow = data.total
this.tableData = data.records
this.$emit('fetchData', data)
} else {
this.$message({
type: 'warning',
message: result ? result.msg : '查询失败!',
})
this.tableData = []
this.pagination.current = 1
this.pagination.totalRow = 0
}
}else{
const data = result
this.pagination.totalRow = data.total
this.tableData = data.records
this.$emit('fetchData', data)
} else {
this.$message({
type: 'warning',
message: result ? result.msg : '查询失败!',
})
this.tableData = []
this.pagination.current = 1
this.pagination.totalRow = 0
}
// console.log();
// if (result && result.code === 200) {
// this.pagination.totalRow = data.total
// this.tableData = data.records
// this.$emit('fetchData', data)
// } else {
// this.$message({
// type: 'warning',
// message: result ? result.msg : '查询失败!',
// })
// this.tableData = []
// this.pagination.current = 1
// this.pagination.totalRow = 0
// }
}
}
},
tableRowClass(val){
// console.log(val, 'tableRowClass');
if(val.row.remind && val.row.remind == '1'){
return 'remindRed'
}
},
},
}
</script>
......@@ -316,5 +345,8 @@ export default {
margin-top: 20px;
margin-bottom: 30px;
}
/deep/ .remindRed{
color: red !important;
}
}
</style>
......@@ -20,7 +20,6 @@
<template #supervision="{ data }">
<el-button v-if="data.row.supervision" class="detailBtn" size="medium" @click="detailBtn( data.row)">{{data.row.supervision}}</el-button >
<span v-else>{{data.row.supervision}}</span>
<!-- <el-button class="detailBtn" size="medium" @click="fnAdd('detail')">{{JSON.stringify(data)}}</el-button > -->
</template>
</table-config>
</template>
......@@ -93,6 +92,9 @@ export default {
size: 'mini',
plain: true,
icon: 'el-icon-edit',
// disabledCallback: (row, title) => {
// return row.state == '1' ? true : false
// },
},
{
title: '删除',
......@@ -100,6 +102,9 @@ export default {
size: 'mini',
plain: true,
icon: 'el-icon-delete',
disabledCallback: (row, title) => {
return row.state == '1' ? true : false
},
},
{
title: '发布',
......@@ -107,6 +112,9 @@ export default {
icon: 'el-icon-circle-check',
type: 'primary',
plain: true,
disabledCallback: (row, title) => {
return row.state == '1' ? true : false
},
},
],
callback: (row, title) => {
......@@ -231,15 +239,18 @@ export default {
},
// 督查清单 详情
detailBtn(v){
console.log(v);
this.detailTitle = '详情'
this.detailPrjCode = v.supervision
this.visibleDetail = true
},
selectTabel(v){
let id = this.rowData.supervision
this.rowData.supervision = !v ? v +','+id : id
}
let arrV = v.split(',')
let arrId = id.split(',')
let arr = [...arrV, ...arrId]
this.rowData.supervision = !!v ? Array.from(new Set(arr)).join(',') : id
// this.rowData.supervision = !!v ? v +','+id : id
},
}
}
</script>
......
<!--
* @Description: 需求提报-保存state 2 提交approveState 2
* @Version: 2.0
* @Autor: pan
* @Date: 2024-03-20 17:53:35
* @LastEditors: pan
* @LastEditTime: 2024-03-21 16:03:23
-->
<template>
<div>
<el-dialog
......@@ -65,6 +56,8 @@
</template>
<script>
import { materialTypeList, superStateCode } from '@/utils/architectureInspectionDis'
import { editNeedInfo, queryPrjNeedFile } from '@/api'
export default {
props: {
......@@ -152,10 +145,20 @@ export default {
},
fnQueryPrjNeedFile() {
console.log('this.rowData', this.rowData)
let busiFileNameList = this.rowData.fileList?.split(',')
let materialTypeArr = this.rowData.materialType.split(',')
// materialTypeList
let busiFileNameList = []
materialTypeArr.forEach(item => {
let obj = materialTypeList.find(type => type.value == item )
console.log(obj);
busiFileNameList.push(obj.label)
})
// let busiFileNameList = this.rowData.fileList?.split(',')
const params = {
busiFileNameList,
busiId: this.rowData.prjId,
busiId: this.rowData.id,
// busiFileNameList: ['技术规范书'],
// busiId: 25,
busiIdType: 1,
}
queryPrjNeedFile(params).then((res) => {
......@@ -167,6 +170,7 @@ export default {
url: v.fileUrl,
}
})
console.log(this.tableData);
}
})
},
......
......@@ -79,6 +79,9 @@ export default {
size: 'mini',
plain: true,
icon: 'el-icon-edit',
disabledCallback: (row, title) => {
return row.file == '1' ? true : false
},
},
{
title: '归档',
......@@ -86,6 +89,9 @@ export default {
size: 'mini',
plain: true,
icon: 'el-icon-circle-check',
disabledCallback: (row, title) => {
return row.file == '1' ? true : false
},
},
{
title: '提醒',
......@@ -93,6 +99,13 @@ export default {
icon: 'el-icon-circle-check',
type: 'warning',
plain: true,
disabledCallback: (row, title) => {
if (row.file == '1' || row.remind == '1') {
return true
} else {
return false
}
},
},
],
callback: (row, title) => {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!