Commit cb9f6fb2 by 史敦盼

提交

1 parent a9740b41
...@@ -576,6 +576,14 @@ export function editSystemTable(params) { ...@@ -576,6 +576,14 @@ export function editSystemTable(params) {
export function systemArchiSaveFactor(params) { export function systemArchiSaveFactor(params) {
return post('/network/arc-ast-sys/extend', params) return post('/network/arc-ast-sys/extend', params)
} }
// 评审情况(概要设计)分页查询
export function getPrelDesInspecteTable(params) {
return post('/network/prel-des-inspecte/', params)
}
// 保存评审意见接口
export function savePrelDesInspecte(params) {
return post('/network/prel-des-inspecte/cComment/', params)
}
// 概设架构遵从检查-列表 // 概设架构遵从检查-列表
export function getGaiSheJiaGouZunCongJiaChaTable(params) { export function getGaiSheJiaGouZunCongJiaChaTable(params) {
...@@ -609,7 +617,10 @@ export function saveExamine(params) { ...@@ -609,7 +617,10 @@ export function saveExamine(params) {
export function queryReviewArchiFollowCheckRightSuggestionDetails(params) { export function queryReviewArchiFollowCheckRightSuggestionDetails(params) {
return post('/network/app-archi-control-requirements/qReview', params) return post('/network/app-archi-control-requirements/qReview', params)
} }
// 批次计划查询
export function queryBatchPlan(params) {
return post('/network/bat-plan-info/', params)
}
// 新增批次计划 // 新增批次计划
export function addBatchPlan(params) { export function addBatchPlan(params) {
return post('/network/bat-plan-info/ad', params) return post('/network/bat-plan-info/ad', params)
...@@ -632,9 +643,28 @@ export function getByKeword(params) { ...@@ -632,9 +643,28 @@ export function getByKeword(params) {
export function addNeedInfo(params) { export function addNeedInfo(params) {
return post('/network/need-info/ad', params) return post('/network/need-info/ad', params)
} }
// 需求管理-更新接口
export function editNeedInfo(params) { export function editNeedInfo(params) {
return post('/network/need-info/upd', params) return post('/network/need-info/upd', params)
} }
export function queryPrjNeedFile(params) { export function queryPrjNeedFile(params) {
return post('/network/prj-need-file/', params) return post('/network/prj-need-file/', params)
} }
// 概设材料意见编制- 新增(推送)
export function addConceptualViewOrg(params) {
return post('/network/online-rev-wr/ad', params)
}
// 概设材料意见编制- 更新
export function editConceptualViewOrg(params) {
return post('/network/online-rev-wr/upd', params)
}
// 概设材料意见编制-需求评审情况
export function qyNeedReview(params) {
return post('/network/online-rev-wr/qyNeedReview', params)
}
export function editFeedback(params) {
return post('/network/prj-need-file/upd', params)
}
...@@ -12,3 +12,5 @@ export const queryDemandManagement = '/network/need-info/' ...@@ -12,3 +12,5 @@ export const queryDemandManagement = '/network/need-info/'
// 项目列表 // 项目列表
export const queryProjectInfo = '/network/prj-info/' export const queryProjectInfo = '/network/prj-info/'
// 概设材料意见编制
export const queryConceptualViewOrg = '/network/online-rev-wr/qy/'
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* @Autor: pan * @Autor: pan
* @Date: 2024-03-12 15:11:47 * @Date: 2024-03-12 15:11:47
* @LastEditors: pan * @LastEditors: pan
* @LastEditTime: 2024-03-19 11:23:05 * @LastEditTime: 2024-03-21 11:29:29
--> -->
<template> <template>
<div class="form-item"> <div class="form-item">
...@@ -33,9 +33,9 @@ ...@@ -33,9 +33,9 @@
> >
<el-option <el-option
v-for="item in itemOptions.options" v-for="item in itemOptions.options"
:key="item.value" :key="item[handleSelectValue]"
:label="item.label" :label="item[handleSelectLabel]"
:value="item.value" :value="item[handleSelectValue]"
></el-option> ></el-option>
</el-select> </el-select>
...@@ -114,6 +114,18 @@ export default { ...@@ -114,6 +114,18 @@ export default {
}, },
computed: { computed: {
handleSelectValue() {
if (this.itemOptions.keyOption) {
return this.itemOptions.keyOption['value']
}
return 'value'
},
handleSelectLabel() {
if (this.itemOptions.keyOption) {
return this.itemOptions.keyOption['label']
}
return 'label'
},
// 双向绑定数据值 // 双向绑定数据值
currentVal: { currentVal: {
get() { get() {
......
...@@ -269,6 +269,16 @@ const routes = [ ...@@ -269,6 +269,16 @@ const routes = [
name: 'conceptualBaseManagement', name: 'conceptualBaseManagement',
component: () => import('@/views/conceptualBaseManagement/index.vue'), component: () => import('@/views/conceptualBaseManagement/index.vue'),
}, },
{
path: '/main/onlineReview', // 评审意见编制- 在线辅助审核
name: 'onlineReview',
component: () => import('@/views/conceptualViewOrg/OnlineReview.vue'),
},
{
path: '/main/conceptualRelated', // 概设关联业务管理
name: 'conceptualRelated',
component: () => import('@/views/conceptualRelated/index.vue'),
},
], ],
}, },
] ]
......
...@@ -55,3 +55,21 @@ export const materialOptions = [ ...@@ -55,3 +55,21 @@ export const materialOptions = [
{ label: '安全防护方案', value: '安全防护方案' }, { label: '安全防护方案', value: '安全防护方案' },
{ label: '其他', value: '其他' }, { label: '其他', value: '其他' },
] ]
// 推送状态
export const pushStateOptions = [
{ label: '已反馈', value: 1 },
{ label: '未反馈', value: 0 },
]
// 在线评审状态
export const onlineApprovalStatusOptions = [
{ label: '待评审', value: 2 },
{ label: '通过', value: 1 },
{ label: '未通过', value: 0 },
]
// 发送状态
export const sendStateOptions = [
{ label: '发送成功', value: 1 },
{ label: '未发送', value: 2 },
{ label: '发送失败', value: 3 },
]
...@@ -181,7 +181,7 @@ export const menuOptions = [ ...@@ -181,7 +181,7 @@ export const menuOptions = [
}, },
{ {
name: '概设关联业务管理', name: '概设关联业务管理',
path: '', path: '/main/conceptualRelated',
}, },
{ {
name: '概设评审基础管理', name: '概设评审基础管理',
......
...@@ -214,6 +214,7 @@ export default { ...@@ -214,6 +214,7 @@ export default {
// 处理所需材料名称显示 // 处理所需材料名称显示
handleFileName(scope) { handleFileName(scope) {
const filesValue = JSON.parse(scope.row.filesValue) const filesValue = JSON.parse(scope.row.filesValue)
if (!filesValue) return
const str = filesValue.map((v) => v.name) const str = filesValue.map((v) => v.name)
return str.join(',') return str.join(',')
}, },
...@@ -253,6 +254,7 @@ export default { ...@@ -253,6 +254,7 @@ export default {
break break
case '发布': case '发布':
this.fnRelease(row) this.fnRelease(row)
break
default: default:
break break
} }
......
<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 #subTabWrap>
<el-tabs v-model="activeName2" @tab-click="handleSubClick">
<el-tab-pane
:label="item.label"
:name="item.name"
v-for="item in subTabOptions"
: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="fnMaterialAnalysis()"
>材料解析</el-button
> -->
</template>
<!-- 表格插槽 -->
<template #tableWrap>
<table-config
ref="searchTable"
@selection-change="selectionChange"
:query="query"
:columns="columns"
>
</table-config>
</template>
</list-page>
</div>
</template>
<script>
// import { getWordImg } from '@/api/index'
import ListPage from '@/components/ListPage.vue'
import SearchForm from '@/components/SearchForm.vue'
import TableConfig from '@/components/TableConfig.vue'
import { queryConceptualReview } from '@/api/interface'
import { exportRiskReport } from '@/api/index'
import { archiPrjReviewEnum, buildType } from '@/utils/dictionary'
// import { str } from './base64'
export default {
name: 'conceptualReview',
data() {
return {
src: '',
constructionTypeOptions: [],
selectRows: [],
query: {
url: queryConceptualReview,
method: 'post',
queryParam: {
reviewEnum: 'TECH_ROUTE',
},
},
activeName: '1',
tabOptions: [
{ label: '概设统计分析', name: '1' },
{ label: '总体架构维护', name: '2' },
],
activeName2: '1',
subTabOptions1: [
{ label: '各单位概设统计', name: '1' },
{ label: '各批次系统统计', name: '2' },
],
subTabOptions2: [
{ label: '业务流程', name: '1' },
{ label: '技术路线', name: '2' },
{ label: '功能清单', name: '3' },
{ label: '数据实体', name: '4' },
{ label: '安全设计', name: '5' },
],
activeSubTabItem: {
label: '报告规范性',
value: 'REPORT_NORM',
name: '1',
},
}
},
components: {
ListPage,
SearchForm,
TableConfig,
},
computed: {
subTabOptions() {
if (this.activeName === '1') {
return this.subTabOptions1
} else {
return this.subTabOptions2
}
},
formOptions() {
return [
{
label: '统计时间', // label文字
prop: 'year', // 字段名
type: 'year',
valueFormat: 'yyyy',
element: 'el-date-picker', // 指定elementui组件
initValue: undefined, // 字段初始值
placeholder: '请选择', // elementui组件属性
},
]
},
columns() {
let arr = []
if (this.activeName === '1') {
if (this.activeName2 === '1') {
arr = [
{ label: '序号', type: 'index', width: '80px' },
{ label: '单位名称', prop: 'orgName' },
{ label: '概设需求数(个)', prop: 'orgName1' },
{ label: '概设材料通过数(个)', prop: 'orgName2' },
{ label: '概设通过比(%)', prop: 'orgName3' },
]
} else {
arr = [
{ label: '序号', type: 'index', width: '80px' },
{ label: '批次', prop: 'batName' },
{ label: '项目需求数(个)', prop: 'orgName3' },
{ label: '项目通过数(个)', prop: 'orgName2' },
{ label: '项目通过比(%)', prop: 'prjRate' },
]
}
} else {
}
return arr
},
},
mounted() {},
methods: {
// 材料解析
fnMaterialAnalysis() {
if (this.selectRows.length == 0) {
return this.$message.warning('请选择一条数据')
}
// xxx
},
// 导出重复建设风险报告
handlExportRiskReport() {
const params = {
title: '功能重复风险',
comment: '',
}
exportRiskReport(params).then((res) => {
const url = window.URL.createObjectURL(
new Blob([res], { type: 'application/octet-stream' }),
)
const link = document.createElement('a')
link.href = url
link.setAttribute('download', `重复建设风险报告.doc`)
document.body.appendChild(link)
link.click()
window.URL.revokeObjectURL(url) // 释放内存
})
},
// 表格勾选的数据
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)
// this.activeSubTabItem = tab
this.activeName2 = '1'
// this.query.queryParam.reviewEnum = this.getArchiPrjReviewEnum()
this.$refs.searchTable.queryData()
},
handleSubClick(tab, event) {
// console.log(tab, event)
this.activeSubTabItem = tab
// this.query.queryParam.reviewEnum = this.getArchiPrjReviewEnum()
this.$refs.searchTable.queryData()
},
},
}
</script>
<style scoped lang="scss">
@import '@/styles/common.scss';
</style>
...@@ -146,6 +146,7 @@ export default { ...@@ -146,6 +146,7 @@ export default {
fnSave() { fnSave() {
const params = { const params = {
...this.row, ...this.row,
reviewState: 1,
reviewSuggestion: this.resultContent, reviewSuggestion: this.resultContent,
} }
const loading = this.$loading({ const loading = this.$loading({
......
<!--
* @Description: 修改材料反馈
* @Version: 2.0
* @Autor: pan
* @Date: 2024-03-21 14:29:32
* @LastEditors: pan
* @LastEditTime: 2024-03-21 19:52:10
-->
<template> <template>
<div>
<el-dialog <el-dialog
:title="title" :title="title"
:visible.sync="showDialog" :visible.sync="showDialog"
:close-on-click-modal="false" :close-on-click-modal="false"
width="60%" width="60%"
@close="handleClose()" @close="handleClose()"
@open="fnQueryPrjNeedFile()"
> >
<div> <div>
<Form <div style="text-align: left; margin-left: 10px">资料上传:</div>
ref="addForm" <el-table :data="tableData" stripe border>
:form-options="formOptions" <el-table-column
label-width="120px" type="index"
></Form> label="序号"
width="80"
align="center"
></el-table-column>
<el-table-column
prop="name"
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.fileList"
>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</template>
</el-table-column>
</el-table>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="handleClose()" size="mini">取 消</el-button> <el-button @click="handleClose()" size="mini">取 消</el-button>
<el-button type="primary" @click="handleSubmit()" size="mini" <el-button @click="fnOperation()" type="primary" size="mini"
></el-button ></el-button
> >
</span></el-dialog </span></el-dialog
> >
</div>
</template> </template>
<script> <script>
import Form from '@/components/Form.vue' import { editFeedback } from '@/api'
import { materialOptions } from '@/utils/dictionary'
import { addBatchPlan, editBatchPlan } from '@/api'
export default { export default {
props: { props: {
title: { title: {
...@@ -42,37 +82,12 @@ export default { ...@@ -42,37 +82,12 @@ export default {
}, },
}, },
data() { data() {
return {} return {
}, tableData: [],
components: { }
Form,
}, },
components: {},
computed: { 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: { showDialog: {
get() { get() {
return this.visible return this.visible
...@@ -84,38 +99,61 @@ export default { ...@@ -84,38 +99,61 @@ export default {
}, },
mounted() {}, mounted() {},
methods: { methods: {
handleSubmit() { fnOperation() {
this.$refs['addForm'].onValidate(() => {
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: '保存中', text: '保存中',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
}) })
const formInfo = this.$refs['addForm'].getData() let params = {
const typeApi = this.isEdit ? editBatchPlan : addBatchPlan
const params = {
...this.rowData, ...this.rowData,
...formInfo, busiId: this.rowData.prjId,
state: 1, busiIdType: 1,
busiFileName: '概要设计说明说',
onlineReviewState: 2,
ideaType: 1,
} }
typeApi(params).then((res) => { editFeedback(params).then((res) => {
if (res.code === 200) {
loading.close() loading.close()
if (res.code === 200) {
this.$message.success('保存成功') this.$message.success('保存成功')
this.showDialog = false this.showDialog = false
this.handleClose() this.handleClose()
this.$emit('querySearch') this.$emit('querySearch')
} else {
this.$message.error(res.msg)
} }
}) })
})
}, },
handleClose() { handleClose() {
this.showDialog = false this.showDialog = false
this.formOptions.forEach((v) => { },
v.initValue = '' // 文件上传逻辑
handleRemove(file, fileList, row) {
//文件移出
row = []
},
handleFileUploadSuccess(res, file, fileList, row) {
//文件上传
row.fileList = [
{
fileName: file.name,
fileId: file.response.data.fileId,
fileUrl: file.response.data.viewUrl,
},
]
console.log('file', row)
},
fnQueryPrjNeedFile() {
const list = this.rowData.fileList?.split(',')
this.tableData = list.map((v) => {
if (v === '概要设计说明书') {
return {
name: v,
fileList: [],
}
}
}) })
this.$refs['addForm'].addInitValue()
this.$refs['addForm'].onReset()
}, },
}, },
} }
......
<template>
<el-dialog
:title="title"
:visible.sync="showDialog"
:close-on-click-modal="false"
width="30%"
@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 { addConceptualViewOrg } 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: 'excessTime', // 字段名
type: 'datetime',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
element: 'el-date-picker', // 指定elementui组件
placeholder: '请选择', // elementui组件属性
rules: [{ required: true, trigger: 'change', message: '不能为空' }],
span: 24,
},
]
},
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 params = {
...this.rowData,
...formInfo,
ideaType: 1,
}
console.log('formInfo', formInfo)
addConceptualViewOrg(params).then((res) => {
loading.close()
if (res.code === 200) {
this.$message.success('保存成功')
this.showDialog = false
this.handleClose()
this.$emit('querySearch')
} else {
this.$message.error(res.msg)
}
})
})
},
handleClose() {
this.showDialog = false
this.formOptions.forEach((v) => {
v.initValue = ''
})
this.$refs['addForm'].addInitValue()
this.$refs['addForm'].onReset()
},
},
}
</script>
<style scoped lang="scss">
@import '@/styles/elementui.scss';
</style>
<template>
<div class="flex-column m-10 w-100 conceptualExamine">
<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">
<OnlineReviewLeft />
</div>
</div>
<div class="right_container flex-column">
<div class="right_container_title">
<i class="el-icon-caret-right icon"></i>
<span>评审内容</span>
</div>
<div
class="right_container_content flex-1"
v-loading="leftLoading"
element-loading-text="加载中"
>
<img
v-for="(item, idx) in leftBaseOptions"
:key="idx"
:src="item"
alt=""
/>
</div>
</div>
</div>
<div class="bottom_container">
<div class="flex-b-c p-r-20 m-tb-15">
<div class="flex-c">
<span class="p-lr-20 bottom_container_title">评审结果</span>
<div class="flex-c">
<span class="m-r-10">在线评审状态:</span>
<el-radio v-model="onlineReviewState" :label="1">通过</el-radio>
<el-radio v-model="onlineReviewState" :label="2">不通过</el-radio>
</div>
</div>
<div class="flex">
<el-button type="primary" size="medium" @click="fnSave()"
>保存结果</el-button
>
</div>
</div>
<el-input
type="textarea"
:rows="4"
v-model="resultContent"
v-no-backslash
class="w-100"
placeholder="输入审查结果"
></el-input>
</div>
</div>
</template>
<script>
import OnlineReviewLeft from '@/views/conceptualViewOrg/OnlineReviewLeft'
import { getReviewNorm, editConceptualViewOrg, exportRiskReport } from '@/api'
export default {
name: 'OnlineReview',
components: {
OnlineReviewLeft,
},
data() {
return {
resultContent: '',
row: {},
leftLoading: true,
leftBaseOptions: [],
rightBaseOptions: [],
onlineReviewState: 1,
}
},
created() {
this.row = JSON.parse(this.$route.query.row)
this.resultContent = this.row.reviewSuggestion || ''
// if (this.tab === '8') {
// this.leftLoading = false
// } else {
// this.getReviewNorm()
// }
},
methods: {
getReviewNorm() {
const { needId } = this.row
const params = {
needId,
}
getReviewNorm(params).then((res) => {
if (res.code === 200) {
this.leftLoading = false
this.leftBaseOptions = res.data.docParserList.map(
(v) => `data:image/png;base64,${v.docContent}`,
)
// this.leftSrc = `data:image/png;base64,${res.data.docParserList[0].docContent}`
}
})
},
fnSave() {
const params = {
...this.row,
reviewState: 1,
onlineReviewState: this.onlineReviewState,
reviewSuggestion: this.resultContent,
}
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
editConceptualViewOrg(params).then((res) => {
if (res.code === 200) {
loading.close()
this.$message.success('保存成功')
}
})
},
},
}
</script>
<style lang="scss" scoped>
@import '@/styles/common.scss';
@import '@/views/reviewArchiPoliticeCheck/index.scss';
.conceptualExamine {
height: calc(100% - 20px);
overflow-y: auto;
}
</style>
<template>
<div class="Tab8Left p-10">
<el-card
class="box-card m-b-20"
v-for="item in cardList"
:key="item.value"
shadow="never"
>
<div slot="header" class="clearfix">
<span class="m-r-20 bold">{{ item.requireName }}</span>
<el-button
icon="el-icon-download"
type="primary"
size="medium"
plain
v-if="item.requireName === '功能偏差'"
>导出技术偏差分析表</el-button
>
<el-button
icon="el-icon-download"
type="primary"
size="medium"
plain
v-if="item.requireName === '功能重复风险'"
>导出重复建设风险报告</el-button
>
<el-button
icon="el-icon-download"
type="primary"
size="medium"
plain
v-if="item.requireName === '数据重复录入风险'"
>导出重复录入风险报告</el-button
>
</div>
<div class="flex-column" style="text-align: left">
<div v-if="item.requireName === '架构遵从'">架构遵从关系审查结果:</div>
<div v-else-if="item.requireName === '技术路线'">合规性检查结果:</div>
<div v-else>审查结果:</div>
<div>{{ item.reviewSuggestion }}</div>
</div>
</el-card>
</div>
</template>
<script>
import { qyNeedReview } from '@/api/index.js'
import { exportRiskReport } from '@/api'
export default {
data() {
return {
cardList: [],
row: {},
}
},
components: {},
computed: {},
created() {
this.row = JSON.parse(this.$route.query.row)
this.fnQyNeedReview()
},
methods: {
fnQyNeedReview() {
qyNeedReview(this.row).then((res) => {
if (res.code === 200) {
this.cardList = res.data
}
})
},
// 导出重复建设风险报告
handlExportRiskReport() {
const params = {
title: '功能重复风险',
comment: this.resultContent,
}
exportRiskReport(params).then((res) => {
const url = window.URL.createObjectURL(
new Blob([res], { type: 'application/octet-stream' }),
)
const link = document.createElement('a')
link.href = url
link.setAttribute('download', `重复建设风险报告.doc`)
document.body.appendChild(link)
link.click()
window.URL.revokeObjectURL(url) // 释放内存
})
},
},
}
</script>
<style scoped lang="scss">
@import '@/styles/common.scss';
.clearfix {
text-align: left;
}
.item {
display: flex;
align-items: flex-start;
flex-direction: column;
}
.bold {
font-weight: bold;
}
</style>
<template>
<el-dialog
:title="title"
:visible.sync="showDialog"
:close-on-click-modal="false"
width="60%"
@close="handleClose()"
@open="handleOpen()"
>
<div>
<el-input
type="textarea"
v-model="comments"
:autosize="{ minRows: 6 }"
placeholder="请输入内容"
></el-input>
</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 { editConceptualViewOrg } from '@/api'
export default {
props: {
title: {
type: String,
default: '',
},
visible: {
type: Boolean,
default: false,
},
rowData: {
type: Object,
default: () => {},
},
},
data() {
return {
comments: '',
baseComments: `1.概要设计技术方案内容完整\n2.概要设计技术方案在架构设计、开发运行、系统集成、部署方式和安全防护设计等方面符合公司信息化总体架构和技术政司 梅文明 2策要求。\n3.项目承建单位在后续开发、测试、上线等阶段,加强所用开源软件的选型评估和安全、技术测试,确保符合公司信息化总体架构、信息安全和信息系统上线运行相关规定。综上所述,本项目概要设计技术方案满足立项建设目标,符合公司信息化总体架构和技术政策要求,能够指导后期详细设计家和研发实施工作。`,
}
},
components: {},
computed: {
showDialog: {
get() {
return this.visible
},
set(value) {
this.$emit('update:visible', value)
},
},
},
mounted() {},
methods: {
handleSubmit() {
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
const params = {
...this.rowData,
reviewSuggestion: this.comments,
ideaType: 2,
}
editConceptualViewOrg(params).then((res) => {
if (res.code === 200) {
loading.close()
this.$message.success('保存成功')
this.showDialog = false
this.handleClose()
this.$emit('querySearch')
}
})
},
handleClose() {
this.showDialog = false
},
handleOpen() {
if (!this.comments) {
this.comments = this.rowData.reviewSuggestion
? this.rowData.reviewSuggestion
: this.baseComments
}
},
},
}
</script>
<style scoped lang="scss">
@import '@/styles/elementui.scss';
</style>
...@@ -18,23 +18,12 @@ ...@@ -18,23 +18,12 @@
<SearchForm @onSearch="querySearch" :form-options="formOptions" /> <SearchForm @onSearch="querySearch" :form-options="formOptions" />
</template> </template>
<!-- 中部操作按钮 --> <!-- 中部操作按钮 -->
<template #operationWrap> <!-- <template #operationWrap>
<template v-if="activeName === '1'"> <template v-if="activeName === '2'">
<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>
<el-button type="primary" size="medium" plain>发送评审意见</el-button> <el-button type="primary" size="medium" plain>发送评审意见</el-button>
</template> </template>
</template> </template> -->
<!-- 表格插槽 --> <!-- 表格插槽 -->
<template #tableWrap> <template #tableWrap>
<table-config <table-config
...@@ -44,12 +33,27 @@ ...@@ -44,12 +33,27 @@
:columns="columns" :columns="columns"
:key="activeName" :key="activeName"
> >
<template #filesValue="{ data }">
<span>{{ handleFileName(data) }}</span>
</template>
</table-config> </table-config>
</template> </template>
</list-page> </list-page>
<MaterialPush
title="材料推送"
:visible.sync="materialPushVisible"
:row-data="rowData"
@querySearch="querySearch"
/>
<MaterialFeedback
title="材料反馈"
:visible.sync="materialFeedbackVisible"
:row-data="rowData"
@querySearch="querySearch"
/>
<ReviewComments
title="正式评审意见"
:visible.sync="reviewCommentsVisible"
:row-data="rowData"
@querySearch="querySearch"
/>
</div> </div>
</template> </template>
...@@ -57,18 +61,27 @@ ...@@ -57,18 +61,27 @@
import ListPage from '@/components/ListPage.vue' import ListPage from '@/components/ListPage.vue'
import SearchForm from '@/components/SearchForm.vue' import SearchForm from '@/components/SearchForm.vue'
import TableConfig from '@/components/TableConfig.vue' import TableConfig from '@/components/TableConfig.vue'
import MaterialPush from './MaterialPush.vue'
import MaterialFeedback from './MaterialFeedback'
import ReviewComments from './ReviewComments.vue'
import { queryDemandManagement } from '@/api/interface' import { queryConceptualViewOrg } from '@/api/interface'
import { editNeedInfo } from '@/api' import { editConceptualViewOrg } from '@/api'
import { buildType, approvalStatusOptions } from '@/utils/dictionary' import {
pushStateOptions,
onlineApprovalStatusOptions,
sendStateOptions,
} from '@/utils/dictionary'
export default { export default {
name: 'conceptualViewOrg', name: 'conceptualViewOrg',
data() { data() {
return { return {
query: { query: {
url: queryDemandManagement, url: queryConceptualViewOrg,
method: 'post', method: 'post',
queryParam: {}, queryParam: {
ideaType: 1,
},
}, },
activeName: '1', activeName: '1',
tabOptions: [ tabOptions: [
...@@ -76,19 +89,26 @@ export default { ...@@ -76,19 +89,26 @@ export default {
{ label: '意见生成与流转', name: '2' }, { label: '意见生成与流转', name: '2' },
], ],
selectRows: {}, selectRows: {},
visible: false,
rowData: {}, rowData: {},
dialogTitle: '', materialPushVisible: false,
approvalVisible: false, materialFeedbackVisible: false,
reviewCommentsVisible: false,
} }
}, },
components: { ListPage, SearchForm, TableConfig }, components: {
ListPage,
SearchForm,
TableConfig,
MaterialPush,
MaterialFeedback,
ReviewComments,
},
computed: { computed: {
formOptions() { formOptions() {
let arr = [ let arr = [
{ {
label: '项目名称', // label文字 label: '项目名称', // label文字
prop: 'batName', // 字段名 prop: 'prjName', // 字段名
element: 'el-input', // 指定elementui组件 element: 'el-input', // 指定elementui组件
initValue: '', // 字段初始值 initValue: '', // 字段初始值
placeholder: '请输入内容', // elementui组件属性 placeholder: '请输入内容', // elementui组件属性
...@@ -152,8 +172,7 @@ export default { ...@@ -152,8 +172,7 @@ export default {
{ {
label: '材料', label: '材料',
width: '200px', width: '200px',
prop: 'filesValue', prop: 'fileList',
__slotName: 'filesValue',
}, },
] ]
if (this.activeName === '1') { if (this.activeName === '1') {
...@@ -162,6 +181,8 @@ export default { ...@@ -162,6 +181,8 @@ export default {
{ {
label: '推送状态', label: '推送状态',
prop: 'state', prop: 'state',
options: pushStateOptions,
collectionType: 'state',
}, },
{ {
label: '修改剩余时间', label: '修改剩余时间',
...@@ -171,7 +192,9 @@ export default { ...@@ -171,7 +192,9 @@ export default {
{ {
label: '在线评审状态', label: '在线评审状态',
width: '120px', width: '120px',
prop: 'state2', prop: 'onlineReviewState',
options: onlineApprovalStatusOptions,
collectionType: 'approveState',
}, },
] ]
} else { } else {
...@@ -179,7 +202,9 @@ export default { ...@@ -179,7 +202,9 @@ export default {
...arr, ...arr,
{ {
label: '发送状态', label: '发送状态',
prop: 'state', prop: 'sendState',
options: sendStateOptions,
collectionType: 'sendState',
}, },
] ]
} }
...@@ -191,22 +216,75 @@ export default { ...@@ -191,22 +216,75 @@ export default {
width: '200px', width: '200px',
}, },
] ]
if (this.activeName === '1') {
arr = [
...arr,
{
label: '操作',
type: 'operation',
width: '400px',
actionButtons: [
{
title: '材料推送',
type: 'primary',
size: 'mini',
plain: true,
icon: 'el-icon-edit',
},
{
title: '修改材料反馈',
type: 'primary',
size: 'mini',
plain: true,
icon: 'el-icon-edit',
},
{
title: '在线辅助审核',
type: 'primary',
size: 'mini',
plain: true,
icon: 'el-icon-edit',
},
],
callback: (row, title) => {
this.fnOperation(row, title)
},
},
]
} else {
arr = [
...arr,
{
label: '操作',
type: 'operation',
width: '400px',
actionButtons: [
{
title: '正式评审意见',
type: 'primary',
size: 'mini',
plain: true,
icon: 'el-icon-edit',
},
{
title: '发送评审意见',
type: 'primary',
size: 'mini',
plain: true,
icon: 'el-icon-edit',
},
],
callback: (row, title) => {
this.fnOperation(row, title)
},
},
]
}
return arr return arr
}, },
}, },
mounted() {}, mounted() {},
methods: { 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) { selectionChange(data) {
this.selectRows = data this.selectRows = data
...@@ -219,6 +297,7 @@ export default { ...@@ -219,6 +297,7 @@ export default {
this.$refs.searchTable.queryData() this.$refs.searchTable.queryData()
}, },
handleClick(tab, event) { handleClick(tab, event) {
this.query.queryParam.ideaType = +this.activeName
// console.log(tab, event) // console.log(tab, event)
}, },
/** /**
...@@ -229,26 +308,32 @@ export default { ...@@ -229,26 +308,32 @@ export default {
*/ */
fnOperation(row, title) { fnOperation(row, title) {
switch (title) { switch (title) {
case '编辑': case '材料推送':
this.fnEdit(row) this.fnOpenDialog(row, 'materialPushVisible')
break break
case '删除': case '修改材料反馈':
this.fnDel(row) this.fnOpenDialog(row, 'materialFeedbackVisible')
break break
case '提交': case '在线辅助审核':
this.fnSubmit(row) this.$router.push({
path: '/main/onlineReview',
query: {
row: JSON.stringify(row),
},
})
break break
case '审批': case '正式评审意见':
this.fnApproval(row) this.fnOpenDialog(row, 'reviewCommentsVisible')
break
case '发送评审意见':
this.fnSend(row)
break break
case '发布':
this.fnRelease(row)
default: default:
break break
} }
}, },
fnRelease(row) { fnSend(row) {
this.$confirm('是否确认发布?', '提示', { this.$confirm('是否确认发布评审意见?', '提示', {
confirmButtonText: '确认', confirmButtonText: '确认',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning', type: 'warning',
...@@ -256,37 +341,10 @@ export default { ...@@ -256,37 +341,10 @@ export default {
.then(() => { .then(() => {
const params = { const params = {
...row, ...row,
state: 1, sendState: 1,
filesValue: JSON.parse(row.filesValue), ideaType: 2,
} }
editNeedInfo(params).then((res) => { editConceptualViewOrg(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) { if (res.code === 200) {
this.$message.success('提交成功') this.$message.success('提交成功')
this.$refs.searchTable.queryData() this.$refs.searchTable.queryData()
...@@ -297,33 +355,9 @@ export default { ...@@ -297,33 +355,9 @@ export default {
}) })
.catch(() => {}) .catch(() => {})
}, },
fnEdit(row) { fnOpenDialog(row, visible) {
this.dialogTitle = '修改需求'
this.rowData = row this.rowData = row
this.visible = true 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(() => {})
}, },
}, },
} }
......
...@@ -41,6 +41,7 @@ import ChoosePrjDialog from './ChoosePrjDialog.vue' ...@@ -41,6 +41,7 @@ import ChoosePrjDialog from './ChoosePrjDialog.vue'
import { addNeedInfo, editNeedInfo } from '@/api' import { addNeedInfo, editNeedInfo } from '@/api'
import { materialOptions } from '@/utils/dictionary' import { materialOptions } from '@/utils/dictionary'
import { queryBatchPlan } from '@/api/index'
export default { export default {
props: { props: {
title: { title: {
...@@ -64,6 +65,7 @@ export default { ...@@ -64,6 +65,7 @@ export default {
prjCode: '', prjCode: '',
}, },
choosePrjVisible: false, choosePrjVisible: false,
batchPlanManagementList: [],
} }
}, },
components: { components: {
...@@ -75,9 +77,15 @@ export default { ...@@ -75,9 +77,15 @@ export default {
return [ return [
{ {
label: '批次计划', // label文字 label: '批次计划', // label文字
prop: 'batName', // 字段名 prop: 'batPlanId', // 字段名
element: 'el-input', // 指定elementui组件 element: 'el-select', // 指定elementui组件
placeholder: '请输入内容', // elementui组件属性 placeholder: '请输入内容', // elementui组件属性
options: this.batchPlanManagementList,
keyOption: {
label: 'batName',
value: 'batPlanId',
},
filterable: true,
rules: [{ required: true, trigger: 'blur', message: '不能为空' }], rules: [{ required: true, trigger: 'blur', message: '不能为空' }],
}, },
{ {
...@@ -112,7 +120,7 @@ export default { ...@@ -112,7 +120,7 @@ export default {
}, },
{ {
label: '材料清单', // label文字 label: '材料清单', // label文字
prop: 'filesValue', // 字段名 prop: 'fileList', // 字段名
element: 'el-select', // 指定elementui组件 element: 'el-select', // 指定elementui组件
placeholder: '请选择', // elementui组件属性 placeholder: '请选择', // elementui组件属性
options: materialOptions, options: materialOptions,
...@@ -180,30 +188,38 @@ export default { ...@@ -180,30 +188,38 @@ export default {
operation() { operation() {
this.choosePrjVisible = true this.choosePrjVisible = true
}, },
handleSubmit() { handleAddParams() {
this.$refs['addForm'].onValidate(() => {
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
const formInfo = this.$refs['addForm'].getData() const formInfo = this.$refs['addForm'].getData()
const filesValue = formInfo.filesValue.map((v) => { // 获取批次计划的id,code ,name
return { const { batName, batPlanCode, batPlanId } =
name: v, this.batchPlanManagementList.find(
} (v) => formInfo.batPlanId === v.batPlanId,
}) ) || {}
const typeApi = this.isEdit ? editNeedInfo : addNeedInfo
const params = { const params = {
...this.rowData, ...this.rowData,
...formInfo, ...formInfo,
filesValue,
approveState: 1, approveState: 1,
needType: 1, needType: 1,
filesValue: undefined,
prjId: this.prjInfo.prjId, prjId: this.prjInfo.prjId,
prjCode: this.prjInfo.prjCode, prjCode: this.prjInfo.prjCode,
batName,
batPlanCode,
batPlanId,
} }
typeApi(params).then((res) => { return params
},
handleSubmit() {
this.$refs['addForm'].onValidate(() => {
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
const typeApi = this.isEdit ? editNeedInfo : addNeedInfo
typeApi(this.handleAddParams()).then((res) => {
loading.close() loading.close()
if (res.code === 200) { if (res.code === 200) {
this.$message.success('保存成功') this.$message.success('保存成功')
...@@ -229,7 +245,10 @@ export default { ...@@ -229,7 +245,10 @@ export default {
this.$refs['addForm'].addInitValue() this.$refs['addForm'].addInitValue()
this.$refs['addForm'].onReset() this.$refs['addForm'].onReset()
}, },
handleOpen() { async handleOpen() {
// batchPlanManagementList
const batchRes = await queryBatchPlan({ current: 1, pageSize: 100 })
this.batchPlanManagementList = batchRes.data.records
if (Object.keys(this.rowData).length) { if (Object.keys(this.rowData).length) {
for (const key in this.prjInfo) { for (const key in this.prjInfo) {
if (Object.hasOwnProperty.call(this.prjInfo, key)) { if (Object.hasOwnProperty.call(this.prjInfo, key)) {
...@@ -240,9 +259,8 @@ export default { ...@@ -240,9 +259,8 @@ export default {
this.$refs['addForm'].$refs['formRef'].clearValidate('prjName') this.$refs['addForm'].$refs['formRef'].clearValidate('prjName')
}) })
this.formOptions.forEach((v) => { this.formOptions.forEach((v) => {
if (v.prop === 'filesValue') { if (v.prop === 'fileList') {
let arr = JSON.parse(this.rowData[v.prop]) v.initValue = this.rowData[v.prop].split(',')
v.initValue = arr.map((v) => v.name)
} else { } else {
v.initValue = this.rowData[v.prop] v.initValue = this.rowData[v.prop]
} }
......
...@@ -87,10 +87,10 @@ export default { ...@@ -87,10 +87,10 @@ export default {
}) })
const formInfo = this.$refs['approvalForm'].getData() const formInfo = this.$refs['approvalForm'].getData()
const params = { const params = {
...this.rowData,
...formInfo, ...formInfo,
approveState: this.radio, approveState: this.radio,
filesValue: JSON.parse(this.rowData.filesValue), needId: this.rowData.needId,
state: this.rowData.state,
} }
editNeedInfo(params).then((res) => { editNeedInfo(params).then((res) => {
loading.close() loading.close()
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* @Autor: pan * @Autor: pan
* @Date: 2024-03-20 17:53:35 * @Date: 2024-03-20 17:53:35
* @LastEditors: pan * @LastEditors: pan
* @LastEditTime: 2024-03-21 10:36:24 * @LastEditTime: 2024-03-21 16:03:23
--> -->
<template> <template>
...@@ -89,22 +89,6 @@ export default { ...@@ -89,22 +89,6 @@ export default {
}, },
components: {}, components: {},
computed: { 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: { showDialog: {
get() { get() {
return this.visible return this.visible
...@@ -123,8 +107,9 @@ export default { ...@@ -123,8 +107,9 @@ export default {
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
}) })
let params = { let params = {
...this.rowData, approveState: this.rowData.approveState,
filesValue: JSON.parse(this.rowData.filesValue), needId: this.rowData.needId,
state: this.rowData.state,
} }
if (type === 'save') { if (type === 'save') {
params = { params = {
...@@ -168,8 +153,7 @@ export default { ...@@ -168,8 +153,7 @@ export default {
}, },
fnQueryPrjNeedFile() { fnQueryPrjNeedFile() {
console.log('this.rowData', this.rowData) console.log('this.rowData', this.rowData)
let busiFileNameList = JSON.parse(this.rowData.filesValue) let busiFileNameList = this.rowData.fileList?.split(',')
busiFileNameList = busiFileNameList.map((v) => v.name)
const params = { const params = {
busiFileNameList, busiFileNameList,
busiId: this.rowData.prjId, busiId: this.rowData.prjId,
......
...@@ -38,9 +38,6 @@ ...@@ -38,9 +38,6 @@
:columns="columns" :columns="columns"
:key="activeName" :key="activeName"
> >
<template #filesValue="{ data }">
<span>{{ handleFileName(data) }}</span>
</template>
</table-config> </table-config>
</template> </template>
</list-page> </list-page>
...@@ -187,8 +184,7 @@ export default { ...@@ -187,8 +184,7 @@ export default {
{ {
label: '所需材料', label: '所需材料',
width: '200px', width: '200px',
prop: 'filesValue', prop: 'fileList',
__slotName: 'filesValue',
}, },
] ]
if (this.activeName === '1') { if (this.activeName === '1') {
...@@ -337,12 +333,6 @@ export default { ...@@ -337,12 +333,6 @@ export default {
this.rowData = {} this.rowData = {}
this.visible = true this.visible = true
}, },
// 处理所需材料名称显示
handleFileName(scope) {
const filesValue = JSON.parse(scope.row.filesValue)
const str = filesValue.map((v) => v.name)
return str.join(',')
},
// 表格勾选的数据 // 表格勾选的数据
selectionChange(data) { selectionChange(data) {
this.selectRows = data this.selectRows = data
...@@ -400,10 +390,10 @@ export default { ...@@ -400,10 +390,10 @@ export default {
}) })
.then(() => { .then(() => {
const params = { const params = {
...row, needId: row.needId,
state: 1, state: 1,
approveState: 1,
needType: 2, needType: 2,
filesValue: JSON.parse(row.filesValue),
} }
editNeedInfo(params).then((res) => { editNeedInfo(params).then((res) => {
if (res.code === 200) { if (res.code === 200) {
...@@ -428,9 +418,9 @@ export default { ...@@ -428,9 +418,9 @@ export default {
}) })
.then(() => { .then(() => {
const params = { const params = {
...row,
approveState: 2, approveState: 2,
filesValue: JSON.parse(row.filesValue), needId: row.needId,
state: row.state,
} }
editNeedInfo(params).then((res) => { editNeedInfo(params).then((res) => {
if (res.code === 200) { if (res.code === 200) {
...@@ -456,9 +446,9 @@ export default { ...@@ -456,9 +446,9 @@ export default {
}) })
.then(() => { .then(() => {
const params = { const params = {
...row, needId: row.needId,
filesValue: JSON.parse(row.filesValue),
delFlag: 1, delFlag: 1,
state: row.state,
} }
editNeedInfo(params).then((res) => { editNeedInfo(params).then((res) => {
if (res.code === 200) { if (res.code === 200) {
......
...@@ -5,65 +5,171 @@ ...@@ -5,65 +5,171 @@
<div class="search_menu_item_container"> <div class="search_menu_item_container">
<div class="search_menu_item"> <div class="search_menu_item">
<span class="search_title">单位</span> <span class="search_title">单位</span>
<el-select v-model="searchParams.let1" placeholder="请选择" class="search_item"> <el-select
<el-option v-for="item in fuHeDu" :key="item.value" :label="item.label" :value="item.value"></el-option> v-model="searchParams.let1"
placeholder="请选择"
class="search_item"
>
<el-option
v-for="item in fuHeDu"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-select>
</div> </div>
<div class="search_menu_item"> <div class="search_menu_item">
<span class="search_title">部门</span> <span class="search_title">部门</span>
<el-select v-model="searchParams.let2" placeholder="请选择" class="search_item"> <el-select
<el-option v-for="item in fuHeDu" :key="item.value" :label="item.label" :value="item.value"></el-option> v-model="searchParams.let2"
placeholder="请选择"
class="search_item"
>
<el-option
v-for="item in fuHeDu"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-select>
</div> </div>
<div class="search_menu_item"> <div class="search_menu_item">
<span class="search_title">系统名称</span> <span class="search_title">系统名称</span>
<el-select v-model="searchParams.let3" placeholder="请选择" class="search_item"> <el-select
<el-option v-for="item in fuHeDu" :key="item.value" :label="item.label" :value="item.value"></el-option> v-model="searchParams.let3"
placeholder="请选择"
class="search_item"
>
<el-option
v-for="item in fuHeDu"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-select>
</div> </div>
<div class="search_menu_item"> <div class="search_menu_item">
<span class="search_title">建设类型</span> <span class="search_title">建设类型</span>
<el-select v-model="searchParams.let4" placeholder="请选择" class="search_item"> <el-select
<el-option v-for="item in fuHeDu" :key="item.value" :label="item.label" :value="item.value"></el-option> v-model="searchParams.let4"
placeholder="请选择"
class="search_item"
>
<el-option
v-for="item in fuHeDu"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-select>
</div> </div>
</div> </div>
<div class="search_menu_btn_container"> <div class="search_menu_btn_container">
<div class="query_btn" @click="search_table"> <div class="query_btn" @click="search_table">
<img class="btn_icon" src="@/assets/archi-ele-list/search.png" alt="" /> <img
class="btn_icon"
src="@/assets/archi-ele-list/search.png"
alt=""
/>
<p>查询</p> <p>查询</p>
</div> </div>
<div class="reset_btn" @click="reset"> <div class="reset_btn" @click="reset">
<img class="btn_icon" src="@/assets/archi-ele-list/reset.png" alt="" /> <img
class="btn_icon"
src="@/assets/archi-ele-list/reset.png"
alt=""
/>
<p>重置</p> <p>重置</p>
</div> </div>
</div> </div>
</div> </div>
<div class="search_btn"> <div class="search_btn">
<el-button type="primary" size="medium" @click="toDetails">评审情况(概要设计)</el-button> <el-button type="primary" size="medium" @click="toDetails"
>评审情况(概要设计)</el-button
>
</div> </div>
<el-table :height="tableHeight" v-loading="loading" @selection-change="select_table_rows" :data="tableData" stripe border> <el-table
:height="tableHeight"
v-loading="loading"
@selection-change="select_table_rows"
:data="tableData"
stripe
border
>
<el-table-column type="selection" width="55"></el-table-column> <el-table-column type="selection" width="55"></el-table-column>
<el-table-column type="index" label="序号" width="80" align="center"></el-table-column> <el-table-column
<el-table-column prop="deptName" label="单位" align="center"></el-table-column> type="index"
<el-table-column prop="startTime" label="部门" align="center"></el-table-column> label="序号"
<el-table-column prop="policyName" label="系统名称" align="center" width="200" :show-overflow-tooltip="true"></el-table-column> width="80"
<el-table-column prop="policyContent" label="建设类型" align="center"></el-table-column> align="center"
<el-table-column prop="policyContent" label="项目名称" align="center"></el-table-column> ></el-table-column>
<el-table-column prop="policyContent" label="是否续建" align="center"></el-table-column> <el-table-column
<el-table-column prop="policyContent" label="承建单位" align="center"></el-table-column> prop="manageOrgId"
<el-table-column prop="policyContent" label="项目经理" align="center"></el-table-column> label="单位"
align="center"
></el-table-column>
<el-table-column
prop="manageDeptId"
label="部门"
align="center"
></el-table-column>
<el-table-column
prop="appName"
label="系统名称"
align="center"
width="200"
:show-overflow-tooltip="true"
></el-table-column>
<el-table-column
prop="buildType"
label="建设类型"
align="center"
></el-table-column>
<el-table-column
prop="prjName"
label="项目名称"
align="center"
></el-table-column>
<el-table-column
prop="prjPlanClass"
label="是否续建"
align="center"
></el-table-column>
<el-table-column
prop="manageOrgId"
label="承建单位"
align="center"
></el-table-column>
<el-table-column
prop="projectManager"
label="项目经理"
align="center"
></el-table-column>
<el-table-column prop="conformCount" label="一致性评审" align="center"> <el-table-column prop="conformCount" label="一致性评审" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div> <div>{{ scope.row.conformCount }}%</div>
{{ scope.row.conformCount }}%
</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="usefulCount" label="架构遵从" align="center"></el-table-column> <el-table-column
<el-table-column prop="remark" label="关键技术深度评审" align="center"></el-table-column> prop="usefulCount"
<el-table-column prop="remark" label="功能深度评审" align="center"></el-table-column> label="架构遵从"
<el-table-column prop="remark" label="数据深度评审" align="center"></el-table-column> align="center"
></el-table-column>
<el-table-column
prop="remark"
label="关键技术深度评审"
align="center"
></el-table-column>
<el-table-column
prop="remark"
label="功能深度评审"
align="center"
></el-table-column>
<el-table-column
prop="remark"
label="数据深度评审"
align="center"
></el-table-column>
</el-table> </el-table>
<!-- <el-pagination <!-- <el-pagination
background background
...@@ -78,7 +184,8 @@ ...@@ -78,7 +184,8 @@
:page-sizes="pager.sizes" :page-sizes="pager.sizes"
:page-size="pager.size" :page-size="pager.size"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="pager.total"> :total="pager.total"
>
</el-pagination> </el-pagination>
</div> </div>
<el-dialog <el-dialog
...@@ -86,16 +193,38 @@ ...@@ -86,16 +193,38 @@
:visible.sync="add_dialog" :visible.sync="add_dialog"
:center="false" :center="false"
:close-on-click-modal="false" :close-on-click-modal="false"
width="60%"> width="60%"
<el-form :model="ruleForm" ref="form" :rules="rules" style="display: flex;flex-wrap: wrap;"> >
<el-form
:model="ruleForm"
ref="form"
:rules="rules"
style="display: flex; flex-wrap: wrap"
>
<el-form-item label="字典名称:" prop="let1"> <el-form-item label="字典名称:" prop="let1">
<el-input v-no-backslash v-model="ruleForm.let1" maxlength="100"></el-input> <el-input
v-no-backslash
v-model="ruleForm.let1"
maxlength="100"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="字典标识:" prop="let2"> <el-form-item label="字典标识:" prop="let2">
<el-input v-no-backslash v-model="ruleForm.let2" maxlength="100"></el-input> <el-input
v-no-backslash
v-model="ruleForm.let2"
maxlength="100"
></el-input>
</el-form-item> </el-form-item>
<el-form-item class="cross1" label="描述:" prop="let3"> <el-form-item class="cross1" label="描述:" prop="let3">
<el-input v-no-backslash v-model="ruleForm.let3" type="textarea" :rows="3" maxlength="200" show-word-limit placeholder="请输入内容"></el-input> <el-input
v-no-backslash
v-model="ruleForm.let3"
type="textarea"
:rows="3"
maxlength="200"
show-word-limit
placeholder="请输入内容"
></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
...@@ -109,16 +238,15 @@ ...@@ -109,16 +238,15 @@
<script> <script>
import { import {
getJiShuZhengCeGuanLianShiYongTable, getJiShuZhengCeGuanLianShiYongTable,
getDianXingAnLiSelectData getDianXingAnLiSelectData,
} from '@/api/index.js'; getPrelDesInspecteTable,
import { MessageBox, Message } from 'element-ui'; } from '@/api/index.js'
import $ from 'jquery'; import { MessageBox, Message } from 'element-ui'
import $ from 'jquery'
export default { export default {
name: 'reviewSituation', name: 'reviewSituation',
components: { components: {},
},
data() { data() {
return { return {
ruleForm: { ruleForm: {
...@@ -126,9 +254,7 @@ export default { ...@@ -126,9 +254,7 @@ export default {
let2: '', let2: '',
let3: '', let3: '',
}, },
rules: { rules: {},
},
add_dialog: false, add_dialog: false,
is_add_edit: 'add', is_add_edit: 'add',
tableData: [], tableData: [],
...@@ -138,7 +264,7 @@ export default { ...@@ -138,7 +264,7 @@ export default {
current: 1, current: 1,
sizes: [10, 20, 50, 100, 200], sizes: [10, 20, 50, 100, 200],
size: 10, size: 10,
total: 20 //总条数 total: 20, //总条数
}, },
tableHeight: null, tableHeight: null,
searchParams: { searchParams: {
...@@ -148,101 +274,116 @@ export default { ...@@ -148,101 +274,116 @@ export default {
let4: null, let4: null,
}, },
fuHeDu: [], fuHeDu: [],
selectRows: [] selectRows: [],
}
};
}, },
mounted(){ mounted() {
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
this.set_table_height(); this.set_table_height()
}) })
this.set_table_height(); this.set_table_height()
this.get_table(); this.get_table()
this.get_fu_he_du_select().then(res => { this.get_fu_he_du_select().then((res) => {
this.fuHeDu = res; this.fuHeDu = res
}) })
}, },
methods: { methods: {
select_table_rows(data){//表格的勾选 select_table_rows(data) {
this.selectRows = data; //表格的勾选
this.selectRows = data
}, },
toDetails() { toDetails() {
if(this.selectRows.length == 0) { if (this.selectRows.length == 0) {
Message({ Message({
type: 'warning', type: 'warning',
message: '请选择一条数据!' message: '请选择一条数据!',
}); })
return; return
} }
if(this.selectRows.length >1) { if (this.selectRows.length > 1) {
Message({ Message({
type: 'warning', type: 'warning',
message: '只能选择一条数据!' message: '只能选择一条数据!',
}); })
return; return
} }
this.$router.push( `/main/reviewSituationDetails`, () => {}, () => {} ); this.$router.push({
path: '/main/reviewSituationDetails',
query: {
row: JSON.stringify(this.selectRows[0]),
}, },
save_dicy() {//保存字典 })
this.$refs.form.validate(valid => { },
if(valid) { save_dicy() {
//保存字典
}else { this.$refs.form.validate((valid) => {
return false; if (valid) {
} else {
return false
} }
}); })
}, },
get_fu_he_du_select() {//符合度下拉 get_fu_he_du_select() {
//符合度下拉
const params = { const params = {
key: "tech_compliance" key: 'tech_compliance',
} }
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
getDianXingAnLiSelectData(params).then(res => { getDianXingAnLiSelectData(params).then((res) => {
if(res.code == 200) { if (res.code == 200) {
resolve(res.data); resolve(res.data)
} }
}) })
}) })
}, },
set_table_height() {//动态设置表格高度 set_table_height() {
const table_container_height = $(".table_container").height(); //动态设置表格高度
const search_menu_height = $(".search_menu").height(); const table_container_height = $('.table_container').height()
const search_btn_height = $(".search_btn").outerHeight(true); const search_menu_height = $('.search_menu').height()
this.tableHeight = table_container_height - search_menu_height - search_btn_height - 90 + 'px'; const search_btn_height = $('.search_btn').outerHeight(true)
this.tableHeight =
table_container_height -
search_menu_height -
search_btn_height -
90 +
'px'
}, },
search_table() {//搜索 search_table() {
this.pager.current = 1; //搜索
this.get_table(); this.pager.current = 1
this.get_table()
}, },
reset() {//重置 reset() {
this.searchParams.let1 = null; //重置
this.searchParams.let2 = null; this.searchParams.let1 = null
this.searchParams.let3 = null; this.searchParams.let2 = null
this.searchParams.let4 = null; this.searchParams.let3 = null
this.searchParams.let4 = null
}, },
// 每页条数改变 // 每页条数改变
handleSizeChange(val) { handleSizeChange(val) {
this.pager.current = 1; this.pager.current = 1
this.pager.size = val; this.pager.size = val
this.get_table(); this.get_table()
}, },
//当前页码改变 //当前页码改变
handleCurrentChange(val) { handleCurrentChange(val) {
this.pager.current = val; this.pager.current = val
this.get_table(); this.get_table()
}, },
get_table() {//查询表格数据 get_table() {
this.loading = true; //查询表格数据
this.loading = true
const params = { const params = {
"policyName": this.searchParams.let1, policyName: this.searchParams.let1,
"conformCount": this.searchParams.let2, conformCount: this.searchParams.let2,
"conformCount": this.searchParams.let3, conformCount: this.searchParams.let3,
"conformCount": this.searchParams.let4, conformCount: this.searchParams.let4,
"current": this.pager.current, current: this.pager.current,
"pageSize": this.pager.size, pageSize: this.pager.size,
}; }
getJiShuZhengCeGuanLianShiYongTable(params).then(res => { getPrelDesInspecteTable(params).then((res) => {
this.loading = false; this.loading = false
console.log(res) console.log(res)
// res.records.map(item => { // res.records.map(item => {
// const startTime_year = String(new Date(item.startTime).getFullYear()); // const startTime_year = String(new Date(item.startTime).getFullYear());
...@@ -259,170 +400,166 @@ export default { ...@@ -259,170 +400,166 @@ export default {
// }); // });
// this.tableData = res.records; // this.tableData = res.records;
// }) // })
this.tableData = res.records; this.tableData = res.records
this.pager.current = res.current; this.pager.current = res.current
this.pager.total = res.total; this.pager.total = res.total
this.pager.size = res.size; this.pager.size = res.size
// if(res.code == 200) { // if(res.code == 200) {
// this.loading = false; // this.loading = false;
// console.log(res) // console.log(res)
// // this.tableData = res. // // this.tableData = res.
// } // }
}); })
},
}, },
}
} }
</script> </script>
<style> <style>
.confirmClass{ .confirmClass {
background-color: #0D867F !important; background-color: #0d867f !important;
} }
.el-message-box__content{ .el-message-box__content {
padding: 60px 15px 60px 15px; padding: 60px 15px 60px 15px;
} }
</style> </style>
<style scoped> <style scoped>
.version_btn{ .version_btn {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
width: 84px; width: 84px;
height: 32px; height: 32px;
background: rgba(13,134,127,0.1); background: rgba(13, 134, 127, 0.1);
border-radius: 6px 6px 6px 6px; border-radius: 6px 6px 6px 6px;
/* border: 1px solid #0D867F; */ /* border: 1px solid #0D867F; */
font-size: 14px; font-size: 14px;
color: #0D867F; color: #0d867f;
cursor: pointer; cursor: pointer;
margin-left: 15px; margin-left: 15px;
} }
.cancel_version_btn{ .cancel_version_btn {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
width: 104px; width: 104px;
height: 32px; height: 32px;
background: rgba(13,134,127,0.1); background: rgba(13, 134, 127, 0.1);
border-radius: 6px 6px 6px 6px; border-radius: 6px 6px 6px 6px;
/* border: 1px solid #0D867F; */ /* border: 1px solid #0D867F; */
font-size: 14px; font-size: 14px;
color: #0D867F; color: #0d867f;
cursor: pointer; cursor: pointer;
margin-left: 15px; margin-left: 15px;
} }
.reviewSituation{ .reviewSituation {
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
} }
.el-button--primary{ .el-button--primary {
background: rgba(13,134,127,0.1); background: rgba(13, 134, 127, 0.1);
color: #0D867F; color: #0d867f;
border: 0; border: 0;
} }
/deep/ .el-input-group__append{ /deep/ .el-input-group__append {
background-color: #0D867F; background-color: #0d867f;
color: #fff; color: #fff;
cursor: pointer; cursor: pointer;
} }
.search_btn{ .search_btn {
width: 100%; width: 100%;
display: flex; display: flex;
margin-top: 50px; margin-top: 50px;
margin-bottom: 20px; margin-bottom: 20px;
} }
.search_menu{ .search_menu {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin-bottom: 50px; margin-bottom: 50px;
} }
.search_menu_item_container{ .search_menu_item_container {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.search_menu_btn_container{ .search_menu_btn_container {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.search_menu_item{ .search_menu_item {
display: flex; display: flex;
align-items: center; align-items: center;
width: 344px; width: 344px;
} }
.search_title{ .search_title {
/* width: 20%; */ /* width: 20%; */
flex-shrink: 0; flex-shrink: 0;
margin-right: 15px; margin-right: 15px;
} }
.search_item{ .search_item {
width: 60%; width: 60%;
} }
.query_btn{ .query_btn {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
width: 76px; width: 76px;
height: 32px; height: 32px;
background: rgba(13,134,127,1); background: rgba(13, 134, 127, 1);
border-radius: 6px 6px 6px 6px; border-radius: 6px 6px 6px 6px;
border: 1px solid #0D867F; border: 1px solid #0d867f;
font-size: 14px; font-size: 14px;
color: #fff; color: #fff;
margin-right: 10px; margin-right: 10px;
cursor: pointer; cursor: pointer;
}
} .reset_btn {
.reset_btn{
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
width: 76px; width: 76px;
height: 32px; height: 32px;
background: rgba(244,244,244,1); background: rgba(244, 244, 244, 1);
border-radius: 6px 6px 6px 6px; border-radius: 6px 6px 6px 6px;
border: 1px solid #ccc; border: 1px solid #ccc;
font-size: 14px; font-size: 14px;
color: #666; color: #666;
cursor: pointer; cursor: pointer;
}
} .btn_icon {
.btn_icon{
margin-right: 10px; margin-right: 10px;
} }
.table_container{ .table_container {
width: 97%; width: 97%;
height: calc(100% - 40px); height: calc(100% - 40px);
margin-top: 20px; margin-top: 20px;
} }
.el-pagination{ .el-pagination {
margin-top: 30px; margin-top: 30px;
} }
/deep/ .el-pagination.is-background .el-pager li:not(.disabled).active{ /deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
background-color: #0D867F; background-color: #0d867f;
} }
/deep/ .el-dialog__header{ /deep/ .el-dialog__header {
background-color: #0D867F; background-color: #0d867f;
text-align: left; text-align: left;
} }
/deep/ .el-dialog__title{ /deep/ .el-dialog__title {
color: #fff; color: #fff;
} }
/deep/ .el-dialog__close { /deep/ .el-dialog__close {
color: #fff; color: #fff;
} }
.greenButton{ .greenButton {
background-color: #0D867F; background-color: #0d867f;
color: #fff; color: #fff;
} }
.el-form-item{ .el-form-item {
display: flex; display: flex;
align-items: center; align-items: center;
width: 33%; width: 33%;
} }
</style> </style>
...@@ -15,89 +15,122 @@ ...@@ -15,89 +15,122 @@
</div> </div>
</div> </div>
<div class="bottom_container"> <div class="bottom_container">
<div style="padding-right: 20px;text-align: left;margin: 15px 0;display: flex;align-items: center;justify-content: space-between;"> <div
style="
padding-right: 20px;
text-align: left;
margin: 15px 0;
display: flex;
align-items: center;
justify-content: space-between;
"
>
<div> <div>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"></el-divider>
<span style="margin-right: 50px;">评审意见</span> <span style="margin-right: 50px">评审意见</span>
<el-radio v-model="radio" label="1">通过</el-radio> <el-radio v-model="radio" label="1">通过</el-radio>
<el-radio v-model="radio" label="2">不通过</el-radio> <el-radio v-model="radio" label="2">不通过</el-radio>
</div> </div>
<el-button type="primary" size="medium">带入批准</el-button> <el-button type="primary" size="medium">带入批准</el-button>
<el-button type="primary" size="medium" @click="fnSave()"
>保存意见</el-button
>
</div> </div>
<el-input type="textarea" :rows="4" v-model="textarea" style="width: 98%;"></el-input> <el-input
type="textarea"
:rows="4"
v-model="textarea"
style="width: 98%"
></el-input>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { import { savePrelDesInspecte } from '@/api/index.js'
getArchiViewManageTable import { MessageBox, Message } from 'element-ui'
} from '@/api/index.js';
import { MessageBox, Message } from 'element-ui';
export default { export default {
name: 'tab1', name: 'tab1',
components: { components: {},
},
data() { data() {
return { return {
radio: '1', radio: '1',
textarea: '', textarea: '',
select1: null, select1: null,
select2: null, select2: null,
}; row: {},
}
}, },
mounted(){ mounted() {
this.row = JSON.parse(this.$route.query.row)
}, },
methods: { methods: {
fnSave() {
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
const params = {
reviewState: 0,
reviewSuggestion: this.textarea,
prjId: row.prjId,
reviewEnum: 'CONFORMANCE_REVIEW',
} }
savePrelDesInspecte(params).then((res) => {
loading.close()
if (res.code === 200) {
this.$message.success('保存成功')
} else {
this.$message.error(res.msg)
}
})
},
},
} }
</script> </script>
<style scoped> <style scoped>
.tab1{ .tab1 {
height: 100%; height: 100%;
} }
.content{ .content {
display: flex; display: flex;
height: 77%; height: 77%;
} }
.leftSelect{ .leftSelect {
position: absolute; position: absolute;
top: 44px; top: 44px;
left: 22px; left: 22px;
} }
.rightSelect{ .rightSelect {
position: absolute; position: absolute;
top: 44px; top: 44px;
left: 22px; left: 22px;
} }
.el-button--primary{ .el-button--primary {
background: rgba(13,134,127,1); background: rgba(13, 134, 127, 1);
color: #fff; color: #fff;
border: 0; border: 0;
} }
/deep/ .el-alert--success.is-light{ /deep/ .el-alert--success.is-light {
background-color: #D5F5F3; background-color: #d5f5f3;
color: #000; color: #000;
} }
/deep/ .el-divider--vertical{ /deep/ .el-divider--vertical {
width: 4px; width: 4px;
background-color: #0D867F; background-color: #0d867f;
} }
.left_container{ .left_container {
width: 49%; width: 49%;
border: 1px solid red; border: 1px solid red;
margin-right: 1%; margin-right: 1%;
position: relative; position: relative;
} }
.right_container{ .right_container {
width: 49%; width: 49%;
border: 1px solid red; border: 1px solid red;
position: relative; position: relative;
} }
.bottom_container{ .bottom_container {
}
}
</style> </style>
...@@ -9,73 +9,104 @@ ...@@ -9,73 +9,104 @@
</div> </div>
</div> </div>
<div class="bottom_container"> <div class="bottom_container">
<div style="padding-right: 20px;text-align: left;margin: 15px 0;display: flex;align-items: center;justify-content: space-between;"> <div
style="
padding-right: 20px;
text-align: left;
margin: 15px 0;
display: flex;
align-items: center;
justify-content: space-between;
"
>
<div> <div>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"></el-divider>
<span style="margin-right: 50px;">审查意见</span> <span style="margin-right: 50px">审查意见</span>
</div> </div>
<el-button type="primary" size="medium">保存意见</el-button> <el-button type="primary" size="medium" @click="fnSave()"
>保存意见</el-button
>
</div> </div>
<el-input type="textarea" :rows="4" v-model="textarea" style="width: 98%;"></el-input> <el-input
type="textarea"
:rows="4"
v-model="textarea"
style="width: 98%"
></el-input>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { import { savePrelDesInspecte } from '@/api/index.js'
getArchiViewManageTable
} from '@/api/index.js';
import { MessageBox, Message } from 'element-ui';
export default { export default {
name: 'tab3', name: 'tab3',
components: { components: {},
},
data() { data() {
return { return {
radio: '1', radio: '1',
textarea: '' textarea: '',
}; row: {},
}
}, },
mounted(){ mounted() {
this.row = JSON.parse(this.$route.query.row)
}, },
methods: { methods: {
fnSave() {
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
const params = {
reviewState: 0,
reviewSuggestion: this.textarea,
prjId: row.prjId,
reviewEnum: 'KEY_TECHNOLOGY_REVIEW',
}
savePrelDesInspecte(params).then((res) => {
loading.close()
if (res.code === 200) {
this.$message.success('保存成功')
} else {
this.$message.error(res.msg)
} }
})
},
},
} }
</script> </script>
<style scoped> <style scoped>
.tab3{ .tab3 {
height: 100%; height: 100%;
} }
.content{ .content {
display: flex; display: flex;
height: 77%; height: 77%;
} }
.el-button--primary{ .el-button--primary {
background: rgba(13,134,127,1); background: rgba(13, 134, 127, 1);
color: #fff; color: #fff;
border: 0; border: 0;
} }
/deep/ .el-alert--success.is-light{ /deep/ .el-alert--success.is-light {
background-color: #D5F5F3; background-color: #d5f5f3;
color: #000; color: #000;
} }
/deep/ .el-divider--vertical{ /deep/ .el-divider--vertical {
width: 4px; width: 4px;
background-color: #0D867F; background-color: #0d867f;
} }
.left_container{ .left_container {
width: 49%; width: 49%;
border: 1px solid red; border: 1px solid red;
margin-right: 1%; margin-right: 1%;
} }
.right_container{ .right_container {
width: 49%; width: 49%;
border: 1px solid red; border: 1px solid red;
} }
.bottom_container{ .bottom_container {
}
}
</style> </style>
...@@ -9,73 +9,104 @@ ...@@ -9,73 +9,104 @@
</div> </div>
</div> </div>
<div class="bottom_container"> <div class="bottom_container">
<div style="padding-right: 20px;text-align: left;margin: 15px 0;display: flex;align-items: center;justify-content: space-between;"> <div
style="
padding-right: 20px;
text-align: left;
margin: 15px 0;
display: flex;
align-items: center;
justify-content: space-between;
"
>
<div> <div>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"></el-divider>
<span style="margin-right: 50px;">评审意见</span> <span style="margin-right: 50px">评审意见</span>
</div> </div>
<el-button type="primary" size="medium">保存意见</el-button> <el-button type="primary" size="medium" @click="fnSave()"
>保存意见</el-button
>
</div> </div>
<el-input type="textarea" :rows="4" v-model="textarea" style="width: 98%;"></el-input> <el-input
type="textarea"
:rows="4"
v-model="textarea"
style="width: 98%"
></el-input>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { import { savePrelDesInspecte } from '@/api/index.js'
getArchiViewManageTable
} from '@/api/index.js';
import { MessageBox, Message } from 'element-ui';
export default { export default {
name: 'tab4', name: 'tab4',
components: { components: {},
},
data() { data() {
return { return {
radio: '1', radio: '1',
textarea: '' textarea: '',
}; row: {},
}
}, },
mounted(){ mounted() {
this.row = JSON.parse(this.$route.query.row)
}, },
methods: { methods: {
fnSave() {
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
const params = {
reviewState: 0,
reviewSuggestion: this.textarea,
prjId: row.prjId,
reviewEnum: 'FUNCTIONAL_DEPTH_REVIEW',
}
savePrelDesInspecte(params).then((res) => {
loading.close()
if (res.code === 200) {
this.$message.success('保存成功')
} else {
this.$message.error(res.msg)
} }
})
},
},
} }
</script> </script>
<style scoped> <style scoped>
.tab4{ .tab4 {
height: 100%; height: 100%;
} }
.content{ .content {
display: flex; display: flex;
height: 77%; height: 77%;
} }
.el-button--primary{ .el-button--primary {
background: rgba(13,134,127,1); background: rgba(13, 134, 127, 1);
color: #fff; color: #fff;
border: 0; border: 0;
} }
/deep/ .el-alert--success.is-light{ /deep/ .el-alert--success.is-light {
background-color: #D5F5F3; background-color: #d5f5f3;
color: #000; color: #000;
} }
/deep/ .el-divider--vertical{ /deep/ .el-divider--vertical {
width: 4px; width: 4px;
background-color: #0D867F; background-color: #0d867f;
} }
.left_container{ .left_container {
width: 49%; width: 49%;
border: 1px solid red; border: 1px solid red;
margin-right: 1%; margin-right: 1%;
} }
.right_container{ .right_container {
width: 49%; width: 49%;
border: 1px solid red; border: 1px solid red;
} }
.bottom_container{ .bottom_container {
}
}
</style> </style>
...@@ -9,73 +9,104 @@ ...@@ -9,73 +9,104 @@
</div> </div>
</div> </div>
<div class="bottom_container"> <div class="bottom_container">
<div style="padding-right: 20px;text-align: left;margin: 15px 0;display: flex;align-items: center;justify-content: space-between;"> <div
style="
padding-right: 20px;
text-align: left;
margin: 15px 0;
display: flex;
align-items: center;
justify-content: space-between;
"
>
<div> <div>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"></el-divider>
<span style="margin-right: 50px;">评审意见</span> <span style="margin-right: 50px">评审意见</span>
</div> </div>
<el-button type="primary" size="medium">保存意见</el-button> <el-button type="primary" size="medium" @click="fnSave()"
>保存意见</el-button
>
</div> </div>
<el-input type="textarea" :rows="4" v-model="textarea" style="width: 98%;"></el-input> <el-input
type="textarea"
:rows="4"
v-model="textarea"
style="width: 98%"
></el-input>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { import { savePrelDesInspecte } from '@/api/index.js'
getArchiViewManageTable
} from '@/api/index.js';
import { MessageBox, Message } from 'element-ui';
export default { export default {
name: 'tab5', name: 'tab5',
components: { components: {},
},
data() { data() {
return { return {
radio: '1', radio: '1',
textarea: '' textarea: '',
}; row: {},
}
}, },
mounted(){ mounted() {
this.row = JSON.parse(this.$route.query.row)
}, },
methods: { methods: {
fnSave() {
const loading = this.$loading({
lock: true,
text: '保存中',
spinner: 'el-icon-loading',
})
const params = {
reviewState: 0,
reviewSuggestion: this.textarea,
prjId: row.prjId,
reviewEnum: 'DATA_DEPTH_REVIEW',
}
savePrelDesInspecte(params).then((res) => {
loading.close()
if (res.code === 200) {
this.$message.success('保存成功')
} else {
this.$message.error(res.msg)
} }
})
},
},
} }
</script> </script>
<style scoped> <style scoped>
.tab5{ .tab5 {
height: 100%; height: 100%;
} }
.content{ .content {
display: flex; display: flex;
height: 77%; height: 77%;
} }
.el-button--primary{ .el-button--primary {
background: rgba(13,134,127,1); background: rgba(13, 134, 127, 1);
color: #fff; color: #fff;
border: 0; border: 0;
} }
/deep/ .el-alert--success.is-light{ /deep/ .el-alert--success.is-light {
background-color: #D5F5F3; background-color: #d5f5f3;
color: #000; color: #000;
} }
/deep/ .el-divider--vertical{ /deep/ .el-divider--vertical {
width: 4px; width: 4px;
background-color: #0D867F; background-color: #0d867f;
} }
.left_container{ .left_container {
width: 49%; width: 49%;
border: 1px solid red; border: 1px solid red;
margin-right: 1%; margin-right: 1%;
} }
.right_container{ .right_container {
width: 49%; width: 49%;
border: 1px solid red; border: 1px solid red;
} }
.bottom_container{ .bottom_container {
}
}
</style> </style>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!