租户审批

master
ZR20090193-陈敬勇 11 months ago
parent ad8c6dbc93
commit 21c9b78c05

@ -1,8 +1,8 @@
# port # port
VITE_PORT = 3110 VITE_PORT = 3112
# 网站标题 # 网站标题
VITE_GLOB_APP_TITLE = 东胜物流管理 VITE_GLOB_APP_TITLE = 东胜物流管理
# 简称,用于配置文件名字 不要出现空格、数字开头等特殊字符 # 简称,用于配置文件名字 不要出现空格、数字开头等特殊字符
VITE_GLOB_APP_SHORT_NAME = WmsAdmin VITE_GLOB_APP_SHORT_NAME = WmsAdmin

@ -0,0 +1,125 @@
<template>
<BasicModal
v-bind="$attrs"
@register="registerModal"
:useWrapper="true"
:title="getTitle"
width="50%"
@ok="handleSave"
>
<BasicForm @register="registerForm">
<template #auditStatusSlot="{ model, field }">
<canvas id="canvas" width="200" height="200"></canvas>
</template>
</BasicForm>
<!--右下角按钮-->
<template #footer>
<a-button
@click="closeModal"
preIcon="ant-design:close-outlined"
type="warning"
:loading="loading"
ghost
style="margin-right: 0.8rem"
>取消</a-button
>
<a-button
@click="handleAudit"
preIcon="ant-design:audit-outlined"
type="error"
:loading="loading"
style="margin-right: 0.8rem"
>审核
</a-button>
</template>
</BasicModal>
</template>
<script lang="ts" setup>
import { ref, computed, unref, h, reactive } from 'vue'
import { BasicModal, useModalInner } from '/@/components/Modal'
import { BasicForm, useForm } from '/@/components/Form/index'
import { formSchema } from './columns'
import chapter from '/@/utils/chapter'
// import { useUserStore } from '/@/store/modules/user';
import { getTenantAuditInfo, auditInfo } from './api'
import { useMessage } from '/@/hooks/web/useMessage'
const { notification, createConfirm } = useMessage()
// Emits
const emit = defineEmits(['success', 'register'])
const isUpdate = ref(true)
const loading = ref(false)
const rowId = ref('')
const { createMessage } = useMessage()
const [registerForm, { resetFields, setFieldsValue, validate, updateSchema }] = useForm({
labelWidth: 100,
schemas: formSchema,
showActionButtonGroup: false,
})
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
resetFields()
setModalProps({ confirmLoading: false, loading: true })
isUpdate.value = !!data?.isUpdate
if (unref(isUpdate)) {
// setModalProps({ confirmLoading: true });
rowId.value = data.record.id
const res: API.DataResult = await getTenantAuditInfo({ id: unref(rowId) })
if (res.succeeded) {
setFieldsValue({
...res.data,
})
// ClearChapter();
const status = res.data.auditStatus
if (status === -1) {
chapter('未提交', '高速临空管理平台', 'red')
} else if (status === 0) {
chapter('待审批', '高速临空管理平台', 'blue')
} else if (status === 1) {
chapter('审核通过', '高速临空管理平台', 'green')
} else if (status === 2) {
chapter('审核驳回', '高速临空管理平台', 'orange')
}
}
// setModalProps({ confirmLoading: false });
}
setModalProps({ loading: false })
})
const getTitle = computed(() => (!unref(isUpdate) ? '' : '企业用户审批'))
async function handleAudit() {
try {
const { createConfirm } = useMessage()
const values = await validate()
// const userStore = useUserStore();
// const user = userStore.getUserInfo;
loading.value = true
const postData = reactive({
id: values.gid,
status: values.status,
auditNote: values.auditNote === null ? '通过' : values.auditNote,
})
createConfirm({
iconType: 'warning',
title: '确认审核',
content: '是否确认审核该单据!!!',
onOk: async () => {
const res: API.DataResult = await auditInfo(postData)
// console.log(res);
if (res.succeeded) {
notification.success({ message: res.message, duration: 3 })
closeModal()
emit('success')
} else {
notification.error({ message: res.message, duration: 3 })
}
},
})
loading.value = false
// exit && closeModal();
} finally {
// loading.value = false;
}
}
</script>

@ -0,0 +1,31 @@
// @ts-ignore
import { request } from '/@/utils/request'
import { DataResult, PageRequest } from '/@/api/model/baseModel'
enum Api {
list = '/mainApi/TenantApply/GetTenantApplyList',
getTenantAuditInfo = '/mainApi/TenantApply/GetTenantAuditInfo',
auditInfo = '/mainApi/TenantApply/AuditTenantApply',
}
export function getTenantApplyList(data: PageRequest) {
return request<DataResult>({
url: Api.list,
method: 'post',
data,
})
}
export function getTenantAuditInfo(query: { id: string }) {
return request<DataResult>({
url: Api.getTenantAuditInfo,
method: 'get',
params: query,
})
}
export function auditInfo(data: any) {
return request<DataResult>({
url: Api.auditInfo,
method: 'post',
data,
})
}

@ -0,0 +1,242 @@
import { BasicColumn, FormSchema } from '/@/components/Table'
import { Tag } from 'ant-design-vue'
import { UploadTypeEnum } from '/@/components/Form/src/Ds/components/DUpload'
// import { getDictDropDown } from '/@/api/common';
// @ts-ignore
export const columns: BasicColumn[] = [
// {
// title: '唯一编码',
// dataIndex: 'countryCode',
// width: 200,
// },
{
title: '公司名称',
dataIndex: 'name',
width: 150,
},
{
title: '信用代码',
dataIndex: 'taxNo',
width: 150,
},
{
title: '公司法人',
dataIndex: 'chief',
width: 100,
},
{
title: '公司地址',
dataIndex: 'address',
width: 100,
},
{
title: '公司电话',
dataIndex: 'tel',
width: 100,
},
{
title: '审核状态',
dataIndex: 'auditStatus',
width: 100,
filters: [
{ text: '待审批', value: '0' },
{ text: '审核通过', value: '1' },
{ text: '驳回', value: '2' },
],
customRender: ({ text }) => {
if (text === 0) {
return <Tag color="blue"></Tag>
} else if (text === 1) {
return <Tag color="success"></Tag>
} else if (text === 2) {
return <Tag color="warning"></Tag>
}
return text
},
},
{
title: '审批时间',
dataIndex: 'auditTime',
width: 100,
sorter: true,
},
]
export const searchFormSchema: FormSchema[] = [
{
field: 'Name',
label: '公司名称',
component: 'Input',
colProps: { span: 8 },
},
]
export const formSchema: FormSchema[] = [
{
field: 'divider-selects',
component: 'Divider',
label: '基本信息',
colProps: { span: 24 },
},
{
label: '',
field: 'id',
component: 'Input',
defaultValue: '',
show: false,
},
{
field: 'name',
label: '公司名称',
component: 'Input',
required: true,
colProps: { span: 16 },
componentProps: {
disabled: true,
},
},
{
field: 'shortname',
label: '公司简称',
component: 'Input',
required: true,
colProps: { span: 8 },
componentProps: {
disabled: true,
},
},
{
field: 'taxNo',
label: '信用代码',
component: 'Input',
required: true,
colProps: { span: 12 },
componentProps: {
disabled: true,
},
},
{
field: 'chief',
label: '公司法人',
component: 'Input',
required: true,
colProps: { span: 12 },
},
{
field: 'address',
label: '公司地址',
component: 'Input',
required: true,
colProps: { span: 12 },
},
{
field: 'tel',
label: '公司电话',
component: 'Input',
required: true,
colProps: { span: 12 },
itemProps: {
extra: '电话格式 0531-XXXXXXX',
},
},
{
field: 'email',
label: '公司邮箱',
component: 'Input',
required: true,
colProps: { span: 12 },
itemProps: {
extra: '请输入正确的邮箱格式',
},
},
{
field: 'loginname',
label: '管理员账号',
component: 'Input',
colProps: { span: 12 },
dynamicDisabled: ({ values }) => {
return !!values.gid
},
},
{
field: 'remark',
label: '备注',
component: 'InputTextArea',
colProps: { span: 18 },
// ifShow: ({ values }) => !isButton(values.menuType),
},
{
field: 'divider-selects',
component: 'Divider',
label: '认证资料',
helpMessage: ['请按要求上传认证资料!'],
colProps: { span: 24 },
},
{
field: 'licensefiles',
component: 'DUpload',
helpMessage: '最多上传1个文件',
label: '营业执照',
colProps: {
span: 24,
},
componentProps: {
maxCount: 1,
disabled: true,
fileType: UploadTypeEnum.image,
},
},
{
field: 'cardfiles',
component: 'DUpload',
helpMessage: '最多上传2个文件',
label: '法人身份证',
colProps: {
span: 24,
},
componentProps: {
maxCount: 2,
disabled: true,
fileType: UploadTypeEnum.image,
},
},
{
field: 'divider-selects',
component: 'Divider',
label: '审批意见',
colProps: { span: 24 },
},
{
field: 'auditStatus',
label: '审核状态',
component: 'Input',
colProps: {
span: 24,
},
slot: 'auditStatusSlot',
},
{
field: 'auditNote',
component: 'InputTextArea',
label: '审核意见',
componentProps: {
placeholder: '请填写审核意见',
rows: 4,
},
colProps: { span: 18 },
},
{
field: 'status',
component: 'RadioButtonGroup',
label: '审批选项',
defaultValue: 1,
required: true,
colProps: { span: 12 },
componentProps: {
placeholder: '请选择状态',
options: [
{ label: '通过', value: 1 },
{ label: '驳回', value: 2 },
],
},
},
]

