Commit 7dbfa459 authored by 张冬's avatar 张冬

角色和成员

parent 48821df5
...@@ -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() {
......
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'
})
}
...@@ -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({
......
...@@ -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
...@@ -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) {
......
...@@ -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);
......
...@@ -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'
......
...@@ -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>
......
...@@ -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>
......
...@@ -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: 'name', prop: 'roleName',
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>
......
...@@ -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: {
......
<template> <template>
<div> <div>
<div class="content"> <div class="content">
<dataTable :table-data="tableData" :columns="columns" :page-obj="pageObj" :breads="breads" :checklist="checklist"> <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="handdelete(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="50px" prop="name"> <el-form-item label="姓名" label-width="100px" 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="50px" prop="phone"> <el-form-item label="手机" label-width="100px" 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="50px" prop="email"> <el-form-item label="邮箱" label-width="100px" 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="50px" prop="password"> <el-form-item label="密码" label-width="100px" 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.disabled"> <el-option v-for="item in roles" :key="item.roleId" :label="item.roleName" :value="item.roleId">
</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: 'role' prop: 'roleName'
}, },
{ {
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>
......
...@@ -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;
} }
......
...@@ -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 getwinBookdetail() { async getnoticeWin() {
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.getwinBookdetail() this.getnoticeWin()
} }
} }
</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;
......
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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment