|
@@ -27,6 +27,13 @@
|
|
|
<!-- <el-input v-model="setform.mobile" @input="saveState=true" v-if="PowerShow" /> -->
|
|
|
<el-input v-model="setform.mobile" disabled />
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="企业类型">
|
|
|
+ <el-radio-group v-model="setType">
|
|
|
+ <el-radio label="0" v-if="setform.type == '1'" disabled>非定制</el-radio>
|
|
|
+ <el-radio label="0" v-else>非定制</el-radio>
|
|
|
+ <el-radio label="1">定制</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="企业logo">
|
|
|
<div class="upload-logo">
|
|
|
<el-upload class="avatar-uploader" :headers="uploadHeader" accept=".png,.jpeg,.jpg" action="/blob/upload-public" :disabled='uploadState' :show-file-list="false" :before-upload="changeBadge" :on-success="success" :on-error="handleUpdErr" v-if="PowerShow">
|
|
@@ -60,9 +67,9 @@
|
|
|
<div class="tokenbox">
|
|
|
<!-- <el-input v-model="setform.token" :rows="2" type="textarea" @input="saveState=true" v-if="PowerShow" /> -->
|
|
|
<el-input v-model="setform.token" :rows="2" type="textarea" disabled />
|
|
|
- </div>
|
|
|
- <div class="generatebox-copy">
|
|
|
- <el-button type="primary" size="small" @click="copykeys(setform.token)">复制秘钥</el-button>
|
|
|
+ <div class="generatebox-copy">
|
|
|
+ <el-button type="primary" size="small" @click="copykeys(setform.token)">复制秘钥</el-button>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="generatebox" v-if="PowerShow">
|
|
|
<el-button type="primary" size="small" @click="againGenerate">重新生成秘钥</el-button>
|
|
@@ -124,6 +131,61 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-tab-pane>
|
|
|
+ <el-tab-pane label="用户信息" name="user">
|
|
|
+ <div class="set-basics">
|
|
|
+ <p class="set-basics-title">
|
|
|
+ <div class="set-basics-title-name">关联用户</div>
|
|
|
+ <div class="set-basics-save">
|
|
|
+ <el-button type="primary" size="small" @click="addschoolRelevancy=true" v-if="PowerShow">
|
|
|
+ <svg class="addrelevancy-icon" aria-hidden="true">
|
|
|
+ <use xlink:href="#icon-guanlianrenyuan"></use>
|
|
|
+ </svg>
|
|
|
+ 添加关联用户
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ <!-- <div class="set-basics-save remove" v-if="removeArr.length !==0">
|
|
|
+ <el-button type="danger" size="small" @click="removeSchools('','batch')">
|
|
|
+ <svg class="addrelevancy-icon" aria-hidden="true">
|
|
|
+ <use xlink:href="#icon-addLink-fill"></use>
|
|
|
+ </svg>
|
|
|
+ 移除选中用户
|
|
|
+ </el-button>
|
|
|
+ </div> -->
|
|
|
+ </p>
|
|
|
+ <div class="relevancyschool-list">
|
|
|
+ <el-table :data="userData" height="65vh" style="width: 100%" empty-text="暂无关联学校" v-if="userData.length !==0" @selection-change="removeUserList">
|
|
|
+ <!-- <el-table-column label="状态" type="selection" /> -->
|
|
|
+ <el-table-column prop="index" label="编号" type="index" align="center" />
|
|
|
+ <el-table-column label="头像" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-image style="width: 60px; height: 60px" :src="scope.row.picture" fit="fill" v-if="scope.row.picture"></el-image>
|
|
|
+ <PersonalPhoto style="cursor: pointer;" :name="scope.row.name" v-else></PersonalPhoto>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="name" label="名称" align="center" />
|
|
|
+ <el-table-column label="电话号码" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ <div v-if="scope.row.mobile">{{scope.row.mobile}}</div>
|
|
|
+ <div v-else> 暂无 </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="电子邮箱" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ <div v-if="scope.row.mail">{{scope.row.mail}}</div>
|
|
|
+ <div v-else> 暂无 </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作" align="center" v-if="PowerShow">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-button class="deletebtns" type="danger" size="small" @click="removeUser(scope.row,'alone')">移除用户
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <div v-else class="notdatas"><span>暂无关联用户</span></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
</el-tabs>
|
|
|
</div>
|
|
|
<!--添加关联学校弹窗-->
|
|
@@ -139,7 +201,7 @@
|
|
|
</el-input>
|
|
|
</div>
|
|
|
<el-table ref="multipleTableRef" :data="schoolLists" style="width: 100%" height="42vh" @selection-change="handleSelectionChange" empty-text="暂无相关搜索学校">
|
|
|
- <el-table-column label="校徽">
|
|
|
+ <el-table-column label="校徽" align="center">
|
|
|
<template #default="scope">
|
|
|
<el-image style="width: 40px; height: 40px" :src="scope.row.picture" fit="fill"></el-image>
|
|
|
</template>
|
|
@@ -157,6 +219,58 @@
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
<!--添加关联学校弹窗end-->
|
|
|
+ <!--添加关联用户弹窗-->
|
|
|
+ <div class="adduser-relevancy">
|
|
|
+ <el-dialog v-model="addschoolRelevancy" title="搜索用户列表" width="25%">
|
|
|
+ <div>
|
|
|
+ <el-input v-model="searchUser" placeholder="搜索 手机号码" class="input-with-select" size="small" clearable>
|
|
|
+ <template #prepend>
|
|
|
+ <svg class="addrelevancy-icon" aria-hidden="true">
|
|
|
+ <use xlink:href="#icon-sousuo3-copy"></use>
|
|
|
+ </svg>
|
|
|
+ </template>
|
|
|
+ </el-input>
|
|
|
+ </div>
|
|
|
+ <el-table :data="userLists" style="width: 100%" height="42vh" @selection-change="handleUser" empty-text="暂无搜索相关用户" v-loading="searchUserstate" element-loading-text="加载中...">
|
|
|
+ <el-table-column label="头像" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-image style="width: 40px; height: 40px" :src="scope.row.picture" fit="fill" v-if="scope.row.picture"></el-image>
|
|
|
+ <PersonalPhoto style="cursor: pointer;" :name="scope.row.name" v-else></PersonalPhoto>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column property="name" label="名称" />
|
|
|
+ <!-- <el-table-column property="mobile" label="手机号码" /> -->
|
|
|
+ <el-table-column label="手机号码" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ <div v-if="scope.row.mobile">{{scope.row.mobile}}</div>
|
|
|
+ <div v-else> 暂无 </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="状态" type="selection" />
|
|
|
+ </el-table>
|
|
|
+ <template #footer>
|
|
|
+ <span class="dialog-footer">
|
|
|
+ <el-button @click="addschoolRelevancy = false">取消</el-button>
|
|
|
+ <el-button type="primary" @click="notarizebox=true">关联选中用户</el-button>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+ <!--添加关联用户弹窗end-->
|
|
|
+ <!--身份确认-->
|
|
|
+ <el-dialog v-model="notarizebox" title="选择关联身份" width="20%" class="radiusbox">
|
|
|
+ <el-radio-group v-model="correlationRole">
|
|
|
+ <el-radio label="1" size="large">任命为管理员</el-radio>
|
|
|
+ <el-radio label="2" size="large">普通会员</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ <template #footer>
|
|
|
+ <span class="dialog-footer">
|
|
|
+ <el-button @click="notarizebox = false">取消</el-button>
|
|
|
+ <el-button type="primary" @click="correlationUser('add')">确认</el-button>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+ <!--身份确认end-->
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
@@ -182,6 +296,7 @@ export default {
|
|
|
let setform = ref({
|
|
|
name: '',
|
|
|
credit: '',
|
|
|
+ type: '0',
|
|
|
mobile: '',
|
|
|
imageUrl: '',
|
|
|
email: '',
|
|
@@ -189,6 +304,7 @@ export default {
|
|
|
domain: '',
|
|
|
webhook: '',
|
|
|
})
|
|
|
+ let setType = ref('0')
|
|
|
let formVerify = ref({
|
|
|
name: [
|
|
|
{ required: true, message: '企业名称不能为空', trigger: 'blur' },
|
|
@@ -204,15 +320,23 @@ export default {
|
|
|
})
|
|
|
let saveState = ref(false)
|
|
|
let tableData = ref([])
|
|
|
+ let userData = ref([])
|
|
|
let schoolLists = ref([])
|
|
|
+ let userLists = ref([])
|
|
|
let original = ref([])
|
|
|
let timer = ref('')
|
|
|
let addschoolRelevancy = ref(false)
|
|
|
let checkedSchool = ref([])
|
|
|
+ let checkedUser = ref([])
|
|
|
let removeArr = ref([])
|
|
|
+ let removeUserarr = ref([])
|
|
|
let serachValues = ref('')
|
|
|
let uploadState = ref(false)
|
|
|
let uploadHeader = ref({})
|
|
|
+ let searchUser = ref('')
|
|
|
+ let searchUserstate = ref(false)
|
|
|
+ let notarizebox = ref(false)
|
|
|
+ let correlationRole = ref('2')
|
|
|
function backs () {
|
|
|
context.emit('backState', 'list')
|
|
|
}
|
|
@@ -272,6 +396,10 @@ export default {
|
|
|
console.log(val, '选中')
|
|
|
checkedSchool.value = val
|
|
|
}
|
|
|
+ //勾选的即将关联的用户
|
|
|
+ function handleUser (val) {
|
|
|
+ checkedUser.value = val
|
|
|
+ }
|
|
|
//企业关联学校
|
|
|
function correlationSchool () {
|
|
|
let schoolList = checkedSchool.value
|
|
@@ -284,6 +412,31 @@ export default {
|
|
|
ElMessage.error('关联失败')
|
|
|
})
|
|
|
}
|
|
|
+ //添加或删除用户的提示
|
|
|
+ function operateHint (type) {
|
|
|
+ ElMessageBox.alert(
|
|
|
+ '<strong>proxy is <i>HTML</i> string</strong>',
|
|
|
+ 'HTML String',
|
|
|
+ {
|
|
|
+ dangerouslyUseHTMLString: true,
|
|
|
+ }
|
|
|
+ )
|
|
|
+ }
|
|
|
+ //企业关联用户
|
|
|
+ function correlationUser (types) {
|
|
|
+ console.log(types, '7')
|
|
|
+ let userlist = checkedUser.value[0]
|
|
|
+ let typevalue = types
|
|
|
+ console.log(userlist)
|
|
|
+ let bizsData = { bizId: setform.value.id, name: setform.value.name, picture: setform.value.picture, role: [correlationRole.value === '1' ? 'admin' : 'read'] }
|
|
|
+ let data = { id: userlist.id, type: typevalue, bizs: [bizsData], userType: userlist.id.indexOf('-') == -1 ? 'tmdId' : '' }
|
|
|
+ proxy.$api.getCorrelationUser(data).then((res) => {
|
|
|
+ console.log(res, '添加角色')
|
|
|
+ res.state === 200 ? (ElMessage.success('关联成功'), notarizebox.value = false, details(setform.value.id), addschoolRelevancy.value = false) : ''
|
|
|
+ }).catch((err) => {
|
|
|
+ ElMessage.error('关联失败,API异常')
|
|
|
+ })
|
|
|
+ }
|
|
|
//重新生成秘匙
|
|
|
function againGenerate () {
|
|
|
let data = { id: setform.value.id }
|
|
@@ -297,6 +450,10 @@ export default {
|
|
|
function removeSchoolList (val) {
|
|
|
removeArr.value = val
|
|
|
}
|
|
|
+ //移除用户选中
|
|
|
+ function removeUserList (val) {
|
|
|
+ removeUserarr.value = val
|
|
|
+ }
|
|
|
//企业内移除关联学校
|
|
|
function removeSchools (data, type) {
|
|
|
console.log(data, type, '现在的删除方式')
|
|
@@ -331,6 +488,42 @@ export default {
|
|
|
})
|
|
|
})
|
|
|
}
|
|
|
+ //企业内移除用户关联
|
|
|
+ function removeUser (data, type) {
|
|
|
+ let removeList = []
|
|
|
+ data && type === 'alone' ? removeList.push(data) : ''
|
|
|
+ type === 'batch' ? removeUserarr.value.forEach((item) => { removeList.push(item) }) : ''
|
|
|
+ let text = ''
|
|
|
+ if (removeUserarr.value.length > 0 && !data) {
|
|
|
+ for (let i in removeUserarr.value) {
|
|
|
+ if (i < 6) {
|
|
|
+ text === '' ? text = removeUserarr.value[i].name : text = text + ',' + removeUserarr.value[i].name
|
|
|
+ } else {
|
|
|
+ text.indexOf('... 等') !== -1 ? '' : text = text + '... 等'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (data) {
|
|
|
+ text = data.name
|
|
|
+ }
|
|
|
+ console.log(data, '类型')
|
|
|
+ ElMessageBox.confirm(`您确定要移除 ${text} 与 当前企业的关联 吗? 请慎重操作!`, '移除关联用户', {
|
|
|
+ confirmButtonText: proxy.$t(`commonMsg.confirm`),
|
|
|
+ cancelButtonText: proxy.$t(`commonMsg.closes`),
|
|
|
+ type: 'warning',
|
|
|
+ center: true,
|
|
|
+ }).then(() => {
|
|
|
+ console.log(data, '类型111')
|
|
|
+ let bizsData = [];
|
|
|
+ data.relation.forEach((item) => { item.bizId === setform.value.id ? bizsData.push(item) : '' })
|
|
|
+ let datainfo = { id: data.id, type: 'del', bizs: bizsData, userType: data.id.indexOf('-') == -1 ? 'tmdId' : '' }
|
|
|
+ proxy.$api.getCorrelationUser(datainfo).then((res) => {
|
|
|
+ console.log(res, '移除角色')
|
|
|
+ res.state === 200 ? (ElMessage.success('移除成功'), details(setform.value.id)) : ''
|
|
|
+ }).catch((err) => {
|
|
|
+ ElMessage.error('移除失败,API异常')
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
function debounce (fn, wait) {
|
|
|
if (timer.value !== null) {
|
|
|
clearTimeout(timer.value)
|
|
@@ -345,12 +538,48 @@ export default {
|
|
|
})
|
|
|
schoolLists.value = newArr
|
|
|
}
|
|
|
+ //对用户进行搜索
|
|
|
+ function serachUserinfo () {
|
|
|
+ let values = searchUser.value
|
|
|
+ let data = { mobile: values }
|
|
|
+ searchUserstate.value = true
|
|
|
+ proxy.$api.searchphoneUser(data).then((res) => {
|
|
|
+ console.log(res, '999999')
|
|
|
+ // res.state === 200 ? userLists.value = res.userinfos : ''
|
|
|
+ if (res.state === 200) {
|
|
|
+ if (res.bizUsers.length !== 0) {
|
|
|
+ userLists.value = res.bizUsers
|
|
|
+ userLists.value.userType = ''
|
|
|
+ } else if (res.coreUser !== null) {
|
|
|
+ userLists.value = [res.coreUser]
|
|
|
+ userLists.value.userType = 'tmdId'
|
|
|
+ }
|
|
|
+ if (res.bizUsers.length === 0 && res.coreUser === null) { userLists.value = [] }
|
|
|
+ }
|
|
|
+ searchUserstate.value = false
|
|
|
+ }).catch((error) => {
|
|
|
+ ElMessage.error('搜索失败,API异常')
|
|
|
+ searchUserstate.value = false
|
|
|
+ })
|
|
|
+ }
|
|
|
//保存基础设置
|
|
|
function saveSet () {
|
|
|
console.log(setform.value, '保存相关')
|
|
|
let datas = setform.value
|
|
|
let schoolData = tableData.value
|
|
|
- let saveData = { code: datas.code, id: datas.id, name: datas.name, credit: datas.credit, picture: datas.imageUrl, mobile: datas.mobile, email: datas.email, domain: datas.domain, webhook: datas.webhook, schools: schoolData }
|
|
|
+ let saveData = {
|
|
|
+ code: datas.code,
|
|
|
+ id: datas.id,
|
|
|
+ name: datas.name,
|
|
|
+ credit: datas.credit,
|
|
|
+ picture: datas.imageUrl,
|
|
|
+ mobile: datas.mobile,
|
|
|
+ email: datas.email,
|
|
|
+ domain: datas.domain,
|
|
|
+ webhook: datas.webhook,
|
|
|
+ schools: schoolData,
|
|
|
+ isCustomize: Number(setType.value)
|
|
|
+ }
|
|
|
proxy.$api.updateThirdparty(saveData).then((res) => {
|
|
|
res.state === 200 ? (ElMessage.success('保存成功'), context.emit('backState', 'list')) : ElMessage.error('保存失败')
|
|
|
}).catch((error) => {
|
|
@@ -361,11 +590,22 @@ export default {
|
|
|
let datas = { id: val }
|
|
|
proxy.$api.getAllenterprise(datas).then((res) => {
|
|
|
console.log(res, '详情')
|
|
|
- res.state === 200 ? (setform.value = res.businesses[0], setform.value.imageUrl = res.businesses[0].picture, tableData.value = res.businesses[0].schools) : ''
|
|
|
+ res.state === 200 ? (setform.value = res.businesses[0], setform.value.imageUrl = res.businesses[0].picture, setType.value = res.businesses[0].isCustomize.toString(), setform.value.type = res.businesses[0].isCustomize.toString(), tableData.value = res.businesses[0].schools) : ''
|
|
|
getschoolList(setform.value.id)
|
|
|
}).catch((error) => {
|
|
|
ElMessage.error('企业详情获取失败,API异常')
|
|
|
})
|
|
|
+ getUserlist(val)
|
|
|
+ }
|
|
|
+ //获取企业用户列表
|
|
|
+ function getUserlist (value) {
|
|
|
+ let data = { id: value }
|
|
|
+ proxy.$api.getUserarr(data).then((res) => {
|
|
|
+ console.log(res, '用户list')
|
|
|
+ res.state === 200 ? userData.value = res.businessUsers : ''
|
|
|
+ }).catch((error) => {
|
|
|
+ ElMessage.error('企业用户列表获取失败,API异常')
|
|
|
+ })
|
|
|
}
|
|
|
//复制
|
|
|
async function copykeys (value) {
|
|
@@ -391,6 +631,14 @@ export default {
|
|
|
schoolLists.value = original.value
|
|
|
}
|
|
|
})
|
|
|
+ watch(searchUser, (newdata) => {
|
|
|
+ if (newdata.trim().length !== 0) {
|
|
|
+ debounce(serachUserinfo, 500)
|
|
|
+ } else {
|
|
|
+ console.log('111')
|
|
|
+ userLists.value = []
|
|
|
+ }
|
|
|
+ })
|
|
|
uploadInt()
|
|
|
return {
|
|
|
activeName,
|
|
@@ -421,7 +669,20 @@ export default {
|
|
|
deltelogos,
|
|
|
PowerShow,
|
|
|
details,
|
|
|
- copykeys
|
|
|
+ copykeys,
|
|
|
+ setType,
|
|
|
+ userData,
|
|
|
+ userLists,
|
|
|
+ searchUser,
|
|
|
+ serachUserinfo,
|
|
|
+ handleUser,
|
|
|
+ searchUserstate,
|
|
|
+ correlationUser,
|
|
|
+ notarizebox,
|
|
|
+ correlationRole,
|
|
|
+ removeUser,
|
|
|
+ removeUserarr,
|
|
|
+ removeUserList
|
|
|
}
|
|
|
},
|
|
|
}
|
|
@@ -519,6 +780,8 @@ export default {
|
|
|
bottom: 5px;
|
|
|
left: 101%;
|
|
|
}
|
|
|
+.generatebox:hover {
|
|
|
+}
|
|
|
.generatebox-copy {
|
|
|
position: absolute;
|
|
|
top: 5px;
|
|
@@ -569,11 +832,14 @@ export default {
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
}
|
|
|
-.token-box:hover .generatebox-copy {
|
|
|
+.tokenbox:hover .generatebox-copy {
|
|
|
opacity: 1 !important;
|
|
|
}
|
|
|
-.token-box:hover .el-textarea__inner {
|
|
|
+.tokenbox:hover .el-textarea__inner {
|
|
|
background: rgba(189, 195, 199, 0.45);
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
+.setboxs .radiusbox {
|
|
|
+ border-radius: 5px;
|
|
|
+}
|
|
|
</style>
|