@ -0,0 +1,129 @@
<template>
<div>
<BasicTable @register="registerTable">
<template #toolbar> </template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'name'">
<span style="color: #0d84ff" @click="handleAudit(record)">{{ record.name }}</span>
</template>
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
icon: 'ant-design:fork-outlined',
// tooltip: '',
label: '审核',
color: 'error',
onClick: handleAudit.bind(null, record),
},
]"
/>
</template>
</template>
</BasicTable>
<TenantModal @register="registerModal" @success="handleSuccess" />
</div>
</template>
<script lang="ts" setup>
import { defineComponent, onMounted, ref } from 'vue'
import {BasicTable, useTable, TableAction, SorterResult} from '/@/components/Table'
import { getTenantApplyList } from './api'
import { useModal } from '/@/components/Modal'
import TenantModal from './TenantModal.vue'
import { columns, searchFormSchema } from './columns'
let filterInfo: Partial<Recordable<string[]>> = []
let sortInfo: SorterResult = {}
const [registerModal, { openModal }] = useModal()
const [registerTable, { reload, getForm, getPaginationRef }] = useTable({
title: '企业用户审批',
api: async (p) => {
const res: API.DataResult = await getTenantApplyList(p)
// console.log(items);
return new Promise((resolve) => {
resolve({ data: [...res.data], total: res.count })
})
},
beforeFetch: () => {
var currentPageInfo: any = getPaginationRef()
var data = getForm().getFieldsValue()
const postParam: API.PageRequest = {
queryCondition: '',
pageCondition: {
pageIndex: currentPageInfo.current,
pageSize: currentPageInfo.pageSize,
sortConditions: [],
},
}
/* 排序字段 */
if (!!sortInfo.columnKey) {
postParam.pageCondition.sortConditions.push({
sortField: sortInfo.field,
listSortDirection: sortInfo.order === 'ascend' ? 0 : 1,
})
} else {
postParam.pageCondition.sortConditions.push({
sortField: 'auditTime',
listSortDirection: 0,
})
}
let condition: API.ConditionItem[] = []
if (!!data.Name) {
condition.push({
FieldName: 'Name',
FieldValue: data.Name,
ConditionalType: 1,
})
}
/* 筛选字段 */
if (filterInfo === null) {
} else {
// console.log(filterInfo);
// console.log('' + filterInfo.auditStatus);
if (!!filterInfo.auditStatus && filterInfo.auditStatus.length > 0) {
condition.push({
FieldName: 'AuditStatus',
FieldValue: filterInfo.auditStatus.join(),
ConditionalType: 6,
})
}
}
postParam.queryCondition = JSON.stringify(condition)
// console.log(postParam);
return postParam
},
columns,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
},
sortFn: (sorter) => {
// console.log(':' + sorter);
sortInfo = sorter
},
filterFn: (filters) => {
// console.log(':' + filters);
filterInfo = filters
},
pagination: true,
bordered: true,
useSearchForm: true,
showTableSetting: true,
tableSetting: { fullScreen: true },
actionColumn: {
width: 80,
title: '操作',
dataIndex: 'action',
fixed: undefined,
},
})
function handleAudit(record: Recordable) {
openModal(true, {
record,
isUpdate: true,
})
}
function handleSuccess() {
reload()
}
</script>

