This commit is contained in:
BabyBoy 2025-09-19 10:17:46 +08:00
parent 84caf2fb2f
commit 9dc1d74c9b
7 changed files with 355 additions and 83 deletions

View File

@ -3,7 +3,7 @@ import request from '@/utils/request';
// 查询订单表列表
export function listOmsOrder(query, pageReq) {
return request({
url: '/oms/order/list',
url: '/oms/order/merchant/list',
method: 'post',
data: query,
params: pageReq

View File

@ -11,7 +11,30 @@ export function listTenant(query: any): AxiosPromise<TenantVO[]> {
data: query
});
}
// 查询团长列表
export function listTenantgetByReference(query: any): AxiosPromise<TenantVO[]> {
return request({
url: '/system/reference/list',
method: 'post',
data: query
});
}
// 查询团长订单
export function listdarrenorder(query: any): AxiosPromise<TenantVO[]> {
return request({
url: '/oms/order/reference/list',
method: 'post',
data: query
});
}
// 查询团长绑定会员列表
export function listdarrentuser(query: any): AxiosPromise<TenantVO[]> {
return request({
url: '/ums/member/getByReference',
method: 'post',
data: query
});
}
// 修改默认租户
export function updateSte(id: any): AxiosPromise<TenantVO[]> {
return request({

View File

@ -23,8 +23,10 @@ export interface TenantQuery extends PageQuery {
type: number;
contactUserName: string;
personName: string;
status: string;
companyType: string;
companyName: string;
personPhone: string;
storeName: string;
current: number;
size: number;
@ -39,8 +41,10 @@ export interface TenantForm {
username: string;
joinTime: string;
type: number;
mchtcode: string;
templateName: string;
password: string;
otherAttachment: string;
storeName: string;
inviteUserName: string;
contactUserName: string;

View File

@ -5,14 +5,17 @@
<!--店铺名称负责人联系人推广人店铺类型地址签约状态 -->
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="店铺名称:" prop="storeName" label-width="100px">
<el-input v-model="queryParams.storeName" placeholder="请输入店铺名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="负责人:" prop="personName" label-width="100px">
<el-form-item label="团长名字:" prop="personName" label-width="100px">
<el-input v-model="queryParams.personName" placeholder="请输入负责人" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="联系人:" prop="contactUserName" label-width="100px">
<el-input v-model="queryParams.contactUserName" placeholder="请输入联系人" clearable @keyup.enter="handleQuery" />
<el-form-item label="团长手机号:" prop="personPhone" label-width="100px">
<el-input v-model="queryParams.personPhone" placeholder="请输入团长手机号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="状态:" prop="personPhone" label-width="100px">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
<el-option label="停用" value="1" />
<el-option label="正常" value="0" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery" v-hasPermi="['system:tenant:query']">搜索</el-button>
@ -52,23 +55,25 @@
<el-table v-loading="loading" border :data="tenantList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column v-if="false" label="id" align="center" prop="id" />
<el-table-column label="企业地址" align="center" prop="address" />
<el-table-column label="负责人" align="center" prop="personName" />
<el-table-column label="负责人联系电话" align="center" prop="personPhone">
<template #default="scope">
{{ getPhon(scope.row.personPhone) }}
<el-table-column label="名字" align="center" prop="personName" />
<el-table-column label="聘任时间" align="center" prop="joinTime" />
<el-table-column label="状态" align="center" prop="status">
<template v-slot="scope">
{{ scope.row.status === 0 ? '正常' : '停用' }}
</template>
</el-table-column>
<el-table-column label="电话" align="center" prop="personPhone" />
<el-table-column label="联系地址" align="center" prop="address"> </el-table-column>
<el-table-column width="580" label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="修改" placement="top">
<el-button v-hasPermi="['system:tenant:edit']" link type="primary" @click="handleUpdate(scope.row)"> 修改</el-button>
</el-tooltip>
<el-tooltip content="提交" placement="top">
<!-- <el-tooltip content="提交" placement="top">
<el-button v-hasPermi="['system:tenant:submit']" link type="primary" @click="handleTl(scope.row)"> 提交 </el-button>
</el-tooltip>
<el-tooltip content="审核" placement="top">
</el-tooltip> -->
<!-- <el-tooltip content="审核" placement="top">
<el-button v-hasPermi="['system:tenant:review']" link type="primary" @click="handleSh(scope.row)"> 审核 </el-button>
</el-tooltip>
<el-tooltip content="确认审核" placement="top">
@ -76,7 +81,7 @@
</el-tooltip>
<el-tooltip content="切换租户状态" placement="top">
<el-button v-hasPermi="['system:tenant:status']" link type="primary" @click="handleStatusChange(scope.row)"> 切换租户状态 </el-button>
</el-tooltip>
</el-tooltip> -->
<el-tooltip content="同步套餐" placement="top">
<el-button v-hasPermi="['system:tenant:edit']" link type="primary" @click="handleSyncTenantPackage(scope.row)"> 同步套餐 </el-button>
</el-tooltip>
@ -110,6 +115,11 @@
<el-input v-model="form.address" placeholder="请输入地址" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="团长有效期" prop="contractYear" align="left">
<el-input v-model="form.contractYear" placeholder="请输入合同年限" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="负责人证件类型:" prop="idCardType">
<el-select v-model="form.idCardType" placeholder="请选择负责人证件类型" style="width: 100%" clearable>
@ -124,24 +134,21 @@
</el-col>
<el-col :span="8">
<el-form-item label="任聘时间:" prop="joinTime">
<el-date-picker
v-model="form.joinTime"
clearable
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择任聘时间
"
>
<el-date-picker v-model="form.joinTime" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择任聘时间">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-col :span="8">
<el-form-item label="证件信息:" prop="certificate">
<oss-image-upload v-model="form.certificate" :limit="2"> </oss-image-upload>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="其它附件:" prop="otherAttachment">
<oss-image-upload v-model="form.otherAttachment" :limit="1"> </oss-image-upload>
</el-form-item>
</el-col>
</el-row>
</div>
<div class="form-group">
<h3 class="group-title">用户信息</h3>
@ -168,11 +175,6 @@
<el-input v-model="form.remark" placeholder="请输入备注" type="textarea" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="合同年限" prop="contractYear" align="left">
<el-input v-model="form.contractYear" placeholder="请输入合同年限" />
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
@ -189,7 +191,6 @@
<script setup name="Tenant" lang="ts">
import {
getlistDivide,
listTenant,
getTenant,
delTenant,
addTenantdarren,
@ -200,6 +201,7 @@ import {
getTenantBannelList,
getTenantSub,
auditTenant,
listTenantgetByReference,
auditSubmit
} from '@/api/system/tenant';
@ -308,44 +310,11 @@ const handleSubmit = async (row) => {
console.log('用户取消了操作');
}
};
const managefun = (data: any) => {
const dataArray = data.split(',');
console.log(typeof dataArray);
let finds = '';
dataArray.forEach((item) => {
const matchedItem = manageList.value.find((option: any) => option.value === item);
finds += matchedItem ? matchedItem.label + ',' : '';
});
return finds;
};
const certificatefun = (data: any) => {
return certificateList.value.find((item) => item.value === data)?.label;
};
const enterprisefun = (data: any) => {
return enterpriseList.value.find((item) => item.value === data)?.label;
};
const bankfun = (data: any) => {
return bankList.value.find((item) => item.value === data)?.label;
};
const signfun = (data: any) => {
return signList.value.find((item) => item.value === data)?.label;
};
const enterpriseList = ref([]); //
const manageList = ref([]); //
const certificateList = ref([]); //
const bankList = ref([]); //
const signList = ref([]); //
const getByKey = async () => {
const value1 = await getDictionaryByKey('sys_enterprise_type');
enterpriseList.value = value1;
const orderStatusresulttype = await getDictionaryByKey('sys_manage_type');
manageList.value = orderStatusresulttype;
const orderStatusreasontype = await getDictionaryByKey('sys_certificate_type');
certificateList.value = orderStatusreasontype;
const orderStatusaimobject = await getDictionaryByKey('sys_bank_type');
bankList.value = orderStatusaimobject;
const orderStatusstatus = await getDictionaryByKey('sys_sign_status');
signList.value = orderStatusstatus;
};
const businessTypesjson = ref([]); //
const fnall = ref([]);
@ -368,7 +337,8 @@ const initFormData: TenantForm = {
contractYear: '', //
joinTime: '', //
idCardType: '', //
personName: '' //
personName: '', //
otherAttachment: '' //
};
const data = reactive<PageData<TenantForm, TenantQuery>>({
@ -376,15 +346,10 @@ const data = reactive<PageData<TenantForm, TenantQuery>>({
queryParams: {
current: 1,
size: 10,
type: 2,
tenantId: null,
personName: null, //
storeName: null, //
contactUserName: null, //
companyName: null, //
companyType: null, //
address: null, //
signStatus: null //
personPhone: null, //
status: null //
},
rules: {
id: [{ required: true, message: 'id不能为空', trigger: 'blur' }],
@ -394,9 +359,9 @@ const data = reactive<PageData<TenantForm, TenantQuery>>({
idCard: [{ required: true, message: '负责人证件信息/身份证号不能为空', trigger: 'blur' }],
certificate: [{ required: true, message: '身份证附件不能为空', trigger: 'blur' }],
packageId: [{ required: true, message: '租户套餐不能为空', trigger: 'blur' }],
remark: [{ required: true, message: '备注不能为空', trigger: 'blur' }],
// remark: [{ required: true, message: '', trigger: 'blur' }],
contractYear: [{ required: true, message: '合同年限不能为空', trigger: 'blur' }],
joinTime: [{ required: true, message: '加入时间不能为空', trigger: 'blur' }],
// joinTime: [{ required: true, message: '', trigger: 'blur' }],
idCardType: [{ required: true, message: '证件类型不能为空', trigger: 'blur' }],
personName: [{ required: true, message: '团长姓名不能为空', trigger: 'blur' }],
username: [
@ -440,7 +405,7 @@ const getUserListByName = (params: string) => {
/** 查询租户列表 */
const getList = async () => {
loading.value = true;
const res = await listTenant(queryParams.value);
const res = await listTenantgetByReference(queryParams.value);
tenantList.value = res.data.records;
total.value = res.data.total;
loading.value = false;

View File

@ -0,0 +1,129 @@
<template>
<div class="p-2">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="showSearch" class="mb-[10px]">
<!--店铺名称负责人联系人推广人店铺类型地址签约状态 -->
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="团长名字:" prop="personName" label-width="100px">
<el-input v-model="queryParams.spreadUserName" placeholder="请输入负责人" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="绑定日期:" prop="spreadTime" label-width="100px">
<el-date-picker
v-model="queryParams.spreadTime"
type="datetimerange"
clearable
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="选择日期"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery" v-hasPermi="['system:tenant:query']">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</transition>
<el-card shadow="hover">
<el-table v-loading="loading" border :data="tenantList">
<el-table-column type="selection" width="55" align="center" />
<el-table-column v-if="false" label="id" align="center" prop="id" />
<el-table-column label="团长姓名" align="center" prop="spreadUserName" />
<el-table-column label="用户手机号" align="center" prop="phoneHidden" />
<el-table-column label="订单号" align="center" prop="orderSn" />
<el-table-column label="订单金额" align="center" prop="totalAmount" />
<el-table-column label="订单时间" align="center" prop="startTime" />
</el-table>
<pagination v-show="total > 0" v-model:current="queryParams.current" v-model:size="queryParams.size" :total="total" @pagination="getList" />
</el-card>
</div>
</template>
<script setup name="Tenant" lang="ts">
import { listdarrenorder } from '@/api/system/tenant';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const loading = ref(true);
const showSearch = ref(true);
const total = ref(0);
const tenantList = ref([]);
const queryFormRef = ref<ElFormInstance>();
interface TenantFormfn {
current: number;
size: number;
spreadUserName?: string;
spreadTime?: string[];
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.current = 1;
getList();
};
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value?.resetFields();
handleQuery();
};
const queryParams = ref<TenantFormfn>({ current: 1, size: 10, spreadUserName: undefined, spreadTime: undefined });
/** 查询租户列表 */
const getList = async () => {
loading.value = true;
const res = await listdarrenorder(queryParams.value);
tenantList.value = res.data.records;
total.value = res.data.total;
loading.value = false;
};
onMounted(() => {
getList();
});
</script>
<style scoped lang="scss">
.form-group {
margin-bottom: 24px;
}
.group-title {
font-size: 16px;
font-weight: 500;
margin-bottom: 16px;
color: #1f2937;
padding-left: 8px;
border-left: 3px solid #409eff;
}
.upload__tip {
background: url('./d.png') no-repeat;
background-size: 100% 100%;
width: 100%;
height: 100%;
}
::v-deep {
#searc {
.el-form-item--default .el-form-item__label {
width: 100px;
}
}
.el-form-item__content {
width: 240px;
}
.el-form-item--default .el-form-item__label {
width: 150px;
}
.el-upload--picture-card {
width: 100px;
height: 100px;
}
.el-upload-list {
width: 320px;
.el-upload-list__item {
width: 100px;
height: 100px;
}
}
}
</style>

View File

@ -0,0 +1,142 @@
<template>
<div class="p-2">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="showSearch" class="mb-[10px]">
<!--店铺名称负责人联系人推广人店铺类型地址签约状态 -->
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="团长名字:" prop="spreadUserName" label-width="100px">
<el-input v-model="queryParams.spreadUserName" placeholder="请输团长名字" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="用户昵称:" prop="nickname" label-width="100px">
<el-input v-model="queryParams.nickname" placeholder="请输入用户昵称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="用户手机号:" prop="phoneHidden" label-width="100px">
<el-input v-model="queryParams.phoneHidden" placeholder="请输入用户手机号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="绑定日期:" prop="spreadTime" label-width="100px">
<el-date-picker
v-model="queryParams.spreadTime"
type="datetimerange"
clearable
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="选择日期"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery" v-hasPermi="['system:tenant:query']">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</transition>
<el-card shadow="hover">
<el-table v-loading="loading" border :data="tenantList">
<el-table-column label="团长姓名" align="center" prop="spreadUserName" />
<el-table-column label="用户昵称" align="center" prop="nickname" />
<el-table-column label="用户手机号" align="center" prop="phoneHidden" />
<el-table-column label="绑定日期" align="center" prop="spreadTime" />
</el-table>
<pagination v-show="total > 0" v-model:current="queryParams.current" v-model:size="queryParams.size" :total="total" @pagination="getList" />
</el-card>
</div>
</template>
<script setup name="Tenant" lang="ts">
import { listdarrentuser } from '@/api/system/tenant';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const loading = ref(true);
const showSearch = ref(true);
const total = ref(0);
const tenantList = ref([]);
const queryFormRef = ref<ElFormInstance>();
interface TenantFormfn {
current: number;
size: number;
spreadUserName: number | string;
nickname: number | string;
spreadTime: number | string;
phoneHidden: number | string;
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.current = 1;
getList();
};
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value?.resetFields();
handleQuery();
};
const queryParams = ref<TenantFormfn>({
current: 1,
size: 10,
spreadUserName: undefined,
nickname: undefined,
spreadTime: undefined,
phoneHidden: undefined
});
/** 查询租户列表 */
const getList = async () => {
loading.value = true;
const res = await listdarrentuser(queryParams.value);
tenantList.value = res.data.records;
total.value = res.data.total;
loading.value = false;
};
onMounted(() => {
getList();
});
</script>
<style scoped lang="scss">
.form-group {
margin-bottom: 24px;
}
.group-title {
font-size: 16px;
font-weight: 500;
margin-bottom: 16px;
color: #1f2937;
padding-left: 8px;
border-left: 3px solid #409eff;
}
.upload__tip {
background: url('./d.png') no-repeat;
background-size: 100% 100%;
width: 100%;
height: 100%;
}
::v-deep {
#searc {
.el-form-item--default .el-form-item__label {
width: 100px;
}
}
.el-form-item__content {
width: 240px;
}
.el-form-item--default .el-form-item__label {
width: 150px;
}
.el-upload--picture-card {
width: 100px;
height: 100px;
}
.el-upload-list {
width: 320px;
.el-upload-list__item {
width: 100px;
height: 100px;
}
}
}
</style>

View File

@ -80,7 +80,7 @@
{{ getPhon(scope.row.personPhone) }}
</template>
</el-table-column>
<el-table-column label="邀请人" align="center" prop="inviteUserName" />
<!-- <el-table-column label="邀请人" align="center" prop="inviteUserName" /> -->
<el-table-column label="签约状态" align="center" prop="signStatus">
<template #default="scope">
{{ signList.filter((item) => item.value == scope.row.signStatus)[0]?.label }}
@ -192,6 +192,11 @@
<el-input v-model="form.licenseNumber" placeholder="请输入统一社会信用代码" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="易生分配的商户编码:" prop="mchtcode">
<el-input v-model="form.mchtcode" placeholder="请输入易生分配的商户编码" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="企业类型:" prop="companyType">
<el-select v-model="form.companyType" placeholder="请选择企业类型" style="width: 100%" clearable>
@ -431,6 +436,9 @@
{{ tenantForm.licenseNumber }}
</el-form-item>
</el-col>
<el-form-item label="易生分配的商户编码:" prop="mchtcode">
{{ tenantForm.mchtcode }}
</el-form-item>
<el-col :span="8">
<el-form-item label="企业类型:" prop="companyType">
{{ enterprisefun(tenantForm.companyType) }}
@ -854,6 +862,7 @@ const initFormData: TenantForm = {
promoteList: '', //广
related: '', //
certificate: '', //
mchtcode: '', //
type: 2
};