parent
8d7049ec42
commit
7473b607db
25 changed files with 2297 additions and 847 deletions
After Width: | Height: | Size: 331 B |
After Width: | Height: | Size: 81 KiB |
@ -0,0 +1,263 @@ |
||||
<template> |
||||
<div class="wrap"> |
||||
<div class="join"> |
||||
<h6>欢迎加入</h6> |
||||
<div class="wel"> |
||||
<div class="icon"> |
||||
<img src="@/assets/images/house.png" |
||||
alt=""> |
||||
</div> |
||||
<p class="text" |
||||
style="font-size: 16px">城市合伙人计划</p> |
||||
<p class="text">{{ teamName ? (teamName + '邀请你加入他的团队') : '加入并自动为你创建一个团队群组' }}</p> |
||||
</div> |
||||
<div class="inner"> |
||||
<el-form class="form" |
||||
ref="form" |
||||
:model="form" |
||||
:rules="rules"> |
||||
<el-form-item prop="phone"> |
||||
<el-input v-model.trim="form.phone" |
||||
placeholder="请输入手机号" |
||||
maxlength="11" |
||||
@change="phoneChange"></el-input> |
||||
</el-form-item> |
||||
<el-form-item prop="code"> |
||||
<div class="ver-code"> |
||||
<el-input v-model="form.code" |
||||
placeholder="请输入验证码" |
||||
maxlength="6"></el-input> |
||||
<el-button class="send" |
||||
type="text" |
||||
@click="sendPhoneCode" |
||||
:disabled="phoneDisabled">{{ phoneBtnText }}</el-button> |
||||
</div> |
||||
</el-form-item> |
||||
</el-form> |
||||
<el-button class="submit" |
||||
type="primary" |
||||
@click="submit">立即加入</el-button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import Util from "@/libs/util" |
||||
import Setting from "@/setting" |
||||
export default { |
||||
data () { |
||||
return { |
||||
provinceId: this.$route.query.provinceId, |
||||
provinces: [], |
||||
cities: [], |
||||
isMobile: Util.isMobile(), |
||||
userName: this.$route.query.userName, |
||||
teamName: this.$route.query.teamName, |
||||
admin: this.$route.query.admin, // 是否是转让超管 |
||||
form: { |
||||
id: this.$route.query.accountId, |
||||
partnerClassificationId: this.$route.query.id, |
||||
isTeam: this.$route.query.isTeam, // 移动端创建的为成员(0),pc创建的为团队(1) |
||||
phone: '', |
||||
code: '', |
||||
userName: '', |
||||
}, |
||||
rules: { |
||||
phone: [ |
||||
{ required: true, message: '请输入手机号', trigger: 'blur' } |
||||
], |
||||
code: [ |
||||
{ required: true, message: "请输入验证码", trigger: 'blur' } |
||||
] |
||||
}, |
||||
repeat: false, // 是否有已存在用户,有的话禁填用户名和账号 |
||||
phoneDisabled: false, |
||||
phoneTimer: null, |
||||
phoneOpener: '', |
||||
phoneBtnText: '发送验证码', |
||||
submiting: false // 新增编辑防抖标识 |
||||
}; |
||||
}, |
||||
mounted () { |
||||
this.getProvince() |
||||
this.form.cityId && this.getCity() |
||||
}, |
||||
methods: { |
||||
// 获取省份 |
||||
getProvince () { |
||||
this.$get(this.api.queryProvince).then(res => { |
||||
this.provinces = res.list |
||||
}).catch(res => { }) |
||||
}, |
||||
// 获取城市 |
||||
getCity (val) { |
||||
this.$get(this.api.queryCity, { |
||||
provinceId: this.form.provinceId |
||||
}).then(res => { |
||||
this.cities = res.list |
||||
if (val) this.form.cityId = '' |
||||
}).catch(res => { }) |
||||
}, |
||||
// 验证手机号 |
||||
verifyPhone (phone) { |
||||
if (!phone) { |
||||
Util.warningMsg("请输入手机号") |
||||
return false |
||||
} |
||||
if (!/^1[3456789]\d{9}$/.test(phone) && !/^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(phone)) { |
||||
Util.warningMsg("请输入正确的手机号") |
||||
return false |
||||
} |
||||
return true |
||||
}, |
||||
// 验证码倒计时 |
||||
phoneCountdown () { |
||||
let count = 60 |
||||
if (!this.phoneTimer) { |
||||
this.phoneDisabled = true |
||||
this.phoneTimer = setInterval(() => { |
||||
if (count > 0) { |
||||
count-- |
||||
this.phoneBtnText = `${count}秒后重试` |
||||
} else { |
||||
this.phoneDisabled = false |
||||
clearInterval(this.phoneTimer) |
||||
this.phoneTimer = null |
||||
this.phoneBtnText = `发送验证码` |
||||
} |
||||
}, 1000) |
||||
} |
||||
}, |
||||
// 发送验证码 |
||||
sendPhoneCode () { |
||||
const { phone } = this.form |
||||
if (!this.verifyPhone(phone)) return false |
||||
this.$post(this.api.sendPhoneOrEmailCode, { |
||||
platform: Setting.platformId, |
||||
phone, |
||||
types: 2 |
||||
}).then(({ message }) => { |
||||
if (message.opener) { |
||||
this.phoneCountdown() |
||||
this.phoneOpener = message.opener |
||||
} else { |
||||
Util.errorMsg(message) |
||||
} |
||||
}).catch(res => { }) |
||||
}, |
||||
// 手机号输入完后,带出信息 |
||||
phoneChange () { |
||||
const { form } = this |
||||
this.$get(this.api.queryUserInfoByPhone, { |
||||
phone: form.phone |
||||
}).then(({ info }) => { |
||||
// 返回了信息,则赋值,并禁止输入 |
||||
if (info) { |
||||
this.repeat = true |
||||
form.account = info.account |
||||
form.userName = info.userName |
||||
} else { |
||||
this.repeat = false |
||||
} |
||||
}).catch(res => { }) |
||||
}, |
||||
// 提交 |
||||
submit () { |
||||
this.$refs.form.validate((valid) => { |
||||
if (valid) { |
||||
if (this.submiting) return false |
||||
if (this.phoneRepeat) return Util.warningMsg("该手机号已存在") |
||||
if (this.emailRepeat) return Util.warningMsg("该邮箱已存在") |
||||
const { form } = this |
||||
form.uniqueIdentification = Date.now() |
||||
this.submiting = true |
||||
this.$post(this.api[this.admin ? 'transferAdmin' : 'savePartnerAccount'], form).then(res => { |
||||
this.$router.push('/success') |
||||
}).catch(res => { |
||||
this.submiting = false |
||||
}) |
||||
} |
||||
}) |
||||
}, |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.wrap { |
||||
height: 100%; |
||||
} |
||||
.ver-code { |
||||
position: relative; |
||||
.el-button { |
||||
position: absolute; |
||||
top: 11px; |
||||
right: 10px; |
||||
color: #319bf7; |
||||
} |
||||
} |
||||
.join { |
||||
width: 436px; |
||||
margin: 100px auto 0; |
||||
text-align: center; |
||||
border-radius: 6px; |
||||
background-color: #fff; |
||||
border-radius: 6px; |
||||
overflow: hidden; |
||||
h6 { |
||||
padding: 0 15px; |
||||
font-size: 18px; |
||||
line-height: 48px; |
||||
color: #fff; |
||||
background-color: #319bf7; |
||||
} |
||||
.icon { |
||||
display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
width: 70px; |
||||
height: 70px; |
||||
margin: 20px auto; |
||||
border-radius: 4px; |
||||
background-color: #007eff; |
||||
} |
||||
.text { |
||||
margin-bottom: 10px; |
||||
color: #565656; |
||||
} |
||||
.inner { |
||||
padding: 20px; |
||||
} |
||||
/deep/.el-form-item { |
||||
margin-bottom: 25px; |
||||
} |
||||
/deep/.el-input__inner { |
||||
position: relative; |
||||
height: 52px; |
||||
line-height: 50px; |
||||
background-color: #fbfbfb; |
||||
border: 1px solid #e1e6f2; |
||||
border-radius: 4px !important; |
||||
} |
||||
.submit { |
||||
width: 100%; |
||||
padding: 0; |
||||
margin-top: 20px; |
||||
font-size: 18px; |
||||
line-height: 44px; |
||||
background-color: #007eff; |
||||
border-color: #007eff; |
||||
border-radius: 30px; |
||||
} |
||||
} |
||||
@media (max-width: 720px) { |
||||
.join { |
||||
width: 90%; |
||||
margin: 20px auto 0; |
||||
.submit { |
||||
margin-top: 0; |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,70 @@ |
||||
<template> |
||||
<div class="wrap"> |
||||
<div class="inner"> |
||||
<div class="icon"> |
||||
<i class="el-icon-success icon"></i> |
||||
<p class="tips">加入成功</p> |
||||
</div> |
||||
<p class="text">你已加入城市合伙人计划</p> |
||||
<p class="text">请保存并用微信扫以下二维码打开城市合伙人小程序</p> |
||||
<img class="qrcode" |
||||
src="@/assets/images/mini.jpg" |
||||
alt=""> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data () { |
||||
return { |
||||
|
||||
}; |
||||
}, |
||||
mounted () { |
||||
|
||||
}, |
||||
methods: { |
||||
|
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.wrap { |
||||
display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
height: 100%; |
||||
background-color: #f3f6fa; |
||||
} |
||||
.inner { |
||||
width: 436px; |
||||
padding: 50px 0; |
||||
text-align: center; |
||||
border-radius: 6px; |
||||
background-color: #fff; |
||||
border-radius: 10px; |
||||
overflow: hidden; |
||||
.icon { |
||||
font-size: 40px; |
||||
color: #007eff; |
||||
} |
||||
.tips { |
||||
margin: 10px 0; |
||||
font-size: 20px; |
||||
} |
||||
.text { |
||||
margin-bottom: 15px; |
||||
font-size: 14px; |
||||
} |
||||
.qrcode { |
||||
width: 200px; |
||||
} |
||||
} |
||||
@media (max-width: 720px) { |
||||
.inner { |
||||
width: 90%; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,196 @@ |
||||
<template> |
||||
<div class="page-content" |
||||
style="padding: 24px"> |
||||
<div class="tool"> |
||||
<ul class="filter"> |
||||
<li> |
||||
<label>搜索:</label> |
||||
<el-input placeholder="请输入姓名、姓名进行查询" |
||||
prefix-icon="el-icon-search" |
||||
v-model="keyword" |
||||
clearable |
||||
size="mini" |
||||
style="width: 250px"></el-input> |
||||
</li> |
||||
</ul> |
||||
<div></div> |
||||
</div> |
||||
|
||||
<el-table ref="table" |
||||
:data="list" |
||||
class="table" |
||||
stripe |
||||
header-align="center" |
||||
row-key="id"> |
||||
<el-table-column type="index" |
||||
width="60" |
||||
label="序号" |
||||
align="center"> |
||||
<template slot-scope="scope"> |
||||
{{ scope.$index + (page - 1) * pageSize + 1 }} |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column prop="phone" |
||||
label="手机号"> |
||||
</el-table-column> |
||||
<el-table-column prop="userName" |
||||
label="姓名"> |
||||
</el-table-column> |
||||
<el-table-column prop="username" |
||||
label="角色"> |
||||
<template slot-scope="scope"> |
||||
{{ scope.row.isTeam === '1' ? '负责人' : '成员' }} |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column prop="username" |
||||
label="加入时间"> |
||||
</el-table-column> |
||||
<el-table-column prop="username" |
||||
label="实名认证"> |
||||
</el-table-column> |
||||
<el-table-column prop="lastLoginTime" |
||||
label="最近登录"> |
||||
</el-table-column> |
||||
<!-- <el-table-column label="操作" |
||||
align="center" |
||||
width="320"> |
||||
<template slot-scope="scope"> |
||||
<el-button type="text" |
||||
@click="delData(scope.row)">删除</el-button> |
||||
<el-switch v-model="scope.row.isDisable" |
||||
:active-text="scope.row.isDisable ? '关' : '开'" |
||||
:active-value="0" |
||||
:inactive-value="1" |
||||
style="margin-left: 5px" |
||||
@change="switchOff($event,scope.row,scope.$index)"></el-switch> |
||||
</template> |
||||
</el-table-column> --> |
||||
</el-table> |
||||
<div class="pagination"> |
||||
<el-pagination background |
||||
layout="total, prev, pager, next" |
||||
:total="total" |
||||
@current-change="handleCurrentChange" |
||||
:current-page="page"> |
||||
</el-pagination> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import util from "@/libs/util"; |
||||
import axios from 'axios' |
||||
import Setting from "@/setting"; |
||||
export default { |
||||
name: "matchSignup", |
||||
data () { |
||||
return { |
||||
id: this.$route.query.id, |
||||
teamId: this.$route.query.teamId, |
||||
keyword: '', |
||||
list: [], |
||||
multipleSelection: [], |
||||
page: 1, |
||||
pageSize: 10, |
||||
total: 0, |
||||
}; |
||||
}, |
||||
watch: { |
||||
keyword: function (val) { |
||||
clearTimeout(this.searchTimer); |
||||
this.searchTimer = setTimeout(() => { |
||||
this.initData(); |
||||
}, 500); |
||||
} |
||||
}, |
||||
mounted () { |
||||
this.initData() |
||||
}, |
||||
methods: { |
||||
getData () { |
||||
this.$post(this.api.platformTeamAccountList, { |
||||
type: 1, |
||||
pageNum: this.page, |
||||
pageSize: this.pageSize, |
||||
keyWord: this.keyword, |
||||
platformId: 5, |
||||
classificationId: this.teamId |
||||
}).then(({ pageList }) => { |
||||
this.list = pageList.records; |
||||
this.total = pageList.total; |
||||
}).catch(res => { }); |
||||
}, |
||||
initData () { |
||||
this.page = 1 |
||||
this.getData() |
||||
}, |
||||
handleSelectionChange (val) { |
||||
this.multipleSelection = val; |
||||
}, |
||||
handleCurrentChange (val) { |
||||
this.page = val; |
||||
this.getData(); |
||||
}, |
||||
switchOff (val, row, index) { |
||||
this.$put(`${this.api.disableActivityApplicant}?competitionRegistrationId=${row.id}&isDisable=${val}`).then(res => { }).catch(err => { }); |
||||
}, |
||||
delData (row) { |
||||
this.$confirm("此删除操作不可逆,是否确认删除选中项?", "提示", { |
||||
type: "warning" |
||||
}) |
||||
.then(() => { |
||||
this.$post(`${this.api.delActivityApplicant}?id=${row.id}`).then(res => { |
||||
util.successMsg("删除成功"); |
||||
this.getData(); |
||||
}).catch(res => { |
||||
}); |
||||
}) |
||||
.catch(() => { |
||||
}); |
||||
}, |
||||
// 排序回调 |
||||
sortChange (column) { |
||||
// 1上2下 |
||||
if (column.prop === 'school') this.schoolOrder = column.order ? column.order === 'ascending' ? 2 : 1 : '' |
||||
if (column.prop === 'teamName') this.teamOrder = column.order ? column.order === 'ascending' ? 2 : 1 : '' |
||||
this.getData() |
||||
}, |
||||
exportAll () { |
||||
const data = this.multipleSelection |
||||
if (data.length) { |
||||
data.map((e, i) => e.id = i + 1) |
||||
axios.post(this.api.exportDataInBatchesApplicant, data, { |
||||
headers: { |
||||
token: this.token |
||||
}, |
||||
responseType: 'blob' |
||||
}).then((res) => { |
||||
util.downloadFileDirect(`报名人员.xls`, new Blob([res.data])) |
||||
}).catch(res => { }) |
||||
} else { |
||||
axios.get(`${this.api.excelExportApplicant}?activityId=${this.id}`, { |
||||
headers: { |
||||
token: this.token |
||||
}, |
||||
responseType: 'blob' |
||||
}).then((res) => { |
||||
util.downloadFileDirect(`报名人员.xls`, new Blob([res.data])) |
||||
}).catch(res => { }) |
||||
} |
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
/deep/.dia-form { |
||||
.w-100 { |
||||
width: 100%; |
||||
} |
||||
.tips { |
||||
display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,132 @@ |
||||
<template> |
||||
<div class="page"> |
||||
<el-form label-width="170px" |
||||
label-suffix=":" |
||||
class="input-form model" |
||||
size="small"> |
||||
<el-form-item label="幼儿园名称"> |
||||
<div class="d-inline-block"> |
||||
<el-input v-model="form.companyName" |
||||
disabled /> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="统一社会信用代码"> |
||||
<div class="d-inline-block"> |
||||
<el-input disabled |
||||
v-model="form.creditCode" /> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="法人"> |
||||
<div class="d-inline-block"> |
||||
<el-input disabled |
||||
v-model="form.legalPerson" /> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="营业执照"> |
||||
<img v-if="form.businessLicensePicture" |
||||
class="pic" |
||||
:src="form.businessLicensePicture" |
||||
alt=""> |
||||
</el-form-item> |
||||
<el-form-item label="办学许可证件"> |
||||
<img v-if="form.licenseForRunningSchool" |
||||
class="pic" |
||||
:src="form.licenseForRunningSchool" |
||||
alt=""> |
||||
</el-form-item> |
||||
<div class="aline"></div> |
||||
|
||||
<div class="info"> |
||||
<div class="field"> |
||||
<label>申请人</label> |
||||
<p class="val">{{ form.account }}</p> |
||||
</div> |
||||
<div class="field"> |
||||
<label>联系方式</label> |
||||
<p class="val">{{ form.contactInformation }}</p> |
||||
</div> |
||||
<div class="field"> |
||||
<label>提交时间</label> |
||||
<p class="val">{{ form.submitTime }}</p> |
||||
</div> |
||||
</div> |
||||
</el-form> |
||||
|
||||
<div class="btns"> |
||||
<el-button type="primary" |
||||
@click="submit(2)">通过</el-button> |
||||
<el-button type="danger" |
||||
@click="submit(3)">不通过</el-button> |
||||
<el-button @click="$router.back()">返回</el-button> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import Util from "@/libs/util"; |
||||
import Setting from "@/setting"; |
||||
export default { |
||||
data () { |
||||
return { |
||||
id: this.$route.query.id || '', |
||||
form: {}, |
||||
submiting: false, |
||||
}; |
||||
}, |
||||
mounted () { |
||||
this.$store.commit('user/setCrumbs', [ |
||||
{ |
||||
name: '幼儿园管理', |
||||
route: '/preschool' |
||||
}, |
||||
{ |
||||
name: '幼儿园审核' |
||||
}, |
||||
]) |
||||
this.getData() |
||||
}, |
||||
methods: { |
||||
getData () { |
||||
const { id } = this |
||||
id && this.$post(`${this.api.enterpriseCertificationDetails}?id=${id}`).then(({ data }) => { |
||||
this.form = data |
||||
}).catch(err => { }) |
||||
}, |
||||
// 提交 |
||||
async submit (auditStatus) { |
||||
if (this.submiting) return false |
||||
this.submiting = true |
||||
try { |
||||
await this.$post(`${this.api.informationAudit}?auditStatus=${auditStatus}&id=${this.id}`).then(res => { |
||||
this.$router.back() |
||||
Util.successMsg('审核成功!'); |
||||
}) |
||||
} catch (e) { |
||||
this.submiting = true |
||||
} |
||||
}, |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style scoped lang="scss"> |
||||
.pic { |
||||
max-width: 500px; |
||||
} |
||||
.info { |
||||
.field { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
width: 470px; |
||||
margin: 10px 0; |
||||
} |
||||
label { |
||||
font-size: 14px; |
||||
} |
||||
.val { |
||||
font-size: 15px; |
||||
font-weight: 600; |
||||
color: #333; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,188 @@ |
||||
<template> |
||||
<div class="page"> |
||||
<div class="action"> |
||||
<span v-if="form.auditStatus !== ''" |
||||
class="status">{{ auditStatus.find(e => e.id === form.auditStatus).name }}</span> |
||||
<el-button v-if="!editing" |
||||
@click="edit">编辑</el-button> |
||||
</div> |
||||
<el-form label-width="170px" |
||||
label-suffix=":" |
||||
class="input-form model" |
||||
size="small" |
||||
:disabled="!editing"> |
||||
<el-form-item label="认证状态"> |
||||
<el-select v-model="form.authenticationStatus" |
||||
clearable> |
||||
<el-option v-for="(item, i) in authenticationStatus" |
||||
:key="i" |
||||
:label="item.name" |
||||
:value="item.id"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="幼儿园名称"> |
||||
<div class="d-inline-block"> |
||||
<el-input v-model="form.companyName" /> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="统一社会信用代码"> |
||||
<div class="d-inline-block"> |
||||
<el-input v-model="form.creditCode" /> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="法人"> |
||||
<div class="d-inline-block"> |
||||
<el-input v-model="form.legalPerson" /> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="营业执照"> |
||||
<img v-if="form.businessLicensePicture" |
||||
class="pic" |
||||
:src="form.businessLicensePicture" |
||||
alt=""> |
||||
</el-form-item> |
||||
<el-form-item label="办学许可证件"> |
||||
<img v-if="form.licenseForRunningSchool" |
||||
class="pic" |
||||
:src="form.licenseForRunningSchool" |
||||
alt=""> |
||||
</el-form-item> |
||||
<div class="aline"></div> |
||||
|
||||
<div class="info"> |
||||
<div class="field"> |
||||
<label>申请人</label> |
||||
<p class="val">{{ form.account }}</p> |
||||
</div> |
||||
<div class="field"> |
||||
<label>联系方式</label> |
||||
<p class="val">{{ form.contactInformation }}</p> |
||||
</div> |
||||
<div class="field"> |
||||
<label>提交时间</label> |
||||
<p class="val">{{ form.submitTime }}</p> |
||||
</div> |
||||
</div> |
||||
</el-form> |
||||
|
||||
<div class="btns"> |
||||
<el-button v-if="editing" |
||||
type="primary" |
||||
@click="submit">保存</el-button> |
||||
<el-button @click="$router.back()">返回</el-button> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import Util from "@/libs/util"; |
||||
import Setting from "@/setting"; |
||||
import Const from '@/const/user' |
||||
export default { |
||||
data () { |
||||
return { |
||||
id: this.$route.query.id, |
||||
auditStatus: Const.auditStatus, |
||||
authenticationStatus: [ |
||||
{ |
||||
id: 2, |
||||
name: '已认证' |
||||
}, |
||||
{ |
||||
id: 0, |
||||
name: '未认证' |
||||
}, |
||||
], |
||||
form: { |
||||
companyName: '', |
||||
creditCode: '', |
||||
legalPerson: '', |
||||
auditStatus: '', |
||||
authenticationStatus: '' |
||||
}, |
||||
editing: false, |
||||
submiting: false, |
||||
}; |
||||
}, |
||||
mounted () { |
||||
this.$store.commit('user/setCrumbs', [ |
||||
{ |
||||
name: '幼儿园管理', |
||||
route: '/preschool' |
||||
}, |
||||
{ |
||||
name: '认证信息' |
||||
}, |
||||
]) |
||||
this.getData() |
||||
}, |
||||
methods: { |
||||
getData () { |
||||
this.$post(`${this.api.enterpriseCertificationDetails}?id=${this.id}`).then(({ data }) => { |
||||
if (data.authenticationStatus === 1) data.authenticationStatus = '' |
||||
this.form = data |
||||
}).catch(err => { }) |
||||
}, |
||||
// 编辑 |
||||
edit () { |
||||
this.editing = true |
||||
}, |
||||
// 提交 |
||||
async submit () { |
||||
const { form } = this |
||||
if (form.authenticationStatus === '') return Util.warningMsg('请选择认证状态') |
||||
if (!form.companyName) return Util.warningMsg('请输入幼儿园名称') |
||||
if (!form.creditCode) return Util.warningMsg('请输入统一社会信用代码') |
||||
if (!form.legalPerson) return Util.warningMsg('请输入法人') |
||||
if (this.submiting) return false |
||||
this.submiting = true |
||||
try { |
||||
await this.$post(this.api.updateCertification, form).then(res => { |
||||
Util.successMsg('保存成功!'); |
||||
this.$router.back() |
||||
}) |
||||
} catch (e) { |
||||
this.submiting = true |
||||
} |
||||
}, |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style scoped lang="scss"> |
||||
.page { |
||||
position: relative; |
||||
padding-bottom: 80px; |
||||
.action { |
||||
z-index: 1; |
||||
position: absolute; |
||||
right: 50px; |
||||
.status { |
||||
margin-right: 10px; |
||||
color: #2962ff; |
||||
} |
||||
} |
||||
} |
||||
.pic { |
||||
max-width: 500px; |
||||
} |
||||
.input-form.model { |
||||
height: calc(100vh - 310px); |
||||
} |
||||
.info { |
||||
.field { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
width: 470px; |
||||
margin: 10px 0; |
||||
} |
||||
label { |
||||
font-size: 14px; |
||||
} |
||||
.val { |
||||
font-size: 15px; |
||||
font-weight: 600; |
||||
color: #333; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,395 @@ |
||||
<template> |
||||
<div class="page"> |
||||
<div class="action"> |
||||
<el-button @click="edit">编辑</el-button> |
||||
</div> |
||||
<el-form label-width="170px" |
||||
label-suffix=":" |
||||
class="input-form model" |
||||
size="small" |
||||
:disabled="!editing"> |
||||
<el-form-item label="LOGO"> |
||||
<el-upload class="avatar-uploader" |
||||
accept=".jpg,.png,.jpeg,.gif" |
||||
:limit="1" |
||||
:on-exceed="handleExceed" |
||||
:before-remove="beforeRemove" |
||||
:on-remove="handleRemove('logoUrl')" |
||||
:on-error="uploadError" |
||||
action="" |
||||
:http-request="e => handleRequest(e, 'logoUrl')"> |
||||
<img v-if="form.logoUrl" |
||||
:src="form.logoUrl" |
||||
class="avatar"> |
||||
<div class="uploader-default" |
||||
v-else> |
||||
<i class="el-icon-plus"></i> |
||||
<p>上传LOGO</p> |
||||
</div> |
||||
</el-upload> |
||||
</el-form-item> |
||||
<el-form-item label="幼儿园名称"> |
||||
<div class="d-inline-block"> |
||||
<el-input v-model="form.classificationName" /> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="幼儿园slogan"> |
||||
<el-input type="textarea" |
||||
v-model="form.slogan" /> |
||||
</el-form-item> |
||||
<el-form-item label="省份"> |
||||
<el-select v-model="form.province" |
||||
clearable |
||||
placeholder="请选择省份" |
||||
@change="getCity" |
||||
@clear="clearprovince"> |
||||
<el-option v-for="(item, i) in provinceList" |
||||
:key="i" |
||||
:value="item.provinceName"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="城市"> |
||||
<el-select v-model="form.city" |
||||
clearable |
||||
placeholder="请选择城市" |
||||
:disabled="form.province ? false : true"> |
||||
<el-option v-for="(item, i) in cityList" |
||||
:key="i" |
||||
:value="item.cityName"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="地址"> |
||||
<el-input type="textarea" |
||||
v-model="form.address" /> |
||||
</el-form-item> |
||||
<el-form-item label="幼儿园简介"> |
||||
<el-input type="textarea" |
||||
v-model="form.briefIntroduction" /> |
||||
<Upload class="m-t-10" |
||||
:limit="3" |
||||
:file-list.sync="pics" |
||||
:on-remove="handleAnnexRemove" |
||||
@onSuccess="uploadPicSuccess"> |
||||
<template slot="tip"> |
||||
<p>最多选择3张图片</p> |
||||
</template> |
||||
</Upload> |
||||
</el-form-item> |
||||
<el-form-item label="二维码一"> |
||||
<el-input v-model="form.qrCodeOneName" |
||||
placeholder="请输入二维码描述" /> |
||||
|
||||
<el-upload class="avatar-uploader m-t-10" |
||||
accept=".jpg,.png,.jpeg,.gif" |
||||
:limit="1" |
||||
:on-exceed="handleExceed" |
||||
:before-remove="beforeRemove" |
||||
:on-remove="handleRemove('qrCodeOneUrl')" |
||||
:on-error="uploadError" |
||||
action="" |
||||
:http-request="e => handleRequest(e, 'qrCodeOneUrl')"> |
||||
<img v-if="form.qrCodeOneUrl" |
||||
:src="form.qrCodeOneUrl" |
||||
class="avatar"> |
||||
<div class="uploader-default" |
||||
v-else> |
||||
<i class="el-icon-plus"></i> |
||||
<p>上传第一张二维码</p> |
||||
</div> |
||||
</el-upload> |
||||
</el-form-item> |
||||
<el-form-item label="二维码二"> |
||||
<el-input v-model="form.qrCodeTwoName" |
||||
placeholder="请输入二维码描述" /> |
||||
|
||||
<el-upload class="avatar-uploader m-t-10" |
||||
accept=".jpg,.png,.jpeg,.gif" |
||||
:limit="1" |
||||
:on-exceed="handleExceed" |
||||
:before-remove="beforeRemove" |
||||
:on-remove="handleRemove('qrCodeTwoUrl')" |
||||
:on-error="uploadError" |
||||
action="" |
||||
:http-request="e => handleRequest(e, 'qrCodeTwoUrl')"> |
||||
<img v-if="form.qrCodeTwoUrl" |
||||
:src="form.qrCodeTwoUrl" |
||||
class="avatar"> |
||||
<div class="uploader-default" |
||||
v-else> |
||||
<i class="el-icon-plus"></i> |
||||
<p>上传第二张二维码</p> |
||||
</div> |
||||
</el-upload> |
||||
</el-form-item> |
||||
<el-form-item label="二维码三"> |
||||
<el-input v-model="form.qrCodeThreeName" |
||||
placeholder="请输入二维码描述" /> |
||||
|
||||
<el-upload class="avatar-uploader m-t-10" |
||||
accept=".jpg,.png,.jpeg,.gif" |
||||
:limit="1" |
||||
:on-exceed="handleExceed" |
||||
:before-remove="beforeRemove" |
||||
:on-remove="handleRemove('qrCodeThreeUrl')" |
||||
:on-error="uploadError" |
||||
action="" |
||||
:http-request="e => handleRequest(e, 'qrCodeThreeUrl')"> |
||||
<img v-if="form.qrCodeThreeUrl" |
||||
:src="form.qrCodeThreeUrl" |
||||
class="avatar"> |
||||
<div class="uploader-default" |
||||
v-else> |
||||
<i class="el-icon-plus"></i> |
||||
<p>上传第三张二维码</p> |
||||
</div> |
||||
</el-upload> |
||||
</el-form-item> |
||||
</el-form> |
||||
|
||||
<div class="btns"> |
||||
<el-button v-if="editing" |
||||
type="primary" |
||||
@click="submit">保存</el-button> |
||||
<el-button @click="$router.back()">返回</el-button> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import Util from "@/libs/util"; |
||||
import Setting from "@/setting"; |
||||
import Upload from '@/components/upload'; |
||||
import Oss from '@/components/upload/upload.js' |
||||
export default { |
||||
data () { |
||||
return { |
||||
id: this.$route.query.id, |
||||
teamId: this.$route.query.teamId, |
||||
form: { |
||||
address: '', |
||||
briefIntroduction: '', |
||||
city: '', |
||||
classificationName: '', |
||||
id: '', |
||||
logoUrl: '', |
||||
pictureUrl: '', |
||||
province: '', |
||||
qrCodeOneName: '', |
||||
qrCodeOneUrl: '', |
||||
qrCodeThreeName: '', |
||||
qrCodeThreeUrl: '', |
||||
qrCodeTwoName: '', |
||||
qrCodeTwoUrl: '', |
||||
slogan: '', |
||||
}, |
||||
provinceList: [], |
||||
cityList: [], |
||||
pics: [], |
||||
editing: false, |
||||
submiting: false, |
||||
}; |
||||
}, |
||||
components: { |
||||
Upload |
||||
}, |
||||
watch: { |
||||
// 监听信息是否有更改,有的话页面离开的时候要询问是否要保存 |
||||
form: { |
||||
handler () { |
||||
this.updateTime++ |
||||
}, |
||||
deep: true |
||||
}, |
||||
}, |
||||
mounted () { |
||||
this.$store.commit('user/setCrumbs', [ |
||||
{ |
||||
name: '供应商管理', |
||||
route: '/preschool' |
||||
}, |
||||
{ |
||||
name: '基本信息' |
||||
}, |
||||
]) |
||||
this.getProvince() |
||||
this.getData() |
||||
}, |
||||
methods: { |
||||
getData () { |
||||
this.$get(`${this.api.queryTeamInfo}?teamId=${this.teamId}`).then(res => { |
||||
Object.assign(this.form, res.teamInfo) |
||||
}).catch(err => { }) |
||||
}, |
||||
|
||||
getProvince () { |
||||
this.$get(this.api.queryProvince).then(res => { |
||||
this.provinceList = res.list |
||||
}).catch(res => { }) |
||||
}, |
||||
clearprovince () { |
||||
this.form.city = '' |
||||
}, |
||||
// 获取城市 |
||||
getCity () { |
||||
this.clearprovince() |
||||
this.getCityData() |
||||
}, |
||||
getCityData () { |
||||
this.$get(this.api.queryCity, { |
||||
provinceId: this.provinceList.find(e => e.provinceName === this.form.province).provinceId |
||||
}).then(res => { |
||||
this.cityList = res.list |
||||
}).catch(res => { }) |
||||
}, |
||||
|
||||
// 编辑 |
||||
edit () { |
||||
this.editing = true |
||||
}, |
||||
handleExceed (files, fileList) { |
||||
Util.warningMsg(`当前限制选择 1 个文件,如需更换,请删除上一个文件再重新选择!`); |
||||
}, |
||||
beforeRemove (file, fileList) { |
||||
return this.$confirm(`确定移除 ${file.name}?`); |
||||
}, |
||||
handleRemove (field) { |
||||
Oss.del(this.form[field]) |
||||
this.form[field] = '' |
||||
}, |
||||
uploadError (err, file, fileList) { |
||||
this.$message({ |
||||
message: "上传出错,请重试!", |
||||
type: "error", |
||||
center: true |
||||
}) |
||||
}, |
||||
// logo自定义上传 |
||||
async handleRequest ({ file }, field) { |
||||
this.form[field] && Oss.del(this.form[field]) |
||||
Oss.upload(file).then(res => { |
||||
this.form[field] = res.url |
||||
}) |
||||
}, |
||||
|
||||
|
||||
// 附件上传成功 |
||||
uploadPicSuccess (file) { |
||||
console.log(33, this.pics) |
||||
}, |
||||
handleAnnexRemove (file, fileList) { |
||||
Oss.del(file.url) |
||||
this.pics = fileList |
||||
}, |
||||
|
||||
// 提交 |
||||
async submit () { |
||||
const { form } = this |
||||
if (!form.classificationName) return Util.warningMsg('请输入幼儿园名称') |
||||
if (this.submiting) return false |
||||
this.submiting = true |
||||
try { |
||||
await this.$post(this.api.updateTeamInfo, form).then(res => { |
||||
Util.successMsg('保存成功!'); |
||||
this.$router.back() |
||||
}) |
||||
} catch (e) { |
||||
this.submiting = true |
||||
} |
||||
}, |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style scoped lang="scss"> |
||||
.page { |
||||
position: relative; |
||||
padding-bottom: 80px; |
||||
.action { |
||||
z-index: 1; |
||||
position: absolute; |
||||
right: 50px; |
||||
.status { |
||||
margin-right: 10px; |
||||
color: #2962ff; |
||||
} |
||||
} |
||||
} |
||||
$upload-width: 140px; |
||||
$upload-height: 140px; |
||||
$upload-lg-height: 150px; |
||||
/deep/ .avatar-uploader { |
||||
.el-upload { |
||||
position: relative; |
||||
width: $upload-width; |
||||
height: $upload-height; |
||||
border: 1px dashed #d9d9d9; |
||||
border-radius: 6px; |
||||
cursor: pointer; |
||||
overflow: hidden; |
||||
|
||||
&:hover { |
||||
border-color: #cb221c; |
||||
} |
||||
|
||||
.uploader-default { |
||||
display: flex; |
||||
height: $upload-height; |
||||
flex-direction: column; |
||||
justify-content: center; |
||||
text-align: center; |
||||
background: rgba(0, 0, 0, 0.04); |
||||
|
||||
i { |
||||
font-size: 20px; |
||||
font-weight: bold; |
||||
color: #8c939d; |
||||
} |
||||
|
||||
p { |
||||
margin-top: 10px; |
||||
font-size: 14px; |
||||
color: rgba(0, 0, 0, 0.65); |
||||
line-height: 1; |
||||
} |
||||
} |
||||
} |
||||
|
||||
&.avatar-uploader-lg { |
||||
.el-upload { |
||||
width: 100%; |
||||
max-width: 960px; |
||||
height: $upload-lg-height; |
||||
|
||||
.uploader-default { |
||||
height: $upload-lg-height; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.avatar { |
||||
display: block; |
||||
width: $upload-width; |
||||
height: $upload-height; |
||||
} |
||||
|
||||
.avatar-lg { |
||||
display: block; |
||||
width: 100%; |
||||
height: $upload-lg-height; |
||||
} |
||||
|
||||
.el-upload__tip { |
||||
margin-top: 0; |
||||
|
||||
p { |
||||
font-size: 14px; |
||||
color: rgba(0, 0, 0, 0.45); |
||||
line-height: 1; |
||||
|
||||
&:first-child { |
||||
margin-bottom: 5px; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,56 @@ |
||||
<template> |
||||
<div class="page"> |
||||
<div class="tabs"> |
||||
<a class="item" |
||||
v-for="(item, i) in tabs" |
||||
:key="i" |
||||
:class="{active: i == active}" |
||||
@click="tabChange(i)">{{ item }}</a> |
||||
</div> |
||||
<Basic v-if="active == 'tab1'" /> |
||||
<Auth v-else-if="active == 'tab2'" /> |
||||
<Member v-else-if="active == 'tab3'" /> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import Setting from "@/setting"; |
||||
import Basic from './basic' |
||||
import Auth from './auth' |
||||
import Member from './member' |
||||
import { mapState } from "vuex"; |
||||
export default { |
||||
data () { |
||||
return { |
||||
active: 'tab1', |
||||
tabs: { |
||||
tab1: "基本信息", |
||||
tab2: "认证信息", |
||||
tab3: "供应商成员", |
||||
}, |
||||
}; |
||||
}, |
||||
components: { |
||||
Basic, |
||||
Auth, |
||||
Member |
||||
}, |
||||
computed: { |
||||
...mapState('auth', [ |
||||
'btns' |
||||
]) |
||||
}, |
||||
mounted () { |
||||
|
||||
}, |
||||
methods: { |
||||
// tab切换 |
||||
tabChange (i) { |
||||
this.active = i |
||||
}, |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style scoped> |
||||
</style> |
@ -0,0 +1,196 @@ |
||||
<template> |
||||
<div class="page-content" |
||||
style="padding: 24px"> |
||||
<div class="tool"> |
||||
<ul class="filter"> |
||||
<li> |
||||
<label>搜索:</label> |
||||
<el-input placeholder="请输入姓名、姓名进行查询" |
||||
prefix-icon="el-icon-search" |
||||
v-model="keyword" |
||||
clearable |
||||
size="mini" |
||||
style="width: 250px"></el-input> |
||||
</li> |
||||
</ul> |
||||
<div></div> |
||||
</div> |
||||
|
||||
<el-table ref="table" |
||||
:data="list" |
||||
class="table" |
||||
stripe |
||||
header-align="center" |
||||
row-key="id"> |
||||
<el-table-column type="index" |
||||
width="60" |
||||
label="序号" |
||||
align="center"> |
||||
<template slot-scope="scope"> |
||||
{{ scope.$index + (page - 1) * pageSize + 1 }} |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column prop="phone" |
||||
label="手机号"> |
||||
</el-table-column> |
||||
<el-table-column prop="userName" |
||||
label="姓名"> |
||||
</el-table-column> |
||||
<el-table-column prop="username" |
||||
label="角色"> |
||||
<template slot-scope="scope"> |
||||
{{ scope.row.isTeam === '1' ? '负责人' : '成员' }} |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column prop="username" |
||||
label="加入时间"> |
||||
</el-table-column> |
||||
<el-table-column prop="username" |
||||
label="实名认证"> |
||||
</el-table-column> |
||||
<el-table-column prop="lastLoginTime" |
||||
label="最近登录"> |
||||
</el-table-column> |
||||
<!-- <el-table-column label="操作" |
||||
align="center" |
||||
width="320"> |
||||
<template slot-scope="scope"> |
||||
<el-button type="text" |
||||
@click="delData(scope.row)">删除</el-button> |
||||
<el-switch v-model="scope.row.isDisable" |
||||
:active-text="scope.row.isDisable ? '关' : '开'" |
||||
:active-value="0" |
||||
:inactive-value="1" |
||||
style="margin-left: 5px" |
||||
@change="switchOff($event,scope.row,scope.$index)"></el-switch> |
||||
</template> |
||||
</el-table-column> --> |
||||
</el-table> |
||||
<div class="pagination"> |
||||
<el-pagination background |
||||
layout="total, prev, pager, next" |
||||
:total="total" |
||||
@current-change="handleCurrentChange" |
||||
:current-page="page"> |
||||
</el-pagination> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import util from "@/libs/util"; |
||||
import axios from 'axios' |
||||
import Setting from "@/setting"; |
||||
export default { |
||||
name: "matchSignup", |
||||
data () { |
||||
return { |
||||
id: this.$route.query.id, |
||||
teamId: this.$route.query.teamId, |
||||
keyword: '', |
||||
list: [], |
||||
multipleSelection: [], |
||||
page: 1, |
||||
pageSize: 10, |
||||
total: 0, |
||||
}; |
||||
}, |
||||
watch: { |
||||
keyword: function (val) { |
||||
clearTimeout(this.searchTimer); |
||||
this.searchTimer = setTimeout(() => { |
||||
this.initData(); |
||||
}, 500); |
||||
} |
||||
}, |
||||
mounted () { |
||||
this.initData() |
||||
}, |
||||
methods: { |
||||
getData () { |
||||
this.$post(this.api.platformTeamAccountList, { |
||||
type: 1, |
||||
pageNum: this.page, |
||||
pageSize: this.pageSize, |
||||
keyWord: this.keyword, |
||||
platformId: 6, |
||||
classificationId: this.teamId |
||||
}).then(({ pageList }) => { |
||||
this.list = pageList.records; |
||||
this.total = pageList.total; |
||||
}).catch(res => { }); |
||||
}, |
||||
initData () { |
||||
this.page = 1 |
||||
this.getData() |
||||
}, |
||||
handleSelectionChange (val) { |
||||
this.multipleSelection = val; |
||||
}, |
||||
handleCurrentChange (val) { |
||||
this.page = val; |
||||
this.getData(); |
||||
}, |
||||
switchOff (val, row, index) { |
||||
this.$put(`${this.api.disableActivityApplicant}?competitionRegistrationId=${row.id}&isDisable=${val}`).then(res => { }).catch(err => { }); |
||||
}, |
||||
delData (row) { |
||||
this.$confirm("此删除操作不可逆,是否确认删除选中项?", "提示", { |
||||
type: "warning" |
||||
}) |
||||
.then(() => { |
||||
this.$post(`${this.api.delActivityApplicant}?id=${row.id}`).then(res => { |
||||
util.successMsg("删除成功"); |
||||
this.getData(); |
||||
}).catch(res => { |
||||
}); |
||||
}) |
||||
.catch(() => { |
||||
}); |
||||
}, |
||||
// 排序回调 |
||||
sortChange (column) { |
||||
// 1上2下 |
||||
if (column.prop === 'school') this.schoolOrder = column.order ? column.order === 'ascending' ? 2 : 1 : '' |
||||
if (column.prop === 'teamName') this.teamOrder = column.order ? column.order === 'ascending' ? 2 : 1 : '' |
||||
this.getData() |
||||
}, |
||||
exportAll () { |
||||
const data = this.multipleSelection |
||||
if (data.length) { |
||||
data.map((e, i) => e.id = i + 1) |
||||
axios.post(this.api.exportDataInBatchesApplicant, data, { |
||||
headers: { |
||||
token: this.token |
||||
}, |
||||
responseType: 'blob' |
||||
}).then((res) => { |
||||
util.downloadFileDirect(`报名人员.xls`, new Blob([res.data])) |
||||
}).catch(res => { }) |
||||
} else { |
||||
axios.get(`${this.api.excelExportApplicant}?activityId=${this.id}`, { |
||||
headers: { |
||||
token: this.token |
||||
}, |
||||
responseType: 'blob' |
||||
}).then((res) => { |
||||
util.downloadFileDirect(`报名人员.xls`, new Blob([res.data])) |
||||
}).catch(res => { }) |
||||
} |
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
/deep/.dia-form { |
||||
.w-100 { |
||||
width: 100%; |
||||
} |
||||
.tips { |
||||
display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
} |
||||
} |
||||
</style> |
@ -1,17 +1,16 @@ |
||||
@import "lib/var"; |
||||
@import "var"; |
||||
@import 'lib/var'; |
||||
@import 'var'; |
||||
|
||||
html, |
||||
body, |
||||
#app, |
||||
.wrapper { |
||||
width: 100%; |
||||
height: 100%; |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
|
||||
body { |
||||
min-width: 1280px; |
||||
font-family: PingFang, PingFang SC, "Helvetica Neue", Helvetica, "microsoft yahei", arial, STHeiTi, sans-serif; |
||||
font-size: 14px; |
||||
background: #F0F2F5; |
||||
} |
||||
font-family: PingFang, PingFang SC, 'Helvetica Neue', Helvetica, 'microsoft yahei', arial, STHeiTi, sans-serif; |
||||
font-size: 14px; |
||||
background: #f0f2f5; |
||||
} |
||||
|
Loading…
Reference in new issue