fix(web-antdv-next): sync remaining upstream fixes

pull/355/head
XuZhiqiang 2026-06-04 16:22:52 +08:00
parent f6a8c6e652
commit 03f167b7d0
96 changed files with 294 additions and 190 deletions

View File

@ -13,6 +13,7 @@ export namespace MemberUserApi {
loginIp: string; loginIp: string;
mark: string; mark: string;
mobile: string; mobile: string;
email?: string;
name?: string; name?: string;
nickname?: string; nickname?: string;
registerIp: string; registerIp: string;

View File

@ -105,9 +105,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
/** 解绑账号 */ /** 解绑账号 */
function onUnbind(row: SystemSocialUserApi.SocialUser) { function onUnbind(row: SystemSocialUserApi.SocialUser) {
confirm({ confirm(`确定解绑[${getDictLabel(DICT_TYPE.SYSTEM_SOCIAL_TYPE, row.type)}]平台的[${row.openid}]账号吗?`).then(async () => {
content: `确定解绑[${getDictLabel(DICT_TYPE.SYSTEM_SOCIAL_TYPE, row.type)}]平台的[${row.openid}]账号吗?`,
}).then(async () => {
await socialUnbind({ type: row.type, openid: row.openid }); await socialUnbind({ type: row.type, openid: row.openid });
// //
message.success($t('ui.actionMessage.operationSuccess')); message.success($t('ui.actionMessage.operationSuccess'));

View File

@ -17,7 +17,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'systemMessage', fieldName: 'systemMessage',
label: '角色设定', label: '角色设定',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
rows: 4, rows: 4,
placeholder: '请输入角色设定', placeholder: '请输入角色设定',
@ -41,6 +41,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '温度参数', label: '温度参数',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入温度参数', placeholder: '请输入温度参数',
precision: 2, precision: 2,
min: 0, min: 0,
@ -53,6 +54,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '回复数 Token 数', label: '回复数 Token 数',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入回复数 Token 数', placeholder: '请输入回复数 Token 数',
min: 0, min: 0,
max: 8192, max: 8192,
@ -64,6 +66,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '上下文数量', label: '上下文数量',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入上下文数量', placeholder: '请输入上下文数量',
min: 0, min: 0,
max: 20, max: 20,

View File

@ -39,9 +39,7 @@ async function handleUpdatePublicStatusChange(
): Promise<boolean | undefined> { ): Promise<boolean | undefined> {
const text = newStatus ? '公开' : '私有'; const text = newStatus ? '公开' : '私有';
try { try {
await confirm({ await confirm(`确认要将该图片切换为【${text}】吗?`);
content: `确认要将该图片切换为【${text}】吗?`,
});
} catch { } catch {
return false; return false;
} }

View File

@ -28,7 +28,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'description', fieldName: 'description',
label: '知识库描述', label: '知识库描述',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
rows: 3, rows: 3,
placeholder: '请输入知识库描述', placeholder: '请输入知识库描述',
@ -52,6 +52,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '检索 topK', label: '检索 topK',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入检索 topK', placeholder: '请输入检索 topK',
min: 0, min: 0,
max: 10, max: 10,
@ -63,6 +64,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '检索相似度阈值', label: '检索相似度阈值',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入检索相似度阈值', placeholder: '请输入检索相似度阈值',
min: 0, min: 0,
max: 1, max: 1,

View File

@ -77,9 +77,7 @@ async function handleStatusChange(
row: AiKnowledgeDocumentApi.KnowledgeDocument, row: AiKnowledgeDocumentApi.KnowledgeDocument,
): Promise<boolean | undefined> { ): Promise<boolean | undefined> {
try { try {
await confirm({ await confirm(`你要将${row.name}的状态切换为【${getDictLabel(DICT_TYPE.COMMON_STATUS, newStatus)}】吗?`);
content: `你要将${row.name}的状态切换为【${getDictLabel(DICT_TYPE.COMMON_STATUS, newStatus)}】吗?`,
});
} catch { } catch {
return false; return false;
} }

View File

@ -31,7 +31,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'description', fieldName: 'description',
label: '知识库描述', label: '知识库描述',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
rows: 3, rows: 3,
placeholder: '请输入知识库描述', placeholder: '请输入知识库描述',
@ -55,6 +55,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '检索 topK', label: '检索 topK',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入检索 topK', placeholder: '请输入检索 topK',
min: 0, min: 0,
max: 10, max: 10,
@ -66,6 +67,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '检索相似度阈值', label: '检索相似度阈值',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入检索相似度阈值', placeholder: '请输入检索相似度阈值',
min: 0, min: 0,
max: 1, max: 1,

View File

@ -65,9 +65,7 @@ async function handleStatusChange(
row: AiKnowledgeSegmentApi.KnowledgeSegment, row: AiKnowledgeSegmentApi.KnowledgeSegment,
): Promise<boolean | undefined> { ): Promise<boolean | undefined> {
try { try {
await confirm({ await confirm(`你要将片段 ${row.id} 的状态切换为【${getDictLabel(DICT_TYPE.COMMON_STATUS, newStatus)}】吗?`);
content: `你要将片段 ${row.id} 的状态切换为【${getDictLabel(DICT_TYPE.COMMON_STATUS, newStatus)}】吗?`,
});
} catch { } catch {
return false; return false;
} }

View File

@ -77,7 +77,7 @@ export function useFormSchema(): VbenFormSchema[] {
}, },
}, },
{ {
component: 'TextArea', component: 'Textarea',
fieldName: 'description', fieldName: 'description',
label: '角色描述', label: '角色描述',
componentProps: { componentProps: {
@ -88,7 +88,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'systemMessage', fieldName: 'systemMessage',
label: '角色设定', label: '角色设定',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入角色设定', placeholder: '请输入角色设定',
}, },
@ -154,6 +154,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '角色排序', label: '角色排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入角色排序', placeholder: '请输入角色排序',
}, },
dependencies: { dependencies: {

View File

@ -84,6 +84,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '模型排序', label: '模型排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入模型排序', placeholder: '请输入模型排序',
}, },
rules: 'required', rules: 'required',
@ -104,6 +105,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '温度参数', label: '温度参数',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入温度参数', placeholder: '请输入温度参数',
min: 0, min: 0,
max: 2, max: 2,
@ -121,6 +123,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '回复数 Token 数', label: '回复数 Token 数',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
max: 8192, max: 8192,
placeholder: '请输入回复数 Token 数', placeholder: '请输入回复数 Token 数',
@ -138,6 +141,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '上下文数量', label: '上下文数量',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
max: 20, max: 20,
placeholder: '请输入上下文数量', placeholder: '请输入上下文数量',

View File

@ -39,9 +39,7 @@ async function handleUpdatePublicStatusChange(
): Promise<boolean | undefined> { ): Promise<boolean | undefined> {
const text = newStatus ? '公开' : '私有'; const text = newStatus ? '公开' : '私有';
try { try {
await confirm({ await confirm(`确认要将该音乐切换为【${text}】吗?`);
content: `确认要将该音乐切换为【${text}】吗?`,
});
} catch { } catch {
return false; return false;
} }

View File

@ -39,7 +39,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'description', fieldName: 'description',
label: '分类描述', label: '分类描述',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入分类描述', placeholder: '请输入分类描述',
}, },
@ -60,6 +60,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '分类排序', label: '分类排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入分类排序', placeholder: '请输入分类排序',
}, },

View File

@ -5,7 +5,7 @@ import { BpmProcessInstanceStatus, DICT_TYPE } from '@vben/constants';
import { UndoOutlined, ZoomInOutlined, ZoomOutOutlined } from '@vben/icons'; import { UndoOutlined, ZoomInOutlined, ZoomOutOutlined } from '@vben/icons';
import { formatDate, formatPast2 } from '@vben/utils'; import { formatDate, formatPast2 } from '@vben/utils';
import { Button, Modal, Row, Space, Table } from 'antdv-next'; import { Button, Modal, Row, Table } from 'antdv-next';
import BpmnViewer from 'bpmn-js/lib/Viewer'; import BpmnViewer from 'bpmn-js/lib/Viewer';
import MoveCanvasModule from 'diagram-js/lib/navigation/movecanvas'; import MoveCanvasModule from 'diagram-js/lib/navigation/movecanvas';
@ -13,6 +13,8 @@ import { DictTag } from '#/components/dict-tag';
import '../theme/index.scss'; import '../theme/index.scss';
const ButtonGroup = Button.Group;
const props = defineProps({ const props = defineProps({
xml: { xml: {
type: String, type: String,
@ -437,7 +439,7 @@ onBeforeUnmount(() => {
<!-- Zoom放大缩小 --> <!-- Zoom放大缩小 -->
<div style="position: absolute; top: 0; left: 0; width: 100%"> <div style="position: absolute; top: 0; left: 0; width: 100%">
<Row justify="end"> <Row justify="end">
<Space key="scale-control"> <ButtonGroup key="scale-control">
<Button <Button
:disabled="defaultZoom <= 0.3" :disabled="defaultZoom <= 0.3"
:icon="h(ZoomOutOutlined)" :icon="h(ZoomOutOutlined)"
@ -452,7 +454,7 @@ onBeforeUnmount(() => {
@click="processZoomIn()" @click="processZoomIn()"
/> />
<Button :icon="h(UndoOutlined)" @click="processReZoom()" /> <Button :icon="h(UndoOutlined)" @click="processReZoom()" />
</Space> </ButtonGroup>
</Row> </Row>
</div> </div>
</div> </div>

View File

@ -45,6 +45,7 @@ const [Grid] = useVbenVxeGrid({
return await getCluePage({ return await getCluePage({
pageNo: page.currentPage, pageNo: page.currentPage,
pageSize: page.pageSize, pageSize: page.pageSize,
sceneType: 1,
transformStatus: false, transformStatus: false,
...formValues, ...formValues,
}); });

View File

@ -75,9 +75,7 @@ async function handleDeleteContactBusinessList() {
return; return;
} }
try { try {
await confirm({ await confirm(`确定要将${checkedRows.value.map((item) => item.name).join(',')}解除关联吗?`);
content: `确定要将${checkedRows.value.map((item) => item.name).join(',')}解除关联吗?`,
});
} catch { } catch {
return false; return false;
} }

View File

@ -118,6 +118,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '产品总金额', label: '产品总金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
disabled: true, disabled: true,
@ -130,6 +131,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '整单折扣(%', label: '整单折扣(%',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
placeholder: '请输入整单折扣', placeholder: '请输入整单折扣',
@ -141,6 +143,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '折扣后金额', label: '折扣后金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
disabled: true, disabled: true,

View File

@ -8,7 +8,7 @@ import { useRoute, useRouter } from 'vue-router';
import { confirm, Page, useVbenModal } from '@vben/common-ui'; import { confirm, Page, useVbenModal } from '@vben/common-ui';
import { useTabs } from '@vben/hooks'; import { useTabs } from '@vben/hooks';
import { Card, message, TabPane, Tabs } from 'antdv-next'; import { Card, message, Tabs } from 'antdv-next';
import { getClue, transformClue } from '#/api/crm/clue'; import { getClue, transformClue } from '#/api/crm/clue';
import { getOperateLogPage } from '#/api/crm/operateLog'; import { getOperateLogPage } from '#/api/crm/operateLog';
@ -84,9 +84,7 @@ function handleTransfer() {
/** 转化为客户 */ /** 转化为客户 */
async function handleTransform(): Promise<boolean | undefined> { async function handleTransform(): Promise<boolean | undefined> {
try { try {
await confirm({ await confirm('确定将该线索转化为客户吗?');
content: '确定将该线索转化为客户吗?',
});
} catch { } catch {
return false; return false;
} }
@ -146,13 +144,13 @@ onMounted(() => {
</Card> </Card>
<Card class="mt-4 min-h-[60%]"> <Card class="mt-4 min-h-[60%]">
<Tabs :tab-bar-gutter="16"> <Tabs :tab-bar-gutter="16">
<TabPane tab="跟进记录" key="1" :force-render="true"> <Tabs.TabPane tab="跟进记录" key="1" :force-render="true">
<FollowUp :biz-id="clueId" :biz-type="BizTypeEnum.CRM_CLUE" /> <FollowUp :biz-id="clueId" :biz-type="BizTypeEnum.CRM_CLUE" />
</TabPane> </Tabs.TabPane>
<TabPane tab="基本信息" key="2" :force-render="true"> <Tabs.TabPane tab="基本信息" key="2" :force-render="true">
<Info :clue="clue" /> <Info :clue="clue" />
</TabPane> </Tabs.TabPane>
<TabPane tab="团队成员" key="3" :force-render="true"> <Tabs.TabPane tab="团队成员" key="3" :force-render="true">
<PermissionList <PermissionList
ref="permissionListRef" ref="permissionListRef"
:biz-id="clueId" :biz-id="clueId"
@ -160,10 +158,10 @@ onMounted(() => {
:show-action="true" :show-action="true"
@quit-team="handleBack" @quit-team="handleBack"
/> />
</TabPane> </Tabs.TabPane>
<TabPane tab="操作日志" key="4" :force-render="true"> <Tabs.TabPane tab="操作日志" key="4" :force-render="true">
<OperateLog :log-list="logList" /> <OperateLog :log-list="logList" />
</TabPane> </Tabs.TabPane>
</Tabs> </Tabs>
</Card> </Card>
</Page> </Page>

View File

@ -72,9 +72,7 @@ async function handleDeleteContactBusinessList() {
return; return;
} }
try { try {
await confirm({ await confirm(`确定要将${checkedRows.value.map((item) => item.name).join(',')}解除关联吗?`);
content: `确定要将${checkedRows.value.map((item) => item.name).join(',')}解除关联吗?`,
});
} catch { } catch {
return false; return false;
} }

View File

@ -17,6 +17,7 @@ export const schema: VbenFormSchema[] = [
component: 'InputNumber', component: 'InputNumber',
fieldName: 'notifyDays', fieldName: 'notifyDays',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 0, precision: 0,
}, },

View File

@ -181,7 +181,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
rows: 4, rows: 4,
@ -198,6 +198,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '产品总金额', label: '产品总金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
placeholder: '请输入产品总金额', placeholder: '请输入产品总金额',
@ -209,6 +210,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '整单折扣(%', label: '整单折扣(%',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
placeholder: '请输入整单折扣', placeholder: '请输入整单折扣',
@ -220,6 +222,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '折扣后金额', label: '折扣后金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
disabled: true, disabled: true,

View File

@ -8,7 +8,7 @@ import { useRoute, useRouter } from 'vue-router';
import { confirm, Page, useVbenModal } from '@vben/common-ui'; import { confirm, Page, useVbenModal } from '@vben/common-ui';
import { useTabs } from '@vben/hooks'; import { useTabs } from '@vben/hooks';
import { Card, message, TabPane, Tabs } from 'antdv-next'; import { Card, message, Tabs } from 'antdv-next';
import { import {
getCustomer, getCustomer,
@ -102,9 +102,7 @@ function handleTransfer() {
/** 锁定客户 */ /** 锁定客户 */
async function handleLock(lockStatus: boolean): Promise<boolean | undefined> { async function handleLock(lockStatus: boolean): Promise<boolean | undefined> {
try { try {
await confirm({ await confirm(`确定锁定客户【${customer.value.name}】吗?`);
content: `确定锁定客户【${customer.value.name}】吗?`,
});
} catch { } catch {
return false; return false;
} }
@ -118,9 +116,7 @@ async function handleLock(lockStatus: boolean): Promise<boolean | undefined> {
/** 领取客户 */ /** 领取客户 */
async function handleReceive(): Promise<boolean | undefined> { async function handleReceive(): Promise<boolean | undefined> {
try { try {
await confirm({ await confirm(`确定领取客户【${customer.value.name}】吗?`);
content: `确定领取客户【${customer.value.name}】吗?`,
});
} catch { } catch {
return false; return false;
} }
@ -139,9 +135,7 @@ function handleDistributeForm() {
/** 客户放入公海 */ /** 客户放入公海 */
async function handlePutPool(): Promise<boolean | undefined> { async function handlePutPool(): Promise<boolean | undefined> {
try { try {
await confirm({ await confirm(`确定将客户【${customer.value.name}】放入公海吗?`);
content: `确定将客户【${customer.value.name}】放入公海吗?`,
});
} catch { } catch {
return false; return false;
} }
@ -156,9 +150,7 @@ async function handlePutPool(): Promise<boolean | undefined> {
async function handleUpdateDealStatus(): Promise<boolean | undefined> { async function handleUpdateDealStatus(): Promise<boolean | undefined> {
const dealStatus = !customer.value.dealStatus; const dealStatus = !customer.value.dealStatus;
try { try {
await confirm({ await confirm(`确定更新成交状态为【${dealStatus ? '已成交' : '未成交'}】吗?`);
content: `确定更新成交状态为【${dealStatus ? '已成交' : '未成交'}】吗?`,
});
} catch { } catch {
return false; return false;
} }
@ -250,20 +242,20 @@ onMounted(() => {
</Card> </Card>
<Card class="mt-4 min-h-[60%]"> <Card class="mt-4 min-h-[60%]">
<Tabs> <Tabs>
<TabPane tab="跟进记录" key="1" :force-render="true"> <Tabs.TabPane tab="跟进记录" key="1" :force-render="true">
<FollowUp :biz-id="customerId" :biz-type="BizTypeEnum.CRM_CUSTOMER" /> <FollowUp :biz-id="customerId" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
</TabPane> </Tabs.TabPane>
<TabPane tab="基本信息" key="2" :force-render="true"> <Tabs.TabPane tab="基本信息" key="2" :force-render="true">
<Info :customer="customer" /> <Info :customer="customer" />
</TabPane> </Tabs.TabPane>
<TabPane tab="联系人" key="3" :force-render="true"> <Tabs.TabPane tab="联系人" key="3" :force-render="true">
<ContactDetailsList <ContactDetailsList
:biz-id="customerId" :biz-id="customerId"
:biz-type="BizTypeEnum.CRM_CUSTOMER" :biz-type="BizTypeEnum.CRM_CUSTOMER"
:customer-id="customerId" :customer-id="customerId"
/> />
</TabPane> </Tabs.TabPane>
<TabPane tab="团队成员" key="4" :force-render="true"> <Tabs.TabPane tab="团队成员" key="4" :force-render="true">
<PermissionList <PermissionList
ref="permissionListRef" ref="permissionListRef"
:biz-id="customerId" :biz-id="customerId"
@ -271,27 +263,27 @@ onMounted(() => {
:show-action="true" :show-action="true"
@quit-team="handleBack" @quit-team="handleBack"
/> />
</TabPane> </Tabs.TabPane>
<TabPane tab="商机" key="5" :force-render="true"> <Tabs.TabPane tab="商机" key="5" :force-render="true">
<BusinessDetailsList <BusinessDetailsList
:biz-id="customerId" :biz-id="customerId"
:biz-type="BizTypeEnum.CRM_CUSTOMER" :biz-type="BizTypeEnum.CRM_CUSTOMER"
:customer-id="customerId" :customer-id="customerId"
/> />
</TabPane> </Tabs.TabPane>
<TabPane tab="合同" key="6" :force-render="true"> <Tabs.TabPane tab="合同" key="6" :force-render="true">
<ContractDetailsList <ContractDetailsList
:biz-id="customerId" :biz-id="customerId"
:biz-type="BizTypeEnum.CRM_CUSTOMER" :biz-type="BizTypeEnum.CRM_CUSTOMER"
/> />
</TabPane> </Tabs.TabPane>
<TabPane tab="回款" key="7" :force-render="true"> <Tabs.TabPane tab="回款" key="7" :force-render="true">
<ReceivablePlanDetailsList :customer-id="customerId" /> <ReceivablePlanDetailsList :customer-id="customerId" />
<ReceivableDetailsList :customer-id="customerId" /> <ReceivableDetailsList :customer-id="customerId" />
</TabPane> </Tabs.TabPane>
<TabPane tab="操作日志" key="8" :force-render="true"> <Tabs.TabPane tab="操作日志" key="8" :force-render="true">
<OperateLog :log-list="logList" /> <OperateLog :log-list="logList" />
</TabPane> </Tabs.TabPane>
</Tabs> </Tabs>
</Card> </Card>
</Page> </Page>

View File

@ -65,6 +65,7 @@ export function useFormSchema(confType: LimitConfType): VbenFormSchema[] {
: '锁定客户数上限', : '锁定客户数上限',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: `请输入${ placeholder: `请输入${
LimitConfType.CUSTOMER_QUANTITY_LIMIT === confType LimitConfType.CUSTOMER_QUANTITY_LIMIT === confType
? '拥有客户数上限' ? '拥有客户数上限'

View File

@ -16,6 +16,7 @@ export const schema: VbenFormSchema[] = [
component: 'InputNumber', component: 'InputNumber',
fieldName: 'contactExpireDays', fieldName: 'contactExpireDays',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 0, precision: 0,
}, },
@ -35,6 +36,7 @@ export const schema: VbenFormSchema[] = [
addonAfter: () => '天未成交', addonAfter: () => '天未成交',
}), }),
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 0, precision: 0,
}, },
@ -63,6 +65,7 @@ export const schema: VbenFormSchema[] = [
component: 'InputNumber', component: 'InputNumber',
fieldName: 'notifyDays', fieldName: 'notifyDays',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 0, precision: 0,
}, },

View File

@ -100,9 +100,7 @@ async function handleDelete() {
return; return;
} }
try { try {
await confirm({ await confirm(`你要将${checkedRows.value.map((item) => item.nickname).join(',')}移出团队吗?`);
content: `你要将${checkedRows.value.map((item) => item.nickname).join(',')}移出团队吗?`,
});
} catch { } catch {
return false; return false;
} }

View File

@ -100,7 +100,6 @@ const [Modal, modalApi] = useVbenModal({
}, },
async onOpenChange(isOpen: boolean) { async onOpenChange(isOpen: boolean) {
if (!isOpen) { if (!isOpen) {
await formApi.resetForm();
return; return;
} }
// //

View File

@ -92,6 +92,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '价格(元)', label: '价格(元)',
rules: 'required', rules: 'required',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
step: 0.1, step: 0.1,
@ -99,7 +100,7 @@ export function useFormSchema(): VbenFormSchema[] {
}, },
}, },
{ {
component: 'TextArea', component: 'Textarea',
fieldName: 'description', fieldName: 'description',
label: '产品描述', label: '产品描述',
componentProps: { componentProps: {

View File

@ -141,6 +141,7 @@ export function useFormSchema(): VbenFormSchema[] {
component: 'InputNumber', component: 'InputNumber',
rules: 'required', rules: 'required',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入回款金额', placeholder: '请输入回款金额',
min: 0, min: 0,
precision: 2, precision: 2,
@ -161,7 +162,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
rows: 4, rows: 4,

View File

@ -96,6 +96,7 @@ export function useFormSchema(): VbenFormSchema[] {
component: 'InputNumber', component: 'InputNumber',
rules: 'required', rules: 'required',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入计划回款金额', placeholder: '请输入计划回款金额',
min: 0, min: 0,
precision: 2, precision: 2,
@ -119,6 +120,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '提前几天提醒', label: '提前几天提醒',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入提前几天提醒', placeholder: '请输入提前几天提醒',
min: 0, min: 0,
}, },
@ -135,7 +137,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
rows: 4, rows: 4,

View File

@ -44,6 +44,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '排序', label: '排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入排序', placeholder: '请输入排序',
precision: 0, precision: 0,
}, },
@ -81,7 +82,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
rows: 3, rows: 3,

View File

@ -67,9 +67,7 @@ async function handleDefaultStatusChange(
): Promise<boolean | undefined> { ): Promise<boolean | undefined> {
const text = newStatus ? '设置' : '取消'; const text = newStatus ? '设置' : '取消';
try { try {
await confirm({ await confirm(`确认要${text}"${row.name}"默认吗?`);
content: `确认要${text}"${row.name}"默认吗?`,
});
} catch { } catch {
return false; return false;
} }

View File

@ -77,7 +77,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
autoSize: { minRows: 1, maxRows: 1 }, autoSize: { minRows: 1, maxRows: 1 },
@ -132,6 +132,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '合计付款', label: '合计付款',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '合计付款', placeholder: '合计付款',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,
@ -143,6 +144,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '优惠金额', label: '优惠金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
disabled: formType === 'detail', disabled: formType === 'detail',
placeholder: '请输入优惠金额', placeholder: '请输入优惠金额',
precision: 2, precision: 2,
@ -154,6 +156,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '实际付款', label: '实际付款',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '实际付款', placeholder: '实际付款',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,

View File

@ -77,7 +77,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
autoSize: { minRows: 1, maxRows: 1 }, autoSize: { minRows: 1, maxRows: 1 },
@ -132,6 +132,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '合计收款', label: '合计收款',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '合计收款', placeholder: '合计收款',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,
@ -143,6 +144,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '优惠金额', label: '优惠金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
disabled: formType === 'detail', disabled: formType === 'detail',
placeholder: '请输入优惠金额', placeholder: '请输入优惠金额',
precision: 2, precision: 2,
@ -154,6 +156,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '实际收款', label: '实际收款',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '实际收款', placeholder: '实际收款',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,

View File

@ -65,6 +65,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '显示顺序', label: '显示顺序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入显示顺序', placeholder: '请输入显示顺序',
}, },

View File

@ -92,6 +92,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '保质期天数', label: '保质期天数',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入保质期天数', placeholder: '请输入保质期天数',
}, },
}, },
@ -100,6 +101,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '重量kg', label: '重量kg',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入重量kg', placeholder: '请输入重量kg',
}, },
}, },
@ -108,6 +110,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '采购价格', label: '采购价格',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入采购价格,单位:元', placeholder: '请输入采购价格,单位:元',
precision: 2, precision: 2,
min: 0, min: 0,
@ -119,6 +122,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '销售价格', label: '销售价格',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入销售价格,单位:元', placeholder: '请输入销售价格,单位:元',
precision: 2, precision: 2,
min: 0, min: 0,
@ -130,6 +134,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '最低价格', label: '最低价格',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入最低价格,单位:元', placeholder: '请输入最低价格,单位:元',
precision: 2, precision: 2,
min: 0, min: 0,
@ -139,7 +144,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
}, },

View File

@ -78,7 +78,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
autoSize: { minRows: 1, maxRows: 1 }, autoSize: { minRows: 1, maxRows: 1 },
@ -120,6 +120,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '优惠率(%)', label: '优惠率(%)',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入优惠率', placeholder: '请输入优惠率',
min: 0, min: 0,
max: 100, max: 100,
@ -132,6 +133,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '付款优惠', label: '付款优惠',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '付款优惠', placeholder: '付款优惠',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,
@ -143,6 +145,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '优惠后金额', label: '优惠后金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '优惠后金额', placeholder: '优惠后金额',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,
@ -163,6 +166,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '其他费用', label: '其他费用',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
disabled: formType === 'detail', disabled: formType === 'detail',
placeholder: '请输入其他费用', placeholder: '请输入其他费用',
precision: 2, precision: 2,
@ -187,6 +191,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '应付金额', label: '应付金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
precision: 2, precision: 2,
min: 0, min: 0,
disabled: true, disabled: true,

View File

@ -64,7 +64,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
autoSize: { minRows: 1, maxRows: 1 }, autoSize: { minRows: 1, maxRows: 1 },
@ -106,6 +106,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '优惠率(%)', label: '优惠率(%)',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入优惠率', placeholder: '请输入优惠率',
min: 0, min: 0,
max: 100, max: 100,
@ -118,6 +119,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '付款优惠', label: '付款优惠',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '付款优惠', placeholder: '付款优惠',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,
@ -129,6 +131,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '优惠后金额', label: '优惠后金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '优惠后金额', placeholder: '优惠后金额',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,
@ -151,6 +154,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
{ {
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入支付订金', placeholder: '请输入支付订金',
precision: 2, precision: 2,
min: 0, min: 0,

View File

@ -78,7 +78,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
autoSize: { minRows: 1, maxRows: 1 }, autoSize: { minRows: 1, maxRows: 1 },
@ -120,6 +120,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '优惠率(%)', label: '优惠率(%)',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入优惠率', placeholder: '请输入优惠率',
min: 0, min: 0,
max: 100, max: 100,
@ -132,6 +133,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '退款优惠', label: '退款优惠',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,
disabled: true, disabled: true,
@ -142,6 +144,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '优惠后金额', label: '优惠后金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '优惠后金额', placeholder: '优惠后金额',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,
@ -162,6 +165,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '其他费用', label: '其他费用',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
disabled: formType === 'detail', disabled: formType === 'detail',
placeholder: '请输入其他费用', placeholder: '请输入其他费用',
precision: 2, precision: 2,
@ -186,6 +190,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '应退金额', label: '应退金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
precision: 2, precision: 2,
min: 0, min: 0,
disabled: true, disabled: true,

View File

@ -82,6 +82,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '排序', label: '排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入排序', placeholder: '请输入排序',
}, },
rules: 'required', rules: 'required',
@ -99,6 +100,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '税率(%)', label: '税率(%)',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入税率', placeholder: '请输入税率',
min: 0, min: 0,
precision: 2, precision: 2,
@ -131,7 +133,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
rows: 3, rows: 3,

View File

@ -82,6 +82,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '排序', label: '排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入排序', placeholder: '请输入排序',
precision: 0, precision: 0,
}, },
@ -100,6 +101,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '税率(%)', label: '税率(%)',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入税率', placeholder: '请输入税率',
precision: 2, precision: 2,
}, },
@ -132,7 +134,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
rows: 3, rows: 3,

View File

@ -77,7 +77,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
autoSize: { minRows: 1, maxRows: 1 }, autoSize: { minRows: 1, maxRows: 1 },
@ -119,6 +119,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '优惠率(%)', label: '优惠率(%)',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入优惠率', placeholder: '请输入优惠率',
min: 0, min: 0,
max: 100, max: 100,
@ -131,6 +132,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '付款优惠', label: '付款优惠',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '收款优惠', placeholder: '收款优惠',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,
@ -142,6 +144,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '优惠后金额', label: '优惠后金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '优惠后金额', placeholder: '优惠后金额',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,
@ -164,6 +167,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
{ {
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入收取订金', placeholder: '请输入收取订金',
precision: 2, precision: 2,
min: 0, min: 0,

View File

@ -95,7 +95,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
autoSize: { minRows: 1, maxRows: 1 }, autoSize: { minRows: 1, maxRows: 1 },
@ -137,6 +137,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '优惠率(%)', label: '优惠率(%)',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入优惠率', placeholder: '请输入优惠率',
min: 0, min: 0,
max: 100, max: 100,
@ -149,6 +150,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '收款优惠', label: '收款优惠',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '付款优惠', placeholder: '付款优惠',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,
@ -160,6 +162,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '优惠后金额', label: '优惠后金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '优惠后金额', placeholder: '优惠后金额',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,
@ -180,6 +183,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '其他费用', label: '其他费用',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
disabled: formType === 'detail', disabled: formType === 'detail',
placeholder: '请输入其他费用', placeholder: '请输入其他费用',
precision: 2, precision: 2,
@ -207,6 +211,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '应收金额', label: '应收金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
precision: 2, precision: 2,
min: 0, min: 0,
disabled: true, disabled: true,

View File

@ -91,7 +91,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
autoSize: { minRows: 1, maxRows: 1 }, autoSize: { minRows: 1, maxRows: 1 },
@ -133,6 +133,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '优惠率(%)', label: '优惠率(%)',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入优惠率', placeholder: '请输入优惠率',
min: 0, min: 0,
max: 100, max: 100,
@ -145,6 +146,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '退款优惠', label: '退款优惠',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,
disabled: true, disabled: true,
@ -155,6 +157,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '优惠后金额', label: '优惠后金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '优惠后金额', placeholder: '优惠后金额',
precision: 2, precision: 2,
formatter: erpPriceInputFormatter, formatter: erpPriceInputFormatter,
@ -175,6 +178,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '其他费用', label: '其他费用',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
disabled: formType === 'detail', disabled: formType === 'detail',
placeholder: '请输入其他费用', placeholder: '请输入其他费用',
precision: 2, precision: 2,
@ -200,6 +204,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
label: '应收金额', label: '应收金额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
precision: 2, precision: 2,
min: 0, min: 0,
disabled: true, disabled: true,

View File

@ -47,7 +47,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
autoSize: { minRows: 1, maxRows: 1 }, autoSize: { minRows: 1, maxRows: 1 },

View File

@ -62,7 +62,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
autoSize: { minRows: 1, maxRows: 1 }, autoSize: { minRows: 1, maxRows: 1 },

View File

@ -47,7 +47,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
autoSize: { minRows: 1, maxRows: 1 }, autoSize: { minRows: 1, maxRows: 1 },

View File

@ -64,7 +64,7 @@ export function useFormSchema(formType: FormType): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
autoSize: { minRows: 1, maxRows: 1 }, autoSize: { minRows: 1, maxRows: 1 },

View File

@ -51,6 +51,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '仓储费(元)', label: '仓储费(元)',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入仓储费,单位:元/天/KG', placeholder: '请输入仓储费,单位:元/天/KG',
min: 0, min: 0,
precision: 2, precision: 2,
@ -61,6 +62,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '搬运费(元)', label: '搬运费(元)',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入搬运费,单位:元', placeholder: '请输入搬运费,单位:元',
min: 0, min: 0,
precision: 2, precision: 2,
@ -79,6 +81,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '排序', label: '排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入排序', placeholder: '请输入排序',
precision: 0, precision: 0,
}, },
@ -87,7 +90,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
}, },

View File

@ -65,9 +65,7 @@ async function handleDefaultStatusChange(
): Promise<boolean | undefined> { ): Promise<boolean | undefined> {
const text = newStatus ? '设置' : '取消'; const text = newStatus ? '设置' : '取消';
try { try {
await confirm({ await confirm(`确认要${text}"${row.name}"默认吗?`);
content: `确认要${text}"${row.name}"默认吗?`,
});
} catch { } catch {
return false; return false;
} }

View File

@ -42,9 +42,7 @@ function handleDetail(row: InfraApiErrorLogApi.ApiErrorLog) {
/** 处理已处理 / 已忽略的操作 */ /** 处理已处理 / 已忽略的操作 */
async function handleProcess(id: number, processStatus: number) { async function handleProcess(id: number, processStatus: number) {
await confirm({ await confirm(`确认标记为${InfraApiErrorLogProcessStatusEnum.DONE ? '已处理' : '已忽略'}?`);
content: `确认标记为${InfraApiErrorLogProcessStatusEnum.DONE ? '已处理' : '已忽略'}?`,
});
const hideLoading = message.loading({ const hideLoading = message.loading({
content: '正在处理中...', content: '正在处理中...',
duration: 0, duration: 0,

View File

@ -43,7 +43,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
}, },
@ -82,6 +82,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '主机端口', label: '主机端口',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入主机端口', placeholder: '请输入主机端口',
}, },

View File

@ -8,7 +8,7 @@ import { DICT_TYPE } from '@vben/constants';
import { getDictOptions } from '@vben/hooks'; import { getDictOptions } from '@vben/hooks';
import { formatDateTime } from '@vben/utils'; import { formatDateTime } from '@vben/utils';
import { Timeline, TimelineItem } from 'antdv-next'; import { Timeline } from 'antdv-next';
import { CronTab } from '#/components/cron-tab'; import { CronTab } from '#/components/cron-tab';
import { DictTag } from '#/components/dict-tag'; import { DictTag } from '#/components/dict-tag';
@ -68,6 +68,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '重试次数', label: '重试次数',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入重试次数。设置为 0 时,不进行重试', placeholder: '请输入重试次数。设置为 0 时,不进行重试',
min: 0, min: 0,
}, },
@ -78,6 +79,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '重试间隔', label: '重试间隔',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入重试间隔,单位:毫秒。设置为 0 时,无需间隔', placeholder: '请输入重试间隔,单位:毫秒。设置为 0 时,无需间隔',
min: 0, min: 0,
}, },
@ -88,6 +90,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '监控超时时间', label: '监控超时时间',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入监控超时时间,单位:毫秒', placeholder: '请输入监控超时时间,单位:毫秒',
min: 0, min: 0,
}, },
@ -236,7 +239,7 @@ export function useDetailSchema(): DescriptionItemSchema[] {
} }
return h(Timeline, {}, () => return h(Timeline, {}, () =>
val?.map((time: Date) => val?.map((time: Date) =>
h(TimelineItem, {}, () => formatDateTime(time)), h(Timeline.Item, {}, () => formatDateTime(time)),
), ),
); );
}, },

View File

@ -41,6 +41,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '品牌排序', label: '品牌排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入品牌排序', placeholder: '请输入品牌排序',
}, },
@ -60,7 +61,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'description', fieldName: 'description',
label: '品牌描述', label: '品牌描述',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入品牌描述', placeholder: '请输入品牌描述',
}, },

View File

@ -65,6 +65,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '分类排序', label: '分类排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入分类排序', placeholder: '请输入分类排序',
}, },

View File

@ -65,9 +65,7 @@ async function handleStatusChange(
): Promise<boolean | undefined> { ): Promise<boolean | undefined> {
const text = newStatus ? '展示' : '隐藏'; const text = newStatus ? '展示' : '隐藏';
try { try {
await confirm({ await confirm(`确认要${text}该评论吗?`);
content: `确认要${text}该评论吗?`,
});
} catch { } catch {
return false; return false;
} }

View File

@ -68,7 +68,7 @@ export function useInfoFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'introduction', fieldName: 'introduction',
label: '商品简介', label: '商品简介',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入商品简介', placeholder: '请输入商品简介',
autoSize: { minRows: 2, maxRows: 2 }, autoSize: { minRows: 2, maxRows: 2 },
@ -281,6 +281,7 @@ export function useOtherFormSchema(): VbenFormSchema[] {
label: '商品排序', label: '商品排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
}, },
rules: 'required', rules: 'required',
@ -290,6 +291,7 @@ export function useOtherFormSchema(): VbenFormSchema[] {
label: '赠送积分', label: '赠送积分',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
}, },
rules: 'required', rules: 'required',
@ -299,6 +301,7 @@ export function useOtherFormSchema(): VbenFormSchema[] {
label: '虚拟销量', label: '虚拟销量',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
}, },
rules: 'required', rules: 'required',

View File

@ -134,7 +134,6 @@ const [Modal, modalApi] = useVbenModal({
if (!isOpen) { if (!isOpen) {
return; return;
} }
await formApi.resetForm();
}, },
}); });
</script> </script>