@ -0,0 +1,39 @@
using FluentValidation;
namespace DS.Module.Core.Data;
/// <summary>
/// 企业用户审批实体
/// </summary>
public class CommonAuditInput
{
/// <summary>
/// ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 审核状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 审批备注
/// </summary>
public string AuditNote { get; set; } = "";
}
/// <summary>
/// 验证
/// </summary>
public class CommonAuditInputValidator : AbstractValidator<CommonAuditInput>
{
/// <summary>
/// 构造函数
/// </summary>
public CommonAuditInputValidator()
{
this.RuleFor(o => o.Id)
.NotEmpty().WithName("ID");
this.RuleFor(o => o.Status)
.NotEmpty().WithName("审核选项").InclusiveBetween(1, 2).WithMessage("非法状态") ;
}
}

@ -116,6 +116,7 @@ public static class SqlsugarInstall
{ {
entityInfo.SetValue(GuidHelper.GetSnowflakeId()); entityInfo.SetValue(GuidHelper.GetSnowflakeId());
} }
if (entityInfo.EntityColumnInfo.PropertyInfo.PropertyType == typeof(long)) if (entityInfo.EntityColumnInfo.PropertyInfo.PropertyType == typeof(long))
{ {
entityInfo.SetValue(SnowFlakeSingle.Instance.NextId()); entityInfo.SetValue(SnowFlakeSingle.Instance.NextId());
@ -140,11 +141,11 @@ public static class SqlsugarInstall
{ {
entityInfo.SetValue(1288018625843826688); entityInfo.SetValue(1288018625843826688);
} }
} }
if (entityInfo.PropertyName == "Deleted") if (entityInfo.PropertyName == "Deleted")
entityInfo.SetValue(false); entityInfo.SetValue(false);
} }
// 更新操作 // 更新操作
@ -152,15 +153,15 @@ public static class SqlsugarInstall
{ {
if (entityInfo.PropertyName == "UpdateTime") if (entityInfo.PropertyName == "UpdateTime")
entityInfo.SetValue(DateTime.Now); entityInfo.SetValue(DateTime.Now);
if (entityInfo.PropertyName == "UpdateBy" && user != null) if (entityInfo.PropertyName == "UpdateBy" && !user.UserId.IsNullOrEmpty())
entityInfo.SetValue(user.UserId); entityInfo.SetValue(user.UserId);
} }
}; };
dbProvider.Aop.OnError = (exp) => //执行SQL 错误事件 dbProvider.Aop.OnError = (exp) => //执行SQL 错误事件
{ {
Logger.Error(DateTime.Now.ToString() + "\r\n" + exp.Sql + "\r\n" + exp.Parametres); Logger.Error(DateTime.Now.ToString() + "\r\n" + exp.Sql + "\r\n" + exp.Parametres);
}; };
//全局过滤租户Id
dbProvider.QueryFilter.AddTableFilter<ITenantId>(m => m.TenantId == user.GetTenantId()); dbProvider.QueryFilter.AddTableFilter<ITenantId>(m => m.TenantId == user.GetTenantId());
//全局软删除过滤 //全局软删除过滤
dbProvider.QueryFilter.AddTableFilter<IDeleted>(m => m.Deleted == false); dbProvider.QueryFilter.AddTableFilter<IDeleted>(m => m.Deleted == false);

@ -64,4 +64,8 @@ public class TenantApplyInfoRes
/// 审批意见 /// 审批意见
/// </summary> /// </summary>
public string AuditNote { get; set; } public string AuditNote { get; set; }
/// <summary>
/// 审批时间
/// </summary>
public DateTime AuditTime { get; set; }
} }

@ -0,0 +1,74 @@
using DS.Module.Core;
namespace DS.WMS.Core.System.Dtos;
/// <summary>
/// 企业用户注册列表
/// </summary>
public class TenantApplyListRes
{
/// <summary>
/// 主键ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 公司名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 拼音码
/// </summary>
public string PinYinCode { get; set; }= "";
/// <summary>
/// 公司地址
/// </summary>
public string Address { get; set; }= "";
/// <summary>
/// 管理员电话
/// </summary>
public string Phone { get; set; }
/// <summary>
/// 公司电话
/// </summary>
public string Tel { get; set; }
/// <summary>
/// 邮箱
/// </summary>
public string Email { get; set; }
/// <summary>
/// 企业法人
/// </summary>
public string Chief { get; set; }
/// <summary>
/// 企业税号
/// </summary>
public string TaxNo { get; set; }
/// <summary>
/// 管理员账号
/// </summary>
public string AdminUserCode { get; set; }
/// <summary>
/// 合同开始日期
/// </summary>
public DateTime ContractBeginDate { get; set; }
/// <summary>
/// 合同结束日期
/// </summary>
public DateTime ContractEndDate { get; set; }
/// <summary>
/// 审批状态
/// </summary>
public AuditStatusEnum? AuditStatus { get; set; } = AuditStatusEnum.NoAudit;
/// <summary>
/// 审批意见
/// </summary>
public string AuditNote { get; set; }
/// <summary>
/// 审批时间
/// </summary>
public DateTime AuditTime { get; set; }
}

@ -68,6 +68,11 @@ public class SysTenantApply : BaseModel<long>
/// </summary> /// </summary>
[SugarColumn(ColumnDescription = "审批状态")] [SugarColumn(ColumnDescription = "审批状态")]
public AuditStatusEnum? AuditStatus { get; set; } = AuditStatusEnum.NoAudit; public AuditStatusEnum? AuditStatus { get; set; } = AuditStatusEnum.NoAudit;
/// <summary>
/// 审批时间
/// </summary>
public DateTime AuditTime { get; set; }
/// <summary> /// <summary>
/// 审批意见 /// 审批意见
/// </summary> /// </summary>

@ -1,4 +1,5 @@
using DS.Module.Core; using DS.Module.Core;
using DS.Module.Core.Data;
using DS.WMS.Core.System.Dtos; using DS.WMS.Core.System.Dtos;
using DS.WMS.Core.System.Entity; using DS.WMS.Core.System.Entity;
@ -25,4 +26,24 @@ public interface ITenantApplyService
/// <param name="id"></param> /// <param name="id"></param>
/// <returns></returns> /// <returns></returns>
public DataResult SubmitTenantApply(string id); public DataResult SubmitTenantApply(string id);
/// <summary>
/// 企业注册用户列表
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public DataResult<List<TenantApplyListRes>> GetListByPage(PageRequest request);
/// <summary>
/// 获取注册企业审批信息
/// </summary>
/// <returns></returns>
public DataResult<TenantApplyInfoRes> GetTenantAuditInfo(string id);
/// <summary>
/// 企业用户审批
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public DataResult AuditTenantApply(CommonAuditInput req);
} }

@ -1,9 +1,12 @@
using DS.Module.Core; using DS.Module.Core;
using DS.Module.Core.Data;
using DS.Module.Core.Extensions;
using DS.Module.UserModule; using DS.Module.UserModule;
using DS.WMS.Core.System.Dtos; using DS.WMS.Core.System.Dtos;
using DS.WMS.Core.System.Entity; using DS.WMS.Core.System.Entity;
using DS.WMS.Core.System.Interface; using DS.WMS.Core.System.Interface;
using Mapster; using Mapster;
using Masuit.Tools.Systems;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using SqlSugar; using SqlSugar;
@ -26,7 +29,101 @@ public class TenantApplyService : ITenantApplyService
user = _serviceProvider.GetRequiredService<IUser>(); user = _serviceProvider.GetRequiredService<IUser>();
} }
#region 企业用户审批
/// <summary> /// <summary>
/// 企业注册用户列表
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public DataResult<List<TenantApplyListRes>> GetListByPage(PageRequest request)
{
// var query = _commonService.GetDataRuleFilter<SysRole>();
//序列化查询条件
var whereList = db.ConfigQuery.Context.Utilities.JsonToConditionalModels(request.QueryCondition);
var data = db.Queryable<SysTenantApply>().ClearFilter<ITenantId>()
.Select<TenantApplyListRes>()
.Where(x=>x.AuditStatus!= AuditStatusEnum.NoAudit)
.Where(whereList).ToQueryPage(request.PageCondition);
return data;
}
/// <summary>
/// 获取注册企业审批信息
/// </summary>
/// <returns></returns>
public DataResult<TenantApplyInfoRes> GetTenantAuditInfo(string id)
{
var data = db.Queryable<SysTenantApply>()
.Where(a => a.Id == long.Parse(id))
.Select<TenantApplyInfoRes>()
.First();
return DataResult<TenantApplyInfoRes>.Success(data);
}
/// <summary>
/// 企业用户审批
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public DataResult AuditTenantApply(CommonAuditInput req)
{
var userId = user.UserId;
var apply = db.Queryable<SysTenantApply>().Where(x => x.Id == req.Id).First();
if (apply.IsNull())
{
return DataResult.Failed("企业用户信息不存在!");
}
if (apply.AuditStatus == AuditStatusEnum.Approve)
{
return DataResult.Failed("已审批通过!");
}
if (req.Status == 1)
{
try
{
//开启事务
db.Ado.BeginTran();
apply.AuditStatus = (AuditStatusEnum)(int)req.Status;
apply.AuditNote = req.AuditNote;
db.Updateable(apply).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();
//TODO 处理租户相关数据
// var client = company.Adapt<info_client>();;
// client.CODENAME = PinYinUtil.GetFristLetter(company.SHORTNAME);
// client.GID = clientId.ToString();
// client.STATUS = 0;
// db.Insertable(client).ExecuteCommand();
db.Ado.CommitTran();
return DataResult.Successed("审批成功!");
}
catch (Exception ex)
{
db.Ado.RollbackTran();
return DataResult.Failed("审批失败!" + ",请联系管理员!");
}
}
else
{
apply.AuditStatus = (AuditStatusEnum)(int)req.Status;
apply.AuditNote = req.AuditNote;
db.Updateable(req).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();
return DataResult.Successed("驳回成功!");
}
}
#endregion
#region 企业用户维护信息
/// <summary>
/// 获取注册企业申请信息 /// 获取注册企业申请信息
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
@ -189,4 +286,7 @@ public class TenantApplyService : ITenantApplyService
return DataResult.Successed("提交成功"); return DataResult.Successed("提交成功");
} }
#endregion
} }

@ -3,6 +3,7 @@ using DS.Module.Core.Extensions;
using DS.Module.Core.Helpers; using DS.Module.Core.Helpers;
using DS.Module.UserModule; using DS.Module.UserModule;
using DS.WMS.Core.System.Dtos; using DS.WMS.Core.System.Dtos;
using DS.WMS.Core.System.Entity;
using DS.WMS.Core.System.Interface; using DS.WMS.Core.System.Interface;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using SqlSugar; using SqlSugar;

