Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
web
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
中汽测评-信息安全测评系统
web
Commits
47c84c03
Commit
47c84c03
authored
Dec 11, 2023
by
jiaxu.yan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加 “基础配置” 模块 增加 “发起新任务”
parent
5e49895d
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
1265 additions
and
36 deletions
+1265
-36
ruoyi.scss
src/assets/styles/ruoyi.scss
+2
-2
standard.vue
src/components/Page/standard.vue
+47
-0
main.js
src/main.js
+3
-0
page.js
src/mixins/page.js
+61
-0
index.js
src/router/index.js
+2
-0
setting.js
src/router/modules/setting.js
+31
-8
task.js
src/router/modules/task.js
+33
-9
index.vue
src/views/setting/index.vue
+0
-0
dialog.vue
src/views/setting/rules/components/dialog.vue
+116
-0
index.vue
src/views/setting/rules/index.vue
+100
-0
dialog.vue
src/views/setting/scene/components/dialog.vue
+91
-0
index.vue
src/views/setting/scene/index.vue
+100
-0
dialog.vue
src/views/setting/template/components/dialog.vue
+113
-0
index.vue
src/views/setting/template/index.vue
+77
-0
index.vue
src/views/task/archived/index.vue
+68
-0
index.vue
src/views/task/index.vue
+0
-0
index.vue
src/views/task/new/index.vue
+336
-0
index.vue
src/views/task/on/index.vue
+68
-0
editTable.vue
src/views/tool/gen/editTable.vue
+17
-17
No files found.
src/assets/styles/ruoyi.scss
View file @
47c84c03
...
@@ -147,8 +147,8 @@
...
@@ -147,8 +147,8 @@
}
}
.el-table
.fixed-width
.el-button--mini
{
.el-table
.fixed-width
.el-button--mini
{
padding-left
:
0
;
//
padding-left: 0;
padding-right
:
0
;
//
padding-right: 0;
width
:
inherit
;
width
:
inherit
;
}
}
...
...
src/components/Page/standard.vue
0 → 100644
View file @
47c84c03
<
template
>
<div
class=
"page-box"
>
<el-card
class=
"box-card"
shadow=
"never"
>
<div
slot=
"header"
class=
"clearfix"
>
<span
class=
"header"
>
{{
$route
.
meta
.
title
}}
</span>
</div>
<slot>
</slot>
</el-card>
</div>
</
template
>
<
script
>
export
default
{
name
:
'standard'
,
props
:
{
total
:
{},
},
data
()
{
return
{
}
},
created
()
{
},
}
</
script
>
<
style
lang=
"scss"
scoped
>
.page-box
{
padding
:
1
.5rem
2rem
;
font-size
:
16px
;
}
.box-card
{
min-height
:
80vh
;
// background-color: #000;
}
.header
{
font-size
:
16px
;
font-weight
:
500
;
}
::v-deep
{
.el-card__header
{
background-color
:
#f9f9f9
;
}
}
</
style
>
\ No newline at end of file
src/main.js
View file @
47c84c03
...
@@ -31,6 +31,8 @@ import FileUpload from "@/components/FileUpload"
...
@@ -31,6 +31,8 @@ import FileUpload from "@/components/FileUpload"
import
ImageUpload
from
"@/components/ImageUpload"
import
ImageUpload
from
"@/components/ImageUpload"
// 图片预览组件
// 图片预览组件
import
ImagePreview
from
"@/components/ImagePreview"
import
ImagePreview
from
"@/components/ImagePreview"
// 页面模板
import
PageStandard
from
"@/components/Page/standard"
// 字典标签组件
// 字典标签组件
import
DictTag
from
'@/components/DictTag'
import
DictTag
from
'@/components/DictTag'
// 头部标签组件
// 头部标签组件
...
@@ -61,6 +63,7 @@ Vue.component('Editor', Editor)
...
@@ -61,6 +63,7 @@ Vue.component('Editor', Editor)
Vue
.
component
(
'FileUpload'
,
FileUpload
)
Vue
.
component
(
'FileUpload'
,
FileUpload
)
Vue
.
component
(
'ImageUpload'
,
ImageUpload
)
Vue
.
component
(
'ImageUpload'
,
ImageUpload
)
Vue
.
component
(
'ImagePreview'
,
ImagePreview
)
Vue
.
component
(
'ImagePreview'
,
ImagePreview
)
Vue
.
component
(
'PageStandard'
,
PageStandard
)
Vue
.
use
(
directive
)
Vue
.
use
(
directive
)
Vue
.
use
(
plugins
)
Vue
.
use
(
plugins
)
...
...
src/mixins/page.js
0 → 100644
View file @
47c84c03
import
request
from
'@/utils/request'
export
default
{
data
()
{
return
{
listUrl
:
""
,
showSearch
:
true
,
queryParams
:
{
page
:
1
,
size
:
1
},
tableId
:
false
,
loading
:
false
,
// 显示搜索条件
showSearch
:
true
,
// 重新渲染表格状态
refreshTable
:
true
,
tableData
:
[],
total
:
0
}
},
mounted
()
{
this
.
loadData
()
},
methods
:
{
/** 展开/折叠操作 */
toggleExpandAll
()
{
this
.
refreshTable
=
false
;
this
.
isExpandAll
=
!
this
.
isExpandAll
;
this
.
$nextTick
(()
=>
{
this
.
refreshTable
=
true
;
});
},
resetQuery
()
{
// this.refs.queryForm.restForm() this.resetForm("queryForm");
this
.
queryParams
=
{
page
:
this
.
queryParams
.
page
,
size
:
this
.
queryParams
.
size
}
},
handleQuery
()
{
this
.
queryParams
.
page
=
1
this
.
loadData
()
},
loadData
()
{
this
.
loading
=
true
;
request
({
url
:
this
.
listUrl
,
method
:
'get'
,
params
:
this
.
queryParams
}).
then
((
res
)
=>
{
if
(
res
.
code
==
200
)
{
this
.
tableData
=
res
.
rows
this
.
total
=
res
.
total
}
this
.
loading
=
false
;
})
}
}
}
src/router/index.js
View file @
47c84c03
...
@@ -6,6 +6,7 @@ Vue.use(Router)
...
@@ -6,6 +6,7 @@ Vue.use(Router)
/* Layout */
/* Layout */
import
Layout
from
'@/layout'
import
Layout
from
'@/layout'
import
SettingRouter
from
'./modules/setting'
;
import
SettingRouter
from
'./modules/setting'
;
import
TaskRouter
from
'./modules/task'
;
/**
/**
* Note: 路由配置项
* Note: 路由配置项
*
*
...
@@ -31,6 +32,7 @@ import SettingRouter from './modules/setting';
...
@@ -31,6 +32,7 @@ import SettingRouter from './modules/setting';
// 公共路由
// 公共路由
export
const
constantRoutes
=
[
export
const
constantRoutes
=
[
...
SettingRouter
,
...
SettingRouter
,
...
TaskRouter
,
{
{
path
:
'/redirect'
,
path
:
'/redirect'
,
component
:
Layout
,
component
:
Layout
,
...
...
src/router/modules/setting.js
View file @
47c84c03
/* Layout */
import
Layout
from
'@/layout'
export
default
[
export
default
[
{
{
path
:
'/setting'
,
path
:
'/setting'
,
name
:
'setting'
,
name
:
'setting'
,
component
:
()
=>
import
(
'@/views/setting/index.vue'
),
hidden
:
true
,
component
:
Layout
,
meta
:
{
meta
:
{
title
:
'基础设置'
title
:
'基础配置'
},
children
:
[
{
path
:
'rules'
,
component
:
()
=>
import
(
'@/views/setting/rules/index'
),
name
:
'rules'
,
meta
:
{
title
:
'审查细则库'
,
activeMenu
:
'/setting/rules'
}
},
{
path
:
'scene'
,
component
:
()
=>
import
(
'@/views/setting/scene/index'
),
name
:
'scene'
,
meta
:
{
title
:
'场景库'
,
activeMenu
:
'/setting/scene'
}
},
{
path
:
'template'
,
component
:
()
=>
import
(
'@/views/setting/template/index'
),
name
:
'template'
,
meta
:
{
title
:
'报告模板库'
,
activeMenu
:
'/setting/template'
}
}
}
]
}
}
];
];
\ No newline at end of file
\ No newline at end of file
src/router/modules/task.js
View file @
47c84c03
/* Layout */
import
Layout
from
'@/layout'
export
default
[
export
default
[
{
{
path
:
'/task'
,
path
:
'/task'
,
name
:
'task'
,
name
:
'task'
,
component
:
()
=>
import
(
'@/views/task/index.vue'
),
component
:
Layout
,
hidden
:
true
,
meta
:
{
meta
:
{
title
:
'任务设置'
title
:
'任务设置'
},
children
:
[
{
path
:
'new'
,
component
:
()
=>
import
(
'@/views/task/new/index'
),
name
:
'new'
,
meta
:
{
title
:
'发起新任务'
,
activeMenu
:
'/task/new'
}
},
{
path
:
'on'
,
component
:
()
=>
import
(
'@/views/task/on/index'
),
name
:
'on'
,
meta
:
{
title
:
'当前任务'
,
activeMenu
:
'/task/on'
}
},
{
path
:
'archived'
,
component
:
()
=>
import
(
'@/views/task/archived/index'
),
name
:
'archived'
,
meta
:
{
title
:
'已归档任务'
,
activeMenu
:
'/task/archived'
}
},
]
}
}
}
];
];
\ No newline at end of file
\ No newline at end of file
src/views/setting/index.vue
deleted
100644 → 0
View file @
5e49895d
src/views/setting/rules/components/dialog.vue
0 → 100644
View file @
47c84c03
<
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
style=
"width: 100%"
v-model=
"model.status"
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=
"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-button>
选择场景
</el-button>
</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
:
{
default
:
{
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"
},
],
},
};
},
created
()
{},
methods
:
{
handleClose
()
{
this
.
dialogManger
.
dialogVisible
=
false
;
},
handleConfirm
()
{
this
.
$refs
[
'form'
].
validate
((
valid
)
=>
{
if
(
valid
){
}
})
},
},
computed
:
{
modelTitle
:
function
()
{
return
this
.
dialogManger
.
source
.
id
?
"编辑"
:
"新增"
+
"审查细则"
;
},
},
};
</
script
>
src/views/setting/rules/index.vue
0 → 100644
View file @
47c84c03
<
template
>
<page-standard>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
>
<el-form-item
label=
"部门名称"
prop=
"deptName"
>
<el-input
v-model=
"queryParams.deptName"
placeholder=
"请输入部门名称"
clearable
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"状态"
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
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-row
:gutter=
"10"
class=
"mb10"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"['setting:rules:add']"
>
新增
</el-button>
</el-col>
<right-toolbar
:showSearch
.
sync=
"showSearch"
@
queryTable=
"loadData"
></right-toolbar>
</el-row>
<el-table
style=
"width: 100%;min-height: 50vh;"
border
v-if=
"refreshTable"
:default-sort=
"
{ prop: 'createTime', order: 'descending' }" v-loading="loading" :data="tableData">
<el-table-column
width=
"60"
label=
"序号"
sortable
align=
"center"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"创建时间"
align=
"left"
sortable
prop=
"createTime"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"left"
sortable
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"primary"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['setting:rules:update']"
plain
>
修改
</el-button>
<el-button
size=
"mini"
type=
"danger"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['setting:rules:delete']"
plain
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total > 0"
:total=
"total"
:page
.
sync=
"queryParams.page"
:limit
.
sync=
"queryParams.size"
@
pagination=
"loadData"
>
</pagination>
<yan-dialog
:dialogManger=
"dialogManger"
></yan-dialog>
</page-standard>
</template>
<
script
>
import
page
from
'@/mixins/page'
import
dialog
from
'./components/dialog.vue'
export
default
{
components
:
{
'yan-dialog'
:
dialog
},
mixins
:
[
page
],
data
()
{
return
{
listUrl
:
"/system/role/list"
,
showSearch
:
true
,
tableData
:
[],
dialogManger
:
{
dialogVisible
:
false
,
refreshList
:
false
,
source
:
{
}
}
};
},
methods
:
{
handleAdd
()
{
this
.
dialogManger
.
dialogVisible
=
true
this
.
dialogManger
.
source
=
{}
},
handleDelete
()
{
},
handleUpdate
(
row
)
{
this
.
dialogManger
.
dialogVisible
=
true
this
.
dialogManger
.
source
=
row
},
},
watch
:
{
"dialogManger.refreshList"
:
function
(
val
)
{
if
(
val
)
{
this
.
loadData
()
this
.
dialogManger
.
refreshList
=
false
}
}
}
}
</
script
>
src/views/setting/scene/components/dialog.vue
0 → 100644
View file @
47c84c03
<
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-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
<el-form-item
label=
"场景类型"
prop=
"status"
>
<el-select
style=
"width: 100%"
v-model=
"model.status"
placeholder=
"请选择"
clearable
>
<el-option
v-for=
"dict in dict.type.sys_scene_type"
: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>
<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
:
{
default
:
{
dialogVisible
:
false
,
source
:
{},
},
},
},
dicts
:
[
"sys_scene_type"
],
data
()
{
return
{
model
:
{},
rules
:
{
status
:
[
{
required
:
true
,
message
:
"菜单名称不能为空"
,
trigger
:
"blur"
},
],
orderNum
:
[
{
required
:
true
,
message
:
"菜单顺序不能为空"
,
trigger
:
"blur"
},
],
path
:
[
{
required
:
true
,
message
:
"路由地址不能为空"
,
trigger
:
"blur"
},
],
},
};
},
created
()
{},
methods
:
{
handleClose
()
{
this
.
dialogManger
.
dialogVisible
=
false
;
},
handleConfirm
()
{
this
.
$refs
[
"form"
].
validate
((
valid
)
=>
{
if
(
valid
)
{
}
});
},
},
computed
:
{
modelTitle
:
function
()
{
return
this
.
dialogManger
.
source
.
id
?
"编辑"
:
"新增"
+
"场景库"
;
},
},
};
</
script
>
src/views/setting/scene/index.vue
0 → 100644
View file @
47c84c03
<
template
>
<page-standard>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
>
<el-form-item
label=
"部门名称"
prop=
"deptName"
>
<el-input
v-model=
"queryParams.deptName"
placeholder=
"请输入部门名称"
clearable
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"状态"
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
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-row
:gutter=
"10"
class=
"mb10"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"['setting:scene:add']"
>
新增
</el-button>
</el-col>
<right-toolbar
:showSearch
.
sync=
"showSearch"
@
queryTable=
"loadData"
></right-toolbar>
</el-row>
<el-table
style=
"width: 100%;min-height: 50vh;"
border
v-if=
"refreshTable"
:default-sort=
"
{ prop: 'createTime', order: 'descending' }" v-loading="loading" :data="tableData">
<el-table-column
width=
"60"
label=
"序号"
sortable
align=
"center"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"创建时间"
align=
"left"
sortable
prop=
"createTime"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"left"
sortable
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"primary"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['setting:scene:update']"
plain
>
修改
</el-button>
<el-button
size=
"mini"
type=
"danger"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['setting:scene:delete']"
plain
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total > 0"
:total=
"total"
:page
.
sync=
"queryParams.page"
:limit
.
sync=
"queryParams.size"
@
pagination=
"loadData"
>
</pagination>
<yan-dialog
:dialogManger=
"dialogManger"
></yan-dialog>
</page-standard>
</template>
<
script
>
import
page
from
'@/mixins/page'
import
dialog
from
'./components/dialog.vue'
export
default
{
components
:
{
'yan-dialog'
:
dialog
},
mixins
:
[
page
],
data
()
{
return
{
listUrl
:
"/system/role/list"
,
showSearch
:
true
,
tableData
:
[],
dialogManger
:
{
dialogVisible
:
false
,
refreshList
:
false
,
source
:
{
}
}
};
},
methods
:
{
handleAdd
()
{
this
.
dialogManger
.
dialogVisible
=
true
this
.
dialogManger
.
source
=
{}
},
handleDelete
()
{
},
handleUpdate
(
row
)
{
this
.
dialogManger
.
dialogVisible
=
true
this
.
dialogManger
.
source
=
row
},
},
watch
:
{
"dialogManger.refreshList"
:
function
(
val
)
{
if
(
val
)
{
this
.
loadData
()
this
.
dialogManger
.
refreshList
=
false
}
}
}
}
</
script
>
src/views/setting/template/components/dialog.vue
0 → 100644
View file @
47c84c03
<
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
style=
"width: 100%"
v-model=
"model.status"
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"
:autosize=
"
{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item
label=
"审查要点"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
type=
"textarea"
:autosize=
"
{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item
label=
"审查细则"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
type=
"textarea"
:autosize=
"
{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item
label=
"关联场景"
prop=
"status"
>
<el-button>
选择场景
</el-button>
</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
:
{
default
:
{
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"
},
],
},
};
},
created
()
{},
methods
:
{
handleClose
()
{
this
.
dialogManger
.
dialogVisible
=
false
;
},
handleConfirm
()
{
this
.
$refs
[
'form'
].
validate
((
valid
)
=>
{
if
(
valid
){
}
})
},
},
computed
:
{
modelTitle
:
function
()
{
return
this
.
dialogManger
.
source
.
id
?
"编辑"
:
"新增"
+
"报告模板库"
;
},
},
};
</
script
>
src/views/setting/template/index.vue
0 → 100644
View file @
47c84c03
<
template
>
<page-standard>
<el-table
style=
"width: 100%;min-height: 50vh;"
border
v-if=
"refreshTable"
:default-sort=
"
{ prop: 'createTime', order: 'descending' }" v-loading="loading" :data="tableData">
<el-table-column
width=
"60"
label=
"序号"
sortable
align=
"center"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"创建时间"
align=
"left"
sortable
prop=
"createTime"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"left"
sortable
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"primary"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['setting:template:update']"
plain
>
更新文件
</el-button>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total > 0"
:total=
"total"
:page
.
sync=
"queryParams.page"
:limit
.
sync=
"queryParams.size"
@
pagination=
"loadData"
>
</pagination>
<yan-dialog
:dialogManger=
"dialogManger"
></yan-dialog>
</page-standard>
</template>
<
script
>
import
page
from
'@/mixins/page'
import
dialog
from
'./components/dialog.vue'
export
default
{
components
:
{
'yan-dialog'
:
dialog
},
mixins
:
[
page
],
data
()
{
return
{
listUrl
:
"/system/role/list"
,
showSearch
:
true
,
tableData
:
[],
dialogManger
:
{
dialogVisible
:
false
,
refreshList
:
false
,
source
:
{
}
}
};
},
methods
:
{
handleAdd
()
{
this
.
dialogManger
.
dialogVisible
=
true
this
.
dialogManger
.
source
=
{}
},
handleDelete
()
{
},
handleUpdate
(
row
)
{
this
.
dialogManger
.
dialogVisible
=
true
this
.
dialogManger
.
source
=
row
},
},
watch
:
{
"dialogManger.refreshList"
:
function
(
val
)
{
if
(
val
)
{
this
.
loadData
()
this
.
dialogManger
.
refreshList
=
false
}
}
}
}
</
script
>
src/views/task/archived/index.vue
0 → 100644
View file @
47c84c03
<
template
>
<page-standard>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
>
<el-form-item
label=
"部门名称"
prop=
"deptName"
>
<el-input
v-model=
"queryParams.deptName"
placeholder=
"请输入部门名称"
clearable
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"状态"
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
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-row
:gutter=
"10"
class=
"mb10"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"['system:menu:add']"
>
新增
</el-button>
</el-col>
<!--
<right-toolbar
:showSearch
.
sync=
"showSearch"
@
queryTable=
"loadData"
></right-toolbar>
-->
</el-row>
<el-table
style=
"width: 100%;min-height: 50vh;"
border
v-if=
"refreshTable"
v-loading=
"loading"
:data=
"tableData"
>
<el-table-column
width=
"60"
label=
"序号"
align=
"center"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"创建时间"
align=
"left"
prop=
"createTime"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"left"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"primary"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['system:menu:edit']"
plain
>
修改
</el-button>
<el-button
size=
"mini"
type=
"danger"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['system:menu:remove']"
plain
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total > 0"
:total=
"total"
:page
.
sync=
"queryParams.page"
:limit
.
sync=
"queryParams.size"
@
pagination=
"loadData"
/>
</page-standard>
</template>
<
script
>
import
page
from
'@/mixins/page'
import
Sortable
from
'sortablejs'
export
default
{
mixins
:
[
page
],
data
()
{
return
{
listUrl
:
"/system/role/list"
,
showSearch
:
true
,
tableData
:
[],
};
},
methods
:
{
handleAdd
()
{
},
handleDelete
()
{
},
handleUpdate
()
{
},
}
}
</
script
>
src/views/task/index.vue
deleted
100644 → 0
View file @
5e49895d
src/views/task/new/index.vue
0 → 100644
View file @
47c84c03
<
template
>
<page-standard>
<el-form
ref=
"form"
:model=
"model"
:rules=
"rules"
>
<el-form-item
label=
"选择任务类型"
prop=
"status"
>
<el-button
size=
"mini"
:type=
"formType == 1 ? 'primary' : 'default'"
@
click=
"formType = 1"
round
>
体系审查任务
</el-button
>
<el-button
size=
"mini"
:type=
"formType == 2 ? 'primary' : 'default'"
@
click=
"formType = 2"
round
>
车型审查任务
</el-button
>
<el-button
size=
"mini"
:type=
"formType == 3 ? 'primary' : 'default'"
@
click=
"formType = 3"
round
>
车型检验任务
</el-button
>
</el-form-item>
<div
class=
"subtitle"
>
基础信息
</div>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"任务编码"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"任务名称"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"任务状态"
prop=
"status"
>
<el-select
style=
"width: 100%"
v-model=
"model.status"
placeholder=
"请选择"
clearable
>
<el-option
v-for=
"dict in dict.type.sys_task_status"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"产品名称"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"产品型号(即车辆型号)"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"委托单位"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"委托单位地址"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"委托单位电话"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"委托单位邮政编码"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"车辆类型"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"车辆识别码"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
</el-row>
<div
class=
"subtitle"
>
小组信息
</div>
<el-table
style=
"width: 100%; min-height: 50vh"
border
:default-sort=
"
{ prop: 'createTime', order: 'descending' }"
v-loading="loading"
:data="tableData"
>
<el-table-column
width=
"100"
label=
"序号"
sortable
align=
"center"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"创建时间"
align=
"left"
sortable
prop=
"createTime"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"left"
sortable
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"primary"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['setting:rules:update']"
plain
>
修改
</el-button
>
<el-button
size=
"mini"
type=
"danger"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['setting:rules:delete']"
plain
>
删除
</el-button
>
</
template
>
</el-table-column>
</el-table>
<div
class=
"subtitle"
>
报告信息
</div>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"样品名称"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"生产企业"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"商标"
prop=
"status"
>
<el-upload
class=
"avatar-uploader"
action=
"https://jsonplaceholder.typicode.com/posts/"
:show-file-list=
"false"
:on-success=
"handleAvatarSuccess"
:before-upload=
"beforeAvatarUpload"
>
<img
v-if=
"imageUrl"
:src=
"imageUrl"
class=
"avatar"
/>
<i
v-else
class=
"el-icon-plus avatar-uploader-icon"
></i>
</el-upload>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"送样者"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"送样日期 "
prop=
"status"
>
<el-date-picker
v-model=
"model.status"
type=
"date"
placeholder=
"选择日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"送样者"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"生产日期 "
prop=
"status"
>
<el-date-picker
v-model=
"model.status"
type=
"date"
placeholder=
"选择日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"检验依据"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"检验项目"
prop=
"status"
>
<el-select
style=
"width: 100%"
v-model=
"model.status"
placeholder=
"请选择"
clearable
>
<el-option
v-for=
"dict in dict.type.sys_pro"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<div
class=
"subtitle"
>
报告流程信息
</div>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"批准"
prop=
"status"
>
<el-select
style=
"width: 100%"
v-model=
"model.status"
placeholder=
"请选择"
clearable
>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"审核"
prop=
"status"
>
<el-select
style=
"width: 100%"
v-model=
"model.status"
placeholder=
"请选择"
clearable
>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</page-standard>
</template>
<
script
>
export
default
{
data
()
{
return
{
formType
:
1
,
model
:
{},
loading
:
false
,
tableData
:
[],
rules
:
{
status
:
[
{
required
:
true
,
message
:
"菜单名称不能为空"
,
trigger
:
"blur"
},
],
orderNum
:
[
{
required
:
true
,
message
:
"菜单顺序不能为空"
,
trigger
:
"blur"
},
],
path
:
[
{
required
:
true
,
message
:
"路由地址不能为空"
,
trigger
:
"blur"
},
],
},
};
},
dicts
:
[
"sys_task_status"
,
"sys_pro"
],
methods
:
{
handleAvatarSuccess
(
res
,
file
)
{
this
.
imageUrl
=
URL
.
createObjectURL
(
file
.
raw
);
},
beforeAvatarUpload
(
file
)
{
const
isJPG
=
file
.
type
===
"image/jpeg"
;
const
isLt2M
=
file
.
size
/
1024
/
1024
<
2
;
if
(
!
isJPG
)
{
this
.
$message
.
error
(
"上传头像图片只能是 JPG 格式!"
);
}
if
(
!
isLt2M
)
{
this
.
$message
.
error
(
"上传头像图片大小不能超过 2MB!"
);
}
return
isJPG
&&
isLt2M
;
},
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.subtitle
{
color
:
rgb
(
64
,
158
,
255
);
padding-left
:
10px
;
border-left
:
0
.4rem
solid
rgb
(
64
,
158
,
255
);
margin-bottom
:
10px
;
font-weight
:
500
;
}
.avatar-uploader
.el-upload
{
border
:
1px
dashed
#d9d9d9
;
border-radius
:
6px
;
cursor
:
pointer
;
position
:
relative
;
overflow
:
hidden
;
}
.avatar-uploader
.el-upload
:hover
{
border-color
:
#409eff
;
}
.avatar-uploader-icon
{
font-size
:
28px
;
color
:
#8c939d
;
width
:
178px
;
height
:
178px
;
line-height
:
178px
;
text-align
:
center
;
}
.avatar
{
width
:
178px
;
height
:
178px
;
display
:
block
;
}
</
style
>
src/views/task/on/index.vue
0 → 100644
View file @
47c84c03
<
template
>
<page-standard>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
>
<el-form-item
label=
"部门名称"
prop=
"deptName"
>
<el-input
v-model=
"queryParams.deptName"
placeholder=
"请输入部门名称"
clearable
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"状态"
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
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-row
:gutter=
"10"
class=
"mb10"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"['system:menu:add']"
>
新增
</el-button>
</el-col>
<!--
<right-toolbar
:showSearch
.
sync=
"showSearch"
@
queryTable=
"loadData"
></right-toolbar>
-->
</el-row>
<el-table
style=
"width: 100%;min-height: 50vh;"
border
v-if=
"refreshTable"
v-loading=
"loading"
:data=
"tableData"
>
<el-table-column
width=
"60"
label=
"序号"
align=
"center"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"创建时间"
align=
"left"
prop=
"createTime"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"left"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"primary"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['system:menu:edit']"
plain
>
修改
</el-button>
<el-button
size=
"mini"
type=
"danger"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['system:menu:remove']"
plain
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total > 0"
:total=
"total"
:page
.
sync=
"queryParams.page"
:limit
.
sync=
"queryParams.size"
@
pagination=
"loadData"
/>
</page-standard>
</template>
<
script
>
import
page
from
'@/mixins/page'
import
Sortable
from
'sortablejs'
export
default
{
mixins
:
[
page
],
data
()
{
return
{
listUrl
:
"/system/role/list"
,
showSearch
:
true
,
tableData
:
[],
};
},
methods
:
{
handleAdd
()
{
},
handleDelete
()
{
},
handleUpdate
()
{
},
}
}
</
script
>
src/views/tool/gen/editTable.vue
View file @
47c84c03
...
@@ -159,23 +159,23 @@ export default {
...
@@ -159,23 +159,23 @@ export default {
};
};
},
},
created
()
{
created
()
{
const
tableId
=
this
.
$route
.
params
&&
this
.
$route
.
params
.
tableId
;
//
const tableId = this.$route.params && this.$route.params.tableId;
if
(
tableId
)
{
//
if (tableId) {
// 获取表详细信息
//
// 获取表详细信息
getGenTable
(
tableId
).
then
(
res
=>
{
//
getGenTable(tableId).then(res => {
this
.
columns
=
res
.
data
.
rows
;
//
this.columns = res.data.rows;
this
.
info
=
res
.
data
.
info
;
//
this.info = res.data.info;
this
.
tables
=
res
.
data
.
tables
;
//
this.tables = res.data.tables;
});
//
});
/** 查询字典下拉列表 */
//
/** 查询字典下拉列表 */
getDictOptionselect
().
then
(
response
=>
{
//
getDictOptionselect().then(response => {
this
.
dictOptions
=
response
.
data
;
//
this.dictOptions = response.data;
});
//
});
/** 查询菜单下拉列表 */
//
/** 查询菜单下拉列表 */
getMenuTreeselect
().
then
(
response
=>
{
//
getMenuTreeselect().then(response => {
this
.
menus
=
this
.
handleTree
(
response
.
data
,
"menuId"
);
//
this.menus = this.handleTree(response.data, "menuId");
});
//
});
}
//
}
},
},
methods
:
{
methods
:
{
/** 提交按钮 */
/** 提交按钮 */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment