Commit d45d3b0b authored by jiaxu.yan's avatar jiaxu.yan

feat(信息管理): 标准库管理 审查内容库 测试场景库管理 我的待审

parent 2667fa05
...@@ -7,8 +7,9 @@ const role = require('./role') ...@@ -7,8 +7,9 @@ const role = require('./role')
const article = require('./article') const article = require('./article')
const search = require('./remote-search') const search = require('./remote-search')
const setting = require('./setting') const setting = require('./setting')
const review = require('./review')
const mocks = [...task,...setting] const mocks = [...task, ...setting, ...review]
// for front mock // for front mock
// please use it cautiously, it will redefine XMLHttpRequest, // please use it cautiously, it will redefine XMLHttpRequest,
......
module.exports = [
{
url: '/wait-list',
type: 'get',
response: config => {
temp = [
{
reviewNo: '20231209001',
reviewType: '新增场景',
type: 1,
sceneCategory: '车型审查',
sceneContent: '制度发布会音频文件',
reviewer: '赵晓东,盖献康,刘佳',
waitingTime: '1天12小时',
createTime: '2023-11-24 10:14:08'
},
{
reviewNo: '20231209002',
reviewType: '修改场景',
type: 2,
sceneCategory: '体系审查',
sceneContent: 'TBOX-蜂窝以太网接口',
reviewer: '赵晓东,尚志伟,闫嘉旭',
waitingTime: '1天13小时',
createTime: '2023-11-22 13:56:34'
},
{
reviewNo: '20231209003',
reviewType: '删除场景',
type: 3,
sceneCategory: '体系审查',
sceneContent: 'TBOX-车辆定位系统',
reviewer: '周朋,李宇涵,李亚涛',
waitingTime: '2天1小时',
createTime: '2023-11-13 17:26:54'
},
{
reviewNo: '20231209004',
reviewType: '修改场景',
type: 2,
sceneCategory: '车型审查',
sceneContent: '发布会车辆制动相关样品',
reviewer: '张鹏伟,李旭,张鑫',
waitingTime: '2天1小时',
createTime: '2023-11-12 14:43:22'
},
{
reviewNo: '20231209005',
reviewType: '删除场景',
type: 3,
sceneCategory: '车型审查',
sceneContent: '保障智能网联汽车时空数据存储文件',
reviewer: '孟同伟,孙钊涵,邵亮',
waitingTime: '3天3小时',
createTime: '2023-11-06 12:45:23'
},
{
reviewNo: '20231209001',
reviewType: '删除场景',
sceneCategory: '车型审查',
sceneContent: '智能网联汽车的访问控制-加密操作硬件',
reviewer: '李旭,孟同伟,张鑫',
waitingTime: '5天5小时',
createTime: '2023-11-02 08:12:56'
}
]
return {
rows: temp,
code: 200,
total: 10
}
}
}
]
File added
...@@ -16,9 +16,24 @@ ...@@ -16,9 +16,24 @@
<el-form-item label="审查细则" prop="deptName"> <el-form-item label="审查细则" prop="deptName">
车辆制造商是否能够提供/展示汽车信息安全管理制度文件,制度文件应定义信息安全政策以及信息安全规则和流程,信息安全政策应致力于管理与车辆制造商活动相关的信息安全风险。 车辆制造商是否能够提供/展示汽车信息安全管理制度文件,制度文件应定义信息安全政策以及信息安全规则和流程,信息安全政策应致力于管理与车辆制造商活动相关的信息安全风险。
</el-form-item> </el-form-item>
<el-form-item label="新增场景" prop="deptName"> <el-form-item v-if="type == 1" label="新增场景" prop="deptName">
<audio ref="audio" controls> <audio ref="audio" controls>
<source src="/扫描成功.mp3" /> <source src="/test.mp3" />
</audio>
</el-form-item>
<el-form-item v-if="type == 2" label="修改前场景" prop="deptName">
<audio ref="audio" controls>
<source src="/test.mp3" />
</audio>
</el-form-item>
<el-form-item v-if="type == 2" label="修改后场景" prop="deptName">
<audio ref="audio" controls>
<source src="/test.mp3" />
</audio>
</el-form-item>
<el-form-item v-if="type == 3" label="删除场景" prop="deptName">
<audio ref="audio" controls>
<source src="/test.mp3" />
</audio> </audio>
</el-form-item> </el-form-item>
<el-form-item label="备注信息" prop="deptName"> <el-form-item label="备注信息" prop="deptName">
...@@ -75,38 +90,10 @@ ...@@ -75,38 +90,10 @@
<el-col :span="20"> <el-col :span="20">
<message-item></message-item> <message-item></message-item>
<message-item></message-item> <message-item></message-item>
<message-item></message-item>
</el-col> </el-col>
</el-row> </el-row>
</el-col> </el-col>
</el-row> </el-row>
<div class="subtitle">讨论区</div>
<el-row :gutter="20" class="mt10" justify="center" type="flex">
<el-col :span="22">
<div class="message-box mt5">
<el-avatar :size="60" class="mr10" :src="circleUrl"></el-avatar>
<div style="width: 100%">
<el-input
v-model="model.deptName"
placeholder="输入评论内容"
clearable
type="textarea"
:autosize="false"
show-word-limit
:maxlength="100"
:rows="5"
/>
<el-button size="mini" class="mt5" type="primary" plain
>发布评论</el-button
>
<div class="subtitle mt10">全部评论5条</div>
<talk-item> </talk-item>
<talk-item :has-child="true"> </talk-item>
<talk-item> </talk-item>
</div>
</div>
</el-col>
</el-row>
</page-standard> </page-standard>
</template> </template>
<script> <script>
...@@ -122,6 +109,7 @@ export default { ...@@ -122,6 +109,7 @@ export default {
data() { data() {
return { return {
model: {}, model: {},
type: 0,
circleUrl: circleUrl:
'https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png' 'https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png'
} }
...@@ -134,6 +122,9 @@ export default { ...@@ -134,6 +122,9 @@ export default {
} }
} }
}, },
created() {
this.type = this.$route.query.type
},
methods: { methods: {
handleAdd() { handleAdd() {
this.dialogManger.dialogVisible = true this.dialogManger.dialogVisible = true
......
...@@ -70,10 +70,11 @@ ...@@ -70,10 +70,11 @@
v-loading="loading" v-loading="loading"
style="width: 100%; min-height: 50vh" style="width: 100%; min-height: 50vh"
border border
:scroll-x="'1500px'"
:default-sort="{ prop: 'createTime', order: 'descending' }" :default-sort="{ prop: 'createTime', order: 'descending' }"
:data="tableData" :data="tableData"
> >
<el-table-column width="100" label="序号" align="center"> <el-table-column width="60" label="序号" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.$index + 1 }}</span> <span>{{ scope.$index + 1 }}</span>
</template> </template>
...@@ -81,19 +82,22 @@ ...@@ -81,19 +82,22 @@
<el-table-column <el-table-column
label="评审单编号" label="评审单编号"
sortable sortable
min-width="200"
align="center" align="center"
prop="reviewNo" prop="reviewNo"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="评审类型" label="评审类型"
min-width="200"
sortable sortable
align="center" align="center"
prop="reviewType" prop="reviewType"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="场景分类" label="场景类型"
min-width="200"
sortable sortable
align="center" align="center"
prop="sceneCategory" prop="sceneCategory"
...@@ -101,10 +105,16 @@ ...@@ -101,10 +105,16 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="场景内容" label="场景内容"
min-width="200"
align="center" align="center"
prop="sceneContent" prop="sceneContent"
></el-table-column> ></el-table-column>
<el-table-column label="评审人员" align="center" prop="reviewer"> <el-table-column
label="评审人员"
min-width="200"
align="center"
prop="reviewer"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="等待时长" label="等待时长"
...@@ -115,12 +125,15 @@ ...@@ -115,12 +125,15 @@
<el-table-column <el-table-column
label="发起时间" label="发起时间"
sortable sortable
min-width="200"
align="left" align="left"
prop="createTime" prop="createTime"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
label="操作" label="操作"
align="left" align="left"
min-width="160"
fixed="right"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
> >
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -207,63 +220,7 @@ export default { ...@@ -207,63 +220,7 @@ export default {
deptName: '' deptName: ''
}, },
tableData: [], tableData: [],
tableData1: [ listUrl: '/wait-list',
{
reviewNo: '20231209001',
reviewType: '新增场景',
sceneCategory: '车型审查',
sceneContent: '制度发布会音频文件',
reviewer: '赵晓东,盖献康,刘佳',
waitingTime: '1天12小时',
createTime: '2023-11-24 10:14:08'
},
{
reviewNo: '20231209002',
reviewType: '新增场景',
sceneCategory: '体系审查',
sceneContent: 'TBOX-蜂窝以太网接口',
reviewer: '赵晓东,尚志伟,闫嘉旭',
waitingTime: '1天13小时',
createTime: '2023-11-22 13:56:34'
},
{
reviewNo: '20231209003',
reviewType: '修改场景',
sceneCategory: '体系审查',
sceneContent: 'TBOX-车辆定位系统',
reviewer: '周朋,李宇涵,李亚涛',
waitingTime: '2天1小时',
createTime: '2023-11-13 17:26:54'
},
{
reviewNo: '20231209004',
reviewType: '修改场景',
sceneCategory: '车型审查',
sceneContent: '发布会车辆制动相关样品',
reviewer: '张鹏伟,李旭,张鑫',
waitingTime: '2天1小时',
createTime: '2023-11-12 14:43:22'
},
{
reviewNo: '20231209005',
reviewType: '删除场景',
sceneCategory: '车型审查',
sceneContent: '保障智能网联汽车时空数据存储文件',
reviewer: '孟同伟,孙钊涵,邵亮',
waitingTime: '3天3小时',
createTime: '2023-11-06 12:45:23'
},
{
reviewNo: '20231209001',
reviewType: '删除场景',
sceneCategory: '车型审查',
sceneContent: '智能网联汽车的访问控制-加密操作硬件',
reviewer: '李旭,孟同伟,张鑫',
waitingTime: '5天5小时',
createTime: '2023-11-02 08:12:56'
}
],
listUrl: '/system/role/list',
showSearch: true, showSearch: true,
dialogManger: { dialogManger: {
dialogVisible: false, dialogVisible: false,
...@@ -322,8 +279,11 @@ export default { ...@@ -322,8 +279,11 @@ export default {
}) })
}, },
/* 去评审按钮页面跳转*/ /* 去评审按钮页面跳转*/
handleReview() { handleReview(row) {
this.$router.push({ path: '/review/sceneReview' }) this.$router.push({
path: '/review/sceneReview',
query: { type: row.type }
})
}, },
/* 打开移交弹窗*/ /* 打开移交弹窗*/
handleHandOver(row) { handleHandOver(row) {
...@@ -341,39 +301,6 @@ export default { ...@@ -341,39 +301,6 @@ export default {
this.queryParams.configType = '' this.queryParams.configType = ''
this.queryParams.changjingType = '' this.queryParams.changjingType = ''
this.handleQuery() this.handleQuery()
},
/* 假数据筛选*/
loadData() {
this.loading = true
setTimeout(() => {
/* 过滤器*/
this.tableData = this.tableData1.filter(item => {
let flag = true
if (this.queryParams.deptName) {
flag &=
item.sceneContent.indexOf(this.queryParams.deptName) > -1 ||
item.reviewNo.indexOf(this.queryParams.deptName) > -1
}
if (this.queryParams.configType) {
flag &=
item.reviewType ===
selectDictLabel(
this.dict.type.review_type,
this.queryParams.configType
)
}
if (this.queryParams.changjingType) {
flag &=
item.sceneCategory ===
selectDictLabel(
this.dict.type.scene_type,
this.queryParams.changjingType
)
}
return flag
})
this.loading = false
}, 1000)
} }
} }
} }
......
...@@ -82,40 +82,70 @@ ...@@ -82,40 +82,70 @@
v-loading="loading" v-loading="loading"
style="width: 100%; min-height: 50vh" style="width: 100%; min-height: 50vh"
border border
:scroll-x="'1500px'"
:default-sort="{ prop: 'createTime', order: 'descending' }" :default-sort="{ prop: 'createTime', order: 'descending' }"
:data="tableData" :data="tableData"
> >
<el-table-column <el-table-column
type="index" type="index"
width="100" width="60"
label="序号" label="序号"
sortable sortable
align="left" align="center"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="企业名称" label="企业名称"
prop="companyName" prop="companyName"
min-width="200"
sortable sortable
align="left" align="left"
> >
</el-table-column> </el-table-column>
<el-table-column label="地址" prop="address" align="left"> <el-table-column label="地址" min-width="200" prop="address" align="left">
</el-table-column> </el-table-column>
<el-table-column label="邮编" prop="mailCode" align="left"> <el-table-column
label="邮编"
prop="mailCode"
min-width="200"
align="left"
>
</el-table-column> </el-table-column>
<el-table-column label="企业联系人" prop="companyPeople" align="left"> <el-table-column
label="企业联系人"
prop="companyPeople"
min-width="200"
align="left"
>
</el-table-column> </el-table-column>
<el-table-column label="联系电话" prop="phoneNum" align="left"> <el-table-column
label="联系电话"
prop="phoneNum"
min-width="200"
align="left"
>
</el-table-column> </el-table-column>
<el-table-column label="创建人员" prop="phoneNum" align="left"> <el-table-column
label="创建人员"
prop="phoneNum"
min-width="200"
align="left"
>
</el-table-column> </el-table-column>
<el-table-column label="创建时间" prop="createTime" align="left" sortable> <el-table-column
label="创建时间"
prop="createTime"
min-width="200"
align="left"
sortable
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="操作" label="操作"
align="left" align="left"
min-width="160"
sortable sortable
fixed="right"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
> >
<template slot-scope="scope"> <template slot-scope="scope">
......
<template>
<el-dialog
:visible.sync="dialogManger.dialogVisible"
:title="modelTitle"
width="1200"
append-to-body
destroy-on-close
:before-close="handleClose"
>
<el-form ref="form" :model="model" :rules="rules">
<el-form-item label="审查分类" prop="status">
<el-select
v-model="model.status"
style="width: 100%"
placeholder="请选择"
clearable
>
<el-option
v-for="dict in dict.type.sys_detailed_classification"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="标准要求" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
maxlength="100"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item label="审查要点" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
maxlength="100"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item label="审查细则" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
maxlength="100"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item label="关联场景" prop="status">
<br />
<template v-for="(item, key) in model.scene">
<el-row :key="key" class="mb10" :gutter="20">
<el-col :span="22">
<el-input v-model="model.text" placeholder="请输入" clearable />
</el-col>
<el-col :span="2">
<template v-if="key === 0">
<i class="icon el-icon-circle-plus-outline" @click="add()"></i>
</template>
<template v-else>
<i class="icon el-icon-remove-outline" @click="remove(key)"></i>
</template>
</el-col>
</el-row>
</template>
</el-form-item>
</el-form>
<detail-select
:dialog-manger="detailManger"
@close="detailManger.dialogVisible = false"
></detail-select>
<point-select
:dialog-manger="pointManger"
@close="pointManger.dialogVisible = false"
></point-select>
<div slot="footer">
<el-button @click="handleClose()"> 取消 </el-button>
<el-button type="primary" @click="handleConfirm()"> 保存 </el-button>
</div>
</el-dialog>
</template>
<script>
export default {
props: {
dialogManger: {
type: Object,
default() {
return {
dialogVisible: false,
source: {}
}
}
}
},
dicts: ['sys_detailed_classification'],
data() {
return {
model: {
scene: [
{
text: ''
}
]
},
sceneManger: {
dialogVisible: false,
refreshList: false,
source: {}
},
rules: {
status: [
{ required: true, message: '菜单名称不能为空', trigger: 'blur' }
],
orderNum: [
{ required: true, message: '菜单顺序不能为空', trigger: 'blur' }
],
path: [{ required: true, message: '路由地址不能为空', trigger: 'blur' }]
},
detailManger: {
dialogVisible: false,
refreshList: false
},
pointManger: {
dialogVisible: false,
refreshList: false
}
}
},
computed: {
modelTitle() {
return this.dialogManger.source.id ? '编辑' : '新增' + '审查内容'
}
},
methods: {
addDetail() {
this.detailManger.dialogVisible = true
},
addPoint() {
this.pointManger.dialogVisible = true
},
add() {
this.model.scene.push({
text: ''
})
},
remove(key) {
this.model.scene.splice(key, 1)
},
handleClose() {
this.$emit('close')
},
handleConfirm() {
this.$refs['form'].validate(valid => {})
}
}
}
</script>
<style scoped>
.icon {
font-size: 20px;
}
</style>
<template>
<el-dialog
:visible.sync="dialogManger.dialogVisible"
:title="modelTitle"
width="1200"
append-to-body
destroy-on-close
:before-close="handleClose"
>
<el-form ref="form" :model="model" :rules="rules">
<el-form-item label="细则分类" prop="status">
<el-select
v-model="model.status"
style="width: 100%"
placeholder="请选择"
clearable
>
<el-option
v-for="dict in dict.type.sys_detailed_classification"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="标准章节" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
maxlength="100"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item label="标准要求" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
maxlength="100"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item label="审查方法" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
maxlength="100"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
</el-form>
<div slot="footer">
<el-button @click="handleClose()"> 取消 </el-button>
<el-button type="primary" @click="handleConfirm()"> 保存 </el-button>
</div>
</el-dialog>
</template>
<script>
export default {
props: {
dialogManger: {
type: Object,
default() {
return {
dialogVisible: false,
source: {}
}
}
}
},
dicts: ['sys_detailed_classification'],
data() {
return {
model: {
scene: [
{
text: ''
}
]
},
sceneManger: {
dialogVisible: false,
refreshList: false,
source: {}
},
rules: {
status: [
{ required: true, message: '菜单名称不能为空', trigger: 'blur' }
],
orderNum: [
{ required: true, message: '菜单顺序不能为空', trigger: 'blur' }
],
path: [{ required: true, message: '路由地址不能为空', trigger: 'blur' }]
},
detailManger: {
dialogVisible: false,
refreshList: false
},
pointManger: {
dialogVisible: false,
refreshList: false
}
}
},
computed: {
modelTitle() {
return this.dialogManger.source.id ? '编辑' : '新增' + '审查内容'
}
},
methods: {
addDetail() {
this.detailManger.dialogVisible = true
},
addPoint() {
this.pointManger.dialogVisible = true
},
add() {
this.model.scene.push({
text: ''
})
},
remove(key) {
this.model.scene.splice(key, 1)
},
handleClose() {
this.$emit('close')
},
handleConfirm() {
this.$refs['form'].validate(valid => {})
}
}
}
</script>
<style scoped>
.icon {
font-size: 20px;
}
</style>
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
</div> </div>
<el-form <el-form
v-show="showSearch" v-show="showSearch"
v-if="queryParams.type > 1"
ref="queryForm" ref="queryForm"
:model="queryParams" :model="queryParams"
size="small" size="small"
...@@ -101,15 +102,22 @@ ...@@ -101,15 +102,22 @@
></right-toolbar> ></right-toolbar>
</el-row> </el-row>
<el-tree <el-tree
v-if="queryParams.type == 1"
:data="tableData" :data="tableData"
node-key="id" node-key="id"
default-expand-all default-expand-all
:expand-on-click-node="false" :expand-on-click-node="false"
> >
<div slot-scope="{ node, data }" class="item-box"> <div slot-scope="{ node, data }" class="item-box">
<el-tooltip class="item" :content="node.label" placement="right"> <!-- <el-tooltip class="item" :content="node.label" placement="right"> -->
<div class="title">{{ node.label }}</div> <div class="title">
</el-tooltip> <span v-if="node.level == 1">标准要求:</span>
<span v-if="node.level == 2">审查要点:</span>
<span v-if="node.level == 3">审查细则:</span>
<span v-if="node.level == 4">关联场景:</span>
{{ node.label }}
</div>
<!-- </el-tooltip> -->
<div class="buttons-list"> <div class="buttons-list">
<!-- <el-button <!-- <el-button
...@@ -121,7 +129,7 @@ ...@@ -121,7 +129,7 @@
添加标准要求 添加标准要求
</el-button> --> </el-button> -->
<el-button <el-button
v-if="node.level == 2" v-if="node.level == 1"
type="text" type="text"
size="mini" size="mini"
@click="handlePointAdd" @click="handlePointAdd"
...@@ -129,7 +137,7 @@ ...@@ -129,7 +137,7 @@
添加审查要点 添加审查要点
</el-button> </el-button>
<el-button <el-button
v-if="node.level == 3" v-if="node.level == 2"
type="text" type="text"
size="mini" size="mini"
@click="handleAdd" @click="handleAdd"
...@@ -157,6 +165,161 @@ ...@@ -157,6 +165,161 @@
</div> </div>
</div> </div>
</el-tree> </el-tree>
<el-table
v-if="refreshTable && Number(queryParams.type) === 2"
v-loading="loading"
style="width: 100%; min-height: 50vh"
border
:scroll-x="'1500px'"
:default-sort="{ prop: 'createTime', order: 'descending' }"
:data="tableData"
>
<el-table-column
prop="section"
label="标准章节"
min-width="200"
align="center"
>
</el-table-column>
<el-table-column
prop="request"
label="标准要求"
min-width="200"
align="center"
>
</el-table-column>
<el-table-column
prop="way"
label="标准测试方法"
min-width="200"
align="center"
>
</el-table-column>
<el-table-column
prop="resultYes"
label="审查方法"
min-width="200"
align="left"
>
</el-table-column>
<el-table-column
prop="resultNO"
label="更新时间"
min-width="200"
align="left"
>
</el-table-column>
<el-table-column
label="操作"
align="left"
min-width="160"
fixed="right"
class-name="fixed-width"
>
<template slot-scope="scope">
<el-button
v-hasPermi="['setting:standard:update']"
plain
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(2, scope.row)"
>修改</el-button
>
<el-button
v-hasPermi="['setting:standard:delete']"
plain
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<el-table
v-if="refreshTable && Number(queryParams.type) === 3"
v-loading="loading"
style="width: 100%; min-height: 50vh"
border
:scroll-x="'1500px'"
:default-sort="{ prop: 'createTime', order: 'descending' }"
:data="tableData"
>
<el-table-column
prop="section"
label="标准章节"
min-width="200"
align="center"
>
</el-table-column>
<el-table-column
prop="request"
label="标准要求"
min-width="200"
align="center"
>
</el-table-column>
<el-table-column
prop="way"
label="标准测试方法"
min-width="200"
align="center"
>
</el-table-column>
<el-table-column
prop="resultYes"
label="审查方法"
min-width="200"
align="left"
>
</el-table-column>
<el-table-column
prop="resultNO"
label="更新时间"
min-width="200"
align="left"
>
</el-table-column>
<el-table-column
label="操作"
align="left"
min-width="160"
fixed="right"
class-name="fixed-width"
>
<template slot-scope="scope">
<el-button
v-hasPermi="['setting:standard:update']"
plain
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(3, scope.row)"
>修改</el-button
>
<el-button
v-hasPermi="['setting:standard:delete']"
plain
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-if="queryParams.type > 1"
v-show="total > 0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.size"
@pagination="loadData"
>
</pagination>
<yan-dialog <yan-dialog
:dialog-manger="dialogManger" :dialog-manger="dialogManger"
@close="dialogManger.dialogVisible = false" @close="dialogManger.dialogVisible = false"
...@@ -166,17 +329,29 @@ ...@@ -166,17 +329,29 @@
:dialog-manger="dialogPointManger" :dialog-manger="dialogPointManger"
@close="dialogPointManger.dialogVisible = false" @close="dialogPointManger.dialogVisible = false"
></point-dialog> ></point-dialog>
<chexing-dialog
:dialog-manger="ChexingdialogManger"
@close="ChexingdialogManger.dialogVisible = false"
></chexing-dialog>
<wendang-dialog
:dialog-manger="WendangdialogManger"
@close="WendangdialogManger.dialogVisible = false"
></wendang-dialog>
</page-standard> </page-standard>
</template> </template>
<script> <script>
import page from '@/mixins/page' import page from '@/mixins/page'
import dialog from './components/dialog.vue' import dialog from './components/dialog.vue'
import pointDialog from './components/pointDialog.vue' import pointDialog from './components/pointDialog.vue'
import Chexingdialog from './components/Chexingdialog.vue'
import Wendangdialog from './components/Wendangdialog.vue'
export default { export default {
components: { components: {
'yan-dialog': dialog, 'yan-dialog': dialog,
'point-dialog': pointDialog 'point-dialog': pointDialog,
'chexing-dialog': Chexingdialog,
'wendang-dialog': Wendangdialog
}, },
dicts: ['sys_scene_type'], dicts: ['sys_scene_type'],
mixins: [page], mixins: [page],
...@@ -189,6 +364,7 @@ export default { ...@@ -189,6 +364,7 @@ export default {
children: 'children', children: 'children',
label: 'label' label: 'label'
}, },
queryParams: { type: '1' },
dialogManger: { dialogManger: {
dialogVisible: false, dialogVisible: false,
refreshList: false, refreshList: false,
...@@ -198,6 +374,16 @@ export default { ...@@ -198,6 +374,16 @@ export default {
dialogVisible: false, dialogVisible: false,
refreshList: false, refreshList: false,
source: {} source: {}
},
ChexingdialogManger: {
dialogVisible: false,
refreshList: false,
source: {}
},
WendangdialogManger: {
dialogVisible: false,
refreshList: false,
source: {}
} }
} }
}, },
...@@ -210,7 +396,7 @@ export default { ...@@ -210,7 +396,7 @@ export default {
} }
}, },
methods: { methods: {
handleAdd() { handleAdd(type) {
this.dialogManger.dialogVisible = true this.dialogManger.dialogVisible = true
this.dialogManger.source = {} this.dialogManger.source = {}
}, },
...@@ -219,21 +405,33 @@ export default { ...@@ -219,21 +405,33 @@ export default {
this.dialogPointManger.source = {} this.dialogPointManger.source = {}
}, },
handleDelete(node, data) { handleDelete(node, data) {
console.log(node, data) // console.log(node, data)
// this.$modal this.$modal
// .confirm('是否确定删除该条数据?', '操作确认') .confirm('是否确定删除该条数据?', '操作确认')
// .then(() => { .then(() => {
// // return delNotice(noticeIds) // return delNotice(noticeIds)
// }) })
// .then(() => { .then(() => {
// this.loadData() this.loadData()
// this.$modal.msgSuccess('删除成功') this.$modal.msgSuccess('删除成功')
// }) })
// .catch(() => {}) .catch(() => {})
}, },
handleUpdate(row) { handleUpdate(type, row) {
this.dialogManger.dialogVisible = true switch (type) {
this.dialogManger.source = row case 1:
this.dialogManger.dialogVisible = true
this.dialogManger.source = row
break
case 2:
this.ChexingdialogManger.dialogVisible = true
this.ChexingdialogManger.source = row
break
case 3:
this.WendangdialogManger.dialogVisible = true
this.WendangdialogManger.source = row
break
}
} }
} }
} }
......
<template>
<el-dialog
:visible.sync="dialogManger.dialogVisible"
:title="modelTitle"
width="1200"
append-to-body
destroy-on-close
:before-close="handleClose"
>
<el-form ref="form" :model="model" :rules="rules">
<el-form-item label="标准分类" prop="status">
<el-select
v-model="model.status"
style="width: 100%"
placeholder="请选择"
clearable
>
<el-option
v-for="dict in dict.type.sys_detailed_classification"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="标准章节" prop="status">
<el-input v-model="model.status" placeholder="请输入" clearable />
</el-form-item>
<el-form-item label="标准要求" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
maxlength="100"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item label="检验结果描述(符合)" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
maxlength="200"
show-word-limit
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item label="检验结果描述(不符合)" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
show-word-limit
maxlength="200"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item label="标准测试方法" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
show-word-limit
maxlength="200"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item label="对象" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
show-word-limit
maxlength="200"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item label="场景" prop="status">
<br />
<el-button type="default" @click="addDetail()">选择场景</el-button>
</el-form-item>
<scene-select
:dialog-manger="sceneManger"
@close="sceneManger.dialogVisible = false"
></scene-select>
</el-form>
<div slot="footer">
<el-button @click="handleClose()"> 取消 </el-button>
<el-button type="primary" @click="handleConfirm()"> 保存 </el-button>
</div>
</el-dialog>
</template>
<script>
import sceneSelect from './sceneSelect'
export default {
components: {
'scene-select': sceneSelect
},
props: {
dialogManger: {
type: Object,
default() {
return {
dialogVisible: false,
source: {}
}
}
}
},
dicts: ['sys_detailed_classification'],
data() {
return {
model: {},
rules: {
status: [
{ required: true, message: '菜单名称不能为空', trigger: 'blur' }
],
orderNum: [
{ required: true, message: '菜单顺序不能为空', trigger: 'blur' }
],
path: [{ required: true, message: '路由地址不能为空', trigger: 'blur' }]
},
sceneManger: {
dialogVisible: false,
refreshList: false,
source: {}
}
}
},
computed: {
modelTitle() {
return this.dialogManger.source.id ? '编辑' : '新增' + '标准'
}
},
methods: {
handleClose() {
this.$emit('close')
},
addDetail() {
this.sceneManger.dialogVisible = true
},
handleConfirm() {
this.$refs['form'].validate(valid => {
if (valid) {
console.log(valid)
}
})
}
}
}
</script>
<template>
<el-dialog
:visible.sync="dialogManger.dialogVisible"
:title="modelTitle"
width="1200"
append-to-body
destroy-on-close
:before-close="handleClose"
>
<el-form ref="form" :model="model" :rules="rules">
<el-form-item label="标准分类" prop="status">
<el-select
v-model="model.status"
style="width: 100%"
placeholder="请选择"
clearable
>
<el-option
v-for="dict in dict.type.sys_detailed_classification"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="标准章节" prop="status">
<el-input v-model="model.status" placeholder="请输入" clearable />
</el-form-item>
<el-form-item label="标准要求" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
maxlength="100"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item label="检验结果描述(符合)" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
maxlength="200"
show-word-limit
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item label="检验结果描述(不符合)" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
show-word-limit
maxlength="200"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
</el-form>
<div slot="footer">
<el-button @click="handleClose()"> 取消 </el-button>
<el-button type="primary" @click="handleConfirm()"> 保存 </el-button>
</div>
</el-dialog>
</template>
<script>
export default {
props: {
dialogManger: {
type: Object,
default() {
return {
dialogVisible: false,
source: {}
}
}
}
},
dicts: ['sys_detailed_classification'],
data() {
return {
model: {},
rules: {
status: [
{ required: true, message: '菜单名称不能为空', trigger: 'blur' }
],
orderNum: [
{ required: true, message: '菜单顺序不能为空', trigger: 'blur' }
],
path: [{ required: true, message: '路由地址不能为空', trigger: 'blur' }]
}
}
},
computed: {
modelTitle() {
return this.dialogManger.source.id ? '编辑' : '新增' + '标准'
}
},
methods: {
handleClose() {
this.$emit('close')
},
handleConfirm() {
this.$refs['form'].validate(valid => {
if (valid) {
console.log(valid)
}
})
}
}
}
</script>
<template>
<el-dialog
:visible.sync="dialogManger.dialogVisible"
:title="modelTitle"
width="1200"
append-to-body
destroy-on-close
:before-close="handleClose"
>
<el-form ref="form" :model="model" :rules="rules">
<el-form-item label="标准分类" prop="status">
<el-select
v-model="model.status"
style="width: 100%"
placeholder="请选择"
clearable
>
<el-option
v-for="dict in dict.type.sys_detailed_classification"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="标准章节" prop="status">
<el-input v-model="model.status" placeholder="请输入" clearable />
</el-form-item>
<el-form-item label="标准要求" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
maxlength="100"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item label="检验结果描述(符合)" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
maxlength="200"
show-word-limit
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item label="检验结果描述(不符合)" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
show-word-limit
maxlength="200"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item label="标准测试方法" prop="status">
<el-input
v-model="model.status"
placeholder="请输入"
type="textarea"
show-word-limit
maxlength="200"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
</el-form>
<div slot="footer">
<el-button @click="handleClose()"> 取消 </el-button>
<el-button type="primary" @click="handleConfirm()"> 保存 </el-button>
</div>
</el-dialog>
</template>
<script>
export default {
props: {
dialogManger: {
type: Object,
default() {
return {
dialogVisible: false,
source: {}
}
}
}
},
dicts: ['sys_detailed_classification'],
data() {
return {
model: {},
rules: {
status: [
{ required: true, message: '菜单名称不能为空', trigger: 'blur' }
],
orderNum: [
{ required: true, message: '菜单顺序不能为空', trigger: 'blur' }
],
path: [{ required: true, message: '路由地址不能为空', trigger: 'blur' }]
}
}
},
computed: {
modelTitle() {
return this.dialogManger.source.id ? '编辑' : '新增' + '标准'
}
},
methods: {
handleClose() {
this.$emit('close')
},
handleConfirm() {
this.$refs['form'].validate(valid => {
if (valid) {
console.log(valid)
}
})
}
}
}
</script>
<template>
<el-dialog
:visible.sync="dialogManger.dialogVisible"
:title="modelTitle"
width="1200"
append-to-body
destroy-on-close
:before-close="handleClose"
>
<el-form
v-show="showSearch"
ref="queryForm"
:model="queryParams"
size="small"
:inline="true"
>
<el-form-item prop="status">
<el-input
v-model="queryParams.deptName"
placeholder="场景编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item prop="status">
<el-input
v-model="queryParams.deptName"
placeholder="场景内容"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button
type="default"
icon="el-icon-refresh"
size="mini"
@click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-table
v-loading="loading"
style="width: 100%; min-height: 50vh"
border
tooltip-effect="dark"
@selection-change="handleSelectionChange"
>
>
<el-table-column type="selection" width="55"> </el-table-column>
<el-table-column label="场景编号" align="left"></el-table-column>
<el-table-column label="场景内容" align="left"></el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.size"
@pagination="loadData"
>
</pagination>
<div slot="footer">
<el-button @click="handleClose()"> 取消 </el-button>
<el-button type="primary" @click="handleConfirm()"> 选择 </el-button>
</div>
</el-dialog>
</template>
<script>
import page from '@/mixins/page'
export default {
mixins: [page],
props: {
dialogManger: {
type: Object,
default() {
return {
dialogVisible: false,
source: {}
}
}
}
},
dicts: ['sys_detailed_classification'],
data() {
return {
model: {},
listUrl: '/system/role/list',
total: 0,
showSearch: true,
multipleSelection: [],
tableData: [],
rules: {
status: [
{ required: true, message: '菜单名称不能为空', trigger: 'blur' }
],
orderNum: [
{ required: true, message: '菜单顺序不能为空', trigger: 'blur' }
],
path: [{ required: true, message: '路由地址不能为空', trigger: 'blur' }]
}
}
},
computed: {
modelTitle() {
return '选择场景'
}
},
methods: {
handleSelectionChange(val) {
this.multipleSelection = val
},
add() {
this.model.scene.push({
text: ''
})
},
remove(key) {
this.model.scene.splice(key, 1)
},
handleClose() {
this.$emit('close')
},
handleConfirm() {
this.$refs['form'].validate(valid => {
if (valid) {
console.log(valid)
}
})
}
}
}
</script>
<style scoped>
.icon {
font-size: 20px;
}
</style>
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment