|
|
@@ -2,7 +2,7 @@
|
|
|
<div class="app-container">
|
|
|
<el-row :gutter="20">
|
|
|
<!--部门数据-->
|
|
|
- <el-col :span="4" :xs="24">
|
|
|
+ <el-col :span="2" :xs="24">
|
|
|
<div class="head-container">
|
|
|
<el-input v-model="deptName" placeholder="请输入部门名称" clearable size="small" prefix-icon="el-icon-search" style="margin-bottom: 20px" />
|
|
|
</div>
|
|
|
@@ -11,7 +11,7 @@
|
|
|
</div>
|
|
|
</el-col>
|
|
|
<!--用户数据-->
|
|
|
- <el-col :span="20" :xs="24">
|
|
|
+ <el-col :span="22" :xs="24">
|
|
|
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
|
|
|
<el-form-item label="员工后台昵称" prop="nickName">
|
|
|
<el-input v-model="queryParams.nickName" placeholder="请输入员工后台昵称" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" />
|
|
|
@@ -46,12 +46,15 @@
|
|
|
<el-col :span="1.5">
|
|
|
<el-button plain type="success" icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['company:user:edit']">修改</el-button>
|
|
|
</el-col>
|
|
|
+ <el-col :span="1.5">
|
|
|
+ <el-button plain type="success" icon="el-icon-edit" size="mini" :disabled="multiple" @click="batchEditRole"v-hasPermi="['company:user:edit']">批量修改角色</el-button>
|
|
|
+ </el-col>
|
|
|
<el-col :span="1.5">
|
|
|
<el-button plain type="danger" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['company:user:remove']">删除</el-button>
|
|
|
</el-col>
|
|
|
- <!-- <el-col :span="1.5">
|
|
|
+ <el-col :span="1.5">
|
|
|
<el-button plain type="info" icon="el-icon-upload2" size="mini" @click="handleImport" v-hasPermi="['company:user:import']">导入</el-button>
|
|
|
- </el-col> -->
|
|
|
+ </el-col>
|
|
|
<el-col :span="1.5">
|
|
|
<el-button plain type="warning" icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['company:user:export']">导出</el-button>
|
|
|
</el-col>
|
|
|
@@ -80,7 +83,7 @@
|
|
|
size="mini"
|
|
|
:disabled="multiple"
|
|
|
@click="handerCompanyUserAreaList"
|
|
|
- >批量设置销售所属区域(原有的暂用)</el-button>
|
|
|
+ >批量设置销售所属区域</el-button>
|
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
|
<el-button
|
|
|
@@ -100,6 +103,14 @@
|
|
|
@click="handleAllowedAllRegister"
|
|
|
>允许注册会员开关</el-button>
|
|
|
</el-col>
|
|
|
+ <el-col :span="1.5">
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ plain
|
|
|
+ size="mini"
|
|
|
+ @click="handleBindCompanyUserCode"
|
|
|
+ >生成注册/绑定销售二维码</el-button>
|
|
|
+ </el-col>
|
|
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
|
|
</el-row>
|
|
|
|
|
|
@@ -110,6 +121,14 @@
|
|
|
<el-table-column label="员工后台昵称" align="center" prop="nickName" :show-overflow-tooltip="true" 员工后台 width="100"/>
|
|
|
<el-table-column label="部门" align="center" prop="deptName" :show-overflow-tooltip="true" />
|
|
|
<el-table-column label="手机号码" align="center" prop="phonenumber" width="120" />
|
|
|
+ <el-table-column label="账户角色" align="center" :show-overflow-tooltip="true" width="150">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span v-if="scope.row.roleNames && scope.row.roleNames.length > 0">
|
|
|
+ {{ scope.row.roleNames.join('、') }}
|
|
|
+ </span>
|
|
|
+ <span v-else>-</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column label="二维码" align="center" prop="qrCodeWeixin">
|
|
|
<template slot-scope="scope">
|
|
|
<!-- 显示已上传的二维码 -->
|
|
|
@@ -151,6 +170,18 @@
|
|
|
<dict-tag :options="qwStatusOptions" :value="scope.row.qwStatus"/>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
+ <el-table-column label="绑定的企微号" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div v-if="scope.row.qwUsers && scope.row.qwUsers.length > 0">
|
|
|
+ <div v-for="user in scope.row.qwUsers" :key="user.id">
|
|
|
+ <el-tag size="mini">{{ user.qwUserName }}</el-tag>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-else>
|
|
|
+ <dict-tag :options="qwStatusOptions" :value="scope.row.qwStatus"/>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column label="区域" align="center" prop="addressId">
|
|
|
</el-table-column>
|
|
|
<el-table-column label="创建时间" sortable align="center" prop="createTime" width="160">
|
|
|
@@ -164,11 +195,6 @@
|
|
|
:type="scope.row.isNeedRegisterMember === 1 ? 'success' : 'info'">{{scope.row.isNeedRegisterMember === 1 ? '是' : '否' }}</el-tag>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="创建时间" sortable align="center" prop="createTime" width="160">
|
|
|
- <template slot-scope="scope">
|
|
|
- <span>{{ parseTime(scope.row.createTime) }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
<el-table-column label="允许注册会员" align="center" prop="isNeedRegisterMember" width="80px">
|
|
|
<template slot-scope="scope">
|
|
|
<el-tag
|
|
|
@@ -177,6 +203,30 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
|
|
|
<template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ icon="el-icon-connection"
|
|
|
+ plain
|
|
|
+ v-if="scope.row.doctorId!=null"
|
|
|
+ @click="handleUpdateDoctor(scope.row)"
|
|
|
+ >换绑医生</el-button>
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ plain
|
|
|
+ icon="el-icon-link"
|
|
|
+ v-else
|
|
|
+ @click="handleUpdateDoctor(scope.row)"
|
|
|
+ >绑定医生</el-button>
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ icon="el-icon-unlock"
|
|
|
+ plain
|
|
|
+ v-if="scope.row.doctorId!=null"
|
|
|
+ @click="handleUnBindUserId(scope.row)"
|
|
|
+ >解绑医生</el-button>
|
|
|
<el-button
|
|
|
v-if="scope.row.qwStatus == 0"
|
|
|
size="mini"
|
|
|
@@ -205,14 +255,34 @@
|
|
|
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- <el-dialog title="绑定企微账号" :visible.sync="qwOpen" width="800px" append-to-body >
|
|
|
|
|
|
+ <!-- 批量修改角色对话框 -->
|
|
|
+ <el-dialog title="批量修改角色" :visible.sync="batchRoleDialogVisible" width="500px" append-to-body>
|
|
|
+ <el-form :model="batchRoleForm" label-width="80px">
|
|
|
+ <el-form-item label="选择角色">
|
|
|
+ <el-select v-model="selectedRoleIds" multiple placeholder="请选择角色" style="width: 100%;">
|
|
|
+ <el-option
|
|
|
+ v-for="item in roleOptions"
|
|
|
+ :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="batchRoleDialogVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="submitBatchRoles">确 定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <!--当点击查或换绑微信时候弹出此框-->
|
|
|
+ <el-dialog title="绑定企微账号" :visible.sync="qwOpen" width="800px" append-to-body >
|
|
|
<el-form ref="form" :model="form" label-width="80px" >
|
|
|
<el-form-item label="查询" prop="companyUserId">
|
|
|
<el-button type="primary" icon="el-icon-search" @click="selectQwUser()" size="mini">搜索账号</el-button>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="企微账号" prop="companyUserId">
|
|
|
-
|
|
|
<el-tag
|
|
|
style="margin-left: 5px"
|
|
|
size="medium"
|
|
|
@@ -225,15 +295,14 @@
|
|
|
</span>
|
|
|
</el-tag>
|
|
|
</el-form-item>
|
|
|
-
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button type="primary" @click="qwSubmitForm">绑 定</el-button>
|
|
|
<el-button @click="qwCancel">取 消</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
- <el-dialog title="选择企微主体" :visible.sync="synOpen" width="800px" append-to-body>
|
|
|
|
|
|
+ <el-dialog title="选择企微主体" :visible.sync="synOpen" width="800px" append-to-body>
|
|
|
<el-form label-width="80px">
|
|
|
<el-form-item label="企微公司" prop="corpId">
|
|
|
<el-select v-model="synform.corpId" placeholder="企微公司" >
|
|
|
@@ -245,8 +314,6 @@
|
|
|
/>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
-
|
|
|
-
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button type="primary" @click="synSubmitForm">确 定</el-button>
|
|
|
@@ -255,7 +322,6 @@
|
|
|
</el-dialog>
|
|
|
|
|
|
<el-dialog title="选择企微主体" :visible.sync="synNameOpen" width="800px" append-to-body>
|
|
|
-
|
|
|
<el-form label-width="80px">
|
|
|
<el-form-item label="企微公司" prop="corpId">
|
|
|
<el-select v-model="synNameform.corpId" placeholder="企微公司" >
|
|
|
@@ -406,29 +472,64 @@
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
|
|
|
-<!-- <!– 用户导入对话框 –>-->
|
|
|
-<!-- <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>-->
|
|
|
-<!-- <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>-->
|
|
|
-<!-- <i class="el-icon-upload"></i>-->
|
|
|
-<!-- <div class="el-upload__text">-->
|
|
|
-<!-- 将文件拖到此处,或-->
|
|
|
-<!-- <em>点击上传</em>-->
|
|
|
-<!-- </div>-->
|
|
|
-<!-- <div class="el-upload__tip" slot="tip">-->
|
|
|
-<!-- <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据-->
|
|
|
-<!-- <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>-->
|
|
|
-<!-- </div>-->
|
|
|
-<!-- <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>-->
|
|
|
-<!-- </el-upload>-->
|
|
|
-<!-- <div slot="footer" class="dialog-footer">-->
|
|
|
-<!-- <el-button type="primary" @click="submitFileForm">确 定</el-button>-->
|
|
|
-<!-- <el-button @click="upload.open = false">取 消</el-button>-->
|
|
|
-<!-- </div>-->
|
|
|
-<!-- </el-dialog>-->
|
|
|
- <el-dialog :title="user.title" :visible.sync="user.open" width="1000px" append-to-body>
|
|
|
- <selectUser ref="selectUser" @bindQwUser="bindQwUser"></selectUser>
|
|
|
+ <el-dialog :title="title" :visible.sync="bindCompanyOpen" width="700px" append-to-body>
|
|
|
+ <el-form ref="formBindCompany" :model="formBindCompany" :rules="bindCompanyRules" label-width="80px">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="企微主体" prop="corpId">
|
|
|
+ <el-select v-model="formBindCompany.corpId" placeholder="企微主体" size="small">
|
|
|
+ <el-option
|
|
|
+ v-for="dict in myQwCompanyList"
|
|
|
+ :key="dict.dictValue"
|
|
|
+ :label="dict.dictLabel"
|
|
|
+ :value="dict.dictValue"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="归属部门" prop="deptId">
|
|
|
+ <treeselect v-model="formBindCompany.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="角色" prop="roleIds">
|
|
|
+ <el-select v-model="formBindCompany.roleIds" multiple placeholder="请选择">
|
|
|
+ <el-option v-for="item in roleOptions" :key="item.roleId" :label="item.roleName" :value="item.roleId "></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="销售区域" prop="addressId">
|
|
|
+ <el-select v-model="formBindCompany.addressId" filterable placeholder="请选择所属销售的区域" style="width: 200px;">
|
|
|
+ <el-option
|
|
|
+ v-for="item in citysAreaList"
|
|
|
+ :key="item.cityId"
|
|
|
+ :label="item.cityName"
|
|
|
+ :value="item.cityId"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button type="primary" @click="submitBingCompanyForm">确 定</el-button>
|
|
|
+ <el-button @click="cancelBind">取 消</el-button>
|
|
|
+ </div>
|
|
|
</el-dialog>
|
|
|
|
|
|
+ <!-- 修改 selectUser 组件的引用 -->
|
|
|
+ <el-dialog :title="user.title" :visible.sync="user.open" width="1000px" append-to-body>
|
|
|
+ <selectUser ref="selectUser" @bindQwUser="bindQwUser" @close="handleSelectUserClose"/>
|
|
|
+ </el-dialog>
|
|
|
|
|
|
<el-dialog :title="companyUserArea.title" :visible.sync="companyUserArea.open" width="300px" append-to-body>
|
|
|
<el-select v-model="addressId" filterable placeholder="请选择所属销售的区域" style="width: 200px;">
|
|
|
@@ -470,6 +571,48 @@
|
|
|
<el-button @click="allowedAllRegisterOpen = false">取 消</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
+
|
|
|
+ <el-dialog :title="bindCompanyUrl.title" v-if="bindCompanyUrl.open" :visible.sync="bindCompanyUrl.open" width="450px" append-to-body>
|
|
|
+ <div style="padding-bottom:15px;" >
|
|
|
+ <img :src="bindCompanyUrl.url" width="400px">
|
|
|
+ </div>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="downloadImage(bindCompanyUrl.url, bindCompanyUrl.name+'.png')">下载二维码</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
|
|
|
+ <el-upload
|
|
|
+ ref="upload"
|
|
|
+ :limit="1"
|
|
|
+ accept=".xlsx, .xls"
|
|
|
+ :headers="upload.headers"
|
|
|
+ :action="upload.url + '?updateSupport=' + upload.updateSupport"
|
|
|
+ :disabled="upload.isUploading"
|
|
|
+ :on-progress="handleFileUploadProgress"
|
|
|
+ :on-success="handleFileSuccess"
|
|
|
+ :auto-upload="false"
|
|
|
+ drag
|
|
|
+ >
|
|
|
+ <i class="el-icon-upload"></i>
|
|
|
+ <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
|
|
+ <div class="el-upload__tip text-center" slot="tip">
|
|
|
+ <div class="el-upload__tip" slot="tip">
|
|
|
+ </div>
|
|
|
+ <span>仅允许导入xls、xlsx格式文件。</span>
|
|
|
+ <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
|
|
|
+ </div>
|
|
|
+ </el-upload>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button type="primary" @click="submitFileForm">确 定</el-button>
|
|
|
+ <el-button @click="upload.open = false">取 消</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <el-dialog :title="doctor.title" :visible.sync="doctor.open" width="800px" append-to-body>
|
|
|
+ <selectDoctor ref="selectDoctor" @bindCompanyUserDoctorId="bindCompanyUserDoctorId"></selectDoctor>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
@@ -488,7 +631,7 @@ import {
|
|
|
generateSubDomain,
|
|
|
setIsRegisterMember,
|
|
|
updateCompanyUserAreaList,
|
|
|
- isAllowedAllRegister
|
|
|
+ isAllowedAllRegister, unBindDoctorId, bindDoctorId,updateBatchUserRoles
|
|
|
} from "@/api/company/companyUser";
|
|
|
import { getToken } from "@/utils/auth";
|
|
|
import { treeselect } from "@/api/company/companyDept";
|
|
|
@@ -500,11 +643,21 @@ import { getMyQwUserList,getMyQwCompanyList } from "@/api/qw/user";
|
|
|
import selectUser from "@/views/company/components/selectQwUser.vue";
|
|
|
import { getConfigByKey } from "@/api/company/companyConfig";
|
|
|
import axios from "axios";
|
|
|
+import {addCodeUrl} from "../../../api/company/companyUser";
|
|
|
+import selectDoctor from "@/views/qw/user/selectDoctor.vue";
|
|
|
export default {
|
|
|
name: "User",
|
|
|
- components: { Treeselect ,selectUser},
|
|
|
+ components: {selectDoctor, Treeselect ,selectUser},
|
|
|
data() {
|
|
|
return {
|
|
|
+ doctor: {
|
|
|
+ open: false,
|
|
|
+ title: '绑定医生'
|
|
|
+ },
|
|
|
+ doctorForm: {
|
|
|
+ userId: null,
|
|
|
+ doctorId: null
|
|
|
+ },
|
|
|
uploadUrl: process.env.VUE_APP_BASE_API+"/company/user/common/uploadOSS",
|
|
|
// 遮罩层
|
|
|
loading: false,
|
|
|
@@ -538,6 +691,7 @@ export default {
|
|
|
deptOptions: undefined,
|
|
|
// 是否显示弹出层
|
|
|
open: false,
|
|
|
+ bindCompanyOpen: false,
|
|
|
qwOpen:false,
|
|
|
// 部门名称
|
|
|
deptName: undefined,
|
|
|
@@ -569,26 +723,35 @@ export default {
|
|
|
citysAreaList:[],
|
|
|
// 表单参数
|
|
|
form: {},
|
|
|
+ formBindCompany: {},
|
|
|
+
|
|
|
+ bindCompanyUrl:{
|
|
|
+ open:false,
|
|
|
+ title:"绑定/注册销售二维码",
|
|
|
+ name:null,
|
|
|
+ url:null,
|
|
|
+ },
|
|
|
+
|
|
|
form1: {},
|
|
|
defaultProps: {
|
|
|
children: "children",
|
|
|
label: "label",
|
|
|
},
|
|
|
- // // 用户导入参数
|
|
|
- // upload: {
|
|
|
- // // 是否显示弹出层(用户导入)
|
|
|
- // open: false,
|
|
|
- // // 弹出层标题(用户导入)
|
|
|
- // title: "",
|
|
|
- // // 是否禁用上传
|
|
|
- // isUploading: false,
|
|
|
- // // 是否更新已经存在的用户数据
|
|
|
- // updateSupport: 0,
|
|
|
- // // 设置上传的请求头部
|
|
|
- // headers: { Authorization: "Bearer " + getToken() },
|
|
|
- // // 上传的地址
|
|
|
- // url: process.env.VUE_APP_BASE_API + "/system/user/importData",
|
|
|
- // },
|
|
|
+ // 用户导入参数
|
|
|
+ upload: {
|
|
|
+ // 是否显示弹出层(用户导入)
|
|
|
+ open: false,
|
|
|
+ // 弹出层标题(用户导入)
|
|
|
+ title: "",
|
|
|
+ // 是否禁用上传
|
|
|
+ isUploading: false,
|
|
|
+ // 是否更新已经存在的用户数据
|
|
|
+ updateSupport: 0,
|
|
|
+ // 设置上传的请求头部
|
|
|
+ headers: { Authorization: "Bearer " + getToken() },
|
|
|
+ // 上传的地址
|
|
|
+ url: process.env.VUE_APP_BASE_API + "/company/user/importCompanyUser",
|
|
|
+ },
|
|
|
// 查询参数
|
|
|
queryParams: {
|
|
|
pageNum: 1,
|
|
|
@@ -646,11 +809,33 @@ export default {
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
+ // 表单校验
|
|
|
+ bindCompanyRules: {
|
|
|
+ deptId: [
|
|
|
+ { required: true, message: "归属部门不能为空", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ addressId: [
|
|
|
+ { required: true, message: "销售所属区域不能为空", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ roleIds: [
|
|
|
+ { required: true, message: "角色不能为空", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ corpId: [
|
|
|
+ { required: true, message: "角色不能为空", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
// 是否允许注册会员开关
|
|
|
allowedAllRegisterOpen: false,
|
|
|
allowedAllRegisterForm: {
|
|
|
status: true
|
|
|
},
|
|
|
+ // 在 data() 中添加
|
|
|
+ batchRoleDialogVisible: false,
|
|
|
+ selectedRoleIds: [],
|
|
|
+ batchRoleForm: {
|
|
|
+ userIds: [],
|
|
|
+ roleIds: []
|
|
|
+ },
|
|
|
};
|
|
|
},
|
|
|
watch: {
|
|
|
@@ -683,7 +868,7 @@ export default {
|
|
|
},
|
|
|
methods: {
|
|
|
onDomainBlur() {
|
|
|
- if (this.form.domain!=null){
|
|
|
+ if (this.form.domain != null) {
|
|
|
let value = this.form.domain.trim();
|
|
|
|
|
|
// 强制只保留第一个 http://
|
|
|
@@ -702,11 +887,98 @@ export default {
|
|
|
// 正则校验最终格式,提醒用户
|
|
|
const domainPattern = /^http:\/\/([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}$/;
|
|
|
if (!domainPattern.test(this.form.domain)) {
|
|
|
- return this.$message.error('请输入正确格式的域名,如:http://xxx.xxx.com');
|
|
|
+ return this.$message.error('请输入正确格式的域名,如:http://xxx.xxx.com');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 添加处理 selectUser 关闭的方法
|
|
|
+ handleSelectUserClose() {
|
|
|
+ this.user.open = false
|
|
|
+ // 如果 selectUser 组件有 clearSelection 方法,也可以调用
|
|
|
+ if (this.$refs.selectUser && typeof this.$refs.selectUser.clearSelection === 'function') {
|
|
|
+ this.$refs.selectUser.clearSelection()
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // edit G start
|
|
|
+ // 修改 selectQwUser 方法
|
|
|
+ selectQwUser() {
|
|
|
+ this.user.open = true;
|
|
|
+ // 在下次DOM更新后设置已选中的项
|
|
|
+ this.$nextTick(() => {
|
|
|
+ if (this.$refs.selectUser && this.qwUserList.length > 0) {
|
|
|
+ // 将已选中的用户传递给子组件
|
|
|
+ this.$refs.selectUser.setSelectedUsers(this.qwUserList);
|
|
|
}
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ // 修改 bindQwUser 方法
|
|
|
+ bindQwUser(row) {
|
|
|
+ // this.user.open = false; // 暂时注释掉这行,改为在 handleBatchBind 中处理
|
|
|
+ if (!this.qwUserList.some(item => item.id == row.id)) {
|
|
|
+ this.qwUserList.push(row)
|
|
|
+ }
|
|
|
+ if (!this.qwUser.some(item => item == row.id)) {
|
|
|
+ this.qwUser.push(row.id)
|
|
|
}
|
|
|
+ },
|
|
|
|
|
|
+ // 修改 qwBind 方法
|
|
|
+ qwBind(row) {
|
|
|
+ this.qwUser = [];
|
|
|
+ this.qwUserList = [];
|
|
|
+ this.qwForm.companyUserId = row.userId;
|
|
|
+ getUser(row.userId).then((response) => {
|
|
|
+ if (response.data.qwUserId != null) {
|
|
|
+ // 保存已绑定的企微用户ID列表
|
|
|
+ this.qwUser = ((response.data.qwUserId).split(",").map(Number));
|
|
|
+ getQwUserByIds(this.qwUser).then(res => {
|
|
|
+ this.qwUserList = res.data;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ // 先打开"绑定企微账号"对话框
|
|
|
+ this.qwOpen = true;
|
|
|
+ });
|
|
|
},
|
|
|
+
|
|
|
+ // 在 methods 中添加批量修改角色的方法
|
|
|
+ batchEditRole() {
|
|
|
+ if (this.ids.length === 0) {
|
|
|
+ this.$message.warning("请至少选择一个用户");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 获取角色列表数据
|
|
|
+ getUser().then((response) => {
|
|
|
+ this.roleOptions = response.roles;
|
|
|
+ this.batchRoleDialogVisible = true;
|
|
|
+ this.selectedRoleIds = []; // 清空之前的选择
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ // 添加批量角色更新提交方法
|
|
|
+ submitBatchRoles() {
|
|
|
+ // 验证选择的角色
|
|
|
+ if (!this.selectedRoleIds || this.selectedRoleIds.length === 0) {
|
|
|
+ this.$message.warning("请至少选择一个角色");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ console.log(this.ids)
|
|
|
+ console.log(this.selectedRoleIds)
|
|
|
+
|
|
|
+ // 调用API批量更新用户角色
|
|
|
+ updateBatchUserRoles({ userIds: this.ids, roleIds: this.selectedRoleIds })
|
|
|
+ .then(response => {
|
|
|
+ if (response.code === 200) {
|
|
|
+ this.$message.success("批量修改角色成功");
|
|
|
+ this.batchRoleDialogVisible = false;
|
|
|
+ this.getList(); // 刷新列表
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // edit G end
|
|
|
+
|
|
|
/** 查询用户列表 */
|
|
|
getList() {
|
|
|
this.loading = true;
|
|
|
@@ -715,14 +987,12 @@ export default {
|
|
|
this.userList = response.rows;
|
|
|
this.total = response.total;
|
|
|
this.loading = false;
|
|
|
- console.log(" this.userList ", this.userList )
|
|
|
+ console.log(" this.userList ", this.userList)
|
|
|
}
|
|
|
);
|
|
|
},
|
|
|
- selectQwUser(){
|
|
|
- this.user.open=true;
|
|
|
- },
|
|
|
- handleClosegroupUser(list){
|
|
|
+
|
|
|
+ handleClosegroupUser(list) {
|
|
|
const index = this.qwUser.findIndex(t => t === list);
|
|
|
if (index !== -1) {
|
|
|
this.qwUser.splice(index, 1);
|
|
|
@@ -756,13 +1026,13 @@ export default {
|
|
|
type: "warning",
|
|
|
}
|
|
|
)
|
|
|
- .then(function () {
|
|
|
+ .then(function() {
|
|
|
return changeUserStatus(row.userId, row.status);
|
|
|
})
|
|
|
.then(() => {
|
|
|
this.msgSuccess(text + "成功");
|
|
|
})
|
|
|
- .catch(function () {
|
|
|
+ .catch(function() {
|
|
|
row.status = row.status === "0" ? "1" : "0";
|
|
|
});
|
|
|
},
|
|
|
@@ -771,33 +1041,37 @@ export default {
|
|
|
this.open = false;
|
|
|
this.reset();
|
|
|
},
|
|
|
+ cancelBind() {
|
|
|
+ this.bindCompanyOpen = false;
|
|
|
+ this.resetBindCompany();
|
|
|
+ },
|
|
|
|
|
|
- submitFormArea(address){
|
|
|
+ submitFormArea(address) {
|
|
|
const uIds = this.ids;
|
|
|
|
|
|
- if (address == null){
|
|
|
+ if (address == null) {
|
|
|
this.$message.error("请选择地区");
|
|
|
return;
|
|
|
}
|
|
|
- updateCompanyUserAreaList({userIds:uIds,addressId:address}).then(res=>{
|
|
|
- this.companyUserArea.open=false;
|
|
|
+ updateCompanyUserAreaList({ userIds: uIds, addressId: address }).then(res => {
|
|
|
+ this.companyUserArea.open = false;
|
|
|
this.getList();
|
|
|
this.msgSuccess("操作成功");
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
- cancelArea(){
|
|
|
- this.companyUserArea.open=false;
|
|
|
- this.addressId=null;
|
|
|
+ cancelArea() {
|
|
|
+ this.companyUserArea.open = false;
|
|
|
+ this.addressId = null;
|
|
|
},
|
|
|
qwCancel() {
|
|
|
this.qwOpen = false;
|
|
|
- this.qwUserId=null;
|
|
|
+ this.qwUserId = null;
|
|
|
},
|
|
|
|
|
|
- handerCompanyUserAreaList(){
|
|
|
- this.companyUserArea.open=true;
|
|
|
+ handerCompanyUserAreaList() {
|
|
|
+ this.companyUserArea.open = true;
|
|
|
},
|
|
|
// 表单重置
|
|
|
reset() {
|
|
|
@@ -820,6 +1094,15 @@ export default {
|
|
|
};
|
|
|
this.resetForm("form");
|
|
|
},
|
|
|
+
|
|
|
+ resetBindCompany() {
|
|
|
+ this.formBindCompany = {
|
|
|
+ deptId: null,
|
|
|
+ addressId: null,
|
|
|
+ roleIds: [],
|
|
|
+ };
|
|
|
+ this.resetForm("formBindCompany");
|
|
|
+ },
|
|
|
/** 搜索按钮操作 */
|
|
|
handleQuery() {
|
|
|
this.queryParams.page = 1;
|
|
|
@@ -850,40 +1133,18 @@ export default {
|
|
|
console.log(" this.form1 ", this.form1)
|
|
|
});
|
|
|
},
|
|
|
- qwBind(row){
|
|
|
- this.qwUser=[];
|
|
|
- this.qwUserList=[];
|
|
|
- this.qwForm.companyUserId=row.userId
|
|
|
- getUser(row.userId).then((response) => {
|
|
|
- if(response.data.qwUserId!=null){
|
|
|
- this.qwUser=((response.data.qwUserId).split(",").map(Number))
|
|
|
- getQwUserByIds(this.qwUser).then(res => {
|
|
|
- this.qwUserList=res.data;
|
|
|
- })
|
|
|
- // this.qwUser.forEach(item => {
|
|
|
- // getQwUser(item).then(response => {
|
|
|
- // this.qwUserList.push(response.data);
|
|
|
- // });
|
|
|
- // });
|
|
|
- }
|
|
|
- this.qwOpen = true;
|
|
|
- });
|
|
|
|
|
|
+ handleBindCompanyUserCode() {
|
|
|
+ this.reset();
|
|
|
+ this.getTreeselect();
|
|
|
+ getUser().then((response) => {
|
|
|
+ this.postOptions = response.posts;
|
|
|
+ this.roleOptions = response.roles;
|
|
|
+ this.bindCompanyOpen = true;
|
|
|
+ this.title = "创建 新增/绑定销售 的二维码";
|
|
|
+ });
|
|
|
},
|
|
|
|
|
|
- bindQwUser(row){
|
|
|
- this.user.open=false;
|
|
|
-
|
|
|
-
|
|
|
- if (!this.qwUserList.some(item => item.id == row.id)) {
|
|
|
- this.qwUserList.push(row)
|
|
|
- }
|
|
|
-
|
|
|
- if (!this.qwUser.some(item => item == row.id)) {
|
|
|
- this.qwUser.push(row.id);
|
|
|
- }
|
|
|
-
|
|
|
- },
|
|
|
/** 修改按钮操作 */
|
|
|
handleUpdate(row) {
|
|
|
this.reset();
|
|
|
@@ -925,18 +1186,19 @@ export default {
|
|
|
}
|
|
|
});
|
|
|
})
|
|
|
- .catch(() => {});
|
|
|
+ .catch(() => {
|
|
|
+ });
|
|
|
},
|
|
|
/** 提交按钮 */
|
|
|
- submitForm: function () {
|
|
|
+ submitForm: function() {
|
|
|
|
|
|
- this.onDomainBlur();
|
|
|
+ // this.onDomainBlur();
|
|
|
|
|
|
- const domainPattern = /^http:\/\/([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}$/;
|
|
|
- if (this.form.domain!=null && !domainPattern.test(this.form.domain)) {
|
|
|
- this.$message.error('请输入正确格式的域名,如:http://xxx.xxx.com');
|
|
|
- return;
|
|
|
- }
|
|
|
+ // const domainPattern = /^http:\/\/([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}$/;
|
|
|
+ // if (this.form.domain!=null && !domainPattern.test(this.form.domain)) {
|
|
|
+ // this.$message.error('请输入正确格式的域名,如:http://xxx.xxx.com');
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
|
|
|
this.$refs["form"].validate((valid) => {
|
|
|
if (valid) {
|
|
|
@@ -960,12 +1222,45 @@ export default {
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
+
|
|
|
+ downloadImage(imageSrc, fileName) {
|
|
|
+ const link = document.createElement('a');
|
|
|
+ link.href = imageSrc;
|
|
|
+ link.download = fileName || '绑定或新增销售.png';
|
|
|
+ document.body.appendChild(link);
|
|
|
+ link.click();
|
|
|
+ document.body.removeChild(link);
|
|
|
+ },
|
|
|
+
|
|
|
+ submitBingCompanyForm: function() {
|
|
|
+
|
|
|
+ this.$refs["formBindCompany"].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+
|
|
|
+ let loadingRock = this.$loading({
|
|
|
+ lock: true,
|
|
|
+ text: '生成二维码中~~请不要刷新页面!!',
|
|
|
+ spinner: 'el-icon-loading',
|
|
|
+ background: 'rgba(0, 0, 0, 0.7)'
|
|
|
+ });
|
|
|
+
|
|
|
+ addCodeUrl(this.formBindCompany).then((response) => {
|
|
|
+ this.bindCompanyOpen = false;
|
|
|
+ this.bindCompanyUrl.url = response.data.url
|
|
|
+ this.bindCompanyUrl.open = true;
|
|
|
+ this.bindCompanyUrl.name = "绑定或新增 销售二维码";
|
|
|
+ }).finally(res => {
|
|
|
+ loadingRock.close();
|
|
|
+ })
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
/**
|
|
|
- * 同步企业微信员工
|
|
|
- */
|
|
|
+ * 同步企业微信员工
|
|
|
+ */
|
|
|
synSubmitForm() {
|
|
|
- this.synOpen=false;
|
|
|
- this.loading=true;
|
|
|
+ this.synOpen = false;
|
|
|
+ this.loading = true;
|
|
|
/*this.msgSuccess("");
|
|
|
|
|
|
let loadingRock = this.$loading({
|
|
|
@@ -975,63 +1270,60 @@ export default {
|
|
|
background: 'rgba(0, 0, 0, 0.7)'
|
|
|
});*/
|
|
|
|
|
|
-
|
|
|
addQwUser(this.synform.corpId).then(response => {
|
|
|
//this.msgSuccess("同步成功");
|
|
|
this.msgSuccess("正在同步中...");
|
|
|
this.getList();
|
|
|
- this.synOpen=false;
|
|
|
- }).finally(()=>{
|
|
|
- this.loading=false;
|
|
|
- this.synOpen=false;
|
|
|
+ this.synOpen = false;
|
|
|
+ }).finally(() => {
|
|
|
+ this.loading = false;
|
|
|
+ this.synOpen = false;
|
|
|
//loadingRock.close();
|
|
|
});
|
|
|
},
|
|
|
|
|
|
synNameSubmitForm() {
|
|
|
- this.synNameOpen=false;
|
|
|
- this.loading=true;
|
|
|
+ this.synNameOpen = false;
|
|
|
+ this.loading = true;
|
|
|
|
|
|
addQwUserName(this.synNameform.corpId).then(response => {
|
|
|
// this.msgSuccess("同步成功");
|
|
|
this.msgSuccess("正在同步中...");
|
|
|
this.getList();
|
|
|
- this.synNameOpen=false;
|
|
|
- }).finally(()=>{
|
|
|
- this.loading=false;
|
|
|
- this.synNameOpen=false;
|
|
|
+ this.synNameOpen = false;
|
|
|
+ }).finally(() => {
|
|
|
+ this.loading = false;
|
|
|
+ this.synNameOpen = false;
|
|
|
//loadingRock.close();
|
|
|
});
|
|
|
},
|
|
|
/**
|
|
|
- * 同步企业微信部门
|
|
|
- */
|
|
|
- qwSyncDept(){
|
|
|
+ * 同步企业微信部门
|
|
|
+ */
|
|
|
+ qwSyncDept() {
|
|
|
syncDept().then(response => {
|
|
|
this.msgSuccess("同步成功");
|
|
|
this.getList();
|
|
|
- }).catch(()=>{
|
|
|
- this.msgError("同步失败:"+response.msg);
|
|
|
+ }).catch(() => {
|
|
|
+ this.msgError("同步失败:" + response.msg);
|
|
|
})
|
|
|
},
|
|
|
- qwSubmitForm(){
|
|
|
|
|
|
+ qwSubmitForm() {
|
|
|
let loadingRock = this.$loading({
|
|
|
lock: true,
|
|
|
text: '绑定中.....同步客户信息中.....',
|
|
|
spinner: 'el-icon-loading',
|
|
|
background: 'rgba(0, 0, 0, 0.7)'
|
|
|
});
|
|
|
-
|
|
|
this.qwForm.id = (this.qwUser).join(',');
|
|
|
-
|
|
|
bindQwUser(this.qwForm).then(response => {
|
|
|
this.msgSuccess("绑定成功");
|
|
|
this.qwOpen = false;
|
|
|
this.getList();
|
|
|
- this.qwUserId=null;
|
|
|
- this.qwUser=[];
|
|
|
- }).finally(res=>{
|
|
|
+ this.qwUserId = null;
|
|
|
+ this.qwUser = [];
|
|
|
+ }).finally(res => {
|
|
|
loadingRock.close()
|
|
|
});
|
|
|
},
|
|
|
@@ -1047,14 +1339,15 @@ export default {
|
|
|
type: "warning",
|
|
|
}
|
|
|
)
|
|
|
- .then(function () {
|
|
|
+ .then(function() {
|
|
|
return delUser(userIds);
|
|
|
})
|
|
|
.then(() => {
|
|
|
this.getList();
|
|
|
this.msgSuccess("删除成功");
|
|
|
})
|
|
|
- .catch(function () {});
|
|
|
+ .catch(function() {
|
|
|
+ });
|
|
|
},
|
|
|
/** 导出按钮操作 */
|
|
|
handleExport() {
|
|
|
@@ -1064,19 +1357,20 @@ export default {
|
|
|
cancelButtonText: "取消",
|
|
|
type: "warning",
|
|
|
})
|
|
|
- .then(function () {
|
|
|
+ .then(function() {
|
|
|
return exportUser(queryParams);
|
|
|
})
|
|
|
.then((response) => {
|
|
|
this.download(response.msg);
|
|
|
})
|
|
|
- .catch(function () {});
|
|
|
+ .catch(function() {
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /** 导入按钮操作 */
|
|
|
+ handleImport() {
|
|
|
+ this.upload.title = "用户导入";
|
|
|
+ this.upload.open = true;
|
|
|
},
|
|
|
- // /** 导入按钮操作 */
|
|
|
- // handleImport() {
|
|
|
- // this.upload.title = "用户导入";
|
|
|
- // this.upload.open = true;
|
|
|
- // },
|
|
|
/** 下载模板操作 */
|
|
|
importTemplate() {
|
|
|
importTemplate().then((response) => {
|
|
|
@@ -1099,15 +1393,15 @@ export default {
|
|
|
submitFileForm() {
|
|
|
this.$refs.upload.submit();
|
|
|
},
|
|
|
- generateDomain(){
|
|
|
+ generateDomain() {
|
|
|
let queryParams;
|
|
|
- if(this.form.userId){
|
|
|
- queryParams= {
|
|
|
+ if (this.form.userId) {
|
|
|
+ queryParams = {
|
|
|
'userId': this.form.userId,
|
|
|
}
|
|
|
}
|
|
|
generateSubDomain(queryParams).then(response => {
|
|
|
- this.form.domain=response.data
|
|
|
+ this.form.domain = response.data
|
|
|
});
|
|
|
},
|
|
|
/** 设置单独注册会员按钮操作 */
|
|
|
@@ -1117,7 +1411,7 @@ export default {
|
|
|
},
|
|
|
/** 提交设置单独注册会员 */
|
|
|
submitRegisterForm() {
|
|
|
- setIsRegisterMember({status: this.registerForm.status}, this.ids).then(response => {
|
|
|
+ setIsRegisterMember({ status: this.registerForm.status }, this.ids).then(response => {
|
|
|
if (response.code === 200) {
|
|
|
this.msgSuccess("设置成功");
|
|
|
this.registerOpen = false;
|
|
|
@@ -1132,8 +1426,8 @@ export default {
|
|
|
// this.allowedAllRegisterForm.status = true;
|
|
|
},
|
|
|
// 提交
|
|
|
- submitAllowedAllRegisterForm(){
|
|
|
- isAllowedAllRegister({status: this.allowedAllRegisterForm.status}, this.ids).then(response => {
|
|
|
+ submitAllowedAllRegisterForm() {
|
|
|
+ isAllowedAllRegister({ status: this.allowedAllRegisterForm.status }, this.ids).then(response => {
|
|
|
if (response.code === 200) {
|
|
|
this.msgSuccess("操作成功");
|
|
|
this.allowedAllRegisterOpen = false;
|
|
|
@@ -1179,7 +1473,7 @@ export default {
|
|
|
const formData = new FormData();
|
|
|
formData.append('file', file);
|
|
|
|
|
|
- formData.append('userId',row.userId)
|
|
|
+ formData.append('userId', row.userId)
|
|
|
|
|
|
this.$set(row, 'uploading', true);
|
|
|
this.$set(row, 'uploadError', '');
|
|
|
@@ -1221,7 +1515,7 @@ export default {
|
|
|
},
|
|
|
requestUpload() {
|
|
|
},
|
|
|
- beforeUpload(){
|
|
|
+ beforeUpload() {
|
|
|
console.log(file.type)
|
|
|
const isPic =
|
|
|
file.type === 'image/jpeg' ||
|
|
|
@@ -1239,6 +1533,43 @@ export default {
|
|
|
}
|
|
|
return isPic && isLt2M
|
|
|
},
|
|
|
+ handleUpdateDoctor(row) {
|
|
|
+ this.doctor.title = "绑定医生"
|
|
|
+ this.doctor.open = true;
|
|
|
+ this.doctorForm.userId = row.userId;
|
|
|
+ },
|
|
|
+ bindCompanyUserDoctorId(row) {
|
|
|
+ console.log(row)
|
|
|
+ this.doctorForm.doctorId = row;
|
|
|
+ bindDoctorId(this.doctorForm).then(res => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.$message.success('绑定成功')
|
|
|
+ } else {
|
|
|
+ this.$message.error('绑定失败:', res.msg)
|
|
|
+ }
|
|
|
+ this.getList()
|
|
|
+ this.doctor.open = false;
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleUnBindUserId(val) {
|
|
|
+ this.$confirm(
|
|
|
+ '确认解绑医生:<span style="color: green;">' + val.nickName + '' +
|
|
|
+ '</span> 的医生?',
|
|
|
+ {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ dangerouslyUseHTMLString: true // 允许使用 HTML 字符串
|
|
|
+ }
|
|
|
+ ).then(() => {
|
|
|
+ return unBindDoctorId(val.userId);
|
|
|
+ }).then(response => {
|
|
|
+ this.getList();
|
|
|
+ this.msgSuccess("解绑成功");
|
|
|
+ }).finally(res => {
|
|
|
+ this.getList();
|
|
|
+ })
|
|
|
+ },
|
|
|
},
|
|
|
-};
|
|
|
+}
|
|
|
</script>
|