@ -7,7 +7,7 @@
}, },
"Cors": { "Cors": {
"PolicyName": "WMSCore.API", "PolicyName": "WMSCore.API",
"Url": "http://localhost:3110,https://localhost:3110,http://localhost:3111,https://localhost:3111" "Url": "http://localhost:3110,https://localhost:3110,http://localhost:3112,https://localhost:3112"
}, },
"JwtSettings": { "JwtSettings": {
"Issuer": "vol.core.owner", "Issuer": "vol.core.owner",

@ -204,6 +204,41 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:DS.WMS.MainApi.Controllers.TenantApplyController.EditTenantApplyInfo(DS.WMS.Core.System.Dtos.TenantApplyReq)">
<summary>
编辑
</summary>
<param name="model"></param>
<returns></returns>
</member>
<member name="M:DS.WMS.MainApi.Controllers.TenantApplyController.SubmitTenantApply(System.String)">
<summary>
提交审核
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:DS.WMS.MainApi.Controllers.TenantApplyController.GetTenantApplyList(DS.Module.Core.PageRequest)">
<summary>
企业注册用户列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:DS.WMS.MainApi.Controllers.TenantApplyController.GetTenantAuditInfo(System.String)">
<summary>
获取注册企业审批信息
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:DS.WMS.MainApi.Controllers.TenantApplyController.AuditTenantApply(DS.Module.Core.Data.CommonAuditInput)">
<summary>
企业用户审批
</summary>
<param name="model"></param>
<returns></returns>
</member>
<member name="T:DS.WMS.MainApi.Controllers.UserController"> <member name="T:DS.WMS.MainApi.Controllers.UserController">
<summary> <summary>
用户模块 用户模块

@ -1,4 +1,5 @@
using DS.Module.Core; using DS.Module.Core;
using DS.Module.Core.Data;
using DS.WMS.Core.System.Dtos; using DS.WMS.Core.System.Dtos;
using DS.WMS.Core.System.Interface; using DS.WMS.Core.System.Interface;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@ -58,5 +59,45 @@ public class TenantApplyController : ApiController
var res = _invokeService.SubmitTenantApply(id); var res = _invokeService.SubmitTenantApply(id);
return res; return res;
} }
/// <summary>
/// 企业注册用户列表
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
[Route("GetTenantApplyList")]
public DataResult<List<TenantApplyListRes>> GetTenantApplyList([FromBody] PageRequest request)
{
var res = _invokeService.GetListByPage(request);
return res;
}
/// <summary>
/// 获取注册企业审批信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet]
[Route("GetTenantAuditInfo")]
public DataResult<TenantApplyInfoRes> GetTenantAuditInfo([FromQuery] string id)
{
var res = _invokeService.GetTenantAuditInfo(id);
return res;
}
/// <summary>
/// 企业用户审批
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost]
[Route("AuditTenantApply")]
public DataResult AuditTenantApply([FromBody] CommonAuditInput model)
{
var res = _invokeService.AuditTenantApply(model);
return res;
}
} }

