This commit is contained in:
磷叶 2024-11-27 18:25:49 +08:00
parent 7b73d0adeb
commit 6683722e3a
7 changed files with 73 additions and 19 deletions

View File

@ -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;
}

View File

@ -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;

View File

@ -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"

View File

@ -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>

View File

@ -288,6 +288,9 @@ export default {
],
unsealSelf: [
{ required: true, message: "实名解封不能为空", trigger: "change" }
],
submitType: [
{type: 'array', required: true, message: "提交材料不能为空", trigger: "change"}
]
}
};

View File

@ -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" }
],

View File

@ -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,