This commit is contained in:
wangjinlei
2024-11-04 18:07:04 +08:00

View File

@@ -1,20 +1,41 @@
<template> <template>
<div class="mod-config"> <div class="mod-config">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form
<el-form-item > :inline="true"
:model="dataForm"
@keyup.enter.native="getDataList()"
>
<el-form-item>
<el-input v-model="dataForm.key" placeholder="参数名" clearable> <el-input v-model="dataForm.key" placeholder="参数名" clearable>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="pageIndex = 1;getDataList()">查询</el-button> <el-button
<el-button v-if="isAuth('book:user:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button> @click="
<el-button type="primary" @click="addOrUpdateHandle()">合并账号</el-button> pageIndex = 1;
getDataList();
"
>查询</el-button
>
<el-button
v-if="isAuth('book:user:save')"
type="primary"
@click="addOrUpdateHandle()"
>新增</el-button
>
<el-button type="primary" @click="addOrUpdateHandle()"
>合并账号</el-button
>
<!-- <el-button v-if="isAuth('book:user:delete')" type="danger" @click="deleteHandle()" <!-- <el-button v-if="isAuth('book:user:delete')" type="danger" @click="deleteHandle()"
:disabled="dataListSelections.length <= 0">批量删除</el-button> --> :disabled="dataListSelections.length <= 0">批量删除</el-button> -->
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table :data="dataList" border v-loading="dataListLoading" <el-table
style="width: 100%;"> :data="dataList"
border
v-loading="dataListLoading"
style="width: 100%;"
>
<!-- <el-table-column type="selection" header-align="center" align="center" width="50"> <!-- <el-table-column type="selection" header-align="center" align="center" width="50">
</el-table-column> --> </el-table-column> -->
<!-- <el-table-column label="序号" width="70" align="center"> <!-- <el-table-column label="序号" width="70" align="center">
@@ -26,11 +47,20 @@
prop="id" prop="id"
header-align="center" header-align="center"
align="center" align="center"
label="用户ID"> label="用户ID"
>
</el-table-column> </el-table-column>
<el-table-column prop="nickname" header-align="center" align="center" label="姓名"> <el-table-column
prop="nickname"
header-align="center"
align="center"
label="姓名"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.nickname ? scope.row.nickname : '暂无用户名'}}</span>- <span>{{
scope.row.nickname ? scope.row.nickname : "暂无用户名"
}}</span
>-
<span v-if="scope.row.vip == 0">普通用户</span> <span v-if="scope.row.vip == 0">普通用户</span>
<span v-else-if="scope.row.vip == 2">吴门医述VIP</span> <span v-else-if="scope.row.vip == 2">吴门医述VIP</span>
<span v-else-if="scope.row.vip == 1">超级VIP</span> <span v-else-if="scope.row.vip == 1">超级VIP</span>
@@ -44,18 +74,49 @@
<span v-if="scope.row.sex == 0">女</span><span v-if="scope.row.sex == 1">男</span><span v-if="scope.row.sex == 2">保密</span> <span v-if="scope.row.sex == 0">女</span><span v-if="scope.row.sex == 1">男</span><span v-if="scope.row.sex == 2">保密</span>
</template> </template>
</el-table-column> --> </el-table-column> -->
<el-table-column prop="avatar" header-align="center" align="center" label="头像"> <el-table-column
prop="avatar"
header-align="center"
align="center"
label="头像"
>
<template slot-scope="scope"> <template slot-scope="scope">
<img v-if="scope.row.avatar && scope.row.avatar != ''" :src="scope.row.avatar" width="50" height="50" class="tableImg" /> <img
<img v-else src="../../../../static/img/morenAvavter.png" width="50" height="50" class="tableImg"> v-if="scope.row.avatar && scope.row.avatar != ''"
:src="scope.row.avatar"
width="50"
height="50"
class="tableImg"
/>
<img
v-else
src="../../../../static/img/morenAvavter.png"
width="50"
height="50"
class="tableImg"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="nickname" header-align="center" align="center" label="昵称"> <el-table-column
prop="nickname"
header-align="center"
align="center"
label="昵称"
>
</el-table-column> </el-table-column>
<el-table-column prop="tel" header-align="center" align="center" label="电话"> <el-table-column
prop="tel"
header-align="center"
align="center"
label="电话"
>
</el-table-column> </el-table-column>
<el-table-column prop="email" header-align="center" align="center" label="邮箱"> <el-table-column
prop="email"
header-align="center"
align="center"
label="邮箱"
>
</el-table-column> </el-table-column>
<!-- <el-table-column <!-- <el-table-column
prop="password" prop="password"
@@ -75,7 +136,41 @@
align="center" align="center"
label="vip 有效期"> label="vip 有效期">
</el-table-column> --> </el-table-column> -->
<el-table-column prop="peanutCoin" header-align="center" align="center" label="天医币"> <el-table-column
prop="peanutCoin"
header-align="center"
align="center"
label="天医币"
>
</el-table-column>
<el-table-column
prop="peanutCoin"
header-align="center"
align="center"
label="VIP 办理"
>
<template slot-scope="scope">
<el-popover
placement="right"
width="300"
trigger="click"
@show="getVipMoney(scope.row)"
>
<el-table :data="vipList">
<el-table-column
width="150"
property="title"
label="VIP名称"
></el-table-column>
<el-table-column
width="100"
property="lastFee"
label="开通金额"
></el-table-column>
</el-table>
<el-button slot="reference" size="small">办理金额</el-button>
</el-popover>
</template>
</el-table-column> </el-table-column>
<!-- <el-table-column <!-- <el-table-column
prop="readTime" prop="readTime"
@@ -95,25 +190,78 @@
align="center" align="center"
label="删除标记"> label="删除标记">
</el-table-column> --> </el-table-column> -->
<el-table-column fixed="right" header-align="center" align="center" width="150" label="操作"> <el-table-column
fixed="right"
header-align="center"
align="center"
width="150"
label="操作"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button> <el-button
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button> type="text"
size="small"
@click="addOrUpdateHandle(scope.row.id)"
>修改</el-button
>
<el-button
type="text"
size="small"
@click="deleteHandle(scope.row.id)"
>删除</el-button
>
<el-dropdown> <el-dropdown>
<span class="el-dropdown-link" style="font-size:12px; color:#17B3A3; cursor: pointer;"> <span
class="el-dropdown-link"
style="font-size:12px; color:#17B3A3; cursor: pointer;"
>
更多操作<i class="el-icon-arrow-down el-icon--right"></i> 更多操作<i class="el-icon-arrow-down el-icon--right"></i>
</span> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item><el-button type="text" size="small" @click="ck(scope.row)">/扣天医币</el-button></el-dropdown-item> <el-dropdown-item
><el-button type="text" size="small" @click="ck(scope.row)"
>/扣天医币</el-button
></el-dropdown-item
>
<el-dropdown-item> <el-dropdown-item>
<router-link :to="{ path: 'user-point-memery', query: {'tel':scope.row.tel, 'id':scope.row.id, 'userName':scope.row.nickname} }"> <router-link
<el-button type="text" size="small">/扣天医币记录</el-button> :to="{
path: 'user-point-memery',
query: {
tel: scope.row.tel,
id: scope.row.id,
userName: scope.row.nickname
}
}"
>
<el-button type="text" size="small"
>/扣天医币记录</el-button
>
</router-link> </router-link>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item><el-button type="text" size="small" @click=" thisUserID = scope.row.id; youVisible = true">优惠券管理</el-button></el-dropdown-item> <el-dropdown-item
<el-dropdown-item><el-button type="text" size="small" @click="resetPassword(scope.row)">修改密码</el-button></el-dropdown-item> ><el-button
type="text"
size="small"
@click="
thisUserID = scope.row.id;
youVisible = true;
"
>优惠券管理</el-button
></el-dropdown-item
>
<el-dropdown-item
><el-button
type="text"
size="small"
@click="resetPassword(scope.row)"
>修改密码</el-button
></el-dropdown-item
>
<el-dropdown-item> <el-dropdown-item>
<router-link :to="{ path: '/userCourse', query: {id:scope.row.id} }"> <router-link
:to="{ path: '/userCourse', query: { id: scope.row.id } }"
>
<el-button type="text" size="small"> <el-button type="text" size="small">
用户课程管理 用户课程管理
</el-button> </el-button>
@@ -125,18 +273,45 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" :current-page="pageIndex" <el-pagination
:page-sizes="[10, 20, 50, 100]" :page-size="pageSize" :total="total" @size-change="sizeChangeHandle"
layout="total, sizes, prev, pager, next, jumper"> @current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[10, 20, 50, 100]"
:page-size="pageSize"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
>
</el-pagination> </el-pagination>
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> <add-or-update
<el-dialog title="充/扣天医币" :close-on-click-modal="false" :visible.sync="adc" append-to-body width="30%" :before-close="closeDia"> v-if="addOrUpdateVisible"
<el-form :model="pointForm" label-width="100px" :rules="pointFormRules" ref="pointForm"> ref="addOrUpdate"
@refreshDataList="getDataList"
></add-or-update>
<el-dialog
title="充/扣天医币"
:close-on-click-modal="false"
:visible.sync="adc"
append-to-body
width="30%"
:before-close="closeDia"
>
<el-form
:model="pointForm"
label-width="100px"
:rules="pointFormRules"
ref="pointForm"
>
<el-form-item label="用户"> <el-form-item label="用户">
{{pointForm.tel}} <span v-if="pointForm.name!=''">({{pointForm.name}})</span> {{ pointForm.tel }}
<span>账户余额<em style="font-style: normal; font-size: 16px; color: #17B3A3;">{{pointForm.peanutCoin}}</em></span> <span v-if="pointForm.name != ''">({{ pointForm.name }})</span>
<span
>账户余额<em
style="font-style: normal; font-size: 16px; color: #17B3A3;"
>{{ pointForm.peanutCoin }}</em
></span
>
</el-form-item> </el-form-item>
<!-- <el-form-item label="充/扣主题"> <!-- <el-form-item label="充/扣主题">
<el-input v-model="pointForm.title"></el-input> <el-input v-model="pointForm.title"></el-input>
@@ -145,147 +320,205 @@
<!-- <el-input v-model="pointForm.pointType" placeholder="0-普通 1-vip"></el-input> <!-- <el-input v-model="pointForm.pointType" placeholder="0-普通 1-vip"></el-input>
--> -->
<el-select v-model="pointForm.pointType" placeholder="请选择"> <el-select v-model="pointForm.pointType" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> <el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="金额" prop="pointAmount"> <el-form-item label="金额" prop="pointAmount">
<el-input-number v-model="pointForm.pointAmount" :placeholder="pointForm.peanutCoin+'可用'"> <el-input-number
v-model="pointForm.pointAmount"
:placeholder="pointForm.peanutCoin + '可用'"
>
</el-input-number> </el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="充扣明细"> <el-form-item label="充扣明细">
<el-input type="textarea" rows="5" v-model="pointForm.remark" placeholder="操作说明"> <el-input
type="textarea"
rows="5"
v-model="pointForm.remark"
placeholder="操作说明"
>
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="closeDia">取消</el-button> <el-button @click="closeDia">取消</el-button>
<el-button type="primary" @click="huaSheng(pointForm.peanutCoin)">确定</el-button> <el-button type="primary" @click="huaSheng(pointForm.peanutCoin)"
>确定</el-button
>
</span> </span>
</el-dialog> </el-dialog>
<userCouponList v-if="youVisible" ref="userCouponList" :userId='thisUserID' @close="closeCoupon"></userCouponList> <userCouponList
v-if="youVisible"
ref="userCouponList"
:userId="thisUserID"
@close="closeCoupon"
></userCouponList>
</div> </div>
</template> </template>
<script> <script>
import userCouponList from '../coupon/userCouponList' import userCouponList from "../coupon/userCouponList";
import AddOrUpdate from './user-add-or-update' import AddOrUpdate from "./user-add-or-update";
export default { export default {
data() { data() {
return { return {
dataForm: { dataForm: {
key: '' key: ""
}, },
pointFormRules:{ pointFormRules: {
pointAmount:[ pointAmount: [
{ required: true, message: '请输入金额', trigger: 'blur' }, { required: true, message: "请输入金额", trigger: "blur" }
], ],
pointType:{ required: true, message: '请选择操作类型', trigger: 'blur' } pointType: {
required: true,
message: "请选择操作类型",
trigger: "blur"
}
}, },
options: [{ vipList: [],
options: [
{
value: 0, value: 0,
label: '充天医币' label: "充天医币"
}, { },
{
value: 1, value: 1,
label: '扣天医币' label: "扣天医币"
}], }
],
adc: false, adc: false,
pointForm: { pointForm: {
pointType: 0, pointType: 0,
remark:'', remark: "",
// title:'', // title:'',
pointAmount:0 pointAmount: 0
}, },
dataList: [], dataList: [],
pageIndex: 1, pageIndex: 1,
pageSize: 10, pageSize: 10,
totalPage: 0, totalPage: 0,
total:0, total: 0,
dataListLoading: false, dataListLoading: false,
dataListSelections: [], dataListSelections: [],
addOrUpdateVisible: false, addOrUpdateVisible: false,
youVisible: false, youVisible: false,
youForm: {}, youForm: {},
courperList: [], courperList: [],
courperHistList: [], courperHistList: []
} };
}, },
components: { components: {
AddOrUpdate, AddOrUpdate,
userCouponList userCouponList
}, },
activated() { activated() {
this.getDataList() this.getDataList();
}, },
methods: { methods: {
closeCoupon(val){ getVipMoney(data) {
this.youVisible = false console.log("data at line 420:", data.id);
},
// 用户课程
userCourse(val){
},
// 获取数据列表
getDataList() {
this.dataListLoading = true
this.$http({ this.$http({
// url: this.$http.adornUrl('/book/user/list'), // url: this.$http.adornUrl('/book/user/list'),
url: this.$http.adornUrl('/book/user/getUserList'), url: this.$http.adornUrl("/master/userVip/getVipProductForUser"),
method: 'post', method: "post",
data: this.$http.adornData({ data: this.$http.adornData({
'page': this.pageIndex, uid: data.id
'limit': this.pageSize, })
'key': this.dataForm.key
}),
// params: this.$http.adornParams({ // params: this.$http.adornParams({
// 'page': 1, // 'page': 1,
// 'limit': this.pageSize, // 'limit': this.pageSize,
// 'key': this.dataForm.key // 'key': this.dataForm.key
// }) // })
}).then(({ }).then(({ data }) => {
data
}) => {
if (data && data.code === 0) { if (data && data.code === 0) {
this.dataList = data.user.records var list=[]
this.totalPage = data.user.pages console.log("data at line 436:", data.list);
this.total = data.user.total for(let i in data.list){
this.dataListLoading = false if (data.list[i].length > 0) {
list.push([...data.list[i]]);
} }
}
this.vipList=list.flat(Infinity)
console.log("this.vipList at line 440:", this.vipList);
}else{
this.$message.error(data.msg);
this.vipList=[]
}
});
},
closeCoupon(val) {
this.youVisible = false;
},
// 用户课程
userCourse(val) {},
// 获取数据列表
getDataList() {
this.dataListLoading = true;
this.$http({
// url: this.$http.adornUrl('/book/user/list'),
url: this.$http.adornUrl("/book/user/getUserList"),
method: "post",
data: this.$http.adornData({
page: this.pageIndex,
limit: this.pageSize,
key: this.dataForm.key
}) })
// params: this.$http.adornParams({
// 'page': 1,
// 'limit': this.pageSize,
// 'key': this.dataForm.key
// })
}).then(({ data }) => {
if (data && data.code === 0) {
this.dataList = data.user.records;
this.totalPage = data.user.pages;
this.total = data.user.total;
this.dataListLoading = false;
}
});
}, },
// 重置密码 // 重置密码
resetPassword(row){ resetPassword(row) {
console.log(row,'row') console.log(row, "row");
this.$prompt('请输入新密码', '提示', { this.$prompt("请输入新密码", "提示", {
confirmButtonText: '确定', confirmButtonText: "确定",
cancelButtonText: '取消', cancelButtonText: "取消"
// inputPattern: /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/, // inputPattern: /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/,
// inputErrorMessage: '邮箱格式不正确' // inputErrorMessage: '邮箱格式不正确'
}).then(({ value }) => {
this.$http({
url: this.$http.adornUrl('/book/user/updateUserPassword'),
method: 'post',
data: this.$http.adornData({
'id':row.id,
'password': value
}),
}).then(({data}) => {
if (data && data.code === 0) {
this.$message.success('修改密码成功')
}
}).catch(({e}) => {
console.log(e,'e')
}) })
.then(({ value }) => {
this.$http({
url: this.$http.adornUrl("/book/user/updateUserPassword"),
method: "post",
data: this.$http.adornData({
id: row.id,
password: value
})
})
.then(({ data }) => {
if (data && data.code === 0) {
this.$message.success("修改密码成功");
}
})
.catch(({ e }) => {
console.log(e, "e");
});
// this.$message({ // this.$message({
// type: 'success', // type: 'success',
// message: '你的邮箱是: ' + value // message: '你的邮箱是: ' + value
// }); // });
}).catch(() => { })
.catch(() => {
// this.$message({ // this.$message({
// type: 'info', // type: 'info',
// message: '取消输入' // message: '取消输入'
@@ -295,88 +528,92 @@ import userCouponList from '../coupon/userCouponList'
// 每页数 // 每页数
sizeChangeHandle(val) { sizeChangeHandle(val) {
this.pageSize = val this.pageSize = val;
this.pageIndex = 1 this.pageIndex = 1;
this.getDataList() this.getDataList();
}, },
// 当前页 // 当前页
currentChangeHandle(val) { currentChangeHandle(val) {
this.pageIndex = val this.pageIndex = val;
this.getDataList() this.getDataList();
}, },
// 多选 // 多选
selectionChangeHandle(val) { selectionChangeHandle(val) {
this.dataListSelections = val this.dataListSelections = val;
}, },
// 新增 / 修改 // 新增 / 修改
addOrUpdateHandle(id) { addOrUpdateHandle(id) {
this.addOrUpdateVisible = true this.addOrUpdateVisible = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(id) this.$refs.addOrUpdate.init(id);
}) });
}, },
closeDia(){ closeDia() {
this.adc = false this.adc = false;
this.$refs.pointForm.resetFields(); this.$refs.pointForm.resetFields();
// this.pointForm.pointType == 0 // this.pointForm.pointType == 0
}, },
// 删除 // 删除
deleteHandle(id) { deleteHandle(id) {
var ids = id ? [id] : this.dataListSelections.map(item => { var ids = id
return item.id ? [id]
}) : this.dataListSelections.map(item => {
this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', { return item.id;
confirmButtonText: '确定', });
cancelButtonText: '取消', this.$confirm(
type: 'warning' `确定对[id=${ids.join(",")}]进行[${id ? "删除" : "批量删除"}]操作?`,
}).then(() => { "提示",
{
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}
).then(() => {
this.$http({ this.$http({
url: this.$http.adornUrl('/book/user/delete'), url: this.$http.adornUrl("/book/user/delete"),
method: 'post', method: "post",
data: this.$http.adornData(ids, false) data: this.$http.adornData(ids, false)
}).then(({ }).then(({ data }) => {
data
}) => {
if (data && data.code === 0) { if (data && data.code === 0) {
this.$message({ this.$message({
message: '操作成功', message: "操作成功",
type: 'success', type: "success",
duration: 1500, duration: 1500,
onClose: () => { onClose: () => {
this.getDataList() this.getDataList();
} }
}) });
} else { } else {
this.$message.error(data.msg) this.$message.error(data.msg);
} }
}) });
}) });
}, },
// 充值扣款天医币 // 充值扣款天医币
ck(e) { ck(e) {
this.pointForm=e this.pointForm = e;
this.adc = true this.adc = true;
}, },
huaSheng(point){ huaSheng(point) {
// console.log(this.pointForm.pointAmount, point) // console.log(this.pointForm.pointAmount, point)
if(this.pointForm.pointAmount > point && this.pointForm.pointType == 1){ if (this.pointForm.pointAmount > point && this.pointForm.pointType == 1) {
return this.$message.error('扣除金额不能大于总金额') return this.$message.error("扣除金额不能大于总金额");
} }
this.$refs['pointForm'].validate((valid) => { this.$refs["pointForm"].validate(valid => {
this.$http({ this.$http({
url: this.$http.adornUrl(`/book/user/pointChange?pointType=${this.pointForm.pointType}&note=${this.pointForm.remark}&pointAmount=${this.pointForm.pointAmount}&id=${this.pointForm.id}`), url: this.$http.adornUrl(
method: 'get', `/book/user/pointChange?pointType=${this.pointForm.pointType}&note=${this.pointForm.remark}&pointAmount=${this.pointForm.pointAmount}&id=${this.pointForm.id}`
),
method: "get",
params: this.$http.adornParams() params: this.$http.adornParams()
}).then(({ }).then(({ data }) => {
data
}) => {
if (data && data.code === 0) { if (data && data.code === 0) {
this.$message.success('操作成功') this.$message.success("操作成功");
this.getDataList() this.getDataList();
this.adc = false this.adc = false;
} }
}) });
}) });
}, },
// async getUserCouponList(userId) { // async getUserCouponList(userId) {
// var obj = undefined // var obj = undefined
@@ -422,26 +659,24 @@ import userCouponList from '../coupon/userCouponList'
// 删除优惠券 // 删除优惠券
courDelete(e) { courDelete(e) {
let arrList = [] let arrList = [];
arrList.push(e.id) arrList.push(e.id);
this.$http({ this.$http({
url: this.$http.adornUrl('/book/couponhistory/delete'), url: this.$http.adornUrl("/book/couponhistory/delete"),
method: 'post', method: "post",
data: this.$http.adornData(arrList, false) data: this.$http.adornData(arrList, false)
}).then(({ }).then(({ data }) => {
data
}) => {
if (data && data.code === 0) { if (data && data.code === 0) {
this.$message({ this.$message({
message: '删除成功', message: "删除成功",
type: 'success', type: "success",
duration: 1500, duration: 1500
}) });
this.youhui(this.youForm) this.youhui(this.youForm);
this.youVisible = true this.youVisible = true;
}
})
} }
});
} }
} }
};
</script> </script>