@ -812,3 +812,24 @@
2024-01-11 10:29:24.9802 Info Validating config: TargetNames=console, ownFile-web, ConfigItems=54, FilePath=D:\Code\DS\ds8-solution\ds-wms-service\DS.WMS.MainApi\bin\Debug\net8.0\nlog.config 2024-01-11 10:29:24.9802 Info Validating config: TargetNames=console, ownFile-web, ConfigItems=54, FilePath=D:\Code\DS\ds8-solution\ds-wms-service\DS.WMS.MainApi\bin\Debug\net8.0\nlog.config
2024-01-11 10:29:25.0074 Warn Unused target detected. Add a rule for this target to the configuration. TargetName: allfile 2024-01-11 10:29:25.0074 Warn Unused target detected. Add a rule for this target to the configuration. TargetName: allfile
2024-01-11 10:29:25.0667 Info Configuration initialized. 2024-01-11 10:29:25.0667 Info Configuration initialized.
2024-01-11 14:20:48.9786 Info Registered target NLog.Targets.FileTarget(Name=allfile)
2024-01-11 14:20:49.0008 Info Registered target NLog.Targets.FileTarget(Name=ownFile-web)
2024-01-11 14:20:49.0145 Info Registered target NLog.Targets.ColoredConsoleTarget(Name=console)
2024-01-11 14:20:49.0305 Info NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c. File version: 5.2.7.2287. Product version: 5.2.7+a1ef7cd83b5a6a172142a6850f0ced4e759a4b3b. GlobalAssemblyCache: False
2024-01-11 14:20:49.0488 Info Validating config: TargetNames=console, ownFile-web, ConfigItems=54, FilePath=D:\Code\DS\ds8-solution\ds-wms-service\DS.WMS.MainApi\bin\Debug\net8.0\nlog.config
2024-01-11 14:20:49.0568 Warn Unused target detected. Add a rule for this target to the configuration. TargetName: allfile
2024-01-11 14:20:49.0781 Info Configuration initialized.
2024-01-11 15:40:28.5248 Info Registered target NLog.Targets.FileTarget(Name=allfile)
2024-01-11 15:40:28.5422 Info Registered target NLog.Targets.FileTarget(Name=ownFile-web)
2024-01-11 15:40:28.5572 Info Registered target NLog.Targets.ColoredConsoleTarget(Name=console)
2024-01-11 15:40:28.5745 Info NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c. File version: 5.2.7.2287. Product version: 5.2.7+a1ef7cd83b5a6a172142a6850f0ced4e759a4b3b. GlobalAssemblyCache: False
2024-01-11 15:40:28.5956 Info Validating config: TargetNames=console, ownFile-web, ConfigItems=54, FilePath=D:\Code\DS\ds8-solution\ds-wms-service\DS.WMS.MainApi\bin\Debug\net8.0\nlog.config
2024-01-11 15:40:28.6077 Warn Unused target detected. Add a rule for this target to the configuration. TargetName: allfile
2024-01-11 15:40:28.6484 Info Configuration initialized.
2024-01-11 16:38:23.9286 Info Registered target NLog.Targets.FileTarget(Name=allfile)
2024-01-11 16:38:23.9434 Info Registered target NLog.Targets.FileTarget(Name=ownFile-web)
2024-01-11 16:38:23.9566 Info Registered target NLog.Targets.ColoredConsoleTarget(Name=console)
2024-01-11 16:38:23.9566 Info NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c. File version: 5.2.7.2287. Product version: 5.2.7+a1ef7cd83b5a6a172142a6850f0ced4e759a4b3b. GlobalAssemblyCache: False
2024-01-11 16:38:23.9900 Info Validating config: TargetNames=console, ownFile-web, ConfigItems=54, FilePath=D:\Code\DS\ds8-solution\ds-wms-service\DS.WMS.MainApi\bin\Debug\net8.0\nlog.config
2024-01-11 16:38:23.9900 Warn Unused target detected. Add a rule for this target to the configuration. TargetName: allfile
2024-01-11 16:38:24.0184 Info Configuration initialized.

@ -84,19 +84,13 @@
await setProps({ submitButtonOptions: { loading: true } }) await setProps({ submitButtonOptions: { loading: true } })
var main = getFieldsValue() var main = getFieldsValue()
var files = getFileFieldsValue() var files = getFileFieldsValue()
// console.log(main, files)
console.log(main, files) const postData = Object.assign({}, main, {
const postData = reactive({
id: main.id,
name: main.name,
address: main.address,
phone: main.phone,
chief: main.chief,
email: main.email,
cardfiles: files.cardfiles, cardfiles: files.cardfiles,
licensefiles: files.licensefiles, licensefiles: files.licensefiles,
}) })
console.log(postData)
await editInfo(postData).then((res) => { await editInfo(postData).then((res) => {
if (res.succeeded) { if (res.succeeded) {
notification.success({ message: res.message, duration: 3 }) notification.success({ message: res.message, duration: 3 })

Loading…
Cancel
Save