134 lines
2.8 KiB
Vue
134 lines
2.8 KiB
Vue
<!--
|
|
Jeepay 门店选择 / 应用选择
|
|
|
|
@author terrfly
|
|
@site https://www.jeequan.com
|
|
@date 2022/12/06 12:55
|
|
-->
|
|
<template>
|
|
|
|
<!-- 选择门店 -->
|
|
<JeepayPopupListSelect
|
|
ref="jeepayRedPopupListSelectByBizinfos"
|
|
:reqTableDataFunc="reqTableDataByBizsFunc"
|
|
:searchInputName="getSearchInputName()"
|
|
:fields="getField()"
|
|
/>
|
|
|
|
</template>
|
|
|
|
<script setup>
|
|
import { reactive, ref } from 'vue'
|
|
import { reqLoad, API_URL_MCH_STORE_LIST, API_URL_MCH_APP_LIST } from '@/http/apiManager.js'
|
|
|
|
|
|
// 定义组件参数
|
|
const props = defineProps({
|
|
configMode: { type: String, default: ''}, // 搜索时仅展示商户号
|
|
// 是否多选框, 默认单选。
|
|
isCheckbox: { type: Boolean, default: false },
|
|
|
|
// 自动关闭, 点击确定, 自动关闭
|
|
autoClose: { type: Boolean, default: true },
|
|
|
|
// 业务类型: 默认门店
|
|
bizType: { type: String, default: 'store' },
|
|
|
|
// 是否支持选择 【 全部门店 、 全部应用 】
|
|
isShowAllBiz: { type: Boolean, default: false },
|
|
// 特殊参数处理
|
|
params:{type:Object,default:()=>({})}
|
|
|
|
})
|
|
|
|
|
|
const jeepayRedPopupListSelectByBizinfos = ref()
|
|
|
|
|
|
function getField(){
|
|
|
|
if(props.bizType == 'store'){
|
|
return { key: 'storeId', left: 'storeName', right: 'storeId' }
|
|
}
|
|
|
|
if(props.bizType == 'mchApp'){
|
|
return { key: 'appId', left: 'appName', right: 'appId' }
|
|
}
|
|
}
|
|
|
|
|
|
function getSearchInputName(){
|
|
if(props.bizType == 'store'){
|
|
return "storeName"
|
|
}
|
|
|
|
if(props.bizType == 'mchApp'){
|
|
return "appName"
|
|
}
|
|
}
|
|
|
|
|
|
function reqTableDataByBizsFunc(params) {
|
|
Object.assign(params,props.params)
|
|
console.log(params);
|
|
|
|
let apiResult = null;
|
|
|
|
if(props.bizType == 'store'){
|
|
apiResult = reqLoad.list(API_URL_MCH_STORE_LIST, params)
|
|
}
|
|
|
|
if(props.bizType == 'mchApp'){
|
|
apiResult = reqLoad.list(API_URL_MCH_APP_LIST, params)
|
|
}
|
|
|
|
return apiResult.then((apiRes) => {
|
|
return processApiResBizData(params, apiRes)
|
|
})
|
|
|
|
}
|
|
|
|
// 选择门店
|
|
function open (defaultVal){
|
|
console.log(defaultVal,'defaultValdefaultVal')
|
|
return jeepayRedPopupListSelectByBizinfos.value.open(defaultVal).then((selected) => {
|
|
|
|
// 自动关闭
|
|
if(props.autoClose){
|
|
close()
|
|
}
|
|
|
|
return selected;
|
|
})
|
|
}
|
|
|
|
function close(){
|
|
jeepayRedPopupListSelectByBizinfos.value.close() //自行关闭
|
|
}
|
|
|
|
|
|
function processApiResBizData(params, apiRes){
|
|
|
|
// 第一页 拼接全部门店 (index = 0 )
|
|
if(params.pageNumber == 1 && props.isShowAllBiz){
|
|
|
|
if(props.bizType == 'store'){
|
|
apiRes.bizData.records.unshift({storeName: '全部门店', storeId: ''})
|
|
}
|
|
|
|
if(props.bizType == 'mchApp'){
|
|
apiRes.bizData.records.unshift({appName: '全部应用', appId: ''})
|
|
}
|
|
|
|
}
|
|
|
|
return apiRes
|
|
}
|
|
|
|
|
|
// 将表格事件暴露出去 https://www.jianshu.com/p/39d14c25c987
|
|
defineExpose({ open, close })
|
|
</script>
|
|
|
|
<style>
|
|
</style> |