|
@@ -6,7 +6,7 @@
|
|
|
<span>服务商名称:</span>
|
|
|
<el-input
|
|
|
v-model="listQuery.name"
|
|
|
- placeholder="关键词"
|
|
|
+ placeholder="服务商名称"
|
|
|
clearable
|
|
|
@keyup.enter.native="getList"
|
|
|
@clear="getList"
|
|
@@ -39,7 +39,7 @@
|
|
|
<span>资格证书编号:</span>
|
|
|
<el-input
|
|
|
v-model="listQuery.qualificationId"
|
|
|
- placeholder="关键词"
|
|
|
+ placeholder="资格证书编号"
|
|
|
clearable
|
|
|
@keyup.enter.native="getList"
|
|
|
@clear="getList"
|
|
@@ -61,7 +61,6 @@
|
|
|
<div class="filter-control">
|
|
|
<el-button type="primary" @click="getList">查询</el-button>
|
|
|
<el-button type="primary" @click="$router.push('/service/settlement/edit')">添加</el-button>
|
|
|
- <el-button type="primary" @click="batchOffline(3)">下线</el-button>
|
|
|
<el-button type="primary" @click="batchOffline(1)">下载资格证书</el-button>
|
|
|
<el-button type="primary" @click="batchOffline(2)">下载二维码</el-button>
|
|
|
</div>
|
|
@@ -73,79 +72,86 @@
|
|
|
:data="list"
|
|
|
border
|
|
|
:default-sort="{ prop: 'frequency', order: 'descending' }"
|
|
|
- @selection-change="handleSelectionChange"
|
|
|
>
|
|
|
- <!--<el-table-column type="selection" width="55" align="center" />-->
|
|
|
- <el-table-column
|
|
|
- label="序号"
|
|
|
- type="index"
|
|
|
- sortable="custom"
|
|
|
- align="center"
|
|
|
- width="50"
|
|
|
- />
|
|
|
+ <el-table-column prop="serviceProviderId" label="ID" align="center" width="60" />
|
|
|
<el-table-column prop="name" label="服务商名称" align="center" />
|
|
|
- <el-table-column prop="serviceLevel" label="服务商级别" align="center">
|
|
|
+ <el-table-column prop="mobile" label="手机号" align="center" width="120" />
|
|
|
+ <el-table-column prop="insiderFlag" label="服务商分类" align="center" width="120">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <el-tag v-if="row.insiderFlag === 1" type="info" size="mini">外部服务商</el-tag>
|
|
|
+ <el-tag v-else type="primary" size="mini">内部服务商</el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="serviceLevel" label="服务商级别" align="center" width="120">
|
|
|
<template slot-scope="{ row }">
|
|
|
- <el-tag v-if="row.serviceLevel === 1" type="success" effect="dark" size="mini">一级</el-tag>
|
|
|
- <el-tag v-if="row.serviceLevel === 2" type="success" effect="dark" size="mini">二级</el-tag>
|
|
|
- <el-tag v-if="row.serviceLevel === 3" type="success" effect="dark" size="mini">三级</el-tag>
|
|
|
- <el-tag v-if="row.serviceLevel === 4" type="success" effect="dark" size="mini">品牌特约</el-tag>
|
|
|
- <el-tag v-if="row.serviceLevel === 5" type="success" effect="dark" size="mini">品牌指定</el-tag>
|
|
|
+ <el-tag v-if="row.serviceLevel === 1" type="success" size="mini">一级</el-tag>
|
|
|
+ <el-tag v-if="row.serviceLevel === 2" type="success" size="mini">二级</el-tag>
|
|
|
+ <el-tag v-if="row.serviceLevel === 3" type="success" size="mini">三级</el-tag>
|
|
|
+ <el-tag v-if="row.serviceLevel === 4" type="success" size="mini">品牌特约</el-tag>
|
|
|
+ <el-tag v-if="row.serviceLevel === 5" type="success" size="mini">品牌指定</el-tag>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="serviceCategory" label="服务商类型" align="center">
|
|
|
+ <el-table-column prop="serviceCategory" label="服务商类型" align="center" width="120">
|
|
|
<template slot-scope="scope">
|
|
|
<div>
|
|
|
{{ scope.row.serviceCategory == "1" ? "个人" : "企业" }}
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="serviceCategory" label="服务商分账号" align="center">
|
|
|
+ <el-table-column prop="serviceCategory" label="服务商分账号" align="center" width="120">
|
|
|
<template slot-scope="{ row }">
|
|
|
<div>
|
|
|
{{ row.splitCode ? row.splitCode : "--" }}
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="contractStartDate" label="授权起始日期" align="center" />
|
|
|
- <el-table-column prop="contractEndDate" label="授权截止日期" align="center" />
|
|
|
- <el-table-column prop="status" label="状态" align="center" width="100">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div>
|
|
|
- 已{{ scope.row.status === 90 ? "上线" : "下线" }}
|
|
|
- </div>
|
|
|
+ <el-table-column prop="contractStartDate" label="授权起始日期" align="center" width="120" />
|
|
|
+ <el-table-column prop="contractEndDate" label="授权截止日期" align="center" width="120" />
|
|
|
+ <el-table-column prop="status" label="状态" align="center" width="140">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <el-tag v-if="row.status === 90" type="success" size="small">已上线</el-tag>
|
|
|
+ <el-tag v-else type="danger" size="small">已下线</el-tag>
|
|
|
+ <el-button v-if="row.status === 91" type="primary" size="mini" @click="handleStatus({ serviceProviderId: row.serviceProviderId, status: row.status })">
|
|
|
+ 上线
|
|
|
+ </el-button>
|
|
|
+ <el-button v-else type="primary" size="mini" @click="handleStatus({ serviceProviderId: row.serviceProviderId, status: row.status })">
|
|
|
+ 下线
|
|
|
+ </el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="updateTime" label="添加时间" align="center" />
|
|
|
- <el-table-column prop="createBy" label="创建人" align="center" />
|
|
|
- <el-table-column label="操作" align="center" width="200">
|
|
|
+ <el-table-column prop="addTime" label="添加时间" align="center" width="100" />
|
|
|
+ <el-table-column prop="createBy" label="创建人" align="center" width="100" />
|
|
|
+ <el-table-column label="操作" align="center" width="300">
|
|
|
<template slot-scope="{ row }">
|
|
|
<div class="labelCenter">
|
|
|
<el-button
|
|
|
- type="primary"
|
|
|
+ type="success"
|
|
|
size="mini"
|
|
|
- @click="handleStatus({ userIds: row.userId, status: row.status })"
|
|
|
- >{{ row.status === 91 ? "上线" : "下线" }}</el-button>
|
|
|
+ @click="$router.push('/service/settlement/edit?type=edit&serviceProviderId=' + row.serviceProviderId)"
|
|
|
+ >编辑</el-button>
|
|
|
+ <el-button type="success" size="mini" @click="showQrCode(row)">二维码</el-button>
|
|
|
<el-button
|
|
|
- type="primary"
|
|
|
+ type="success"
|
|
|
size="mini"
|
|
|
- @click="$router.push('/service/settlement/edit?id=' + row.id)"
|
|
|
- >编辑</el-button>
|
|
|
- <el-button type="primary" size="mini" @click="showQrCode(row)">二维码</el-button>
|
|
|
+ @click="$router.push('/service/settlement/club/list?serviceProviderId=' + row.serviceProviderId)"
|
|
|
+ >
|
|
|
+ 机构详情
|
|
|
+ </el-button>
|
|
|
<el-button
|
|
|
type="primary"
|
|
|
size="mini"
|
|
|
- @click="
|
|
|
- $router.push('/service/settlement/contract/list?providersId=' + row.id)
|
|
|
- "
|
|
|
- >合同管理</el-button>
|
|
|
+ @click="$router.push('/service/settlement/contract/list?serviceProviderId=' + row.serviceProviderId)"
|
|
|
+ >
|
|
|
+ 合同管理
|
|
|
+ </el-button>
|
|
|
<el-button
|
|
|
type="primary"
|
|
|
size="mini"
|
|
|
- @click="
|
|
|
- $router.push('/service/settlement/goods/list?providersId=' + row.id)
|
|
|
- "
|
|
|
- >商品管理</el-button>
|
|
|
+ @click="$router.push('/service/settlement/goods/list?serviceProviderId=' + row.serviceProviderId)"
|
|
|
+ >
|
|
|
+ 商品管理
|
|
|
+ </el-button>
|
|
|
+ <el-button type="danger" size="mini" @click="handleChangePassword(row)">重置密码</el-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -158,14 +164,28 @@
|
|
|
@showQrCode="showQrCode"
|
|
|
/>
|
|
|
|
|
|
- <el-dialog title="选择服务商" :visible.sync="exportDialogVisible" width="70%">
|
|
|
+ <el-dialog title="选择服务商" :visible.sync="exportDialogVisible" width="70%" top="8vh">
|
|
|
<service-list-selector
|
|
|
v-if="exportDialogVisible"
|
|
|
@cancel="onSelectorCancel"
|
|
|
@confirm="onSelectorConfirm"
|
|
|
/>
|
|
|
</el-dialog>
|
|
|
-
|
|
|
+ <!-- 重置密码 -->
|
|
|
+ <el-dialog title="重置密码" :visible.sync="dialogFormVisible" width="440px">
|
|
|
+ <el-form ref="dataForm" :rules="rules" :model="form" label-position="right" label-width="100px">
|
|
|
+ <el-form-item label="新密码:" prop="password">
|
|
|
+ <el-input v-model="form.password" type="text" placeholder="请输入新密码" maxlength="20" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="确认新密码:" prop="confirmPassword">
|
|
|
+ <el-input v-model="form.confirmPassword" type="text" placeholder="请再次确认新密码" maxlength="20" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="closeDialog">取消</el-button>
|
|
|
+ <el-button type="primary" @click="handleSavePassword">确定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
<!-- 页码 -->
|
|
|
<pagination
|
|
|
:total="total"
|
|
@@ -179,7 +199,7 @@
|
|
|
<script>
|
|
|
import QrCode from '../components/CmQrcode/index.vue'
|
|
|
import ServiceListSelector from '../components/ServiceListSelector.vue'
|
|
|
-import { getProviderList, updatedStatus } from '@/api/serviceSettlement/service'
|
|
|
+import { getProviderList, updatedStatus, updatePassword } from '@/api/serviceSettlement/service'
|
|
|
import serviceMixin from '../mixin/index'
|
|
|
|
|
|
export default {
|
|
@@ -189,10 +209,20 @@ export default {
|
|
|
},
|
|
|
mixins: [serviceMixin],
|
|
|
data() {
|
|
|
+ // 自定义密码一致性验证规则
|
|
|
+ const validateConfirmPassword = (rule, value, callback) => {
|
|
|
+ if (value !== this.form.password) {
|
|
|
+ callback(new Error('两次输入的密码不一致!'))
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
return {
|
|
|
listQuery: {
|
|
|
pageNum: 1,
|
|
|
pageSize: 10,
|
|
|
+ name: '',
|
|
|
+ qualificationId: '',
|
|
|
serviceCategory: '',
|
|
|
serviceLevel: ''
|
|
|
},
|
|
@@ -204,7 +234,20 @@ export default {
|
|
|
indexMethod: 1,
|
|
|
total: 0,
|
|
|
selectType: 0,
|
|
|
- providerItem: {}
|
|
|
+ providerItem: {},
|
|
|
+ dialogFormVisible: false,
|
|
|
+ form: {
|
|
|
+ id: '',
|
|
|
+ password: '', // 新密码
|
|
|
+ confirmPassword: '' // 确认新密码
|
|
|
+ },
|
|
|
+ rules: {
|
|
|
+ password: [{ required: true, message: '请输入新密码', trigger: 'blur' }],
|
|
|
+ confirmPassword: [
|
|
|
+ { required: true, message: '请再次输入新密码', trigger: 'blur' },
|
|
|
+ { validator: validateConfirmPassword, trigger: 'blur' } // 使用自定义校验器
|
|
|
+ ]
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
mounted() {
|
|
@@ -215,7 +258,7 @@ export default {
|
|
|
const form = Object.assign(this.listQuery, {
|
|
|
contractStartDate: obj ? obj[0] : '',
|
|
|
contractEndDate: obj ? obj[1] : '',
|
|
|
- providersId: this.providersId || ''
|
|
|
+ serviceProviderId: this.serviceProviderId || ''
|
|
|
})
|
|
|
const { data } = await getProviderList(form)
|
|
|
this.list = data.results
|
|
@@ -232,7 +275,6 @@ export default {
|
|
|
this.selectType = type
|
|
|
this.exportDialogVisible = true
|
|
|
},
|
|
|
- handleSelectionChange() {},
|
|
|
async handleStatus($event) {
|
|
|
this.$confirm(`是否${$event.status === 91 ? '上线' : '下线'}该服务商?`, '提示', {
|
|
|
confirmButtonText: '确定',
|
|
@@ -241,14 +283,11 @@ export default {
|
|
|
}).then(async() => {
|
|
|
try {
|
|
|
const data = await updatedStatus({
|
|
|
- userIds: $event.userIds,
|
|
|
+ serviceProviderId: $event.serviceProviderId,
|
|
|
status: $event.status === 91 ? 90 : 91
|
|
|
})
|
|
|
if (data.code === 0) {
|
|
|
- this.$message({
|
|
|
- message: '更新成功',
|
|
|
- type: 'success'
|
|
|
- })
|
|
|
+ this.$notify.success({ title: '操作成功~', message: '' })
|
|
|
this.getList()
|
|
|
}
|
|
|
} catch (error) {
|
|
@@ -256,6 +295,31 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
+ // 重置密码
|
|
|
+ handleChangePassword(row) {
|
|
|
+ this.form = { ...this.form, ...row }
|
|
|
+ this.dialogFormVisible = true
|
|
|
+ },
|
|
|
+ // 保存重置新密码
|
|
|
+ async handleSavePassword() {
|
|
|
+ try {
|
|
|
+ await this.$refs.dataForm.validate()
|
|
|
+ this.updatePassword(this.form)
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 重置密码
|
|
|
+ async updatePassword(params) {
|
|
|
+ await updatePassword(params)
|
|
|
+ this.$notify.success({ title: '重置密码成功~', message: '' })
|
|
|
+ this.closeDialog()
|
|
|
+ },
|
|
|
+ // 添加取消
|
|
|
+ closeDialog() {
|
|
|
+ this.$refs.dataForm.resetFields()
|
|
|
+ this.dialogFormVisible = false
|
|
|
+ },
|
|
|
onSelectorCancel() {
|
|
|
this.exportDialogVisible = false
|
|
|
},
|
|
@@ -288,7 +352,7 @@ export default {
|
|
|
const toSelect = {
|
|
|
3: () =>
|
|
|
this.handleStatus({
|
|
|
- userIds: $event.map((e) => e.userId).join(','),
|
|
|
+ serviceProviderId: $event.map((e) => e.userId).join(','),
|
|
|
status: 90
|
|
|
}),
|
|
|
1: () =>
|
|
@@ -312,7 +376,7 @@ export default {
|
|
|
.labelCenter {
|
|
|
display: grid;
|
|
|
grid-template-rows: repeat(2, 1fr);
|
|
|
- grid-template-columns: repeat(2, 1fr);
|
|
|
+ grid-template-columns: repeat(3, 1fr);
|
|
|
grid-gap: 10px;
|
|
|
.el-button {
|
|
|
width: 80px;
|