Merge branch 'dev' of github.com:jetlinks/jetlinks-ui-vue into dev
This commit is contained in:
commit
0a80fd716c
|
@ -43,7 +43,7 @@
|
|||
>
|
||||
<template #bodyCell="{column, record}">
|
||||
<span v-if="column.dataIndex === 'value'">
|
||||
{{ record.range === 'true' ? record.value?.join('-') : record.value }}
|
||||
{{ record.range === true ? record.value?.join('-') : record.value }}
|
||||
</span>
|
||||
</template>
|
||||
</j-table>
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
ref="tableRef"
|
||||
>
|
||||
<template #range="{data}">
|
||||
{{ data.record.range === 'true' ? '范围值' : '固定值'}}
|
||||
{{ data.record.range === true ? '范围值' : '固定值'}}
|
||||
</template>
|
||||
<template #value="{data}">
|
||||
{{ data.record.range === 'true' ? data.record.value?.join('-') : data.record.value }}
|
||||
{{ data.record.range === true ? data.record.value?.join('-') : data.record.value }}
|
||||
</template>
|
||||
<template #action="{data}">
|
||||
<j-button
|
||||
|
@ -92,9 +92,9 @@ const newColumns = computed(() => {
|
|||
components: {
|
||||
props: {
|
||||
trueText: '范围值',
|
||||
trueValue: 'true',
|
||||
trueValue: true,
|
||||
falseText: '固定值',
|
||||
falseValue: 'false',
|
||||
falseValue: false,
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
@ -59,26 +59,26 @@ const formData = reactive<{
|
|||
value: ValueType;
|
||||
rangeValue: ValueType;
|
||||
}>({
|
||||
value: props.value.range === 'false' ? props.value.value : undefined,
|
||||
rangeValue: props.value.range === 'true'
|
||||
? props.value.value || [undefined, undefined]
|
||||
value: props.value?.range === false ? props.value?.value : undefined,
|
||||
rangeValue: props.value?.range === true
|
||||
? props.value?.value || [undefined, undefined]
|
||||
: [undefined, undefined],
|
||||
});
|
||||
|
||||
const formRef = ref()
|
||||
|
||||
const showText = computed(() => {
|
||||
if (props.value.range === 'false') {
|
||||
return props.value.value || ''
|
||||
if (props.value.range === false) {
|
||||
return props.value?.value || ''
|
||||
} else {
|
||||
return props.value.value?.[0] ? props.value.value.join('-') : ''
|
||||
return props.value?.value?.[0] ? props.value.value.join('-') : ''
|
||||
}
|
||||
})
|
||||
|
||||
const confirm = () => {
|
||||
return new Promise((resolve, reject) => {
|
||||
formRef.value.validate().then(() => {
|
||||
const value = props.value.range === 'true' ? formData.rangeValue : formData.value
|
||||
const value = props.value.range === true ? formData.rangeValue : formData.value
|
||||
emit('update:value', {
|
||||
...props.value,
|
||||
value: value
|
||||
|
@ -93,7 +93,7 @@ const confirm = () => {
|
|||
|
||||
watch(() => props.value.range,(value, oldValue) => {
|
||||
if (value !== oldValue ) {
|
||||
if (value === 'false') {
|
||||
if (value === false) {
|
||||
formData.value = undefined
|
||||
} else {
|
||||
formData.rangeValue = [undefined, undefined]
|
||||
|
|
|
@ -35,6 +35,7 @@ const useMetadata = (type: 'device' | 'product', key?: MetadataType, ): {
|
|||
const productMetadata: any = JSON.parse(instanceStore.current.productMetadata)
|
||||
const metaArray = key ? productMetadata[key] : []
|
||||
const productIndexKeys = metaArray?.map((item:any, index: number) => index) || []
|
||||
productNoEdit.value.ids = metaArray?.map((item: any) => item.id) || []
|
||||
productNoEdit.value.id = productIndexKeys
|
||||
productNoEdit.value.name = productIndexKeys
|
||||
if (key === 'properties') {
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
<template>
|
||||
<div class='device-detail-metadata' style="position: relative;">
|
||||
<div class="tips">
|
||||
<j-tooltip :title="instanceStore.detail?.independentMetadata && type === 'device'
|
||||
? '该设备已脱离产品物模型,修改产品物模型对该设备无影响'
|
||||
: '设备会默认继承产品的物模型,修改设备物模型后将脱离产品物模型'">
|
||||
<div class="ellipsis" style='color: #999;'>
|
||||
<AIcon type="InfoCircleOutlined" style="margin-right: 3px" />
|
||||
{{
|
||||
instanceStore.detail?.independentMetadata && type === 'device'
|
||||
? '该设备已脱离产品物模型,修改产品物模型对该设备无影响'
|
||||
: '设备会默认继承产品的物模型,修改设备物模型后将脱离产品物模型'
|
||||
}}
|
||||
</div>
|
||||
</j-tooltip>
|
||||
</div>
|
||||
<!-- <div class="tips">-->
|
||||
<!-- <j-tooltip :title="instanceStore.detail?.independentMetadata && type === 'device'-->
|
||||
<!-- ? '该设备已脱离产品物模型,修改产品物模型对该设备无影响'-->
|
||||
<!-- : '设备会默认继承产品的物模型,修改设备物模型后将脱离产品物模型'">-->
|
||||
<!-- <div class="ellipsis" style='color: #999;'>-->
|
||||
<!-- <AIcon type="InfoCircleOutlined" style="margin-right: 3px" />-->
|
||||
<!-- {{-->
|
||||
<!-- instanceStore.detail?.independentMetadata && type === 'device'-->
|
||||
<!-- ? '该设备已脱离产品物模型,修改产品物模型对该设备无影响'-->
|
||||
<!-- : '设备会默认继承产品的物模型,修改设备物模型后将脱离产品物模型'-->
|
||||
<!-- }}-->
|
||||
<!-- </div>-->
|
||||
<!-- </j-tooltip>-->
|
||||
<!-- </div>-->
|
||||
<j-tabs class="metadataNav" destroyInactiveTabPane type="card">
|
||||
<template #rightExtra>
|
||||
<j-space>
|
||||
|
|
|
@ -2,10 +2,16 @@ import { saveProductMetadata } from "@/api/device/product";
|
|||
import { saveMetadata } from "@/api/device/instance";
|
||||
import type { DeviceInstance } from "../../Instance/typings";
|
||||
import type { DeviceMetadata, MetadataItem, MetadataType, ProductItem } from "../../Product/typings";
|
||||
import { differenceBy } from "lodash-es";
|
||||
|
||||
const filterProductMetadata = (data: any[], productMetaData: any[]) => {
|
||||
const ids = productMetaData.map((item: any) => item.id)
|
||||
const idsSet = new Set(ids)
|
||||
return data.filter((a) => !idsSet.has(a.id))
|
||||
}
|
||||
/**
|
||||
* 更新物模型
|
||||
* @param type 物模型类型 events
|
||||
* @param type 物模型类型 "events" | "functions" | "properties" | "tags"
|
||||
* @param item 物模型数据 【{a},{b},{c}】
|
||||
// * @param target product、device
|
||||
* @param data product 、device [{event:[1,2,3]]
|
||||
|
@ -21,25 +27,29 @@ import type { DeviceMetadata, MetadataItem, MetadataType, ProductItem } from "..
|
|||
): ProductItem | DeviceInstance => {
|
||||
if (!data) return data;
|
||||
const metadata = JSON.parse(data.metadata || '{}') as DeviceMetadata;
|
||||
const config = (metadata[type] || []) as MetadataItem[];
|
||||
if (item.length > 0) {
|
||||
item.forEach((i) => {
|
||||
const index = config.findIndex((c) => c.id === i.id);
|
||||
if (index > -1) {
|
||||
config[index] = i;
|
||||
// onEvent?.('update', i);
|
||||
} else {
|
||||
config.push(i);
|
||||
// onEvent?.('add', i);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
console.warn('未触发物模型修改');
|
||||
let productMetaData
|
||||
|
||||
if ((data as DeviceInstance).productMetadata) {
|
||||
productMetaData = JSON.parse((data as DeviceInstance).productMetadata)
|
||||
}
|
||||
console.log('updateMetadata', config, type)
|
||||
// @ts-ignore
|
||||
// metadata[type] = config.sort((a, b) => b?.sortsIndex - a?.sortsIndex);
|
||||
metadata[type] = item.sort((a, b) => b?.sortsIndex - a?.sortsIndex);
|
||||
|
||||
if (productMetaData) {
|
||||
if (productMetaData.properties && productMetaData.properties.length) {
|
||||
metadata.properties = filterProductMetadata(metadata.properties, productMetaData.properties)
|
||||
}
|
||||
if (productMetaData.functions && productMetaData.functions.length) {
|
||||
metadata.functions = filterProductMetadata(metadata.functions, productMetaData.functions)
|
||||
}
|
||||
if (productMetaData.events && productMetaData.events.length) {
|
||||
metadata.events = filterProductMetadata(metadata.events, productMetaData.events)
|
||||
}
|
||||
if (productMetaData.tags && productMetaData.tags.length) {
|
||||
metadata.tags = filterProductMetadata(metadata.tags, productMetaData.tags)
|
||||
}
|
||||
}
|
||||
|
||||
console.log(metadata)
|
||||
metadata[type] = metadata[type].sort((a, b) => b?.sortsIndex - a?.sortsIndex) as any[]
|
||||
console.log('updateMetadata',metadata)
|
||||
data.metadata = JSON.stringify(metadata);
|
||||
onEvent?.(data.metadata)
|
||||
|
|
|
@ -33,7 +33,6 @@
|
|||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #state="slotProps">
|
||||
|
@ -68,7 +67,6 @@ import Result from './Result.vue';
|
|||
import { queryNoPagingPost } from '@/api/device/product';
|
||||
|
||||
const defaultParams = {
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'registerTime', order: 'desc' }],
|
||||
terms: [
|
||||
{
|
||||
|
|
|
@ -11,12 +11,10 @@
|
|||
:request='queryUnbounded'
|
||||
model='TABLE'
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'createTime', order: 'desc' }],
|
||||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
:rowSelection="{
|
||||
type: 'radio',
|
||||
|
|
|
@ -104,6 +104,7 @@ import {
|
|||
edit,
|
||||
} from '@/api/iot-card/cardManagement';
|
||||
import { onlyMessage } from '@/utils/comm';
|
||||
import { OperatorList, TypeList } from '@/views/iot-card/data';
|
||||
|
||||
const emit = defineEmits(['change']);
|
||||
const props = defineProps({
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
required
|
||||
>
|
||||
<PlatformType
|
||||
:disabled="false"
|
||||
:disabled="showDisabled"
|
||||
:model="'singular'"
|
||||
:itemStyle="{
|
||||
display: 'flex',
|
||||
|
@ -41,18 +41,21 @@
|
|||
<j-form-item label="App ID" name="appId">
|
||||
<j-input
|
||||
v-model:value="form.appId"
|
||||
:disabled="showDisabled"
|
||||
placeholder="请输入App ID"
|
||||
/>
|
||||
</j-form-item>
|
||||
<j-form-item label="Password" name="passWord">
|
||||
<j-input-password
|
||||
v-model:value="form.passWord"
|
||||
:disabled="showDisabled"
|
||||
placeholder="请输入密码"
|
||||
/>
|
||||
</j-form-item>
|
||||
<j-form-item label="接口地址" name="apiAddr">
|
||||
<j-input
|
||||
v-model:value="form.apiAddr"
|
||||
:disabled="showDisabled"
|
||||
placeholder="请输入接口地址"
|
||||
/>
|
||||
</j-form-item>
|
||||
|
@ -62,18 +65,21 @@
|
|||
<j-form-item label="用户id" name="userId">
|
||||
<j-input
|
||||
v-model:value="form.userId"
|
||||
:disabled="showDisabled"
|
||||
placeholder="请输入用户id"
|
||||
/>
|
||||
</j-form-item>
|
||||
<j-form-item label="密码" name="passWord">
|
||||
<j-input-password
|
||||
v-model:value="form.passWord"
|
||||
:disabled="showDisabled"
|
||||
placeholder="请输入密码"
|
||||
/>
|
||||
</j-form-item>
|
||||
<j-form-item label="secretKey" name="secretKey">
|
||||
<j-input
|
||||
v-model:value="form.secretKey"
|
||||
:disabled="showDisabled"
|
||||
placeholder="请输入secretKey"
|
||||
/>
|
||||
</j-form-item>
|
||||
|
@ -83,18 +89,21 @@
|
|||
<j-form-item label="App ID" name="appId">
|
||||
<j-input
|
||||
v-model:value="form.appId"
|
||||
:disabled="showDisabled"
|
||||
placeholder="请输入App ID"
|
||||
/>
|
||||
</j-form-item>
|
||||
<j-form-item label="App Secret" name="appSecret">
|
||||
<j-input
|
||||
v-model:value="form.appSecret"
|
||||
:disabled="showDisabled"
|
||||
placeholder="请输入App Secret"
|
||||
/>
|
||||
</j-form-item>
|
||||
<j-form-item label="创建者ID" name="openId">
|
||||
<j-input
|
||||
v-model:value="form.openId"
|
||||
:disabled="showDisabled"
|
||||
placeholder="请输入创建者ID"
|
||||
/>
|
||||
</j-form-item>
|
||||
|
@ -182,6 +191,10 @@ const rules = {
|
|||
explain: [{ required: false, max: 200, message: '最多可输入200个字符' }],
|
||||
};
|
||||
|
||||
const showDisabled = computed(() => {
|
||||
return route.params.id !== ':id'
|
||||
})
|
||||
|
||||
const getDetail = async () => {
|
||||
console.log(route.params)
|
||||
if (route.params.id === ':id') return;
|
||||
|
|
|
@ -9,12 +9,10 @@
|
|||
:request="queryRechargeList"
|
||||
model="TABLE"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'createTime', order: 'desc' }],
|
||||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
:params="params"
|
||||
>
|
||||
|
|
|
@ -12,12 +12,10 @@
|
|||
:columns="columns"
|
||||
:request="queryList"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'time', order: 'desc' }],
|
||||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
:params="params"
|
||||
:model="'TABLE'"
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
:columns="columns"
|
||||
:request="CascadeApi.queryChannelList"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'name', order: 'desc' }],
|
||||
terms: [
|
||||
{
|
||||
|
@ -48,7 +47,6 @@
|
|||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #headerTitle>
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
:columns="columns"
|
||||
:request="(e:any) => CascadeApi.queryBindChannel(route?.query.id as string, e)"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'name', order: 'desc' }],
|
||||
}"
|
||||
:params="params"
|
||||
|
@ -19,7 +18,6 @@
|
|||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #headerTitle>
|
||||
|
|
|
@ -31,13 +31,11 @@
|
|||
:columns="columns"
|
||||
:request="(e:any) => ChannelApi.list(e, route?.query.id as string)"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'modifyTime', order: 'desc' }],
|
||||
}"
|
||||
:params="params"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #headerTitle>
|
||||
|
|
|
@ -44,7 +44,6 @@
|
|||
:columns="columns"
|
||||
:request="deviceApi.list"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'createTime', order: 'desc' }],
|
||||
}"
|
||||
:params="params"
|
||||
|
@ -60,7 +59,6 @@
|
|||
:alertRender="false"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #channelNumber="slotProps">
|
||||
|
@ -159,6 +157,7 @@ const columns = [
|
|||
title: 'ID',
|
||||
dataIndex: 'id',
|
||||
key: 'id',
|
||||
ellipsis:true,
|
||||
search: {
|
||||
type: 'string',
|
||||
defaultTermType: 'eq',
|
||||
|
@ -168,6 +167,7 @@ const columns = [
|
|||
title: '名称',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
ellipsis:true,
|
||||
search: {
|
||||
type: 'string',
|
||||
first: true,
|
||||
|
@ -177,6 +177,7 @@ const columns = [
|
|||
title: '通道数量',
|
||||
dataIndex: 'channelNumber',
|
||||
key: 'channelNumber',
|
||||
width:100,
|
||||
scopedSlots: true,
|
||||
},
|
||||
{
|
||||
|
@ -194,6 +195,7 @@ const columns = [
|
|||
return v;
|
||||
},
|
||||
},
|
||||
width:80
|
||||
},
|
||||
];
|
||||
const params = ref<Record<string, any>>({});
|
||||
|
|
|
@ -974,7 +974,7 @@ const formRules = {
|
|||
}
|
||||
],
|
||||
code: [{ required: true, message: '请选择模板'}],
|
||||
signName: [{ required: true, message: '请输入签名' }],
|
||||
signName: [{ required: true, message: '请选择签名' }],
|
||||
phoneNumber: [
|
||||
{ max: 64, message: '最多可输入64个字符' },
|
||||
{
|
||||
|
|
|
@ -9,14 +9,10 @@
|
|||
:columns="columns"
|
||||
:request="(e:any) => templateApi.getHistory(e, data.id)"
|
||||
:defaultParams="{
|
||||
pageSize: 5,
|
||||
sorts: [{ name: 'notifyTime', order: 'desc' }],
|
||||
terms: [{ column: 'notifyType$IN', value: data.type }],
|
||||
}"
|
||||
:params="params"
|
||||
:pagination="{
|
||||
pageSizeOptions: ['5', '10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #notifyTime="slotProps">
|
||||
{{ moment(slotProps.notifyTime).format('YYYY-MM-DD HH:mm:ss') }}
|
||||
|
|
|
@ -430,6 +430,9 @@ const selectChange = () => {
|
|||
xData.push(item.data.timeString);
|
||||
sData.push(item.data.value);
|
||||
});
|
||||
const maxY = sData.sort((a,b)=>{
|
||||
return b-a
|
||||
})[0]
|
||||
alarmStatisticsOption.value = {
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
|
@ -448,7 +451,7 @@ const selectChange = () => {
|
|||
grid: {
|
||||
top: '2%',
|
||||
bottom: '5%',
|
||||
left: '24px',
|
||||
left: maxY > 10000 ? '50px' : '40px',
|
||||
right: '48px',
|
||||
},
|
||||
series: [
|
||||
|
|
|
@ -14,12 +14,10 @@
|
|||
model="TABLE"
|
||||
:params="queryParams"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'createTime', order: 'desc' }],
|
||||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #headerTitle>
|
||||
|
|
|
@ -11,6 +11,10 @@
|
|||
ref="tableRef"
|
||||
:request="table.requestFun"
|
||||
:gridColumn="2"
|
||||
:scroll="{
|
||||
x:true,
|
||||
y:610,
|
||||
}"
|
||||
:params="queryParams"
|
||||
:rowSelection="{
|
||||
selectedRowKeys: tableData._selectedRowKeys,
|
||||
|
@ -613,6 +617,7 @@ watch(
|
|||
|
||||
<style lang="less" scoped>
|
||||
.product-container {
|
||||
:deep(.ant-table td) { white-space: nowrap; }
|
||||
:deep(.ant-table-tbody) {
|
||||
.ant-table-cell {
|
||||
.ant-space-item {
|
||||
|
|
|
@ -23,16 +23,16 @@
|
|||
:params="queryParams"
|
||||
:rowSelection="{
|
||||
selectedRowKeys: table._selectedRowKeys,
|
||||
onChange: table.onSelectChange,
|
||||
onSelect: table.onSelectChange,
|
||||
onSelectNone:() => table._selectedRowKeys = [],
|
||||
onSelectAll:selectAll
|
||||
}"
|
||||
model="TABLE"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'createTime', order: 'desc' }],
|
||||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
/>
|
||||
</div>
|
||||
|
@ -55,15 +55,15 @@ const props = defineProps<{
|
|||
// 弹窗相关
|
||||
const loading = ref(false);
|
||||
const confirm = () => {
|
||||
if (department.crossPageKeys.length && props.parentId) {
|
||||
if (table._selectedRowKeys && props.parentId) {
|
||||
loading.value = true;
|
||||
bindUser_api(props.parentId, department.crossPageKeys)
|
||||
bindUser_api(props.parentId,table._selectedRowKeys)
|
||||
.then(() => {
|
||||
onlyMessage('操作成功');
|
||||
emits('confirm');
|
||||
emits('update:visible', false);
|
||||
// table._selectedRowKeys = [];
|
||||
department.setSelectedKeys([]);
|
||||
table._selectedRowKeys = []
|
||||
})
|
||||
.finally(() => (loading.value = false));
|
||||
} else {
|
||||
|
@ -102,7 +102,6 @@ const table = reactive({
|
|||
_selectedRowKeys: [] as string[],
|
||||
|
||||
requestFun: async (oParams: any) => {
|
||||
table.cancelSelect();
|
||||
if (props.parentId) {
|
||||
const params = {
|
||||
...oParams,
|
||||
|
@ -138,25 +137,45 @@ const table = reactive({
|
|||
};
|
||||
}
|
||||
},
|
||||
onSelectChange: (keys: string[]) => {
|
||||
onSelectChange: (row: any[],selected:Boolean) => {
|
||||
// console.log('手动选择改变: ', keys);
|
||||
// table._selectedRowKeys = keys;
|
||||
department.setSelectedKeys(keys, keys.length ? 'concat' : '');
|
||||
},
|
||||
cancelSelect: () => {
|
||||
// console.log('分页会 取消选择', 1111111111);
|
||||
// table._selectedRowKeys = [];
|
||||
department.setSelectedKeys([], 'concat');
|
||||
// department.setSelectedKeys(keys, keys.length ? 'concat' : '');
|
||||
const arr = new Set(table._selectedRowKeys)
|
||||
if(selected){
|
||||
arr.add(row.id)
|
||||
}else{
|
||||
arr.delete(row.id)
|
||||
}
|
||||
table._selectedRowKeys = [...arr.values()];
|
||||
},
|
||||
});
|
||||
const selectAll = (selected: Boolean, selectedRows: any,changeRows:any) => {
|
||||
if (selected) {
|
||||
changeRows.map((i: any) => {
|
||||
if (!table._selectedRowKeys.includes(i.id)) {
|
||||
table._selectedRowKeys.push(i.id)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
const arr = changeRows.map((item: any) => item.id)
|
||||
const _ids: string[] = [];
|
||||
table._selectedRowKeys.map((i: any) => {
|
||||
if (!arr.includes(i)) {
|
||||
_ids.push(i)
|
||||
}
|
||||
})
|
||||
table._selectedRowKeys = _ids;
|
||||
}
|
||||
}
|
||||
|
||||
watch(
|
||||
() => department.crossPageKeys,
|
||||
(val: string[]) => {
|
||||
// console.log('crossPageKeys: ', val);
|
||||
table._selectedRowKeys = val;
|
||||
},
|
||||
);
|
||||
// watch(
|
||||
// () => department.crossPageKeys,
|
||||
// (val: string[]) => {
|
||||
// // console.log('crossPageKeys: ', val);
|
||||
// table._selectedRowKeys = val;
|
||||
// },
|
||||
// );
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
|
|
@ -17,12 +17,8 @@
|
|||
onChange: table.onSelectChange,
|
||||
}"
|
||||
model="TABLE"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #headerTitle>
|
||||
|
|
|
@ -261,7 +261,7 @@ const table = reactive({
|
|||
|
||||
const pager = reactive({
|
||||
current: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 12,
|
||||
total: table.data.length,
|
||||
});
|
||||
const pageArr = computed(() => {
|
||||
|
|
|
@ -14,12 +14,10 @@
|
|||
model="TABLE"
|
||||
:params="queryParams"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'id', order: 'asc' }],
|
||||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #headerTitle>
|
||||
|
|
|
@ -14,12 +14,10 @@
|
|||
model="TABLE"
|
||||
:params="queryParams"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'createTime', order: 'desc' }],
|
||||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #headerTitle>
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
model="TABLE"
|
||||
:params="queryParams"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [
|
||||
{ name: 'createTime', order: 'desc' },
|
||||
{ name: 'id', order: 'desc' },
|
||||
|
@ -22,7 +21,6 @@
|
|||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #headerTitle>
|
||||
|
|
|
@ -14,12 +14,10 @@
|
|||
model="TABLE"
|
||||
:params="queryParams"
|
||||
:defaultParams="{
|
||||
pageSize: 10,
|
||||
sorts: [{ name: 'createTime', order: 'desc' }],
|
||||
}"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
pageSizeOptions: ['10', '20', '50', '100'],
|
||||
}"
|
||||
>
|
||||
<template #headerTitle>
|
||||
|
|
Loading…
Reference in New Issue