7 files modified
3 files added
| | |
| | | VUE_APP_PREVIEW=true |
| | | # VUE_APP_API_BASE_URL= https://www.prudentcapitals.net/ |
| | | # VUE_APP_API_BASE_URL=http://www.jqydl.com:8091/ |
| | | VUE_APP_API_BASE_URL= https://brac.barcblays.com/ |
| | | VUE_APP_API_BASE_URL= https://brac.barcblays.com/ |
| | | # VUE_APP_API_BASE_URL=https://www.rksv.store:8091/ |
| | | # VUE_APP_API_BASE_URL=http://www.ojwuf.com:8091/ |
| | | # VUE_APP_API_BASE_URL=https://192.168.0.102:8091/ |
| | | # VUE_APP_API_BASE_URL=http://192.168.10.4:8091/ |
| | | # VUE_APP_API_BASE_URL=https://api.guosen.org/ |
| | |
| | | VUE_APP_PREVIEW=true |
| | | # VUE_APP_API_BASE_URL=http://www.jqydl.com:8091/ |
| | | # VUE_APP_API_BASE_URL=http://192.168.0.105:8091/ |
| | | VUE_APP_API_BASE_URL=https://brac.barcblays.com/ |
| | | # VUE_APP_API_BASE_URL=https://brac.barcblays.com/ |
| | | # VUE_APP_API_BASE_URL=https://www.rksv.store:8091/ |
| | | # VUE_APP_API_BASE_URL=http://www.ojwuf.com:8091/ |
| | | # VUE_APP_API_BASE_URL=https://192.168.0.102:8091/ |
| | | VUE_APP_API_BASE_URL=http://192.168.10.4:8091/ |
| | | # VUE_APP_API_BASE_URL= https://www.prudentcapitals.net/ |
| | | # VUE_APP_API_BASE_URL=https://api.guosen.org/ |
| | |
| | | queryApplyLever: '/admin/queryApplyLever.do', // 首页统计类 |
| | | examineApplyLever: '/admin/examineApplyLever.do', // 首页统计类 |
| | | countdata: '/admin/count.do', // 首页统计类 |
| | | getagentprice:'/admin/totalAgencyFunds.do',//获取代理总资产 |
| | | usermanag: '/admin/user/list.do', // 用户列表 |
| | | getMoney: '/admin/getMoney.do', // 获取账户金额 |
| | | useraddSimulatedAccount: '/admin/user/addSimulatedAccount.do', // 添加真实/模拟用户 |
| | |
| | | deyeb: '/admin/deleteEcho.do', // 删除利息宝列表 |
| | | yeblist: '/admin/querYEBOrder.do', // 利息宝列表 |
| | | addyeb: '/admin/addEcho.do', // 添加利息宝列表 |
| | | |
| | | moneyCount:'/admin/moneyCount.do',//获取首页数据 |
| | | nextagent: '/admin/agent/list.do', // 代理列表 |
| | | onedklist: '/admin/queryDk.do', // 贷款列表 |
| | | dklist: '/admin/queryDkjg.do', // 机构列表 |
| | |
| | | * @param parameter |
| | | * @returns {*} |
| | | */ |
| | | |
| | | export function getagentprice (parameter) { |
| | | return request({ |
| | | url: userApi.getagentprice, |
| | | method: 'post', |
| | | data: qs.stringify(parameter) |
| | | }) |
| | | } |
| | | export function moneyCount (parameter) { |
| | | return request({ |
| | | url: userApi.moneyCount, |
| | | method: 'post', |
| | | data: qs.stringify(parameter) |
| | | }) |
| | | } |
| | | export function queryEcho (parameter) { |
| | | return request({ |
| | | url: userApi.queryEcho, |
| New file |
| | |
| | | import request from '@/utils/request' |
| | | import qs from 'qs' |
| | | const userApi = { |
| | | adminlist: '/admin/log/optionList.do', // 管理列表 |
| | | adminupdateLock: '/admin/updateLock.do', // 管理锁定 解锁 |
| | | adminadd: '/admin/add.do', // 添加管理员 |
| | | adminupdate: '/admin/update.do' // 修改管理员密码 |
| | | } |
| | | |
| | | /** |
| | | * login func |
| | | * parameter: { |
| | | * username: '', |
| | | * password: '', |
| | | * remember_me: true, |
| | | * captcha: '12345' |
| | | * } |
| | | * @param parameter |
| | | * @returns {*} |
| | | */ |
| | | export function adminlist (parameter) { |
| | | return request({ |
| | | url: userApi.adminlist, |
| | | method: 'post', |
| | | data: qs.stringify(parameter) |
| | | }) |
| | | } |
| | | |
| | | export function adminupdateLock (parameter) { |
| | | return request({ |
| | | url: userApi.adminupdateLock, |
| | | method: 'post', |
| | | data: qs.stringify(parameter) |
| | | }) |
| | | } |
| | | |
| | | export function adminadd (parameter) { |
| | | return request({ |
| | | url: userApi.adminadd, |
| | | method: 'post', |
| | | data: qs.stringify(parameter) |
| | | }) |
| | | } |
| | | |
| | | export function adminupdate (parameter) { |
| | | return request({ |
| | | url: userApi.adminupdate, |
| | | method: 'post', |
| | | data: qs.stringify(parameter) |
| | | }) |
| | | } |
| | |
| | | name: 'loginlog', |
| | | component: () => import('@/views/logmanage/loginlog'), |
| | | meta: { title: '登录日志', keepAlive: true, permission: ['loginlog'] } |
| | | }, |
| | | { |
| | | path: '/logmanage/scorelist', |
| | | name: 'scorelist', |
| | | component: () => import('@/views/logmanage/scorelist'), |
| | | meta: { title: '上下分列表', keepAlive: true, permission: ['scorelist'] } |
| | | } |
| | | // { |
| | | // path: '/logmanage/smslog', |
| | |
| | | </v-chart> |
| | | </div> |
| | | </a-card> |
| | | <a-card :loading="loading" title="充值提现统计" :bordered="false"> |
| | | <div style="display:flex;align-items: center;justify-content: space-between;background-color: #fff;border-bottom: 1px solid #e8e8e8;"> |
| | | <div style="display:flex;align-items: center;"> |
| | | <a-card |
| | | title="充值提现统计" |
| | | :loading="radarLoading" |
| | | :bordered="false" |
| | | :body-style="{ padding: 0 }"> |
| | | |
| | | </a-card> |
| | | </div> |
| | | |
| | | <div> |
| | | <a-date-picker |
| | | show-time |
| | | style="width: 100%" |
| | | @change="getstartTime" |
| | | v-decorator="['startTime', { rules: [{ required: true, message: '请填写开始时间' }] }]" |
| | | format="YYYY-MM-DD" |
| | | > |
| | | </a-date-picker> |
| | | </div> |
| | | </div> |
| | | <a-card :loading="loading" :bordered="false"> |
| | | |
| | | <div class="members"> |
| | | <a-row> |
| | | <a-col :span="12"> |
| | | <a> |
| | | <span>今日充值</span> |
| | | <span class="member">{{ infodetail.charge_today_sum_amt ? infodetail.charge_today_sum_amt : 0 |
| | | <span class="member">{{ infodata.todayRechargeAmount |
| | | }}</span> |
| | | </a> |
| | | </a-col> |
| | | <a-col :span="12"> |
| | | <a> |
| | | <span>总充值</span> |
| | | <span class="member">{{ infodetail.charge_sum_amt ? infodetail.charge_sum_amt : 0 }}</span> |
| | | <span class="member">{{ infodata.rechargeTotalAmount }}</span> |
| | | </a> |
| | | </a-col> |
| | | <a-col :span="12"> |
| | | <a> |
| | | <span>今日提现</span> |
| | | <span class="member">{{ infodetail.sp_withdraw_sum_today_amt_success ? |
| | | infodetail.sp_withdraw_sum_today_amt_success : 0 |
| | | <span class="member">{{ infodata.todayWithdrawAmount |
| | | }}</span> |
| | | </a> |
| | | </a-col> |
| | | <a-col :span="12"> |
| | | <a> |
| | | <span>总提现</span> |
| | | <span class="member">{{ infodetail.sp_withdraw_sum_amt_success ? |
| | | infodetail.sp_withdraw_sum_amt_success : 0 |
| | | <span class="member">{{ infodata.withdrawalTotalAmount |
| | | }}</span> |
| | | </a> |
| | | </a-col> |
| | |
| | | <a-col :span="12"> |
| | | <a> |
| | | <span>当日注册人数</span> |
| | | <span class="member">{{ infodetail.toDayRegCount ? |
| | | infodetail.toDayRegCount : 0 |
| | | <span class="member">{{ infodata.todayRegister |
| | | }}</span> |
| | | </a> |
| | | </a-col> |
| | | |
| | | <a-col :span="12"> |
| | | <!-- <a-col :span="12"> |
| | | <a> |
| | | <span>当日首充人数</span> |
| | | <span class="member">{{ infodetail.toDayFristRechargeCount ? |
| | |
| | | infodetail.toDayFristRechargeMoney : 0 |
| | | }}</span> |
| | | </a> |
| | | </a-col> |
| | | </a-col> --> |
| | | |
| | | <a-col :span="12"> |
| | | <a> |
| | | <span>当日充值总人数</span> |
| | | <span class="member">{{ infodetail.toDayRechargeCount ? |
| | | infodetail.toDayRechargeCount : 0 |
| | | <span class="member">{{ infodata.todayWithdraw ? |
| | | infodata.todayWithdraw : 0 |
| | | }}</span> |
| | | </a> |
| | | </a-col> |
| | |
| | | import { PageHeaderWrapper } from '@ant-design-vue/pro-layout' |
| | | import { Radar } from '@/components' |
| | | import { getRoleList, getServiceList } from '@/api/manage' |
| | | import { stockgetMarket, countdata } from '@/api/home' |
| | | import { stockgetMarket, countdata,moneyCount } from '@/api/home' |
| | | import { positionlist } from '@/api/position' |
| | | import { adminlist } from '@/api/managesettings' |
| | | import axios from 'axios' |
| | |
| | | |
| | | market: [], |
| | | infodetail: {}, |
| | | infodata:{}, |
| | | rongzilist: [], |
| | | userdetails: '', |
| | | lizhidetail: '' |
| | | lizhidetail: '', |
| | | startTime:'', |
| | | } |
| | | }, |
| | | computed: { |
| | |
| | | this.getrongzilist() |
| | | this.getnowuser() |
| | | this.getlizhi() |
| | | this.getinfodata() |
| | | }, |
| | | methods: { |
| | | getstartTime (date, dateString) { |
| | | this.startTime = dateString |
| | | this.getinfodata() |
| | | }, |
| | | getinfodata(){ |
| | | var data = { |
| | | startTime:this.startTime, |
| | | } |
| | | moneyCount(data).then(res => { |
| | | this.infodata = res.data |
| | | }) |
| | | }, |
| | | getlizhi () { |
| | | axios.get('https://saying.api.azwcl.com/saying/get').then(res => { |
| | | this.lizhidetail = res.data.data |
| | | }) |
| | | }, |
| | | |
| | | getnowuser () { |
| | | adminlist().then(res => { |
| | | if (window.localStorage.getItem('phones')) { |
| New file |
| | |
| | | <template> |
| | | <page-header-wrapper> |
| | | <a-card :bordered="false"> |
| | | <div class="table-page-search-wrapper"> |
| | | <a-form layout="inline"> |
| | | <a-row :gutter="48"> |
| | | <a-col :md="12" :lg="6" :sm="24"> |
| | | <a-form-item label="用户ID"> |
| | | <a-input v-model="queryParam.userId" style="width: 100%" placeholder="请输入用户ID" /> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="12" :lg="6" :sm="24"> |
| | | <a-form-item> |
| | | <span class="table-page-search-submitButtons"> |
| | | <a-button @click="getqueryParam" icon="redo"> 重置</a-button> |
| | | <a-button |
| | | type="primary" |
| | | icon="search" |
| | | style="margin-left: 8px" |
| | | @click=";(queryParam.pageNum = 1), getlist()" |
| | | >查询 |
| | | </a-button> |
| | | </span> |
| | | </a-form-item> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | </a-card> |
| | | |
| | | <a-card :bordered="false"> |
| | | <a-table |
| | | bordered |
| | | :loading="loading" |
| | | :pagination="pagination" |
| | | :columns="columns" |
| | | :data-source="datalist" |
| | | rowKey="id" |
| | | > |
| | | <span slot="isLock" slot-scope="text, record"> |
| | | <template> |
| | | <div> |
| | | <a-tag :color="record.isLock == 0 ? 'green' : record.isLock == 1 ? 'red' : ''"> |
| | | {{ record.isLock == 0 ? '正常' : '锁定' }} |
| | | </a-tag> |
| | | </div> |
| | | </template> |
| | | </span> |
| | | |
| | | <template slot="action" slot-scope="text, record"> |
| | | <a slot="action" href="javascript:;" @click="getisLock(record.id, record.isLock)">{{ |
| | | record.isLock == 0 ? '锁定用户' : '解锁用户' |
| | | }}</a> |
| | | <a-divider type="vertical" /> |
| | | <a slot="action" href="javascript:;" @click="geteditStock(record)">修改密码</a> |
| | | </template> |
| | | </a-table> |
| | | </a-card> |
| | | |
| | | <a-modal |
| | | title="添加管理员" |
| | | :width="500" |
| | | :visible="addUserdialog" |
| | | :confirmLoading="addUserDialogloading" |
| | | @ok="OkaddUserdialog" |
| | | @cancel="CanceladdUserdialog" |
| | | > |
| | | <a-form :form="addUserform" ref="addUserform"> |
| | | <a-form-item label="用户ID" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
| | | <a-input |
| | | placeholder="请输入用户ID" |
| | | v-decorator="['id', { rules: [{ required: true, message: '请输入用户ID' }] }]" |
| | | /> |
| | | </a-form-item> |
| | | <a-form-item label="管理员手机号" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
| | | <a-input |
| | | placeholder="请输入管理员手机号" |
| | | v-decorator="['adminPhone', { rules: [{ required: true, message: '请输入管理员手机号' }] }]" |
| | | /> |
| | | </a-form-item> |
| | | <a-form-item label="管理员密码" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
| | | <a-input |
| | | placeholder="请输入管理员密码" |
| | | v-decorator="['adminPwd', { rules: [{ required: true, message: '请输入管理员密码' }] }]" |
| | | /> |
| | | </a-form-item> |
| | | </a-form> |
| | | </a-modal> |
| | | |
| | | <a-modal |
| | | title="修改密码" |
| | | :width="500" |
| | | :visible="editStockdialog" |
| | | :confirmLoading="editStockdialogloading" |
| | | @ok="OkeditStockdialog" |
| | | @cancel="CanceleditStockdialog" |
| | | > |
| | | <a-form :form="editStockform" ref="editStockform"> |
| | | <a-form-item label="用户ID" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
| | | <a-input |
| | | placeholder="请输入用户ID" |
| | | disabled |
| | | v-decorator="['id', { rules: [{ required: true, message: '请输入用户ID' }] }]" |
| | | /> |
| | | </a-form-item> |
| | | <a-form-item label="密码" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
| | | <a-input |
| | | placeholder="请输入密码" |
| | | v-decorator="['adminPwd', { rules: [{ required: true, message: '请输入密码' }] }]" |
| | | /> |
| | | </a-form-item> |
| | | </a-form> |
| | | </a-modal> |
| | | </page-header-wrapper> |
| | | </template> |
| | | <script> |
| | | import { adminlist, adminupdateLock, adminadd, adminupdate } from '@/api/soure' |
| | | import moment from 'moment' |
| | | export default { |
| | | name: 'Shares', |
| | | data () { |
| | | return { |
| | | columns: [ |
| | | { |
| | | title: 'id', |
| | | dataIndex: 'userId', |
| | | align: 'center' |
| | | }, |
| | | { |
| | | title: '用户名', |
| | | dataIndex: 'userName', |
| | | align: 'center' |
| | | }, |
| | | { |
| | | title: '操作金额', |
| | | dataIndex: 'money', |
| | | align: 'center' |
| | | }, |
| | | { |
| | | title: '资产账户类型', |
| | | dataIndex: 'userAccectType', |
| | | align: 'center', |
| | | scopedSlots: { customRender: 'userAccectType' } |
| | | }, |
| | | |
| | | { |
| | | title: '操作时间', |
| | | dataIndex: 'createTime', |
| | | align: 'center', |
| | | customRender: (text, row, index) => { |
| | | return text ? moment(text).format('YYYY-MM-DD HH:mm:ss') : '' |
| | | } |
| | | }, |
| | | ], |
| | | // 表头 |
| | | pagination: { |
| | | total: 0, |
| | | pageSize: 10, // 每页中显示10条数据 |
| | | showSizeChanger: true, |
| | | pageSizeOptions: ['10', '20', '50', '100'], // 每页中显示的数据 |
| | | onShowSizeChange: (current, pageSize) => this.onSizeChange(current, pageSize), // 改变每页数量时更新显示 |
| | | onChange: (page, pageSize) => this.onPageChange(page, pageSize), // 点击页码事件 |
| | | showTotal: (total) => `共有 ${total} 条数据` // 分页中显示总的数据 |
| | | }, |
| | | loading: false, |
| | | queryParam: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | userId: '', |
| | | }, |
| | | datalist: [], |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 7 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 13 } |
| | | }, |
| | | addUserform: this.$form.createForm(this), |
| | | addUserdialog: false, |
| | | addUserDialogloading: false, |
| | | |
| | | editStockdialog: false, |
| | | editStockdialogloading: false, |
| | | editStockform: this.$form.createForm(this), |
| | | fields: ['id', 'adminPwd'] |
| | | } |
| | | }, |
| | | created () { |
| | | this.getlist() |
| | | }, |
| | | methods: { |
| | | geteditStock (val) { |
| | | this.editStockdialog = true |
| | | this.fields.forEach((v) => this.editStockform.getFieldDecorator(v)) |
| | | this.editStockform.setFieldsValue({ id: val.id }) |
| | | }, |
| | | CanceleditStockdialog () { |
| | | this.editStockdialog = false |
| | | const form = this.$refs.editStockform.form |
| | | form.resetFields() |
| | | }, |
| | | OkeditStockdialog () { |
| | | const form = this.$refs.editStockform.form |
| | | form.validateFields((errors, values) => { |
| | | if (!errors) { |
| | | this.editStockdialogloading = true |
| | | values.adminPwd = this.editStockform.getFieldValue('adminPwd') |
| | | adminupdate(values).then((res) => { |
| | | if (res.status == 0) { |
| | | this.editStockdialog = false |
| | | this.$message.success(res.msg) |
| | | form.resetFields() |
| | | this.getlist() |
| | | } else { |
| | | this.$message.error(res.msg) |
| | | } |
| | | this.editStockdialogloading = false |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | // 新增用户取消弹窗 |
| | | CanceladdUserdialog () { |
| | | this.addUserdialog = false |
| | | const form = this.$refs.addUserform.form |
| | | form.resetFields() |
| | | }, |
| | | // 新增用户确定 |
| | | OkaddUserdialog () { |
| | | const form = this.$refs.addUserform.form |
| | | form.validateFields((errors, values) => { |
| | | if (!errors) { |
| | | this.addUserDialogloading = true |
| | | adminadd(values).then((res) => { |
| | | if (res.status == 0) { |
| | | this.addUserdialog = false |
| | | this.$message.success(res.msg) |
| | | form.resetFields() |
| | | this.getlist() |
| | | } else { |
| | | this.$message.error(res.msg) |
| | | } |
| | | this.addUserDialogloading = false |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | getqueryParam () { |
| | | this.queryParam = { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | adminName: '', |
| | | adminPhone: '' |
| | | } |
| | | }, |
| | | getlist () { |
| | | this.loading = true |
| | | adminlist(this.queryParam).then((res) => { |
| | | this.datalist = res.data.list |
| | | this.pagination.total = res.data.total |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | // 股票的锁定解锁 |
| | | getisLock (idval, isLockval) { |
| | | adminupdateLock({ adminId: idval }).then((res) => { |
| | | if (res.status === 0) { |
| | | this.getlist() |
| | | if (isLockval == 0) { |
| | | this.$message.success({ content: '锁定成功', duration: 2 }) |
| | | } else { |
| | | this.$message.success({ content: '解锁成功', duration: 2 }) |
| | | } |
| | | } else { |
| | | this.$message.error({ content: res.msg, duration: 2 }) |
| | | } |
| | | }) |
| | | }, |
| | | onPageChange (page, pageSize) { |
| | | this.queryParam.pageNum = page |
| | | this.getlist() |
| | | }, |
| | | onSizeChange (current, pageSize) { |
| | | this.queryParam.pageNum = current |
| | | this.queryParam.pageSize = pageSize |
| | | this.getlist() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | </div> |
| | | <div class="table-operator"> |
| | | <a-button type="primary" icon="plus" @click="$refs.addagentdialog.addUserdialog = true">添加下级代理</a-button> |
| | | <div class="table-operator_price">代理充值总资产:${{agentpricetotal.usTotalAmount}} ₹{{agentpricetotal.inTotalAmount}}</div> |
| | | <div class="table-operator_price" style="margin-left: 30px;">代理提现总资产:${{agentpricetotal.usTotalWithdrawAmount}} ₹{{agentpricetotal.inTotalWithdrawAmount}}</div> |
| | | <a @click="gettotalprice">(点击刷新)</a> |
| | | </div> |
| | | </a-card> |
| | | |
| | |
| | | import editCapitalAgentdialog from './agentcomponents/editCapitalAgentdialog' |
| | | import EditAgentinfodialog from './agentcomponents/EditAgentinfodialog' |
| | | import addagentdialog from './agentcomponents/addagentdialog' |
| | | import { nextagent, agentdelAgent } from '@/api/home' |
| | | import { nextagent, agentdelAgent,getagentprice } from '@/api/home' |
| | | import moment from 'moment' |
| | | export default { |
| | | name: 'AgentList', |
| | |
| | | pageSize: 10 |
| | | }, |
| | | agentloading: false, |
| | | agentpricetotal:'', |
| | | agentlist: [], |
| | | clickagentlist: [] |
| | | } |
| | | }, |
| | | created () { |
| | | this.getagentlist() |
| | | this.gettotalprice() |
| | | }, |
| | | methods: { |
| | | gettotalprice(){ |
| | | getagentprice().then((res) => { |
| | | this.agentpricetotal = res.data |
| | | }) |
| | | }, |
| | | getDelagent (val) { |
| | | var that = this |
| | | this.$confirm({ |
| | |
| | | } |
| | | } |
| | | </script> |
| | | <style > |
| | | .table-operator{ |
| | | display:flex; |
| | | align-items: center; |
| | | } |
| | | </style> |
| | |
| | | <a-input placeholder="请输入用户名" v-decorator="['realName', {}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="密码" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
| | | <a-input placeholder="请输入密码" v-decorator="['pwd', {}]" /> |
| | | <a-input placeholder="请输入密码" v-decorator="['userPwd', {}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="身份证号码" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
| | | <a-input placeholder="请输入身份证号码" v-decorator="['idCard', {}]" /> |
| | |
| | | editUserform: this.$form.createForm(this), |
| | | editUserdialog: false, |
| | | editUserDialogloading: false, |
| | | fields: ['agentId', 'phone', 'realName', 'pwd', 'idCard', 'isLogin', 'isLock'], |
| | | fields: ['agentId', 'phone', 'realName', 'userPwd', 'idCard', 'isLogin', 'isLock'], |
| | | currentDetails: {} |
| | | } |
| | | }, |