View File

@ -9,7 +9,7 @@ import { confirm, DocAlert, Page } from '@vben/common-ui';
import { ProductSpuStatusEnum } from '@vben/constants'; import { ProductSpuStatusEnum } from '@vben/constants';
import { downloadFileFromBlobPart } from '@vben/utils'; import { downloadFileFromBlobPart } from '@vben/utils';
import { message, TabPane, Tabs } from 'antdv-next'; import { message, Tabs } from 'antdv-next';
import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
import { import {
@ -110,9 +110,7 @@ async function handleStatusChange(
// //
const text = newStatus ? '上架' : '下架'; const text = newStatus ? '上架' : '下架';
try { try {
await confirm({ await confirm(`确认要${text + row.name}吗?`);
content: `确认要${text + row.name}吗?`,
});
} catch { } catch {
return false; return false;
} }
@ -132,9 +130,7 @@ async function handleStatus02Change(row: MallSpuApi.Spu, newStatus: number) {
newStatus === ProductSpuStatusEnum.RECYCLE.status newStatus === ProductSpuStatusEnum.RECYCLE.status
? '加入到回收站' ? '加入到回收站'
: '恢复到仓库'; : '恢复到仓库';
await confirm({ await confirm(`确认要"${row.name}"${text}吗?`);
content: `确认要"${row.name}"${text}吗?`,
});
const hideLoading = message.loading({ const hideLoading = message.loading({
content: `正在${text}中...`, content: `正在${text}中...`,
duration: 0, duration: 0,
@ -213,7 +209,7 @@ onMounted(async () => {
<Grid> <Grid>
<template #toolbar-actions> <template #toolbar-actions>
<Tabs @change="onChangeTab" class="w-full"> <Tabs @change="onChangeTab" class="w-full">
<TabPane <Tabs.TabPane
v-for="item in tabsData" v-for="item in tabsData"
:key="item.type" :key="item.type"
:tab="`${item.name} (${item.count})`" :tab="`${item.name} (${item.count})`"

View File

@ -40,6 +40,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '显示顺序', label: '显示顺序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入显示顺序', placeholder: '请输入显示顺序',
}, },

View File

@ -106,6 +106,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '排序', label: '排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入排序', placeholder: '请输入排序',
}, },

View File

@ -62,6 +62,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '排序', label: '排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入排序', placeholder: '请输入排序',
}, },
@ -81,7 +82,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'memo', fieldName: 'memo',
label: '描述', label: '描述',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
rows: 4, rows: 4,
placeholder: '请输入描述', placeholder: '请输入描述',

View File

@ -55,6 +55,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '助力人数', label: '助力人数',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 1, min: 1,
placeholder: '达到该人数才能砍到低价', placeholder: '达到该人数才能砍到低价',
}, },
@ -65,6 +66,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '砍价次数', label: '砍价次数',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 1, min: 1,
placeholder: '最大帮砍次数', placeholder: '最大帮砍次数',
}, },
@ -75,6 +77,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '购买限制', label: '购买限制',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 1, min: 1,
placeholder: '最大购买次数', placeholder: '最大购买次数',
}, },
@ -85,6 +88,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '最小砍价金额(元)', label: '最小砍价金额(元)',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
step: 0.01, step: 0.01,
@ -96,6 +100,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '最大砍价金额(元)', label: '最大砍价金额(元)',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
step: 0.01, step: 0.01,

