Browse Source

修复部分问题

main
likunming 20 hours ago
parent
commit
31ddc06ba9
  1. 11
      io.sc.platform.core.frontend/src/platform/components/grid/ts/function/Criteria.ts
  2. 132
      io.sc.platform.core.frontend/src/platform/components/select/WUserSelect.vue
  3. 3
      io.sc.platform.core.frontend/src/views/likm/Form.vue
  4. 71
      io.sc.platform.core.frontend/src/views/likm/Grid.vue

11
io.sc.platform.core.frontend/src/platform/components/grid/ts/function/Criteria.ts

@ -99,9 +99,14 @@ export class Criteria extends Base {
(!Tools.isEmpty(queryFormData[item]) && !Array.isArray(queryFormData[item])) || (!Tools.isEmpty(queryFormData[item]) && !Array.isArray(queryFormData[item])) ||
(!Tools.isEmpty(queryFormData[item]) && Array.isArray(queryFormData[item]) && queryFormData[item].length > 0) (!Tools.isEmpty(queryFormData[item]) && Array.isArray(queryFormData[item]) && queryFormData[item].length > 0)
) { ) {
// 根据数据进行operator处理 if (
const criteria = this.buildCriteria(queryFormData[item], item); (this.queryFormFields[item]['type'] === 'w-date-range' && !Tools.isEmpty(queryFormData[item]['from'])) ||
urlSearchParams.append('criteria', JSON.stringify(criteria)); this.queryFormFields[item]['type'] !== 'w-date-range'
) {
// 根据数据进行operator处理
const criteria = this.buildCriteria(queryFormData[item], item);
urlSearchParams.append('criteria', JSON.stringify(criteria));
}
} }
}); });
}); });

132
io.sc.platform.core.frontend/src/platform/components/select/WUserSelect.vue

