From 6683722e3ab7e97cec21f7d29a8c7e6b20ab089b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A3=B7=E5=8F=B6?= <14103883+leaf-phos@user.noreply.gitee.com> Date: Wed, 27 Nov 2024 18:25:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/wx.js | 14 +++++++++ src/views/dashboard/component/TodoList.vue | 18 +++++++++-- src/views/mch/storeStaff/index.vue | 2 +- src/views/ss/realName/index.vue | 9 +++++- src/views/ss/risk/index.vue | 3 ++ .../components/StoreStaffEditDialog.vue | 16 ++++------ .../storeStaff/components/StoreStaffTable.vue | 30 ++++++++++++++++--- 7 files changed, 73 insertions(+), 19 deletions(-) diff --git a/src/utils/wx.js b/src/utils/wx.js index 79b891f..d0dd0db 100644 --- a/src/utils/wx.js +++ b/src/utils/wx.js @@ -17,3 +17,17 @@ export function getWxIndexUrl(query) { } return url; } + +// 获取合伙人外链 +export function getStaffUrl(query) { + let url = `https://kg.chuangtewl.com/h`; + if (query != null ) { + if (query instanceof Object) { + query = tansParams(query).slice(0, -1); + } + if (query.length > 0) { + url += `?${query}`; + } + } + return url; +} diff --git a/src/views/dashboard/component/TodoList.vue b/src/views/dashboard/component/TodoList.vue index d226557..9a84cad 100644 --- a/src/views/dashboard/component/TodoList.vue +++ b/src/views/dashboard/component/TodoList.vue @@ -14,6 +14,13 @@ </div> <div class="unit">条</div> </div> + <div class="todo-item" @click="$router.push(`/smUser/riskInfo?status=${RiskInfoStatus.WAIT_VERIFY}`)"> + <div class="label"><svg-icon icon-class="apply"/> 风控审核</div> + <div class="value"> + <count-to :start-val="0" :end-val="data.riskVerifyCount" :duration="3000"/> + </div> + <div class="unit">条</div> + </div> <div class="todo-item" @click="$router.push('/smDevice/device?isArrears=1')"> <div class="label"><svg-icon icon-class="monitor"/> 到期设备</div> <div class="value"> @@ -41,9 +48,15 @@ <script> import CountTo from 'vue-count-to' import { getTodoList } from '@/api/system/dashboard' +import { RiskInfoStatus } from '@/utils/constants' export default { name: 'TodoList', + computed: { + RiskInfoStatus() { + return RiskInfoStatus + } + }, components: { CountTo }, @@ -55,7 +68,8 @@ export default { mchApplyCount: 0, storeApplyCount: 0, abnormalCount: 0, - arrearsDeviceCount: 0 + arrearsDeviceCount: 0, + riskVerifyCount: 0, // 风控审核数量 } } }, @@ -87,7 +101,7 @@ export default { width: 100%; display: flex; transition: .25s; - padding: 0.8em 1em; + padding: 0.55em 1em; cursor: pointer; border-radius: 16px; vertical-align: bottom; diff --git a/src/views/mch/storeStaff/index.vue b/src/views/mch/storeStaff/index.vue index d707cac..7193e43 100644 --- a/src/views/mch/storeStaff/index.vue +++ b/src/views/mch/storeStaff/index.vue @@ -50,7 +50,7 @@ :employ-id="row.employId" @success="getList" :init-form="{storeId: query.storeId}" - user-input-type="search" + :show-user-id="false" :update-api="mchUpdateStoreStaff" :add-api="mchAddStoreStaff" :load-api="mchGetStoreStaff" diff --git a/src/views/ss/realName/index.vue b/src/views/ss/realName/index.vue index a26c634..de5203a 100644 --- a/src/views/ss/realName/index.vue +++ b/src/views/ss/realName/index.vue @@ -34,7 +34,14 @@ /> </el-form-item> <el-form-item label="类型" prop="type"> - + <el-select v-model="queryParams.type" placeholder="请选择类型" clearable @change="handleQuery"> + <el-option + v-for="dict in dict.type.real_name_type" + :key="dict.value" + :label="dict.label" + :value="dict.value" + /> + </el-select> </el-form-item> <el-form-item> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> diff --git a/src/views/ss/risk/index.vue b/src/views/ss/risk/index.vue index cf00cfd..10793ed 100644 --- a/src/views/ss/risk/index.vue +++ b/src/views/ss/risk/index.vue @@ -288,6 +288,9 @@ export default { ], unsealSelf: [ { required: true, message: "实名解封不能为空", trigger: "change" } + ], + submitType: [ + {type: 'array', required: true, message: "提交材料不能为空", trigger: "change"} ] } }; diff --git a/src/views/ss/storeStaff/components/StoreStaffEditDialog.vue b/src/views/ss/storeStaff/components/StoreStaffEditDialog.vue index 7a960db..01e8f88 100644 --- a/src/views/ss/storeStaff/components/StoreStaffEditDialog.vue +++ b/src/views/ss/storeStaff/components/StoreStaffEditDialog.vue @@ -4,12 +4,9 @@ <el-form-item label="店铺" prop="storeId"> <store-input v-model="form.storeId" :disabled="hasView([views.store, views.mchStore])"/> </el-form-item> - <el-form-item label="用户" prop="userId" v-if="userInputType === 'dialog'"> + <el-form-item label="用户" prop="userId" v-if="showUserId"> <user-input v-model="form.userId"/> </el-form-item> - <el-form-item label="用户" prop="userId" v-else-if="userInputType === 'search'"> - <user-search-input v-if="open && !loading" v-model="form.userId" :init-options="initUserSearchOptions"/> - </el-form-item> <el-form-item label="备注名" prop="remark"> <el-input v-model="form.remark" placeholder="请输入备注名" maxlength="200" show-word-limit/> </el-form-item> @@ -81,10 +78,10 @@ export default { type: Object, default: () => ({}) }, - // 用户的输入方式:dialog 弹窗选择,search 搜索选择 - userInputType: { - type: String, - default: "dialog" + // 是否展示用户ID + showUserId: { + type: Boolean, + default: true, }, // 更新API updateApi: { @@ -113,9 +110,6 @@ export default { storeId: [ { required: true, message: "店铺不能为空", trigger: "change" } ], - userId: [ - { required: true, message: "用户不能为空", trigger: "change" } - ], point: [ { required: true, message: "分成比例不能为空", trigger: "change" } ], diff --git a/src/views/ss/storeStaff/components/StoreStaffTable.vue b/src/views/ss/storeStaff/components/StoreStaffTable.vue index 3a8a6a2..de7995e 100644 --- a/src/views/ss/storeStaff/components/StoreStaffTable.vue +++ b/src/views/ss/storeStaff/components/StoreStaffTable.vue @@ -83,8 +83,20 @@ <template v-else-if="column.key === 'point'"> {{d.row.point | money | defaultValue}} % </template> - <template v-else-if="column.key === 'userName'"> - <user-link :id="d.row.userId" :name="d.row.userName"/> + <template v-else-if="column.key === 'userId'"> + <user-link v-if="d.row.userId != null" :id="d.row.userId" :name="d.row.userName"/> + <template v-else> + <el-popover + placement="top" + width="180" + trigger="hover"> + <div class="qr-code-box"> + <qr-code :text="qrCodeText(d.row)" :width="150" :height="150" /> + <p style="text-align: center">扫描二维码绑定用户</p> + </div> + <el-button slot="reference" type="text" icon="el-icon-picture">绑定二维码</el-button> + </el-popover> + </template> </template> <template v-else-if="column.key === 'storeName'"> <store-link :id="d.row.storeId" :name="d.row.storeName"/> @@ -120,6 +132,8 @@ import UserInput from '@/components/Business/SmUser/UserInput.vue' import StoreInput from '@/components/Business/Store/StoreInput.vue' import { $showColumns, $view } from '@/utils/mixins' import { listStoreStaff } from '@/api/ss/storeStaff' +import QrCode from '@/components/QrCode/index.vue' +import { getStaffUrl, getWxIndexUrl } from '@/utils/wx' // 默认排序字段 @@ -130,7 +144,7 @@ const defaultSort = { export default { name: "StoreStaffTable", - components: { StoreLink, UserLink, UserInput, StoreInput, BooleanTag }, + components: { QrCode, StoreLink, UserLink, UserInput, StoreInput, BooleanTag }, mixins: [$showColumns, $view], dicts: ['store_staff_permissions', 'store_staff_role'], props: { @@ -151,7 +165,7 @@ export default { columns: [ {key: 'employId', visible: false, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'storeName', visible: true, label: '店铺', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, - {key: 'userName', visible: true, label: '用户', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, + {key: 'userId', visible: true, label: '用户', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'remark', visible: true, label: '备注名', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'role', visible: true, label: '角色', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'point', visible: true, label: '分成比例', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, @@ -198,6 +212,14 @@ export default { }, }; }, + computed: { + // 二维码文本 + qrCodeText() { + return (row) => { + return getStaffUrl({ i: row.employId}); + } + }, + }, created() { this.queryParams = { ...this.queryParams,