View File

@ -55,6 +55,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '拼团人数', label: '拼团人数',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '达到该人数即成团', placeholder: '达到该人数即成团',
min: 2, min: 2,
}, },
@ -65,6 +66,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '限制时长', label: '限制时长',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '限制时长(小时)', placeholder: '限制时长(小时)',
min: 0, min: 0,
}, },
@ -75,6 +77,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '总限购数量', label: '总限购数量',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入总限购数量', placeholder: '请输入总限购数量',
min: 0, min: 0,
}, },
@ -84,6 +87,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '单次限购数量', label: '单次限购数量',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入单次限购数量', placeholder: '请输入单次限购数量',
min: 0, min: 0,
}, },

View File

@ -45,7 +45,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'description', fieldName: 'description',
label: '优惠券描述', label: '优惠券描述',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入优惠券描述', placeholder: '请输入优惠券描述',
}, },
@ -122,6 +122,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '优惠券面额', label: '优惠券面额',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
placeholder: '请输入优惠金额,单位:元', placeholder: '请输入优惠金额,单位:元',
@ -139,6 +140,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '优惠券折扣', label: '优惠券折扣',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 1, min: 1,
max: 9.9, max: 9.9,
precision: 1, precision: 1,
@ -157,6 +159,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '最多优惠', label: '最多优惠',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
placeholder: '请输入最多优惠', placeholder: '请输入最多优惠',
@ -174,6 +177,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '满多少元可以使用', label: '满多少元可以使用',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
placeholder: '无门槛请设为 0', placeholder: '无门槛请设为 0',
@ -196,6 +200,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '发放数量', label: '发放数量',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: -1, min: -1,
placeholder: '发放数量,没有之后不能领取或发放,-1 为不限制', placeholder: '发放数量,没有之后不能领取或发放,-1 为不限制',
addonAfter: '张', addonAfter: '张',
@ -212,6 +217,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '每人限领个数', label: '每人限领个数',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: -1, min: -1,
placeholder: '设置为 -1 时,可无限领取', placeholder: '设置为 -1 时,可无限领取',
addonAfter: '张', addonAfter: '张',
@ -255,6 +261,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '领取日期', label: '领取日期',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '第 0 为今天生效', placeholder: '第 0 为今天生效',
addonBefore: '第', addonBefore: '第',
@ -271,6 +278,7 @@ export function useFormSchema(): VbenFormSchema[] {
fieldName: 'fixedEndTerm', fieldName: 'fixedEndTerm',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入结束天数', placeholder: '请输入结束天数',
addonBefore: '至', addonBefore: '至',

View File

@ -61,9 +61,7 @@ async function handleStatusChange(
row: MallCouponTemplateApi.CouponTemplate, row: MallCouponTemplateApi.CouponTemplate,
): Promise<boolean | undefined> { ): Promise<boolean | undefined> {
try { try {
await confirm({ await confirm(`你要将${row.name}的状态切换为【${newStatus === CommonStatusEnum.ENABLE ? '启用' : '停用'}】吗?`);
content: `你要将${row.name}的状态切换为【${newStatus === CommonStatusEnum.ENABLE ? '启用' : '停用'}】吗?`,
});
} catch { } catch {
return false; return false;
} }

View File

@ -7,7 +7,7 @@ import type {
SpuProperty, SpuProperty,
} from '#/views/mall/product/spu/components'; } from '#/views/mall/product/spu/components';
import { computed, nextTick, ref } from 'vue'; import { computed, ref } from 'vue';
import { useVbenForm, useVbenModal } from '@vben/common-ui'; import { useVbenForm, useVbenModal } from '@vben/common-ui';
import { PromotionDiscountTypeEnum } from '@vben/constants'; import { PromotionDiscountTypeEnum } from '@vben/constants';
@ -213,13 +213,11 @@ function handleSkuDiscountPercentChange(row: SkuExtension) {
} }
/** 重置表单 */ /** 重置表单 */
async function resetForm() { function resetForm() {
spuList.value = []; spuList.value = [];
spuPropertyList.value = []; spuPropertyList.value = [];
spuIdList.value = []; spuIdList.value = [];
formData.value = {}; formData.value = {};
await nextTick();
await formApi.resetForm();
} }
// ================= ================= // ================= =================
@ -264,7 +262,7 @@ const [Modal, modalApi] = useVbenModal({
}, },
async onOpenChange(isOpen: boolean) { async onOpenChange(isOpen: boolean) {
if (!isOpen) { if (!isOpen) {
await resetForm(); resetForm();
return; return;
} }
// //

View File

@ -125,9 +125,7 @@ async function updateConversationPinnedFn(pinned: boolean) {
/** 删除会话 */ /** 删除会话 */
async function deleteConversationFn() { async function deleteConversationFn() {
// 1. // 1.
confirm({ confirm('您确定要删除该会话吗?').then(async () => {
content: '您确定要删除该会话吗?',
}).then(async () => {
await deleteConversation(rightClickConversation.value.id); await deleteConversation(rightClickConversation.value.id);
// 2. // 2.
closeRightMenu(); closeRightMenu();

View File

@ -169,7 +169,7 @@ async function handleSendMessage(event: any) {
} }
// 1. // 1.
if (isEmpty(unref(message.value)?.trim())) { if (isEmpty(unref(message.value)?.trim())) {
notification.warning({ title: '请输入消息后再发送哦!' }); notification.warning({ message: '请输入消息后再发送哦!' });
message.value = ''; message.value = '';
return; return;
} }

View File

@ -109,9 +109,9 @@ export function useFormSchema(): VbenFormSchema[] {
label: '排序', label: '排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入排序', placeholder: '请输入排序',
class: '!w-full',
}, },
defaultValue: 0, defaultValue: 0,
rules: 'required', rules: 'required',
@ -119,7 +119,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
rows: 4, rows: 4,

View File

@ -99,9 +99,9 @@ export function useFormSchema(): VbenFormSchema[] {
label: '总限购数量', label: '总限购数量',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入总限购数量', placeholder: '请输入总限购数量',
min: 0, min: 0,
class: 'w-full',
}, },
rules: z.number().min(0).default(0), rules: z.number().min(0).default(0),
}, },
@ -110,9 +110,9 @@ export function useFormSchema(): VbenFormSchema[] {
label: '单次限购数量', label: '单次限购数量',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入单次限购数量', placeholder: '请输入单次限购数量',
min: 0, min: 0,
class: 'w-full',
}, },
rules: z.number().min(0).default(0), rules: z.number().min(0).default(0),
}, },
@ -121,16 +121,16 @@ export function useFormSchema(): VbenFormSchema[] {
label: '排序', label: '排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入排序', placeholder: '请输入排序',
min: 0, min: 0,
class: 'w-full',
}, },
rules: z.number().min(0).default(0), rules: z.number().min(0).default(0),
}, },
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
rows: 4, rows: 4,

