|
@@ -1,42 +1,60 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div>
|
|
<div>
|
|
|
<PlusPage
|
|
<PlusPage
|
|
|
- :columns="tableConfig"
|
|
|
|
|
- :request="getList"
|
|
|
|
|
- :before-search-submit="handleBeforeSearch"
|
|
|
|
|
- :is-card="true"
|
|
|
|
|
- :table="{
|
|
|
|
|
- onSortChange: handleSortChange,
|
|
|
|
|
|
|
+ :columns="tableConfig"
|
|
|
|
|
+ :request="getList"
|
|
|
|
|
+ :before-search-submit="handleBeforeSearch"
|
|
|
|
|
+ :is-card="true"
|
|
|
|
|
+ :table="{
|
|
|
isSelection: true,
|
|
isSelection: true,
|
|
|
actionBar: { buttons, type: 'button', width: 240 },
|
|
actionBar: { buttons, type: 'button', width: 240 },
|
|
|
- adaptive: { offsetBottom: 50 }
|
|
|
|
|
|
|
+ adaptive: { offsetBottom: 50 },
|
|
|
|
|
+ onSortChange: handleSortChange,
|
|
|
|
|
+ onSelectionChange: handleSelect,
|
|
|
}"
|
|
}"
|
|
|
- :defaultPageInfo="{ page: 1, pageSize: 10 }"
|
|
|
|
|
- :defaultPageSizeList="[10, 20, 50, 100]"
|
|
|
|
|
|
|
+ :defaultPageInfo="{ page: 1, pageSize: 10 }"
|
|
|
|
|
+ :defaultPageSizeList="[10, 20, 50, 100]"
|
|
|
>
|
|
>
|
|
|
|
|
+ <template #table-title>
|
|
|
|
|
+ <el-row class="button-row">
|
|
|
|
|
+ <el-button type="primary" @click="handleCreate"> 添加</el-button>
|
|
|
|
|
+ <el-button type="danger" @click="handleBatchDelete"> 批量删除</el-button>
|
|
|
|
|
+ </el-row>
|
|
|
|
|
+ </template>
|
|
|
<template #table-toolbar>
|
|
<template #table-toolbar>
|
|
|
<ExportView
|
|
<ExportView
|
|
|
- title="导出"
|
|
|
|
|
- url="''"
|
|
|
|
|
- file-name="订单列表"
|
|
|
|
|
- :query-params="{}"
|
|
|
|
|
|
|
+ title="导出"
|
|
|
|
|
+ url="''"
|
|
|
|
|
+ file-name="订单列表"
|
|
|
|
|
+ :query-params="{}"
|
|
|
/>
|
|
/>
|
|
|
</template>
|
|
</template>
|
|
|
</PlusPage>
|
|
</PlusPage>
|
|
|
|
|
+ <!-- 弹窗编辑 -->
|
|
|
|
|
+ <PlusDialogForm
|
|
|
|
|
+ v-model:visible="visible"
|
|
|
|
|
+ @change="handleChange"
|
|
|
|
|
+ @confirm="handleSubmit"
|
|
|
|
|
+ @submit-error="handleSubmitError"
|
|
|
|
|
+ @reset="handleReset"
|
|
|
|
|
+ :form="{ columns, labelPosition: 'top', rules, rowProps: {gutter: 20}, colProps: {span: 12} }"
|
|
|
|
|
+ :dialog="{ title: dialogTitle + '用户组', width: 800, confirmLoading }"
|
|
|
|
|
+ />
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
|
-import { computed, defineOptions, ref } from "vue";
|
|
|
|
|
|
|
+import {computed, defineOptions, reactive, ref, toRefs} from "vue";
|
|
|
import {
|
|
import {
|
|
|
type PageInfo,
|
|
type PageInfo,
|
|
|
type PlusColumn,
|
|
type PlusColumn,
|
|
|
|
|
+ type FieldValues,
|
|
|
|
|
+ PlusDialogForm,
|
|
|
PlusPage,
|
|
PlusPage,
|
|
|
useTable
|
|
useTable
|
|
|
} from "plus-pro-components";
|
|
} from "plus-pro-components";
|
|
|
-import { cloneDeep } from "lodash-es";
|
|
|
|
|
-import { number } from "echarts";
|
|
|
|
|
-
|
|
|
|
|
|
|
+import {cloneDeep} from "lodash-es";
|
|
|
|
|
+import {ElMessage} from "element-plus";
|
|
|
import ExportView from "@/components/ExportView/index.vue";
|
|
import ExportView from "@/components/ExportView/index.vue";
|
|
|
|
|
|
|
|
defineOptions({
|
|
defineOptions({
|
|
@@ -52,26 +70,26 @@ interface TableRow {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const getList = async (
|
|
const getList = async (
|
|
|
- query: PageInfo & {
|
|
|
|
|
- status?: string;
|
|
|
|
|
- name?: string;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ query: PageInfo & {
|
|
|
|
|
+ status?: string;
|
|
|
|
|
+ name?: string;
|
|
|
|
|
+ }
|
|
|
) => {
|
|
) => {
|
|
|
- const { page = 1, pageSize = 20, status, name } = query || {};
|
|
|
|
|
|
|
+ const {page = 1, pageSize = 20, status, name} = query || {};
|
|
|
const total = 100;
|
|
const total = 100;
|
|
|
- const List = Array.from({ length: total }).map((_, index) => {
|
|
|
|
|
|
|
+ const List = Array.from({length: total}).map((_, index) => {
|
|
|
return {
|
|
return {
|
|
|
id: index,
|
|
id: index,
|
|
|
name: index === 0 ? "name".repeat(99) : index + "name",
|
|
name: index === 0 ? "name".repeat(99) : index + "name",
|
|
|
status: String(index % 3),
|
|
status: String(index % 3),
|
|
|
tag:
|
|
tag:
|
|
|
- index === 1
|
|
|
|
|
- ? "success"
|
|
|
|
|
- : index === 2
|
|
|
|
|
- ? "warning"
|
|
|
|
|
- : index === 3
|
|
|
|
|
- ? "info"
|
|
|
|
|
- : "danger",
|
|
|
|
|
|
|
+ index === 1
|
|
|
|
|
+ ? "success"
|
|
|
|
|
+ : index === 2
|
|
|
|
|
+ ? "warning"
|
|
|
|
|
+ : index === 3
|
|
|
|
|
+ ? "info"
|
|
|
|
|
+ : "danger",
|
|
|
progress: 10,
|
|
progress: 10,
|
|
|
rate: index > 3 ? 2 : 3.5,
|
|
rate: index > 3 ? 2 : 3.5,
|
|
|
switch: index % 2 === 0,
|
|
switch: index % 2 === 0,
|
|
@@ -90,7 +108,7 @@ const getList = async (
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
const pageList = mockList.filter(
|
|
const pageList = mockList.filter(
|
|
|
- (_, index) => index < pageSize * page && index >= pageSize * (page - 1)
|
|
|
|
|
|
|
+ (_, index) => index < pageSize * page && index >= pageSize * (page - 1)
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// 等待2s
|
|
// 等待2s
|
|
@@ -100,7 +118,7 @@ const getList = async (
|
|
|
}, 500);
|
|
}, 500);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- return { data: pageList, success: true, total: mockList.length };
|
|
|
|
|
|
|
+ return {data: pageList, success: true, total: mockList.length};
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
// 搜索之前函数
|
|
// 搜索之前函数
|
|
@@ -114,6 +132,7 @@ const handleBeforeSearch = (values: any) => {
|
|
|
return params;
|
|
return params;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+// 排序函数
|
|
|
const handleSortChange = (val: object) => {
|
|
const handleSortChange = (val: object) => {
|
|
|
console.log("handleSortChange", val);
|
|
console.log("handleSortChange", val);
|
|
|
};
|
|
};
|
|
@@ -130,9 +149,9 @@ const disabledDate = (time: any) => {
|
|
|
// 当前日期 + one = 7天之后
|
|
// 当前日期 + one = 7天之后
|
|
|
const maxTime = choiceDate.value + one;
|
|
const maxTime = choiceDate.value + one;
|
|
|
return (
|
|
return (
|
|
|
- time.getTime() < minTime || time.getTime() > maxTime
|
|
|
|
|
- // 限制不能选择今天及以后
|
|
|
|
|
- // || time.getTime() + 1 * 24 * 3600 * 1000 > Date.now()
|
|
|
|
|
|
|
+ time.getTime() < minTime || time.getTime() > maxTime
|
|
|
|
|
+ // 限制不能选择今天及以后
|
|
|
|
|
+ // || time.getTime() + 1 * 24 * 3600 * 1000 > Date.now()
|
|
|
);
|
|
);
|
|
|
} else {
|
|
} else {
|
|
|
// 如果没有选择日期,就要限制不能选择今天及以后
|
|
// 如果没有选择日期,就要限制不能选择今天及以后
|
|
@@ -150,8 +169,10 @@ const calendarChange = (obj: any) => {
|
|
|
if (maxDate) choiceDate.value = null;
|
|
if (maxDate) choiceDate.value = null;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-const { buttons } = useTable<TableRow[]>();
|
|
|
|
|
|
|
+const dialogTitle = computed(() => (state.isCreate ? '新增' : '编辑'))
|
|
|
|
|
+const {buttons} = useTable<TableRow[]>();
|
|
|
|
|
|
|
|
|
|
+// 表格数据
|
|
|
const tableConfig: PlusColumn[] = [
|
|
const tableConfig: PlusColumn[] = [
|
|
|
{
|
|
{
|
|
|
label: "名称",
|
|
label: "名称",
|
|
@@ -193,7 +214,7 @@ const tableConfig: PlusColumn[] = [
|
|
|
prop: "tag",
|
|
prop: "tag",
|
|
|
valueType: "tag",
|
|
valueType: "tag",
|
|
|
fieldProps: (value: string) => {
|
|
fieldProps: (value: string) => {
|
|
|
- return { type: value };
|
|
|
|
|
|
|
+ return {type: value};
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
@@ -202,12 +223,12 @@ const tableConfig: PlusColumn[] = [
|
|
|
valueType: "progress",
|
|
valueType: "progress",
|
|
|
fieldProps: (value: number) => {
|
|
fieldProps: (value: number) => {
|
|
|
return value === 0
|
|
return value === 0
|
|
|
- ? { status: "exception" }
|
|
|
|
|
- : value > 5
|
|
|
|
|
- ? { status: "warning" }
|
|
|
|
|
- : value > 3
|
|
|
|
|
- ? { status: "success" }
|
|
|
|
|
- : { status: "exception" };
|
|
|
|
|
|
|
+ ? {status: "exception"}
|
|
|
|
|
+ : value > 5
|
|
|
|
|
+ ? {status: "warning"}
|
|
|
|
|
+ : value > 3
|
|
|
|
|
+ ? {status: "success"}
|
|
|
|
|
+ : {status: "exception"};
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
@@ -260,6 +281,279 @@ const tableConfig: PlusColumn[] = [
|
|
|
}
|
|
}
|
|
|
];
|
|
];
|
|
|
|
|
|
|
|
|
|
+/*--------------------表单--------------------*/
|
|
|
|
|
+
|
|
|
|
|
+const dialogVisible = ref(false);
|
|
|
|
|
+
|
|
|
|
|
+const state = reactive<FieldValues>({
|
|
|
|
|
+ status: '0',
|
|
|
|
|
+ name: '',
|
|
|
|
|
+ rate: 4,
|
|
|
|
|
+ isCreate: true,
|
|
|
|
|
+ progress: 100,
|
|
|
|
|
+ confirmLoading: false,
|
|
|
|
|
+ switch: true,
|
|
|
|
|
+ time: new Date().toString(),
|
|
|
|
|
+ img: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
|
|
|
|
|
+ query: {groupName: ''},
|
|
|
|
|
+ currentRow: {},
|
|
|
|
|
+ visible: false,
|
|
|
|
|
+ detailsVisible: false,
|
|
|
|
|
+ isBatch: false,
|
|
|
|
|
+ selectedIds: [],
|
|
|
|
|
+ form: {
|
|
|
|
|
+ groupName: '',
|
|
|
|
|
+ remark: '',
|
|
|
|
|
+ userGroupId: undefined
|
|
|
|
|
+ },
|
|
|
|
|
+ rules: {
|
|
|
|
|
+ name: [
|
|
|
|
|
+ {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请输入',
|
|
|
|
|
+ trigger: 'blur'
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+})
|
|
|
|
|
+
|
|
|
|
|
+const columns: PlusColumn[] = [
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '名称',
|
|
|
|
|
+ width: 120,
|
|
|
|
|
+ prop: 'name',
|
|
|
|
|
+ valueType: 'copy',
|
|
|
|
|
+ tooltip: '名称最多显示6个字符'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '状态',
|
|
|
|
|
+ width: 120,
|
|
|
|
|
+ prop: 'status',
|
|
|
|
|
+ valueType: 'select',
|
|
|
|
|
+ options: [
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '未解决',
|
|
|
|
|
+ value: '0',
|
|
|
|
|
+ color: 'red'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '已解决',
|
|
|
|
|
+ value: '1',
|
|
|
|
|
+ color: 'blue'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '解决中',
|
|
|
|
|
+ value: '2',
|
|
|
|
|
+ color: 'yellow'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '失败',
|
|
|
|
|
+ value: '3',
|
|
|
|
|
+ color: 'red'
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '标签',
|
|
|
|
|
+ width: 120,
|
|
|
|
|
+ prop: 'tag'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '执行进度',
|
|
|
|
|
+ width: 200,
|
|
|
|
|
+ prop: 'progress'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '评分',
|
|
|
|
|
+ width: 200,
|
|
|
|
|
+ prop: 'rate',
|
|
|
|
|
+ valueType: 'rate'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '是否显示',
|
|
|
|
|
+ width: 100,
|
|
|
|
|
+ prop: 'switch',
|
|
|
|
|
+ valueType: 'switch'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '图片',
|
|
|
|
|
+ prop: 'img',
|
|
|
|
|
+ width: 100,
|
|
|
|
|
+ valueType: 'img'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '时间',
|
|
|
|
|
+ prop: 'time',
|
|
|
|
|
+ valueType: 'date-picker'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '数量',
|
|
|
|
|
+ prop: 'number',
|
|
|
|
|
+ valueType: 'input-number',
|
|
|
|
|
+ fieldProps: {precision: 2, step: 2}
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '城市',
|
|
|
|
|
+ prop: 'city',
|
|
|
|
|
+ valueType: 'cascader',
|
|
|
|
|
+ options: [
|
|
|
|
|
+ {
|
|
|
|
|
+ value: '0',
|
|
|
|
|
+ label: '陕西',
|
|
|
|
|
+ children: [
|
|
|
|
|
+ {
|
|
|
|
|
+ value: '0-0',
|
|
|
|
|
+ label: '西安',
|
|
|
|
|
+ children: [
|
|
|
|
|
+ {
|
|
|
|
|
+ value: '0-0-0',
|
|
|
|
|
+ label: '新城区'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ value: '0-0-1',
|
|
|
|
|
+ label: '高新区'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ value: '0-0-2',
|
|
|
|
|
+ label: '灞桥区'
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ value: '1',
|
|
|
|
|
+ label: '山西',
|
|
|
|
|
+ children: [
|
|
|
|
|
+ {
|
|
|
|
|
+ value: '1-0',
|
|
|
|
|
+ label: '太原',
|
|
|
|
|
+ children: [
|
|
|
|
|
+ {
|
|
|
|
|
+ value: '1-0-0',
|
|
|
|
|
+ label: '小店区'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ value: '1-0-1',
|
|
|
|
|
+ label: '古交市'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ value: '1-0-2',
|
|
|
|
|
+ label: '万柏林区'
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '地区',
|
|
|
|
|
+ prop: 'place',
|
|
|
|
|
+ tooltip: '请精确到门牌号',
|
|
|
|
|
+ fieldProps: {
|
|
|
|
|
+ placeholder: '请精确到门牌号'
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '要求',
|
|
|
|
|
+ prop: 'demand',
|
|
|
|
|
+ valueType: 'checkbox',
|
|
|
|
|
+ options: [
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '四六级',
|
|
|
|
|
+ value: '0'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '计算机二级证书',
|
|
|
|
|
+ value: '1'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '普通话证书',
|
|
|
|
|
+ value: '2'
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '梦想',
|
|
|
|
|
+ prop: 'gift',
|
|
|
|
|
+ valueType: 'radio',
|
|
|
|
|
+ options: [
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '诗',
|
|
|
|
|
+ value: '0'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '远方',
|
|
|
|
|
+ value: '1'
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '到期时间',
|
|
|
|
|
+ prop: 'endTime',
|
|
|
|
|
+ valueType: 'date-picker',
|
|
|
|
|
+ fieldProps: {
|
|
|
|
|
+ type: 'datetimerange',
|
|
|
|
|
+ startPlaceholder: '请选择开始时间',
|
|
|
|
|
+ endPlaceholder: '请选择结束时间'
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '说明',
|
|
|
|
|
+ prop: 'desc',
|
|
|
|
|
+ valueType: 'textarea',
|
|
|
|
|
+ fieldProps: {
|
|
|
|
|
+ maxlength: 10,
|
|
|
|
|
+ showWordLimit: true,
|
|
|
|
|
+ autosize: {minRows: 2, maxRows: 4}
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+]
|
|
|
|
|
+
|
|
|
|
|
+// 创建
|
|
|
|
|
+const handleCreate = (): void => {
|
|
|
|
|
+ state.currentRow = {}
|
|
|
|
|
+ state.form = {
|
|
|
|
|
+ groupName: '',
|
|
|
|
|
+ remark: '',
|
|
|
|
|
+ userGroupId: undefined
|
|
|
|
|
+ }
|
|
|
|
|
+ state.isCreate = true
|
|
|
|
|
+ state.visible = true
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 批量删除
|
|
|
|
|
+const handleBatchDelete = async () => {
|
|
|
|
|
+ console.log('批量删除')
|
|
|
|
|
+ if (!state.selectedIds.length) {
|
|
|
|
|
+ ElMessage.warning('请选择数据!')
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ console.log(state.selectedIds)
|
|
|
|
|
+}
|
|
|
|
|
+// 选择
|
|
|
|
|
+const handleSelect = (data: any) => {
|
|
|
|
|
+ state.selectedIds = [...data].map(item => item.id)
|
|
|
|
|
+}
|
|
|
|
|
+const handleChange = (values: FieldValues) => {
|
|
|
|
|
+ console.log(values, 'change')
|
|
|
|
|
+}
|
|
|
|
|
+const handleSubmit = (values: FieldValues) => {
|
|
|
|
|
+ console.log(values, 'Submit')
|
|
|
|
|
+ confirmLoading.value = true
|
|
|
|
|
+ setTimeout(() => {
|
|
|
|
|
+ confirmLoading.value = false
|
|
|
|
|
+ visible.value = false
|
|
|
|
|
+ }, 2000)
|
|
|
|
|
+}
|
|
|
|
|
+const handleSubmitError = (err: any) => {
|
|
|
|
|
+ console.log(err, 'err')
|
|
|
|
|
+}
|
|
|
|
|
+const handleReset = () => {
|
|
|
|
|
+ console.log('handleReset')
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
buttons.value = [
|
|
buttons.value = [
|
|
|
{
|
|
{
|
|
|
// 查看
|
|
// 查看
|
|
@@ -287,7 +581,7 @@ buttons.value = [
|
|
|
text: "删除",
|
|
text: "删除",
|
|
|
code: "delete",
|
|
code: "delete",
|
|
|
// props v0.1.16 版本新增计算属性支持
|
|
// props v0.1.16 版本新增计算属性支持
|
|
|
- props: computed(() => ({ type: "danger" })),
|
|
|
|
|
|
|
+ props: computed(() => ({type: "danger"})),
|
|
|
confirm: {
|
|
confirm: {
|
|
|
options: {
|
|
options: {
|
|
|
draggable: true,
|
|
draggable: true,
|
|
@@ -296,4 +590,6 @@ buttons.value = [
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
];
|
|
];
|
|
|
|
|
+
|
|
|
|
|
+const {form, confirmLoading, rules, currentRow, visible, detailsVisible} = toRefs(state)
|
|
|
</script>
|
|
</script>
|