Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
W
web-purchase
Project
Project
Details
Activity
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-purchase
Commits
7dbfa459
Commit
7dbfa459
authored
Oct 15, 2020
by
张冬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
角色和成员
parent
48821df5
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
346 additions
and
97 deletions
+346
-97
list.js
src/api/common/list.js
+2
-15
organization.js
src/api/purchaser/organization.js
+56
-0
bid.js
src/api/supply/bid.js
+8
-0
common.css
src/common/common.css
+12
-5
dataTable.vue
src/components/dataTable.vue
+5
-5
main.js
src/main.js
+4
-0
add.vue
src/pages/purchaser/bid/bidEvaluation/review/add.vue
+3
-3
bidOpenhal.vue
src/pages/purchaser/bid/bidOpen/bidOpenhal.vue
+1
-1
fileUpload.vue
src/pages/purchaser/bid/releaseProject/fileUpload.vue
+1
-1
jurisdictionList.vue
src/pages/purchaser/organization/jurisdictionList.vue
+20
-7
jurisdictionSee.vue
src/pages/purchaser/organization/jurisdictionSee.vue
+1
-1
memberManagement.vue
src/pages/purchaser/organization/memberManagement.vue
+167
-45
bidresultAdvice.vue
src/pages/supply/bid/joinProject/bidSure/bidresultAdvice.vue
+24
-8
noticeSee.vue
src/pages/supply/bid/joinProject/bidSure/noticeSee.vue
+24
-6
clickStatefrom.js
src/utils/clickStatefrom.js
+18
-0
No files found.
src/api/common/list.js
View file @
7dbfa459
...
@@ -165,21 +165,8 @@ export function projectEnd(projectId) {
...
@@ -165,21 +165,8 @@ export function projectEnd(projectId) {
method
:
'put'
method
:
'put'
})
})
}
}
// 权限菜单树
export
function
roleMenus
(
companyType
)
{
return
request
({
url
:
`/sys/menu/roleMenus?companyType=
${
companyType
}
`
,
method
:
'get'
})
}
// 添加角色
export
function
roleadd
(
data
)
{
return
request
({
url
:
"sys/role/add"
,
method
:
'post'
,
data
:
data
})
}
// 部署线上
// 部署线上
export
function
autodeploy
()
{
export
function
autodeploy
()
{
...
...
src/api/purchaser/organization.js
0 → 100644
View file @
7dbfa459
import
request
from
'@/utils/request'
// 添加角色
export
function
roleadd
(
data
)
{
return
request
({
url
:
"sys/role/add"
,
method
:
'post'
,
data
:
data
})
}
// 角色列表删除
export
function
userdelete
(
userId
)
{
return
request
({
url
:
`sys/user/delete/
${
userId
}
`
,
method
:
'delete'
,
})
}
// 角色列表
export
function
roleList
(
companyType
)
{
return
request
({
url
:
`sys/role/roleList?companyType=
${
companyType
}
`
,
method
:
'get'
,
})
}
// 角色编辑
export
function
useredit
(
data
)
{
return
request
({
url
:
"sys/user/edit"
,
method
:
'post'
,
data
:
data
})
}
// 添加成员
export
function
useradd
(
data
)
{
return
request
({
url
:
"sys/user/add"
,
method
:
'post'
,
data
:
data
})
}
// 验证手机唯一性
export
function
checkAccount
(
account
)
{
return
request
({
url
:
`/sys/user/check/account/
${
account
}
`
,
method
:
'get'
,
})
}
// 权限菜单树
export
function
roleMenus
(
companyType
)
{
return
request
({
url
:
`/sys/menu/roleMenus?companyType=
${
companyType
}
`
,
method
:
'get'
})
}
src/api/supply/bid.js
View file @
7dbfa459
...
@@ -277,6 +277,14 @@ export function contractdetail(projectId) {
...
@@ -277,6 +277,14 @@ export function contractdetail(projectId) {
method
:
'get'
,
method
:
'get'
,
})
})
}
}
// 中标公告查看
export
function
noticeWin
(
projectId
)
{
return
request
({
url
:
`notice/winNotice/
${
projectId
}
`
,
method
:
'get'
,
})
}
// 中标候选人公示查看
// 中标候选人公示查看
export
function
publicitydetail
(
projectId
)
{
export
function
publicitydetail
(
projectId
)
{
return
request
({
return
request
({
...
...
src/common/common.css
View file @
7dbfa459
...
@@ -146,7 +146,7 @@ img {
...
@@ -146,7 +146,7 @@ img {
.navs
>
.active
{
.navs
>
.active
{
border-bottom
:
2px
solid
#2288EE
;
border-bottom
:
2px
solid
#2288EE
;
color
:
#2288EE
color
:
#2288EE
}
}
.content-head
{
.content-head
{
...
@@ -193,17 +193,23 @@ img {
...
@@ -193,17 +193,23 @@ img {
justify-content
:
flex-end
;
justify-content
:
flex-end
;
background
:
#fff
;
background
:
#fff
;
}
}
.centerButton
{
.centerButton
{
padding
:
20px
20px
;
padding
:
20px
20px
;
display
:
flex
;
display
:
flex
;
justify-content
:
center
;
justify-content
:
center
;
background
:
#fff
;
background
:
#fff
;
}
}
.tips
{
color
:
#FF0000
.tips
{
color
:
#FF0000
}
}
.message
.el-input
{
width
:
250px
!important
;
.message
.el-input
{
width
:
250px
!important
;
}
.el-icon-circle-close
{
color
:
white
;
}
}
\ No newline at end of file
src/components/dataTable.vue
View file @
7dbfa459
...
@@ -163,13 +163,12 @@ export default {
...
@@ -163,13 +163,12 @@ export default {
})
})
this
.
objInput
=
obj
this
.
objInput
=
obj
}
}
let
pageObj
=
this
.
pageObj
this
.
getauditList
()
console
.
log
(
pageObj
)
this
.
getauditList
(
pageObj
)
},
},
//
//
methods
:
{
methods
:
{
async
getauditList
(
pageObj
)
{
async
getauditList
()
{
let
pageObj
=
this
.
pageObj
let
url
=
this
.
url
let
url
=
this
.
url
const
{
code
,
data
,
total
}
=
await
getList
(
pageObj
,
url
)
const
{
code
,
data
,
total
}
=
await
getList
(
pageObj
,
url
)
if
(
code
===
200
)
{
if
(
code
===
200
)
{
...
@@ -209,7 +208,8 @@ export default {
...
@@ -209,7 +208,8 @@ export default {
query
()
{
query
()
{
let
message
=
this
.
objInput
;
let
message
=
this
.
objInput
;
Object
.
assign
(
message
,
this
.
pageObj
)
Object
.
assign
(
message
,
this
.
pageObj
)
this
.
getauditList
(
message
)
console
.
log
(
message
)
this
.
list
(
message
)
},
},
// check选择id
// check选择id
handleSelectionChange
(
val
)
{
handleSelectionChange
(
val
)
{
...
...
src/main.js
View file @
7dbfa459
...
@@ -15,8 +15,12 @@ import store from "@/store/index";
...
@@ -15,8 +15,12 @@ import store from "@/store/index";
import
VueClipboard
from
'vue-clipboard2'
import
VueClipboard
from
'vue-clipboard2'
Vue
.
use
(
VueClipboard
)
Vue
.
use
(
VueClipboard
)
// 右边导航栏自动到最底部
import
VueChatScroll
from
'vue-chat-scroll'
import
VueChatScroll
from
'vue-chat-scroll'
Vue
.
use
(
VueChatScroll
)
Vue
.
use
(
VueChatScroll
)
// 按钮6S后可以点击
import
preventClick
from
'@utils/clickStatefrom'
// 根据自己的路径
Vue
.
use
(
preventClick
)
Vue
.
config
.
productionTip
=
false
;
Vue
.
config
.
productionTip
=
false
;
Vue
.
use
(
VueI18n
);
Vue
.
use
(
VueI18n
);
...
...
src/pages/purchaser/bid/bidEvaluation/review/add.vue
View file @
7dbfa459
...
@@ -19,11 +19,12 @@
...
@@ -19,11 +19,12 @@
<el-input
v-model
.
trim=
"ruleForm.type"
maxlength=
"30"
></el-input>
<el-input
v-model
.
trim=
"ruleForm.type"
maxlength=
"30"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"澄清质询回复截止时间"
prop=
"cutOffTime"
>
<el-form-item
label=
"澄清质询回复截止时间"
prop=
"cutOffTime"
>
<el-date-picker
v-model=
"ruleForm.cutOffTime"
type=
"datetime"
placeholder=
"选择日期时间"
>
<el-date-picker
v-model=
"ruleForm.cutOffTime"
type=
"datetime"
placeholder=
"选择日期时间"
format=
"yyyy-MM-dd HH:mm:ss"
value-format=
"yyyy-MM-dd HH:mm:ss"
>
</el-date-picker>
</el-date-picker>
</el-form-item>
</el-form-item>
<el-form-item
label=
"选择投标人"
prop=
"CompanyId"
>
<el-form-item
label=
"选择投标人"
prop=
"CompanyId"
>
<el-radio
v-model=
"ruleForm.CompanyId"
v-for=
"(item,index) in CompanyIds"
:label=
"item.companyId"
>
{{
item
.
companyName
}}
</el-radio>
<el-radio
v-model=
"ruleForm.CompanyId"
v-for=
"(item,index) in CompanyIds"
:label=
"item.companyId"
:key=
"item.companyId"
>
{{
item
.
companyName
}}
</el-radio>
</el-form-item>
</el-form-item>
<el-form-item
label=
"澄清质询问题内容"
prop=
"content"
>
<el-form-item
label=
"澄清质询问题内容"
prop=
"content"
>
<el-input
v-model
.
trim=
"ruleForm.content"
:rows=
"2"
type=
"textarea"
maxlength=
"300"
></el-input>
<el-input
v-model
.
trim=
"ruleForm.content"
:rows=
"2"
type=
"textarea"
maxlength=
"300"
></el-input>
...
@@ -82,7 +83,6 @@
...
@@ -82,7 +83,6 @@
trigger
:
'blur'
trigger
:
'blur'
}],
}],
cutOffTime
:
[{
cutOffTime
:
[{
type
:
'date'
,
required
:
true
,
required
:
true
,
message
:
'请选择时间'
,
message
:
'请选择时间'
,
trigger
:
'blur'
trigger
:
'blur'
...
...
src/pages/purchaser/bid/bidOpen/bidOpenhal.vue
View file @
7dbfa459
...
@@ -70,7 +70,7 @@
...
@@ -70,7 +70,7 @@
<el-button
@
click=
"failDetail"
v-else
>
流标信息
</el-button>
<el-button
@
click=
"failDetail"
v-else
>
流标信息
</el-button>
<div>
<div>
<el-button
icon=
"el-icon-refresh"
@
click=
"refrsh"
>
刷新
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"refrsh"
>
刷新
</el-button>
<el-button
@
click=
"
isopenInfo1=true
"
:disabled=
"!endbidButton"
v-if=
"!issueTable"
>
下发开标一览表
</el-button>
<el-button
@
click=
"
openInfo1
"
:disabled=
"!endbidButton"
v-if=
"!issueTable"
>
下发开标一览表
</el-button>
<el-button
@
click=
"openInfo"
:disabled=
"!issueTable"
>
查看开标一览表
</el-button>
<el-button
@
click=
"openInfo"
:disabled=
"!issueTable"
>
查看开标一览表
</el-button>
</div>
</div>
<el-button
@
click=
"back"
>
退出大厅
<i
class=
"el-icon-right"
></i></el-button>
<el-button
@
click=
"back"
>
退出大厅
<i
class=
"el-icon-right"
></i></el-button>
...
...
src/pages/purchaser/bid/releaseProject/fileUpload.vue
View file @
7dbfa459
...
@@ -30,7 +30,7 @@
...
@@ -30,7 +30,7 @@
</div>
</div>
<div
class=
"button"
>
<div
class=
"button"
>
<el-button
@
click=
"upper"
>
上一步
</el-button>
<el-button
@
click=
"upper"
>
上一步
</el-button>
<el-button
type=
"primary"
@
click=
"next"
>
发布
</el-button>
<el-button
type=
"primary"
@
click=
"next"
>
发布
</el-button>
</div>
</div>
</div>
</div>
</div>
</div>
...
...
src/pages/purchaser/organization/jurisdictionList.vue
View file @
7dbfa459
...
@@ -15,7 +15,8 @@
...
@@ -15,7 +15,8 @@
</template>
</template>
<
script
>
<
script
>
import
dataTable
from
'@components/dataTable.vue'
import
{
roleList
}
from
'@api/purchaser/organization'
import
dataTable
from
'@components/nopageTable.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
export
default
{
export
default
{
components
:
{
components
:
{
...
@@ -25,14 +26,10 @@ export default {
...
@@ -25,14 +26,10 @@ export default {
data
()
{
data
()
{
return
{
return
{
breads
:
[
'系统管理'
,
'角色权限'
],
breads
:
[
'系统管理'
,
'角色权限'
],
tableData
:
[{
tableData
:
[],
name
:
'部长'
,
remark
:
'XXXXX'
}],
columns
:
[{
columns
:
[{
label
:
'角色名称'
,
label
:
'角色名称'
,
prop
:
'
n
ame'
,
prop
:
'
roleN
ame'
,
width
:
400
width
:
400
},
},
{
{
...
@@ -62,7 +59,23 @@ export default {
...
@@ -62,7 +59,23 @@ export default {
},
},
add
(){
add
(){
this
.
$router
.
push
(
"/purchaser/organization/jurisdictionSee"
)
this
.
$router
.
push
(
"/purchaser/organization/jurisdictionSee"
)
},
async
getroleList
()
{
let
type
=
JSON
.
parse
(
localStorage
.
getItem
(
"userInfo"
)).
type
const
{
data
,
code
}
=
await
roleList
(
type
)
for
(
let
item
of
data
){
if
(
!
item
.
remark
){
item
.
remark
=
"空"
}
}
}
this
.
tableData
=
data
}
},
created
()
{
this
.
getroleList
()
}
}
}
}
</
script
>
</
script
>
...
...
src/pages/purchaser/organization/jurisdictionSee.vue
View file @
7dbfa459
...
@@ -28,7 +28,7 @@
...
@@ -28,7 +28,7 @@
<
script
>
<
script
>
import
{
import
{
roleMenus
,
roleadd
roleMenus
,
roleadd
}
from
'@api/
common/list
'
}
from
'@api/
purchaser/organization
'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
export
default
{
export
default
{
components
:
{
components
:
{
...
...
src/pages/purchaser/organization/memberManagement.vue
View file @
7dbfa459
<
template
>
<
template
>
<div>
<div>
<div
class=
"content"
>
<div
class=
"content"
>
<dataTable
:table-data=
"tableData"
:columns=
"columns"
:page-obj=
"pageObj"
:breads=
"breads"
:checklist=
"check
list"
>
<dataTable
:columns=
"columns"
:page-obj=
"pageObj"
:breads=
"breads"
:checklist=
"checklist"
ref=
"table"
url=
"sys/user/member/
list"
>
<el-button
slot=
"moreButton"
type=
"primary"
@
click=
"add
"
>
添加新用户
</el-button>
<el-button
slot=
"moreButton"
type=
"primary"
@
click=
"add('form')
"
>
添加新用户
</el-button>
<el-table-column
slot=
"operate"
label=
"操作"
align=
"center"
fixed=
"right"
width=
"100"
>
<el-table-column
slot=
"operate"
label=
"操作"
align=
"center"
fixed=
"right"
width=
"100"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"edit(scope.row)"
>
编辑
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"edit(scope.row)"
>
编辑
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"
delete(scope.row)"
>
删除
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"hand
delete(scope.row)"
>
删除
</el-button>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</dataTable>
</dataTable>
<el-dialog
:visible
.
sync=
"dialogFormVisible"
title=
"添加"
>
<el-dialog
:visible
.
sync=
"dialogFormVisible"
title=
"添加"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
>
<el-form-item
label=
"姓名"
label-width=
"5
0px"
prop=
"name"
>
<el-form-item
label=
"姓名"
label-width=
"10
0px"
prop=
"name"
>
<el-input
v-model
.
trim=
"form.name"
autocomplete=
"off"
placeholder=
"请输入"
maxlength=
"30"
></el-input>
<el-input
v-model
.
trim=
"form.name"
autocomplete=
"off"
placeholder=
"请输入"
maxlength=
"30"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"手机"
label-width=
"5
0px"
prop=
"phone"
>
<el-form-item
label=
"手机"
label-width=
"10
0px"
prop=
"phone"
>
<el-input
v-model
.
trim=
"form.phone"
autocomplete=
"off"
placeholder=
"请输入"
maxlength=
"30"
></el-input>
<el-input
v-model
.
trim=
"form.phone"
autocomplete=
"off"
placeholder=
"请输入"
maxlength=
"30"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"邮箱"
label-width=
"5
0px"
prop=
"email"
>
<el-form-item
label=
"邮箱"
label-width=
"10
0px"
prop=
"email"
>
<el-input
v-model
.
trim=
"form.email"
autocomplete=
"off"
placeholder=
"请输入"
maxlength=
"30"
></el-input>
<el-input
v-model
.
trim=
"form.email"
autocomplete=
"off"
placeholder=
"请输入"
maxlength=
"30"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"密码"
label-width=
"5
0px"
prop=
"password"
>
<el-form-item
label=
"密码"
label-width=
"10
0px"
prop=
"password"
>
<el-input
v-model
.
trim=
"form.password"
autocomplete=
"off"
show-password
placeholder=
"请输入"
maxlength=
"30"
></el-input>
<el-input
v-model
.
trim=
"form.password"
autocomplete=
"off"
show-password
placeholder=
"请输入"
maxlength=
"30"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"角色"
label-width=
"50px"
prop=
"role
"
>
<el-form-item
label=
"角色"
label-width=
"100px"
prop=
"roleId
"
>
<el-select
v-model=
"form.role
"
placeholder=
"请选择"
>
<el-select
v-model=
"form.roleId
"
placeholder=
"请选择"
>
<el-option
v-for=
"item in roles"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
:disabled=
"item.disable
d"
>
<el-option
v-for=
"item in roles"
:key=
"item.roleId"
:label=
"item.roleName"
:value=
"item.roleI
d"
>
</el-option>
</el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogFormVisible = false"
>
取 消
</el-button>
<el-button
@
click=
"dialogFormVisible = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"dialogFormVisible = false"
>
确 定
</el-button>
<el-button
type=
"primary"
@
click=
"submitData"
>
确 定
</el-button>
</div>
</el-dialog>
<el-dialog
:visible
.
sync=
"dialogFormVisible1"
title=
"编辑"
>
<el-form
ref=
"form"
:model=
"form1"
:rules=
"rules"
>
<el-form-item
label=
"姓名"
label-width=
"100px"
prop=
"name"
>
<el-input
v-model
.
trim=
"form1.name"
autocomplete=
"off"
placeholder=
"请输入"
maxlength=
"30"
></el-input>
</el-form-item>
<el-form-item
label=
"手机"
label-width=
"100px"
prop=
"phone"
>
<el-input
v-model
.
trim=
"form1.phone"
autocomplete=
"off"
placeholder=
"请输入"
maxlength=
"30"
></el-input>
</el-form-item>
<el-form-item
label=
"邮箱"
label-width=
"100px"
prop=
"email"
>
<el-input
v-model
.
trim=
"form1.email"
autocomplete=
"off"
placeholder=
"请输入"
maxlength=
"30"
></el-input>
</el-form-item>
<el-form-item
label=
"角色"
label-width=
"100px"
prop=
"roleId"
>
<el-select
v-model=
"form1.roleId"
placeholder=
"请选择"
>
<el-option
v-for=
"item in roles"
:key=
"item.roleId"
:label=
"item.roleName"
:value=
"item.roleId"
>
</el-option>
</el-select>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogFormVisible1 = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"submitData1"
>
确 定
</el-button>
</div>
</div>
</el-dialog>
</el-dialog>
</div>
</div>
...
@@ -41,29 +64,43 @@
...
@@ -41,29 +64,43 @@
</template>
</template>
<
script
>
<
script
>
import
dataTable
from
'@components/dataTable.vue'
import
{
export
default
{
roleList
,
checkAccount
,
useradd
,
userdelete
,
useredit
}
from
'@api/purchaser/organization'
import
dataTable
from
'@components/dataTable.vue'
export
default
{
components
:
{
components
:
{
dataTable
dataTable
},
},
data
()
{
data
()
{
let
checkPhone
=
async
(
rule
,
value
,
callback
)
=>
{
if
(
!
value
)
{
return
callback
(
new
Error
(
'手机号不能为空'
));
}
else
{
const
reg
=
/^1
[
3|4|5|7|8
][
0-9
]\d{8}
$/
if
(
reg
.
test
(
value
))
{
callback
();
}
else
{
return
callback
(
new
Error
(
'请输入正确的手机号'
));
}
}
};
return
{
return
{
checklist
:
[{
checklist
:
[{
title
:
'姓名'
,
title
:
'姓名'
,
type
:
'input'
,
type
:
'input'
,
model
:
'
name'
model
:
'
name'
},
{
},
{
title
:
'手机'
,
title
:
'手机'
,
type
:
'input'
,
type
:
'input'
,
model
:
'phone'
model
:
'phone'
}],
}],
breads
:
[
'组织管理'
,
'成员管理'
],
breads
:
[
'组织管理'
,
'成员管理'
],
tableData
:
[{
tableData
:
[],
name
:
'胡彦斌'
,
phone
:
'17877666666'
,
role
:
'管理员'
,
data
:
'2017-10-01 12:00'
}],
columns
:
[{
columns
:
[{
label
:
'姓名'
,
label
:
'姓名'
,
prop
:
'name'
prop
:
'name'
...
@@ -74,11 +111,11 @@ export default {
...
@@ -74,11 +111,11 @@ export default {
},
},
{
{
label
:
'角色'
,
label
:
'角色'
,
prop
:
'rol
e'
prop
:
'roleNam
e'
},
},
{
{
label
:
'创建时间'
,
label
:
'创建时间'
,
prop
:
'data
'
,
prop
:
'createTime
'
,
sortable
:
true
sortable
:
true
},
},
{
{
...
@@ -88,31 +125,22 @@ export default {
...
@@ -88,31 +125,22 @@ export default {
pageObj
:
{
pageObj
:
{
size
:
10
,
size
:
10
,
total
:
1
,
currentPage
:
1
,
currentPage
:
1
,
sizes
:
[
100
,
200
,
300
],
func
:
(
currentPage
)
=>
{
func
:
(
currentPage
)
=>
{
this
.
pageTurning
(
currentPage
)
this
.
pageTurning
(
currentPage
)
}
}
},
},
dialogFormVisible1
:
false
,
dialogFormVisible
:
false
,
dialogFormVisible
:
false
,
form1
:{},
form
:
{
form
:
{
name
:
''
,
name
:
''
,
phone
:
''
,
phone
:
''
,
email
:
''
,
email
:
''
,
password
:
''
,
password
:
''
,
role
:
''
roleId
:
''
},
},
roles
:
[{
roles
:
[],
value
:
'1'
,
label
:
'管理员'
},
{
value
:
'2'
,
label
:
'经理'
},
{
value
:
'3'
,
label
:
'专员'
}],
rules
:
{
rules
:
{
name
:
[{
name
:
[{
required
:
true
,
required
:
true
,
...
@@ -121,35 +149,129 @@ export default {
...
@@ -121,35 +149,129 @@ export default {
}],
}],
phone
:
[{
phone
:
[{
required
:
true
,
required
:
true
,
message
:
'请输入'
,
validator
:
checkPhone
,
trigger
:
'blur'
trigger
:
'blur'
}],
}],
email
:
[{
email
:
[{
required
:
true
,
required
:
true
,
message
:
'请输入
'
,
message
:
'请输入电子邮箱
'
,
trigger
:
'blur'
trigger
:
'blur'
}],
},
{
pattern
:
/^
([
A-Za-z0-9_
\-\.])
+
\@([
A-Za-z0-9_
\-\.])
+
\.([
A-Za-z
]{2,4})
$/
,
message
:
'请输入正确的邮箱地址'
}
],
password
:
[{
password
:
[{
required
:
true
,
required
:
true
,
message
:
'请输入
'
,
message
:
'请输入密码
'
,
trigger
:
'blur'
trigger
:
'blur'
}],
},
role
:
[{
{
pattern
:
/^
(?![
0-9
]
+$
)(?![
a-zA-Z
]
+$
)[
0-9A-Za-z
]{8,16}
$/
,
message
:
'密码需由8-16位数字字母组合'
}
],
roleId
:
[{
required
:
true
,
required
:
true
,
message
:
'请选择'
,
message
:
'请选择'
,
trigger
:
'change'
trigger
:
'change'
}]
}],
uid
:
""
}
}
}
}
},
},
methods
:
{
methods
:
{
// 删除
async
handdelete
(
row
)
{
try
{
await
this
.
$confirm
(
"确定要删除么?"
,
'提示'
,
{
type
:
'warning'
})
const
{
msg
,
code
}
=
await
userdelete
(
row
.
uid
)
if
(
code
==
200
)
{
this
.
$message
.
success
(
msg
)
this
.
$refs
.
table
.
getauditList
()
}
else
{
this
.
$message
.
error
(
msg
)
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
// 编辑
edit
(
row
)
{
edit
(
row
)
{
this
.
form
=
row
this
.
form1
=
Object
.
assign
({},
row
)
this
.
dialogFormVisible1
=
true
this
.
uid
=
row
.
uid
},
// 获取角色列表
async
getroleList
()
{
let
type
=
JSON
.
parse
(
localStorage
.
getItem
(
"userInfo"
)).
type
const
{
data
,
code
}
=
await
roleList
(
type
)
this
.
roles
=
data
},
// 添加新用户
add
(
form
)
{
this
.
form
=
Object
.
assign
({})
this
.
dialogFormVisible
=
true
this
.
dialogFormVisible
=
true
},
},
// 提交添加
async
submitData
()
{
try
{
const
valid
=
await
this
.
$refs
[
'form'
].
validate
()
if
(
valid
)
{
let
form
=
this
.
form
const
{
code
,
msg
}
=
await
useradd
(
form
)
if
(
code
===
200
)
{
this
.
$message
.
success
(
msg
)
this
.
dialogFormVisible
=
false
this
.
$refs
.
table
.
getauditList
()
}
else
{
this
.
$message
.
error
(
msg
)
}
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
// 提交编辑
async
submitData1
()
{
try
{
const
valid
=
await
this
.
$refs
[
'form'
].
validate
()
if
(
valid
)
{
let
form
=
this
.
form1
form
.
uid
=
this
.
uid
const
{
code
,
msg
}
=
await
useredit
(
form
)
if
(
code
===
200
)
{
this
.
$message
.
success
(
msg
)
this
.
dialogFormVisible1
=
false
this
.
$refs
.
table
.
getauditList
()
}
else
{
this
.
$message
.
error
(
msg
)
}
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
},
created
()
{
this
.
getroleList
()
}
}
}
}
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
...
...
src/pages/supply/bid/joinProject/bidSure/bidresultAdvice.vue
View file @
7dbfa459
...
@@ -4,20 +4,23 @@
...
@@ -4,20 +4,23 @@
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<changeNav
:navs=
"navs"
></changeNav>
<changeNav
:navs=
"navs"
></changeNav>
<div
class=
"message"
>
<div
class=
"message"
>
<div>
<div
class=
"flex-between"
>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
</div>
</div>
<div>
<div
v-if=
"state"
class=
"flex-between"
>
<div>
日期:2018-12-12
</div>
<div>
日期:2018-12-12
</div>
<div>
招标结果通知书编号:11111
</div>
<div>
招标结果通知书编号:11111
</div>
</div>
</div>
<div
>
<div
v-if=
"state"
>
<div
class=
"flex-
item
"
>
<div
class=
"flex-
between
"
>
<div
style=
"margin-right: 20px;"
>
附件:中标通知书.pdf
</div>
<div
style=
"margin-right: 20px;"
>
附件:中标通知书.pdf
</div>
<el-button
size=
"mini"
>
下载
</el-button>
<el-button
size=
"mini"
>
下载
</el-button>
</div>
</div>
</div>
</div>
<div
v-else
class=
"detail1"
>
没找到招标结果通知书!
</div>
</div>
</div>
<div
class=
"centerButton"
>
<div
class=
"centerButton"
>
<el-button
@
click=
"back"
>
返回
</el-button>
<el-button
@
click=
"back"
>
返回
</el-button>
...
@@ -37,10 +40,12 @@ export default {
...
@@ -37,10 +40,12 @@ export default {
},
},
data
()
{
data
()
{
return
{
return
{
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作
s
台'
],
navs
:
[
'招标结果通知书'
],
navs
:
[
'招标结果通知书'
],
projectCode
:
""
,
projectCode
:
""
,
projectName
:
""
projectName
:
""
,
detail
:
""
,
state
:
true
}
}
},
},
methods
:
{
methods
:
{
...
@@ -55,6 +60,12 @@ export default {
...
@@ -55,6 +60,12 @@ export default {
data
,
data
,
code
code
}
=
await
bidResultBook
(
message
)
}
=
await
bidResultBook
(
message
)
if
(
code
==
200
){
this
.
detail
=
data
}
else
{
this
.
state
=
false
}
}
}
},
},
created
()
{
created
()
{
...
@@ -68,6 +79,12 @@ export default {
...
@@ -68,6 +79,12 @@ export default {
<
style
scoped
>
<
style
scoped
>
.detail1
{
text-align
:
center
;
font-size
:
20px
;
font-weight
:
bold
;
margin-top
:
30px
;
}
.content
>
h1
{
.content
>
h1
{
text-align
:
center
;
text-align
:
center
;
margin-top
:
20px
;
margin-top
:
20px
;
...
@@ -86,8 +103,7 @@ export default {
...
@@ -86,8 +103,7 @@ export default {
margin
:
0
auto
margin
:
0
auto
}
}
.message
>
div
{
.message
>
div
{
display
:
flex
;
justify-content
:
space-between
;
margin-bottom
:
30px
;
margin-bottom
:
30px
;
}
}
...
...
src/pages/supply/bid/joinProject/bidSure/noticeSee.vue
View file @
7dbfa459
...
@@ -9,13 +9,18 @@
...
@@ -9,13 +9,18 @@
<div
class=
"flex-arround"
>
<div
class=
"flex-arround"
>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
<div>
发布时间:2020-08-08 18:12
</div>
<div
v-if=
"state"
>
发布时间:2020-08-08 18:12
</div>
</div>
</div>
<div
class=
'detail'
v-if=
"state"
>
<h1>
一级标题
</h1>
<h1>
一级标题
</h1>
<div
class=
"img"
>
<div
class=
"img"
>
<img
src=
"@static/images/content.png"
alt=
""
>
<img
src=
"@static/images/content.png"
alt=
""
>
</div>
</div>
<div
class=
"enclosure"
>
相关附件:34567890-678.pdf
</div>
<div
class=
"enclosure"
>
相关附件:34567890-678.pdf
</div>
</div>
<div
v-else
class=
"detail1"
>
未找到该公告详情!
</div>
<div
class=
"centerButton"
>
<div
class=
"centerButton"
>
<el-button
@
click=
"back"
>
返回
</el-button>
<el-button
@
click=
"back"
>
返回
</el-button>
</div>
</div>
...
@@ -24,7 +29,7 @@
...
@@ -24,7 +29,7 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
{
winBookdetail
}
from
'@api/supply/bid'
import
{
noticeWin
}
from
'@api/supply/bid'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
export
default
{
export
default
{
components
:
{
components
:
{
...
@@ -34,31 +39,44 @@ export default {
...
@@ -34,31 +39,44 @@ export default {
return
{
return
{
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
projectCode
:
""
,
projectCode
:
""
,
projectName
:
""
projectName
:
""
,
state
:
true
,
detail
:
""
}
}
},
},
methods
:
{
methods
:
{
back
(){
back
(){
this
.
$router
.
go
(
-
1
)
this
.
$router
.
go
(
-
1
)
},
},
async
get
winBookdetail
()
{
async
get
noticeWin
()
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
const
{
data
,
data
,
code
code
}
=
await
winBookdetail
(
projectId
)
}
=
await
noticeWin
(
projectId
)
if
(
code
==
200
){
this
.
detail
=
data
}
else
{
this
.
state
=
false
}
}
}
},
},
created
()
{
created
()
{
this
.
projectCode
=
localStorage
.
getItem
(
"projectCode"
)
this
.
projectCode
=
localStorage
.
getItem
(
"projectCode"
)
this
.
projectName
=
localStorage
.
getItem
(
"projectName"
)
this
.
projectName
=
localStorage
.
getItem
(
"projectName"
)
this
.
get
winBookdetail
()
this
.
get
noticeWin
()
}
}
}
}
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
.detail1
{
text-align
:
center
;
font-size
:
20px
;
font-weight
:
bold
;
margin-top
:
30px
;
}
.content
>
h1
{
.content
>
h1
{
text-align
:
center
;
text-align
:
center
;
margin-top
:
20px
;
margin-top
:
20px
;
...
...
src/utils/clickStatefrom.js
0 → 100644
View file @
7dbfa459
export
default
{
install
(
Vue
)
{
// 防止重复点击
Vue
.
directive
(
'preventClick'
,
{
inserted
(
el
,
binding
)
{
el
.
addEventListener
(
'click'
,
()
=>
{
if
(
!
el
.
disabled
)
{
el
.
disabled
=
true
setTimeout
(()
=>
{
el
.
disabled
=
false
},
6000
)
}
})
}
})
}
}
\ No newline at end of file
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