View File

@ -62,9 +62,7 @@ async function handleStatusChange(
// //
const text = row.status === 0 ? '启用' : '停用'; const text = row.status === 0 ? '启用' : '停用';
try { try {
await confirm({ await confirm(`确认要${text + row.name}吗?`);
content: `确认要${text + row.name}吗?`,
});
} catch { } catch {
return false; return false;
} }

View File

@ -104,9 +104,7 @@ async function loadProductStatisticsList() {
async function handleExport() { async function handleExport() {
try { try {
// //
await confirm({ await confirm('确认导出商品状况数据吗?');
content: '确认导出商品状况数据吗?',
});
// //
exportLoading.value = true; exportLoading.value = true;
const data = await exportProductStatisticsExcel({ const data = await exportProductStatisticsExcel({
@ -121,7 +119,7 @@ async function handleExport() {
</script> </script>
<template> <template>
<Card variant="borderless" title="商品概况" class="h-full"> <Card :bordered="false" title="商品概况" class="h-full">
<template #extra> <template #extra>
<!-- 查询条件 --> <!-- 查询条件 -->
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">

View File

@ -107,9 +107,7 @@ async function loadTradeStatisticsList() {
async function handleExport() { async function handleExport() {
try { try {
// //
await confirm({ await confirm('确认导出交易状况数据吗?');
content: '确认导出交易状况数据吗?',
});
// //
exportLoading.value = true; exportLoading.value = true;
const data = await exportTradeStatisticsExcel({ const data = await exportTradeStatisticsExcel({
@ -124,7 +122,7 @@ async function handleExport() {
</script> </script>
<template> <template>
<Card variant="borderless" title="交易状况" class="h-full"> <Card :bordered="false" title="交易状况" class="h-full">
<template #extra> <template #extra>
<!-- 查询条件 --> <!-- 查询条件 -->
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">

View File

@ -89,9 +89,7 @@ async function handleBrokerageEnabledChange(
): Promise<boolean | undefined> { ): Promise<boolean | undefined> {
const text = newEnabled ? '开通' : '关闭'; const text = newEnabled ? '开通' : '关闭';
try { try {
await confirm({ await confirm(`你要将${row.nickname}的推广资格切换为【${text}】吗?`);
content: `你要将${row.nickname}的推广资格切换为【${text}】吗?`,
});
} catch { } catch {
return false; return false;
} }

View File

@ -63,10 +63,10 @@ export const schema: VbenFormSchema[] = [
label: '满额包邮', label: '满额包邮',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
placeholder: '请输入满额包邮金额', placeholder: '请输入满额包邮金额',
class: 'w-full',
}, },
rules: 'required', rules: 'required',
dependencies: { dependencies: {
@ -145,10 +145,10 @@ export const schema: VbenFormSchema[] = [
label: '一级返佣比例(%', label: '一级返佣比例(%',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
max: 100, max: 100,
placeholder: '请输入一级返佣比例', placeholder: '请输入一级返佣比例',
class: 'w-full',
}, },
rules: 'required', rules: 'required',
dependencies: { dependencies: {
@ -162,10 +162,10 @@ export const schema: VbenFormSchema[] = [
label: '二级返佣比例(%', label: '二级返佣比例(%',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
max: 100, max: 100,
placeholder: '请输入二级返佣比例', placeholder: '请输入二级返佣比例',
class: 'w-full',
}, },
rules: 'required', rules: 'required',
dependencies: { dependencies: {
@ -179,9 +179,9 @@ export const schema: VbenFormSchema[] = [
label: '佣金冻结天数', label: '佣金冻结天数',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入佣金冻结天数', placeholder: '请输入佣金冻结天数',
class: 'w-full',
}, },
rules: 'required', rules: 'required',
dependencies: { dependencies: {
@ -195,10 +195,10 @@ export const schema: VbenFormSchema[] = [
label: '提现最低金额(元)', label: '提现最低金额(元)',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
placeholder: '请输入提现最低金额', placeholder: '请输入提现最低金额',
class: 'w-full',
}, },
rules: 'required', rules: 'required',
dependencies: { dependencies: {
@ -212,11 +212,11 @@ export const schema: VbenFormSchema[] = [
label: '提现手续费(%', label: '提现手续费(%',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
max: 100, max: 100,
precision: 2, precision: 2,
placeholder: '请输入提现手续费百分比', placeholder: '请输入提现手续费百分比',
class: 'w-full',
}, },
rules: 'required', rules: 'required',
dependencies: { dependencies: {

View File

@ -47,6 +47,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '显示顺序', label: '显示顺序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入显示顺序', placeholder: '请输入显示顺序',
}, },

View File

@ -140,6 +140,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '显示顺序', label: '显示顺序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入显示顺序', placeholder: '请输入显示顺序',
min: 0, min: 0,
}, },

View File

@ -306,6 +306,7 @@ export function usePriceFormSchema(): VbenFormSchema[] {
label: '订单调价', label: '订单调价',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入订单调价', placeholder: '请输入订单调价',
step: 0.1, step: 0.1,
precision: 2, precision: 2,

View File

@ -21,9 +21,9 @@ export const schema: VbenFormSchema[] = [
label: '积分抵扣', label: '积分抵扣',
help: '积分抵用比例(1 积分抵多少金额),单位:元', help: '积分抵用比例(1 积分抵多少金额),单位:元',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
class: 'w-full',
placeholder: '请输入积分抵扣单价', placeholder: '请输入积分抵扣单价',
}, },
}, },
@ -33,8 +33,8 @@ export const schema: VbenFormSchema[] = [
label: '积分抵扣最大值', label: '积分抵扣最大值',
help: '单次下单积分使用上限0 不限制', help: '单次下单积分使用上限0 不限制',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
class: 'w-full',
placeholder: '请输入积分抵扣最大值', placeholder: '请输入积分抵扣最大值',
}, },
}, },
@ -44,8 +44,8 @@ export const schema: VbenFormSchema[] = [
label: '1 元赠送多少分', label: '1 元赠送多少分',
help: '下单支付金额按比例赠送积分(实际支付 1 元赠送多少积分)', help: '下单支付金额按比例赠送积分(实际支付 1 元赠送多少积分)',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
class: 'w-full',
placeholder: '请输入赠送积分比例', placeholder: '请输入赠送积分比例',
}, },
}, },

View File

@ -32,6 +32,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '等级', label: '等级',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 0, precision: 0,
placeholder: '请输入等级', placeholder: '请输入等级',
@ -43,6 +44,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '升级经验', label: '升级经验',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 0, precision: 0,
placeholder: '请输入升级经验', placeholder: '请输入升级经验',
@ -54,6 +56,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '享受折扣(%)', label: '享受折扣(%)',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
max: 100, max: 100,
precision: 0, precision: 0,

View File

@ -23,6 +23,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '签到天数', label: '签到天数',
help: '只允许设置 1-7默认签到 7 天为一个周期', help: '只允许设置 1-7默认签到 7 天为一个周期',
componentProps: { componentProps: {
class: '!w-full',
min: 1, min: 1,
max: 7, max: 7,
precision: 0, precision: 0,
@ -35,6 +36,7 @@ export function useFormSchema(): VbenFormSchema[] {
fieldName: 'point', fieldName: 'point',
label: '获得积分', label: '获得积分',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 0, precision: 0,
placeholder: '请输入获得积分', placeholder: '请输入获得积分',
@ -46,6 +48,7 @@ export function useFormSchema(): VbenFormSchema[] {
fieldName: 'experience', fieldName: 'experience',
label: '奖励经验', label: '奖励经验',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 0, precision: 0,
placeholder: '请输入奖励经验', placeholder: '请输入奖励经验',

View File

@ -36,6 +36,17 @@ export function useFormSchema(): VbenFormSchema[] {
}, },
rules: 'required', rules: 'required',
}, },
{
fieldName: 'email',
label: '邮箱',
component: 'Input',
componentProps: {
allowClear: true,
maxlength: 50,
placeholder: '请输入邮箱',
},
rules: z.string().email('邮箱格式不正确').or(z.literal('')).optional(),
},
{ {
fieldName: 'status', fieldName: 'status',
label: '状态', label: '状态',
@ -124,7 +135,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'mark', fieldName: 'mark',
label: '会员备注', label: '会员备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入会员备注', placeholder: '请输入会员备注',
}, },
@ -153,6 +164,15 @@ export function useGridFormSchema(): VbenFormSchema[] {
allowClear: true, allowClear: true,
}, },
}, },
{
fieldName: 'email',
label: '邮箱',
component: 'Input',
componentProps: {
placeholder: '请输入邮箱',
allowClear: true,
},
},
{ {
fieldName: 'loginDate', fieldName: 'loginDate',
label: '登录时间', label: '登录时间',
@ -236,6 +256,11 @@ export function useGridColumns(): VxeTableGridOptions['columns'] {
title: '手机号', title: '手机号',
minWidth: 120, minWidth: 120,
}, },
{
field: 'email',
title: '邮箱',
minWidth: 180,
},
{ {
field: 'nickname', field: 'nickname',
title: '昵称', title: '昵称',
@ -340,7 +365,7 @@ export function useLevelFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'reason', fieldName: 'reason',
label: '修改原因', label: '修改原因',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入修改原因', placeholder: '请输入修改原因',
}, },
@ -396,6 +421,7 @@ export function useBalanceFormSchema(): VbenFormSchema[] {
component: 'InputNumber', component: 'InputNumber',
rules: 'required', rules: 'required',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
step: 0.1, step: 0.1,
@ -471,6 +497,7 @@ export function usePointFormSchema(): VbenFormSchema[] {
component: 'InputNumber', component: 'InputNumber',
rules: 'required', rules: 'required',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 0, precision: 0,
placeholder: '请输入变动积分', placeholder: '请输入变动积分',

View File

@ -34,6 +34,10 @@ const [Descriptions] = useDescription({
field: 'mobile', field: 'mobile',
label: '手机号', label: '手机号',
}, },
{
field: 'email',
label: '邮箱',
},
{ {
field: 'sex', field: 'sex',
label: '性别', label: '性别',

View File

@ -247,7 +247,7 @@ export function useAppFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
rows: 3, rows: 3,
placeholder: '请输入备注', placeholder: '请输入备注',
@ -291,6 +291,7 @@ export function useChannelFormSchema(formType: string = ''): VbenFormSchema[] {
component: 'InputNumber', component: 'InputNumber',
rules: 'required', rules: 'required',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入渠道费率', placeholder: '请输入渠道费率',
addonAfter: '%', addonAfter: '%',
}, },
@ -381,7 +382,7 @@ export function useChannelFormSchema(formType: string = ''): VbenFormSchema[] {
{ {
label: '应用私钥', label: '应用私钥',
fieldName: 'config.privateKey', fieldName: 'config.privateKey',
component: 'TextArea', component: 'Textarea',
rules: 'required', rules: 'required',
componentProps: { componentProps: {
placeholder: '请输入应用私钥', placeholder: '请输入应用私钥',
@ -391,7 +392,7 @@ export function useChannelFormSchema(formType: string = ''): VbenFormSchema[] {
{ {
label: '支付宝公钥', label: '支付宝公钥',
fieldName: 'config.alipayPublicKey', fieldName: 'config.alipayPublicKey',
component: 'TextArea', component: 'Textarea',
rules: 'required', rules: 'required',
componentProps: { componentProps: {
placeholder: '请输入支付宝公钥', placeholder: '请输入支付宝公钥',

View File

@ -67,9 +67,7 @@ async function handleStatusChange(
): Promise<boolean | undefined> { ): Promise<boolean | undefined> {
const text = newStatus === CommonStatusEnum.ENABLE ? '启用' : '停用'; const text = newStatus === CommonStatusEnum.ENABLE ? '启用' : '停用';
try { try {
await confirm({ await confirm(`确认要${text + row.name}应用吗?`);
content: `确认要${text + row.name}应用吗?`,
});
} catch { } catch {
return false; return false;
} }

View File

@ -29,6 +29,7 @@ export function useFormSchema(): VbenFormSchema[] {
component: 'InputNumber', component: 'InputNumber',
rules: 'required', rules: 'required',
componentProps: { componentProps: {
class: '!w-full',
min: 1, min: 1,
precision: 2, precision: 2,
step: 0.01, step: 0.01,

View File

@ -33,6 +33,7 @@ export function useFormSchema(): VbenFormSchema[] {
component: 'InputNumber', component: 'InputNumber',
rules: z.number().min(0, '支付金额不能小于0'), rules: z.number().min(0, '支付金额不能小于0'),
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
step: 0.01, step: 0.01,
@ -45,6 +46,7 @@ export function useFormSchema(): VbenFormSchema[] {
component: 'InputNumber', component: 'InputNumber',
rules: z.number().min(0, '赠送金额不能小于0'), rules: z.number().min(0, '赠送金额不能小于0'),
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
precision: 2, precision: 2,
step: 0.01, step: 0.01,

View File

@ -62,6 +62,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '显示顺序', label: '显示顺序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入显示顺序', placeholder: '请输入显示顺序',
}, },

View File

@ -58,7 +58,7 @@ export function useTypeFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
}, },
@ -222,6 +222,7 @@ export function useDataFormSchema(): VbenFormSchema[] {
label: '显示排序', label: '显示排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入显示排序', placeholder: '请输入显示排序',
}, },
rules: 'required', rules: 'required',
@ -259,7 +260,7 @@ export function useDataFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
}, },

View File

@ -58,6 +58,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: 'SMTP 服务器端口', label: 'SMTP 服务器端口',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入 SMTP 服务器端口', placeholder: '请输入 SMTP 服务器端口',
min: 0, min: 0,
max: 65_535, max: 65_535,
@ -89,7 +90,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
}, },

View File

@ -201,6 +201,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '显示顺序', label: '显示顺序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入显示顺序', placeholder: '请输入显示顺序',
}, },

View File

@ -53,7 +53,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'description', fieldName: 'description',
label: '应用描述', label: '应用描述',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入应用描述', placeholder: '请输入应用描述',
}, },
@ -74,6 +74,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '访问令牌的有效期', label: '访问令牌的有效期',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入访问令牌的有效期,单位:秒', placeholder: '请输入访问令牌的有效期,单位:秒',
min: 0, min: 0,
}, },
@ -84,6 +85,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '刷新令牌的有效期', label: '刷新令牌的有效期',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入刷新令牌的有效期,单位:秒', placeholder: '请输入刷新令牌的有效期,单位:秒',
min: 0, min: 0,
}, },
@ -161,7 +163,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'additionalInformation', fieldName: 'additionalInformation',
label: '附加信息', label: '附加信息',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入附加信息JSON 格式数据', placeholder: '请输入附加信息JSON 格式数据',
}, },

View File

@ -40,6 +40,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '显示顺序', label: '显示顺序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入显示顺序', placeholder: '请输入显示顺序',
}, },
@ -59,7 +60,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '岗位备注', label: '岗位备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入岗位备注', placeholder: '请输入岗位备注',
}, },

View File

@ -45,6 +45,7 @@ export function useFormSchema(): VbenFormSchema[] {
label: '显示顺序', label: '显示顺序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
min: 0, min: 0,
placeholder: '请输入显示顺序', placeholder: '请输入显示顺序',
}, },
@ -64,7 +65,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '角色备注', label: '角色备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入角色备注', placeholder: '请输入角色备注',
}, },

View File

@ -78,7 +78,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'content', fieldName: 'content',
label: '模板内容', label: '模板内容',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入模板内容', placeholder: '请输入模板内容',
rows: 4, rows: 4,
@ -97,7 +97,7 @@ export function useFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'remark', fieldName: 'remark',
label: '备注', label: '备注',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
placeholder: '请输入备注', placeholder: '请输入备注',
}, },
@ -176,7 +176,7 @@ export function useSendSmsFormSchema(): VbenFormSchema[] {
{ {
fieldName: 'content', fieldName: 'content',
label: '模板内容', label: '模板内容',
component: 'TextArea', component: 'Textarea',
componentProps: { componentProps: {
disabled: true, disabled: true,
}, },

View File

@ -91,6 +91,7 @@ export function useFormSchema(): VbenFormSchema[] {
fieldName: 'accountCount', fieldName: 'accountCount',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
class: '!w-full',
placeholder: '请输入账号额度', placeholder: '请输入账号额度',
}, },
rules: 'required', rules: 'required',

View File

@ -21,10 +21,10 @@ import {
updateUserStatus, updateUserStatus,
} from '#/api/system/user'; } from '#/api/system/user';
import { $t } from '#/locales'; import { $t } from '#/locales';
import { DeptTreeSelect } from '#/views/system/dept/components';
import { useGridColumns, useGridFormSchema } from './data'; import { useGridColumns, useGridFormSchema } from './data';
import AssignRoleForm from './modules/assign-role-form.vue'; import AssignRoleForm from './modules/assign-role-form.vue';
import DeptTree from './modules/dept-tree.vue';
import Form from './modules/form.vue'; import Form from './modules/form.vue';
import ImportForm from './modules/import-form.vue'; import ImportForm from './modules/import-form.vue';
import ResetPasswordForm from './modules/reset-password-form.vue'; import ResetPasswordForm from './modules/reset-password-form.vue';
@ -62,8 +62,8 @@ async function handleExport() {
/** 选择部门 */ /** 选择部门 */
const searchDeptId = ref<number | undefined>(undefined); const searchDeptId = ref<number | undefined>(undefined);
async function handleDeptSelect(dept: SystemDeptApi.Dept) { async function handleDeptSelect(dept?: SystemDeptApi.Dept) {
searchDeptId.value = dept.id; searchDeptId.value = dept?.id;
handleRefresh(); handleRefresh();
} }
@ -139,9 +139,7 @@ async function handleStatusChange(
row: SystemUserApi.User, row: SystemUserApi.User,
): Promise<boolean | undefined> { ): Promise<boolean | undefined> {
try { try {
await confirm({ await confirm(`你要将${row.username}的状态切换为【${getDictLabel(DICT_TYPE.COMMON_STATUS, newStatus)}】吗?`);
content: `你要将${row.username}的状态切换为【${getDictLabel(DICT_TYPE.COMMON_STATUS, newStatus)}】吗?`,
});
} catch { } catch {
return false; return false;
} }
@ -207,7 +205,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
<div class="flex h-full w-full"> <div class="flex h-full w-full">
<!-- 左侧部门树 --> <!-- 左侧部门树 -->
<Card class="mr-4 h-full w-1/6"> <Card class="mr-4 h-full w-1/6">
<DeptTree @select="handleDeptSelect" /> <DeptTreeSelect @select="handleDeptSelect" />
</Card> </Card>
<!-- 右侧用户列表 --> <!-- 右侧用户列表 -->
<div class="w-5/6"> <div class="w-5/6">