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
3349e797
Commit
3349e797
authored
Dec 13, 2023
by
jiaxu.yan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加页面细节,追加新的页面
parent
47c84c03
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
1425 additions
and
264 deletions
+1425
-264
index.scss
src/assets/styles/index.scss
+143
-10
index.vue
src/components/MessageWaring/index.vue
+46
-0
index.vue
src/components/QuickNew/index.vue
+48
-0
Navbar.vue
src/layout/components/Navbar.vue
+74
-71
Item.vue
src/layout/components/Sidebar/Item.vue
+1
-1
index.js
src/router/index.js
+4
-4
task.js
src/router/modules/task.js
+6
-0
list.vue
src/views/monitor/cache/list.vue
+2
-2
dialog.vue
src/views/review/already/components/dialog.vue
+116
-0
index.vue
src/views/review/already/index.vue
+100
-0
dialog.vue
src/views/review/wait/components/dialog.vue
+116
-0
index.vue
src/views/review/wait/index.vue
+100
-0
index.vue
src/views/setting/company/index.vue
+100
-0
index.vue
src/views/setting/file/index.vue
+92
-0
index.vue
src/views/setting/review/index.vue
+83
-0
index.vue
src/views/setting/rules/index.vue
+1
-1
index.vue
src/views/setting/scene/index.vue
+1
-1
index.vue
src/views/setting/template/index.vue
+1
-1
index.vue
src/views/task/detail/index.vue
+282
-0
index.vue
src/views/task/new/index.vue
+32
-157
index.vue
src/views/task/on/index.vue
+77
-16
No files found.
src/assets/styles/index.scss
View file @
3349e797
@import
'./variables.scss'
;
@import
'./mixin.scss'
;
@import
'./transition.scss'
;
@import
'./element-ui.scss'
;
@import
'./sidebar.scss'
;
@import
'./btn.scss'
;
@import
"./variables.scss"
;
@import
"./mixin.scss"
;
@import
"./transition.scss"
;
@import
"./element-ui.scss"
;
@import
"./sidebar.scss"
;
@import
"./btn.scss"
;
@import
url(//at.alicdn.com/t/c/font_4370984_nw2hgwiwfm.css)
;
body
{
height
:
100%
;
-moz-osx-font-smoothing
:
grayscale
;
-webkit-font-smoothing
:
antialiased
;
text-rendering
:
optimizeLegibility
;
font-family
:
Helvetica
Neue
,
Helvetica
,
PingFang
SC
,
Hiragino
Sans
GB
,
Microsoft
YaHei
,
Arial
,
sans-serif
;
font-family
:
Helvetica
Neue
,
Helvetica
,
PingFang
SC
,
Hiragino
Sans
GB
,
Microsoft
YaHei
,
Arial
,
sans-serif
;
}
label
{
...
...
@@ -104,7 +106,8 @@ aside {
display
:
block
;
line-height
:
32px
;
font-size
:
16px
;
font-family
:
-
apple-system
,
BlinkMacSystemFont
,
"Segoe UI"
,
Roboto
,
Oxygen
,
Ubuntu
,
Cantarell
,
"Fira Sans"
,
"Droid Sans"
,
"Helvetica Neue"
,
sans-serif
;
font-family
:
-
apple-system
,
BlinkMacSystemFont
,
"Segoe UI"
,
Roboto
,
Oxygen
,
Ubuntu
,
Cantarell
,
"Fira Sans"
,
"Droid Sans"
,
"Helvetica Neue"
,
sans-serif
;
color
:
#2c3e50
;
-webkit-font-smoothing
:
antialiased
;
-moz-osx-font-smoothing
:
grayscale
;
...
...
@@ -134,7 +137,7 @@ aside {
}
.text-center
{
text-align
:
center
text-align
:
center
;
}
.sub-navbar
{
...
...
@@ -145,7 +148,11 @@ aside {
text-align
:
right
;
padding-right
:
20px
;
transition
:
600ms
ease
position
;
background
:
linear-gradient
(
90deg
,
rgba
(
32
,
182
,
249
,
1
)
0%
,
rgba
(
32
,
182
,
249
,
1
)
0%
,
rgba
(
33
,
120
,
241
,
1
)
100%
,
rgba
(
33
,
120
,
241
,
1
)
100%
);
background
:
linear-gradient
(
90deg
,
rgba
(
32
,
182
,
249
,
1
)
0%
,
rgba
(
32
,
182
,
249
,
1
)
0%
,
rgba
(
33
,
120
,
241
,
1
)
100%
,
rgba
(
33
,
120
,
241
,
1
)
100%
);
.subtitle
{
font-size
:
20px
;
...
...
@@ -180,3 +187,129 @@ aside {
margin-bottom
:
10px
;
}
}
.task-status
{
font-weight
:
800
;
.t0
{
display
:
flex
;
color
:
rgb
(
153
,
153
,
153
);
}
.t1
{
display
:
flex
;
color
:
rgb
(
255
,
153
,
0
);
}
.t2
{
display
:
flex
;
color
:
rgb
(
255
,
122
,
140
);
}
}
.go-link
{
color
:
rgb
(
64
,
158
,
255
);
text-decoration
:
underline
dotted
;
}
.button-list
{
display
:
flex
;
justify-content
:
flex-start
;
align-items
:
center
;
.button-item
{
cursor
:
pointer
;
margin-right
:
5px
;
border-radius
:
100%
;
// padding: 3px;
height
:
26px
;
width
:
26px
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
.iconfont
{
font-size
:
12px
;
font-weight
:
bold
;
}
}
.b1
{
background-color
:
#337ab7
;
.iconfont
{
color
:
#fff
;
}
}
.b2
{
background-color
:
rgba
(
25
,
190
,
107
,
1
);
.iconfont
{
color
:
#fff
;
}
}
.b3
{
background-color
:
rgba
(
254
,
148
,
0
,
1
);
color
:
#fff
;
}
}
.b1
:hover
{
.iconfont
{
transform
:
scale
(
1
.2
);
}
}
.b2
:hover
{
.iconfont
{
transform
:
scale
(
1
.2
);
}
}
.b3
:hover
{
.iconfont
{
transform
:
scale
(
1
.2
);
}
}
.bottom-button
{
display
:
flex
;
align-items
:
center
;
justify-content
:
flex-end
;
}
.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
;
}
\ No newline at end of file
src/components/MessageWaring/index.vue
0 → 100644
View file @
3349e797
<
template
>
<div
class=
"screenfull-svg"
>
<el-badge
:value=
"showMsgCount"
:max=
"99"
class=
"item"
>
<el-button
class=
"share-button"
size=
"mini"
icon=
"iconfont icon-xiaoxi"
type=
"primary"
></el-button>
</el-badge>
</div>
</
template
>
<
script
>
export
default
{
name
:
"MessageWaring"
,
data
()
{
return
{
isFullscreen
:
false
,
showMsgCount
:
20
,
};
},
mounted
()
{
this
.
init
();
},
beforeDestroy
()
{},
methods
:
{
init
()
{},
},
};
</
script
>
<
style
scoped
>
.screenfull-svg
{
cursor
:
pointer
;
color
:
#5a5e66
;
margin-right
:
10px
;
display
:
flex
;
padding-top
:
10px
;
/* .iconfont{
font-size: 22px;
} */
/* vertical-align: 10px; */
}
</
style
>
src/components/QuickNew/index.vue
0 → 100644
View file @
3349e797
<
template
>
<div
class=
"quick"
>
<el-dropdown
size=
"medium"
:hide-on-click=
"true"
placement=
"bottom-start"
>
<span
class=
"el-dropdown-link"
>
<i
class=
"el-icon-circle-plus-outline"
></i>
快速新建
</span>
<el-dropdown-menu
slot=
"dropdown"
>
<router-link
to=
"/setting/rules"
>
<el-dropdown-item
icon=
"el-icon-s-flag"
>
审查细则
</el-dropdown-item>
</router-link>
<router-link
to=
"/setting/scene"
>
<el-dropdown-item
icon=
"el-icon-date"
>
新建场景
</el-dropdown-item
></router-link
>
<router-link
to=
"/setting/template"
>
<el-dropdown-item
icon=
"el-icon-tickets"
>
报告模板
</el-dropdown-item
></router-link
>
<router-link
to=
"/user/profile"
><el-dropdown-item
icon=
"el-icon-folder-add"
>
测试用例
</el-dropdown-item
></router-link
>
<router-link
to=
"/user/profile"
>
<el-dropdown-item
icon=
"el-icon-document"
>
测试工具
</el-dropdown-item
></router-link
>
</el-dropdown-menu>
</el-dropdown>
</div>
</
template
>
<
script
></
script
>
<
style
scoped
lang=
"scss"
>
.quick
{
padding
:
10px
15px
;
border-bottom
:
1px
solid
#d8dce5
;
// box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 3px 0 rgba(0, 0, 0, 0.04);
}
.el-dropdown-link
{
cursor
:
pointer
;
font-weight
:
600
;
color
:
#97a8be
;
}
</
style
>
src/layout/components/Navbar.vue
View file @
3349e797
<
template
>
<div
class=
"navbar"
>
<hamburger
id=
"hamburger-container"
:is-active=
"sidebar.opened"
class=
"hamburger-container"
@
toggleClick=
"toggleSideBar"
/>
<breadcrumb
id=
"breadcrumb-container"
class=
"breadcrumb-container"
v-if=
"!topNav"
/>
<top-nav
id=
"topmenu-container"
class=
"topmenu-container"
v-if=
"topNav"
/>
<div><quick-new></quick-new></div>
<hamburger
id=
"hamburger-container"
:is-active=
"sidebar.opened"
class=
"hamburger-container"
@
toggleClick=
"toggleSideBar"
/>
<breadcrumb
id=
"breadcrumb-container"
class=
"breadcrumb-container"
v-if=
"!topNav"
/>
<top-nav
id=
"topmenu-container"
class=
"topmenu-container"
v-if=
"topNav"
/>
<div
class=
"right-menu"
>
<template
v-if=
"device!=='mobile'"
>
<search
id=
"header-search"
class=
"right-menu-item"
/>
<el-tooltip
content=
"源码地址"
effect=
"dark"
placement=
"bottom"
>
<ruo-yi-git
id=
"ruoyi-git"
class=
"right-menu-item hover-effect"
/>
</el-tooltip>
<el-tooltip
content=
"文档地址"
effect=
"dark"
placement=
"bottom"
>
<ruo-yi-doc
id=
"ruoyi-doc"
class=
"right-menu-item hover-effect"
/>
</el-tooltip>
<screenfull
id=
"screenfull"
class=
"right-menu-item hover-effect"
/>
<el-tooltip
content=
"布局大小"
effect=
"dark"
placement=
"bottom"
>
<size-select
id=
"size-select"
class=
"right-menu-item hover-effect"
/>
</el-tooltip>
<template>
<message-waring></message-waring>
</
template
>
<el-dropdown
class=
"avatar-container right-menu-item hover-effect"
trigger=
"click"
>
<el-dropdown
class=
"avatar-container right-menu-item hover-effect"
trigger=
"click"
>
<div
class=
"avatar-wrapper"
>
<img
:src=
"avatar"
class=
"user-avatar"
>
<img
:src=
"avatar"
class=
"user-avatar"
/
>
<i
class=
"el-icon-caret-bottom"
/>
</div>
<el-dropdown-menu
slot=
"dropdown"
>
<router-link
to=
"/user/profile"
>
<el-dropdown-item>
个人中心
</el-dropdown-item>
</router-link>
<el-dropdown-item
@
click
.
native=
"setting = true"
>
<
!-- <
el-dropdown-item @click.native="setting = true">
<span>布局设置</span>
</el-dropdown-item>
</el-dropdown-item>
-->
<el-dropdown-item
divided
@
click
.
native=
"logout"
>
<span>
退出登录
</span>
</el-dropdown-item>
...
...
@@ -47,16 +45,18 @@
</template>
<
script
>
import
{
mapGetters
}
from
'vuex'
import
Breadcrumb
from
'@/components/Breadcrumb'
import
TopNav
from
'@/components/TopNav'
import
Hamburger
from
'@/components/Hamburger'
import
Screenfull
from
'@/components/Screenfull'
import
SizeSelect
from
'@/components/SizeSelect'
import
Search
from
'@/components/HeaderSearch'
import
RuoYiGit
from
'@/components/RuoYi/Git'
import
RuoYiDoc
from
'@/components/RuoYi/Doc'
import
{
mapGetters
}
from
"vuex"
;
import
Breadcrumb
from
"@/components/Breadcrumb"
;
import
TopNav
from
"@/components/TopNav"
;
import
Hamburger
from
"@/components/Hamburger"
;
import
Screenfull
from
"@/components/Screenfull"
;
import
SizeSelect
from
"@/components/SizeSelect"
;
import
Search
from
"@/components/HeaderSearch"
;
import
RuoYiGit
from
"@/components/RuoYi/Git"
;
import
RuoYiDoc
from
"@/components/RuoYi/Doc"
;
import
QuickNew
from
"@/components/QuickNew"
;
import
MessageWaring
from
"@/components/MessageWaring"
;
export
default
{
components
:
{
Breadcrumb
,
...
...
@@ -66,68 +66,68 @@ export default {
SizeSelect
,
Search
,
RuoYiGit
,
RuoYiDoc
RuoYiDoc
,
QuickNew
,
MessageWaring
,
},
computed
:
{
...
mapGetters
([
'sidebar'
,
'avatar'
,
'device'
]),
...
mapGetters
([
"sidebar"
,
"avatar"
,
"device"
]),
setting
:
{
get
()
{
return
this
.
$store
.
state
.
settings
.
showSettings
return
this
.
$store
.
state
.
settings
.
showSettings
;
},
set
(
val
)
{
this
.
$store
.
dispatch
(
'settings/changeSetting'
,
{
key
:
'showSettings'
,
value
:
val
})
}
this
.
$store
.
dispatch
(
"settings/changeSetting"
,
{
key
:
"showSettings"
,
value
:
val
,
})
;
}
,
},
topNav
:
{
get
()
{
return
this
.
$store
.
state
.
settings
.
topNav
}
}
return
this
.
$store
.
state
.
settings
.
topNav
;
}
,
}
,
},
methods
:
{
toggleSideBar
()
{
this
.
$store
.
dispatch
(
'app/toggleSideBar'
)
this
.
$store
.
dispatch
(
"app/toggleSideBar"
);
},
async
logout
()
{
this
.
$confirm
(
'确定注销并退出系统吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
this
.
$store
.
dispatch
(
'LogOut'
).
then
(()
=>
{
location
.
href
=
'/index'
;
this
.
$confirm
(
"确定注销并退出系统吗?"
,
"提示"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
,
})
.
then
(()
=>
{
this
.
$store
.
dispatch
(
"LogOut"
).
then
(()
=>
{
location
.
href
=
"/index"
;
});
})
})
.
catch
(()
=>
{});
}
}
}
.
catch
(()
=>
{});
}
,
}
,
}
;
</
script
>
<
style
lang=
"scss"
scoped
>
.navbar
{
height
:
5
0px
;
height
:
9
0px
;
overflow
:
hidden
;
position
:
relative
;
background
:
#fff
;
box-shadow
:
0
1px
4px
rgba
(
0
,
21
,
41
,
.
08
);
box-shadow
:
0
1px
4px
rgba
(
0
,
21
,
41
,
0
.08
);
.hamburger-container
{
line-height
:
46px
;
height
:
100%
;
float
:
left
;
cursor
:
pointer
;
transition
:
background
.3s
;
-webkit-tap-highlight-color
:transparent
;
transition
:
background
0
.3s
;
-webkit-tap-highlight-color
:
transparent
;
&
:hover
{
background
:
rgba
(
0
,
0
,
0
,
.025
)
background
:
rgba
(
0
,
0
,
0
,
0
.025
);
}
}
...
...
@@ -146,9 +146,12 @@ export default {
}
.right-menu
{
float
:
right
;
//
float: right;
height
:
100%
;
line-height
:
50px
;
display
:
flex
;
justify-content
:
flex-end
;
align-items
:
bottom
;
// line-height: 50px;
&
:focus
{
outline
:
none
;
...
...
@@ -164,10 +167,10 @@ export default {
&
.hover-effect
{
cursor
:
pointer
;
transition
:
background
.3s
;
transition
:
background
0
.3s
;
&
:hover
{
background
:
rgba
(
0
,
0
,
0
,
.025
)
background
:
rgba
(
0
,
0
,
0
,
0
.025
);
}
}
}
...
...
src/layout/components/Sidebar/Item.vue
View file @
3349e797
...
...
@@ -16,7 +16,7 @@ export default {
const
{
icon
,
title
}
=
context
.
props
const
vnodes
=
[]
if
(
icon
)
{
if
(
icon
&&
icon
!==
'#'
)
{
vnodes
.
push
(
<
svg
-
icon
icon
-
class
=
{
icon
}
/>
)
}
...
...
src/router/index.js
View file @
3349e797
...
...
@@ -5,8 +5,8 @@ Vue.use(Router)
/* Layout */
import
Layout
from
'@/layout'
import
SettingRouter
from
'./modules/setting'
;
import
TaskRouter
from
'./modules/task'
;
//
import SettingRouter from './modules/setting';
//
import TaskRouter from './modules/task';
/**
* Note: 路由配置项
*
...
...
@@ -31,8 +31,8 @@ import TaskRouter from './modules/task';
// 公共路由
export
const
constantRoutes
=
[
...
SettingRouter
,
...
TaskRouter
,
//
...SettingRouter,
//
...TaskRouter,
{
path
:
'/redirect'
,
component
:
Layout
,
...
...
src/router/modules/task.js
View file @
3349e797
...
...
@@ -29,6 +29,12 @@ export default [
name
:
'archived'
,
meta
:
{
title
:
'已归档任务'
,
activeMenu
:
'/task/archived'
}
},
{
path
:
'任务详情'
,
component
:
()
=>
import
(
'@/views/task/detail/index'
),
name
:
'任务详情'
,
meta
:
{
title
:
'已归档任务'
,
activeMenu
:
'/task/detail'
}
},
]
}
];
\ No newline at end of file
src/views/monitor/cache/list.vue
View file @
3349e797
...
...
@@ -22,7 +22,7 @@
>
<el-table-column
label=
"序号"
width=
"
6
0"
width=
"
10
0"
type=
"index"
></el-table-column>
...
...
@@ -80,7 +80,7 @@
>
<el-table-column
label=
"序号"
width=
"
6
0"
width=
"
10
0"
type=
"index"
></el-table-column>
<el-table-column
...
...
src/views/review/already/components/dialog.vue
0 → 100644
View file @
3349e797
<
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/review/already/index.vue
0 → 100644
View file @
3349e797
<
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/review/wait/components/dialog.vue
0 → 100644
View file @
3349e797
<
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/review/wait/index.vue
0 → 100644
View file @
3349e797
<
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/company/index.vue
0 → 100644
View file @
3349e797
<
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=
"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>
<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/file/index.vue
0 → 100644
View file @
3349e797
<
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-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=
"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>
<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/review/index.vue
0 → 100644
View file @
3349e797
<
template
>
<page-standard>
<el-form
:model=
"model"
ref=
"model"
>
<div
class=
"subtitle"
>
评审人员设置
</div>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"评审组长"
prop=
"deptName"
>
<el-input
v-model=
"model.user"
placeholder=
"请输入部门名称"
clearable
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"评审组员"
prop=
"status"
>
<el-select
clearable
v-model=
"model.users"
placeholder=
"可多选"
multiple
style=
"width: 100%"
>
<el-option
v-for=
"item in 24"
:key=
"item"
:value=
"item - 1"
>
{{
item
-
1
}}
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<div
class=
"subtitle"
>
提醒设置
</div>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
每隔
<el-input-number
style=
"width: 50px"
v-model=
"model.num"
:controls=
"false"
:min=
"1"
:max=
"24"
label=
"描述文字"
></el-input-number>
小时,发送一次待审批提醒。
</el-col>
</el-row>
</el-form>
</page-standard>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
model
:
{
user
:
""
,
users
:
[],
num
:
0
,
},
};
},
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/rules/index.vue
View file @
3349e797
...
...
@@ -25,7 +25,7 @@
</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=
"
6
0"
label=
"序号"
sortable
align=
"center"
>
<el-table-column
width=
"
10
0"
label=
"序号"
sortable
align=
"center"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
...
...
src/views/setting/scene/index.vue
View file @
3349e797
...
...
@@ -25,7 +25,7 @@
</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=
"
6
0"
label=
"序号"
sortable
align=
"center"
>
<el-table-column
width=
"
10
0"
label=
"序号"
sortable
align=
"center"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
...
...
src/views/setting/template/index.vue
View file @
3349e797
...
...
@@ -3,7 +3,7 @@
<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=
"
6
0"
label=
"序号"
sortable
align=
"center"
>
<el-table-column
width=
"
10
0"
label=
"序号"
sortable
align=
"center"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
...
...
src/views/task/detail/index.vue
0 → 100644
View file @
3349e797
<
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>
</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
>
</
style
>
\ No newline at end of file
src/views/task/new/index.vue
View file @
3349e797
...
...
@@ -2,27 +2,12 @@
<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-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>
...
...
@@ -39,18 +24,9 @@
</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
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>
...
...
@@ -100,53 +76,24 @@
</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
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"
>
<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"
>
<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
>
<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>
...
...
@@ -165,13 +112,8 @@
</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"
>
<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>
...
...
@@ -184,11 +126,7 @@
</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
style=
"width: 100%;"
v-model=
"model.status"
type=
"date"
placeholder=
"选择日期"
>
</el-date-picker>
</el-form-item>
</el-col>
...
...
@@ -200,11 +138,7 @@
</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
style=
"width: 100%;"
v-model=
"model.status"
type=
"date"
placeholder=
"选择日期"
>
</el-date-picker>
</el-form-item>
</el-col>
...
...
@@ -216,49 +150,21 @@
<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
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>
</el-form>
<div
class=
"bottom-button"
>
<el-button
type=
"primary"
plain
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"['setting:rules:add']"
style=
"width: 120px;"
>
暂存
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"['setting:rules:add']"
style=
"width: 120px;"
>
发布
</el-button>
</div>
</page-standard>
</template>
<
script
>
...
...
@@ -302,35 +208,4 @@ export default {
},
};
</
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
>
<
style
lang=
"scss"
scoped
></
style
>
src/views/task/on/index.vue
View file @
3349e797
<
template
>
<page-standard>
<div
class=
"mb10"
>
<el-radio-group
v-model=
"queryParams.status"
@
change=
"handleQuery()"
>
<el-radio-button
:label=
"0"
>
全部任务
</el-radio-button></el-radio-button>
<el-radio-button
v-for=
"dict in dict.type.sys_task_status"
:key=
"dict.value"
:label=
"dict.value"
>
{{
dict
.
label
}}
</el-radio-button>
</el-radio-group>
</div>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
>
<el-form-item
label=
"部门名称"
prop=
"deptName"
>
...
...
@@ -15,31 +24,80 @@
<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=
"
6
0"
label=
"序号"
align=
"center"
>
<el-table-column
width=
"
10
0"
label=
"序号"
align=
"center"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"
创建
时间"
align=
"left"
prop=
"createTime"
>
<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"
>
<el-table-column
label=
"任务名称"
align=
"left"
prop=
"createTime"
>
</el-table-column>
<el-table-column
label=
"任务组长"
align=
"left"
prop=
"createTime"
>
</el-table-column>
<el-table-column
label=
"任务状态"
align=
"left"
prop=
"createTime"
>
<
template
slot-scope=
"scope"
>
<div
class=
"task-status "
>
<div
class=
"t0"
>
<span>
● 未开始
</span>
</div>
<div
class=
"t1"
>
<span>
● 进行中
</span>
</div>
<div
class=
"t2"
>
<span>
● 暂停
</span>
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"紧要程度"
align=
"left"
prop=
"createTime"
>
<
template
slot-scope=
"scope"
>
紧急
</
template
>
</el-table-column>
<el-table-column
label=
"审查问卷"
align=
"left"
prop=
"createTime"
>
<
template
slot-scope=
"scope"
>
<div
class=
"task-status "
v-if=
"(scope.$index + 1) % 2 == 0"
>
<div
class=
"t2"
>
<span>
● 未生成
</span>
</div>
</div>
<div
v-else
>
<a
href=
"#"
class=
"go-link"
@
click=
""
>
填写问卷
</a>
</div>
<div
v-else
>
<a
href=
"#"
class=
"go-link"
@
click=
""
>
查看问卷
</a>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"完成进度"
width=
"200"
align=
"left"
prop=
"createTime"
>
<
template
slot-scope=
"scope"
>
<el-progress
:percentage=
"50"
></el-progress>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"left"
width=
"120"
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>
<div
class=
"button-list"
>
<div
class=
"button-item b1"
>
<i
class=
"iconfont icon-kaishi "
></i>
</div>
<div
class=
"button-item b2"
>
<i
class=
"iconfont icon-fenxiang "
></i>
</div>
<div
class=
"button-item b3"
>
<i
class=
"iconfont icon-feiji "
></i>
</div>
</div>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -49,14 +107,17 @@
</template>
<
script
>
import
page
from
'@/mixins/page'
import
Sortable
from
'sortablejs'
export
default
{
mixins
:
[
page
],
dicts
:
[
"sys_task_status"
],
data
()
{
return
{
listUrl
:
"/system/role/list"
,
showSearch
:
true
,
tableData
:
[],
queryParams
:
{
status
:
0
}
};
},
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