@ -26,51 +26,92 @@
<q-btn v-if="!Tools.isEmpty(displayValueComputed)" flat square unelevated dense icon="cancel" @click="fieldMethodsClass.clearValue"></q-btn> <q-btn v-if="!Tools.isEmpty(displayValueComputed)" flat square unelevated dense icon="cancel" @click="fieldMethodsClass.clearValue"></q-btn>
<q-btn flat square unelevated dense icon="person_search"> <q-btn flat square unelevated dense icon="person_search">
<q-popup-proxy v-model:model-value="isShow" anchor="bottom right" self="top right" :offset="[0, 10]"> <q-popup-proxy v-model:model-value="isShow" anchor="bottom right" self="top right" :offset="[0, 10]">
<q-splitter v-model="leftWidthRef" style="width: 800px; height: 300px; position: relative"> <q-splitter v-model="leftWidthRef" style="width: 900px; height: 400px; position: relative">
<template #before> <template #before>
<w-grid <q-list>
ref="orgGridRef" <!-- 机构 -->
:dense="true" <q-expansion-item icon="account_tree" label="机构">
:tree="true" <q-card class="p-0">
:fetch-data-url="Environment.apiContextPath('/api/system/org')" <q-card-section class="p-0">
:config-button="false" <w-grid
:checkbox-selection="false" ref="orgGridRef"
db-click-operation="expand" :dense="true"
:columns="[{ name: 'name', label: $t('org') }]" :tree="true"
@row-click="orgRowClick" :height="250"
> :hide-header="true"
</w-grid> separator="none"
:fetch-data-url="Environment.apiContextPath('/api/system/org')"
:config-button="false"
:checkbox-selection="true"
db-click-operation="expand"
:columns="[{ name: 'name', label: $t('org') }]"
@row-click="orgRowClick"
@update-ticked="orgUpdateTicked"
>
</w-grid>
</q-card-section>
</q-card>
</q-expansion-item>
<q-separator />
<!-- 角色 -->
<q-expansion-item icon="person" label="角色">
<q-card class="p-0">
<q-card-section class="p-0">
<w-grid
ref="roleGridRef"
:dense="true"
:height="250"
separator="none"
:fetch-data-url="Environment.apiContextPath('/api/system/role')"
:config-button="false"
:checkbox-selection="true"
db-click-operation="expand"
:columns="[
{ name: 'code', label: $t('code') },
{ name: 'name', label: $t('org') },
]"
@row-click="orgRowClick"
>
</w-grid>
</q-card-section>
</q-card>
</q-expansion-item>
<q-separator />
</q-list>
</template> </template>
<template #after> <template #after>
<w-grid <div class="h-full pl-1">
ref="userGridRef" <w-grid
:checkbox-selection="props.multiple || false" ref="userGridRef"
:dense="true" :checkbox-selection="props.multiple || false"
:fetch-data-url="userGridFetchDataUrl" :dense="true"
:config-button="false" :fetch-data-url="userGridFetchDataUrl"
title="用户列表" :config-button="false"
:sort-by="['loginName']" title="用户列表"
:query-form-cols-num="2" :sort-by="['loginName']"
:query-form-fields="[ :query-form-cols-num="2"
{ name: 'loginName', label: $t('loginName'), type: 'w-text' }, :query-form-fields="[
{ name: 'userName', label: $t('userName'), type: 'w-text' }, { name: 'loginName', label: $t('loginName'), type: 'w-text' },
]" { name: 'userName', label: $t('userName'), type: 'w-text' },
:toolbar-actions="['query', 'separator', 'reset']" ]"
:ticked-record="{ :toolbar-actions="['query', 'separator', 'reset']"
columnName: valueUseColumnName, :ticked-record="{
data: typeof modelValue === 'string' ? [modelValue] : modelValue, columnName: valueUseColumnName,
}" data: typeof modelValue === 'string' ? [modelValue] : modelValue,
:columns="[ }"
{ name: 'loginName', label: $t('loginName') }, :columns="[
{ name: 'userName', label: $t('userName') }, { name: 'loginName', label: $t('loginName') },
{ name: 'description', label: $t('description') }, { name: 'userName', label: $t('userName') },
{ name: 'enable', label: $t('status'), format: Formater.enableTag() }, { name: 'description', label: $t('description') },
]" { name: 'enable', label: $t('status'), format: Formater.enableTag() },
@row-click="userRowClick" ]"
@update-ticked="updateTicked" @row-click="userRowClick"
@update-tickeds="updateTickeds" @update-ticked="updateTicked"
> @update-tickeds="updateTickeds"
</w-grid> >
</w-grid>
</div>
</template> </template>
</q-splitter> </q-splitter>
</q-popup-proxy> </q-popup-proxy>
@ -85,7 +126,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, computed, useAttrs, toRaw, watch, onMounted } from 'vue'; import { ref, computed, useAttrs, toRaw, watch, onMounted } from 'vue';
import { Tools, axios, Environment, Formater } from '@/platform'; import { Tools, axios, Environment, Formater, $t } from '@/platform';
import { FormFieldProps } from '@/platform/components/form/FormField.ts'; import { FormFieldProps } from '@/platform/components/form/FormField.ts';
import { FormFieldMethods } from '../form/FormField'; import { FormFieldMethods } from '../form/FormField';
@ -94,6 +135,7 @@ const attrs = useAttrs();
const modelValue = defineModel<string | Array<string>>(); const modelValue = defineModel<string | Array<string>>();
const modelObjectValue = ref(<any>[]); // const modelObjectValue = ref(<any>[]); //
const orgGridRef = ref(); const orgGridRef = ref();
const roleGridRef = ref();
const userGridRef = ref(); const userGridRef = ref();
const userGridFetchDataUrl = Environment.apiContextPath('/api/system/user'); const userGridFetchDataUrl = Environment.apiContextPath('/api/system/user');
@ -255,6 +297,10 @@ const userRowClick = (args) => {
const orgRowClick = (args) => { const orgRowClick = (args) => {
userGridRef.value.setFetchDataUrl(userGridFetchDataByOrgUrl + '?orgId=' + args.row['id']); userGridRef.value.setFetchDataUrl(userGridFetchDataByOrgUrl + '?orgId=' + args.row['id']);
userGridRef.value.refresh(); userGridRef.value.refresh();
console.info('orgRowClick======================');
};
const orgUpdateTicked = (args) => {
console.info('orgUpdateTicked======================');
}; };
watch( watch(

3
io.sc.platform.core.frontend/src/views/likm/Form.vue

@ -227,6 +227,9 @@
label: '数字', label: '数字',
type: 'w-number', type: 'w-number',
precision: 2, precision: 2,
prefix: '¥',
colsFirst: true,
colSpan: 'full',
requiredIf: (args) => { requiredIf: (args) => {
return true; return true;
}, },

71
io.sc.platform.core.frontend/src/views/likm/Grid.vue

@ -1,74 +1,19 @@
<template> <template>
<w-grid <w-grid
:title="$t('menu.developer.springboot.bean')" title="用户列表"
:checkbox-selection="false" :checkbox-selection="false"
:fetch-data-url="Environment.apiContextPath('/api/developer/springboot/beans')" :fetch-data-url="Environment.apiContextPath('/api/system/user')"
:pageable="false" :pageable="false"
:toolbar-actions="['refresh', 'separator', 'view', 'separator', 'export']" :toolbar-actions="['query', 'reset']"
group-mode="alone" :query-form-fields="[{ name: 'lastModifyDate', label: $t('lastModifyDate'), type: 'w-date-range' }]"
group-by-field="scope"
:columns="[ :columns="[
{ width: 500, name: 'name', label: $t('name') }, { name: 'loginName', label: $t('loginName') },
{ width: 400, name: 'type', label: $t('className'), format: Formater.simpleClassName() }, { name: 'userName', label: $t('userName') },
{ {
width: 100, name: 'lastModifyDate',
name: 'scope', label: $t('lastModifyDate'),
label: $t('scope'),
sortable: false,
format: (val) => {
if (val === 'singleton') {
return '测试';
} else if (val === 'prototype') {
return '测试2';
}
return val;
},
}, },
]" ]"
:viewer="{
panel: {
columnNum: 2,
labelWidth: 200,
valueWidth: '100%',
fields: [
{ width: 100, name: 'name', label: $t('name') },
{ width: 100, name: 'context', label: $t('context') },
{
width: 100,
name: 'scope',
label: $t('scope'),
},
{ width: 100, name: 'type', label: $t('className'), format: Formater.none() },
{ width: 100, name: 'resource', label: $t('resource') },
{
width: 100,
name: 'aliases',
label: $t('aliases'),
format: (aliases) => {
aliases = aliases || [];
let result = '';
for (const aliase of aliases) {
result += aliase + '<br/>';
}
return result;
},
},
{
width: 100,
name: 'dependencies',
label: $t('dependencies'),
format: (dependencies) => {
dependencies = dependencies || [];
let result = '';
for (const dependency of dependencies) {
result += dependency + '<br/>';
}
return result;
},
},
],
},
}"
></w-grid> ></w-grid>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">

Loading…
Cancel
Save