Merge branch 'master' of http://47.109.37.87:3000/by2025/admin-vben5
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
fyy 2025-07-25 12:01:21 +08:00
commit 1695f017b0
7 changed files with 42 additions and 32 deletions

View File

@ -144,6 +144,9 @@ export interface PersonForm extends BaseEntity {
*/ */
authGroupId?: string | number authGroupId?: string | number
begDate?: string
endDate?: string
} }
export interface PersonQuery extends PageQuery { export interface PersonQuery extends PageQuery {

View File

@ -25,7 +25,6 @@ async function fetchWorkOrderCount() {
seriesData.value = board.value.recentWeekWorkOrders.map(item => { seriesData.value = board.value.recentWeekWorkOrders.map(item => {
return `${item.count}`; return `${item.count}`;
}); });
console.log(xAxisData.value,seriesData.value)
renderWorkOrderCount({ renderWorkOrderCount({
tooltip: { trigger: 'axis' }, tooltip: { trigger: 'axis' },
xAxis: { xAxis: {
@ -85,24 +84,21 @@ async function fetchSatisfactionLevel() {
const orderNumber = ref<EchartsUIType>(); const orderNumber = ref<EchartsUIType>();
const { renderEcharts: renderOrderNumber } = useEcharts(orderNumber); const { renderEcharts: renderOrderNumber } = useEcharts(orderNumber);
async function fetchOrderNumber() { async function fetchOrderNumber() {
seriesData.value = board.value.recentSixMonthWorkOrders.map(item => [
item.month, //
item.orderCount //
])
seriesData.value.unshift(['product','入驻员工'])
renderOrderNumber({ renderOrderNumber({
title: {text: '近半年工单数',left: '18px'}, title: {text: '近半年工单数',left: '18px'},
legend: {}, legend: {},
tooltip: { trigger: 'axis' }, tooltip: { trigger: 'axis' },
dataset: { dataset: {
source: [ source: seriesData.value
['product', '物业', '入驻员工'],
['2025-01', 2, 5.8],
['2025-02', 10.1, 7.4],
['2025-03', 6.4, 5.2],
['2025-04', 3.3, 5.8],
['2025-05', 8.1, 7.4],
['2025-06', 6.4, 5.2],
]
}, },
xAxis: { type: 'category' }, xAxis: { type: 'category' },
yAxis: {}, yAxis: {},
series: [{ type: 'bar' }, { type: 'bar' }] series: [{ type: 'bar' }]
}) })
} }
@ -110,6 +106,16 @@ async function fetchOrderNumber() {
const orderTyper = ref<EchartsUIType>(); const orderTyper = ref<EchartsUIType>();
const { renderEcharts: renderOrderTyper } = useEcharts(orderTyper); const { renderEcharts: renderOrderTyper } = useEcharts(orderTyper);
async function fetchOrderTyper() { async function fetchOrderTyper() {
seriesData.value = board.value.satisfactionChartList.map(item => {
return {
value: item.quantity,
name: item.type,
};
})
const totalQuantity = board.value.satisfactionChartList.reduce((sum, item) => {
return sum + Number(item.quantity || 0);
}, 0);
console.log(seriesData.value)
renderOrderTyper({ renderOrderTyper({
title: {text: '工单类型分类占比',left: '18px',top: '18px'}, title: {text: '工单类型分类占比',left: '18px',top: '18px'},
tooltip: { tooltip: {
@ -131,7 +137,10 @@ async function fetchOrderTyper() {
label: { label: {
show: true, show: true,
position: 'center', position: 'center',
formatter: '员工单数量\n{num|56个}', formatter: [
'员工单数量',
`{num|${totalQuantity}个}`
].join('\n'),
fontSize: 14, fontSize: 14,
fontWeight: 'bold', fontWeight: 'bold',
color: 'gray', color: 'gray',
@ -148,13 +157,7 @@ async function fetchOrderTyper() {
labelLine: { labelLine: {
show: false show: false
}, },
data: [ data: seriesData.value
{ value: 1048, name: 'Search Engine' },
{ value: 735, name: 'Direct' },
{ value: 580, name: 'Email' },
{ value: 484, name: 'Union Ads' },
{ value: 300, name: 'Video Ads' }
]
} }
] ]
}) })
@ -232,7 +235,7 @@ onMounted(async () => {
<div style="font-size: 20px;font-weight: bold;margin-bottom: 20px;color: #464646">工单计数</div> <div style="font-size: 20px;font-weight: bold;margin-bottom: 20px;color: #464646">工单计数</div>
<div style="margin-left: 20px;line-height: 30px"> <div style="margin-left: 20px;line-height: 30px">
<div>累计处理工单数</div> <div>累计处理工单数</div>
<div>12</div> <div>{{board.recentWeekWorkOrders?.[0]?.weekCount || '0'}}</div>
<!-- <div>累计回复数</div>--> <!-- <div>累计回复数</div>-->
<!-- <div>2</div>--> <!-- <div>2</div>-->
</div> </div>

View File

@ -48,7 +48,7 @@ export const columns: VxeGridProps['columns'] = [
}, },
{ {
title: '发布人', title: '发布人',
field: 'issuers', field: 'issuersName',
}, },
{ {
field: 'action', field: 'action',

View File

@ -44,7 +44,7 @@ async function handleOpenChange(open: boolean) {
/> />
</DescriptionsItem> </DescriptionsItem>
<DescriptionsItem label="通知人"> <DescriptionsItem label="通知人">
{{ noticesDetail.noticePersion }} {{ noticesDetail.noticePersionName }}
</DescriptionsItem> </DescriptionsItem>
<DescriptionsItem label="开始时间"> <DescriptionsItem label="开始时间">
{{ noticesDetail.startTime }} {{ noticesDetail.startTime }}

View File

@ -64,6 +64,7 @@ const [BasicModal, modalApi] = useVbenModal({
if(record.isAll === '0'){ if(record.isAll === '0'){
record.noticePersion = null record.noticePersion = null
} }
record.noticePersion = record.noticePersion?.split(',')
await formApi.setValues(record); await formApi.setValues(record);
} }
await markInitialized(); await markInitialized();

View File

@ -212,16 +212,6 @@ export const modalSchema: FormSchemaGetter = () => [
fieldName: 'carNumber', fieldName: 'carNumber',
component: 'Input', component: 'Input',
}, },
{
label: '人脸图片',
fieldName: 'img',
component: 'ImageUpload',
componentProps: {
// accept: 'image/*', // 可选拓展名或者mime类型 ,拼接
maxCount: 1, // 最大上传文件数 默认为1 为1会绑定为string而非string[]类型
},
formItemClass: 'col-span-2',
},
{ {
label: '授权期限', label: '授权期限',
fieldName: 'authTime', fieldName: 'authTime',
@ -257,6 +247,16 @@ export const modalSchema: FormSchemaGetter = () => [
}, },
rules: 'required', rules: 'required',
}, },
{
label: '人脸图片',
fieldName: 'img',
component: 'ImageUpload',
componentProps: {
// accept: 'image/*', // 可选拓展名或者mime类型 ,拼接
maxCount: 1, // 最大上传文件数 默认为1 为1会绑定为string而非string[]类型
},
formItemClass: 'col-span-2',
},
{ {
label: '备注', label: '备注',
fieldName: 'remark', fieldName: 'remark',

View File

@ -94,6 +94,9 @@ async function handleConfirm() {
if(unitName.value){ if(unitName.value){
data.unitName = unitName.value data.unitName = unitName.value
} }
data.begDate = data.authTime[0]
data.endDate = data.authTime[1]
await (isUpdate.value ? personUpdate(data) : personAdd(data)); await (isUpdate.value ? personUpdate(data) : personAdd(data));
resetInitialized(); resetInitialized();
emit('reload'); emit('reload');