|
@@ -9,8 +9,8 @@
|
|
|
</BasicTable>
|
|
|
</div>
|
|
|
</template>
|
|
|
-<script lang="ts">
|
|
|
- import { defineComponent, ref } from 'vue';
|
|
|
+<script lang="ts" setup>
|
|
|
+ import { ref } from 'vue';
|
|
|
import {
|
|
|
BasicTable,
|
|
|
useTable,
|
|
@@ -18,13 +18,13 @@
|
|
|
BasicColumn,
|
|
|
ActionItem,
|
|
|
EditRecordRow,
|
|
|
- } from '/@/components/Table';
|
|
|
- import { optionsListApi } from '/@/api/demo/select';
|
|
|
+ } from '@/components/Table';
|
|
|
+ import { optionsListApi } from '@/api/demo/select';
|
|
|
|
|
|
- import { demoListApi } from '/@/api/demo/table';
|
|
|
- import { treeOptionsListApi } from '/@/api/demo/tree';
|
|
|
+ import { demoListApi } from '@/api/demo/table';
|
|
|
+ import { treeOptionsListApi } from '@/api/demo/tree';
|
|
|
import { cloneDeep } from 'lodash-es';
|
|
|
- import { useMessage } from '/@/hooks/web/useMessage';
|
|
|
+ import { useMessage } from '@/hooks/web/useMessage';
|
|
|
|
|
|
const columns: BasicColumn[] = [
|
|
|
{
|
|
@@ -221,102 +221,91 @@
|
|
|
width: 200,
|
|
|
},
|
|
|
];
|
|
|
- export default defineComponent({
|
|
|
- components: { BasicTable, TableAction },
|
|
|
- setup() {
|
|
|
- const { createMessage: msg } = useMessage();
|
|
|
- const currentEditKeyRef = ref('');
|
|
|
- const [registerTable] = useTable({
|
|
|
- title: '可编辑行示例',
|
|
|
- titleHelpMessage: [
|
|
|
- '本例中修改[数字输入框]这一列时,同一行的[远程下拉]列的当前编辑数据也会同步发生改变',
|
|
|
- ],
|
|
|
- api: demoListApi,
|
|
|
- columns: columns,
|
|
|
- showIndexColumn: false,
|
|
|
- showTableSetting: true,
|
|
|
- tableSetting: { fullScreen: true },
|
|
|
- actionColumn: {
|
|
|
- width: 160,
|
|
|
- title: 'Action',
|
|
|
- dataIndex: 'action',
|
|
|
- // slots: { customRender: 'action' },
|
|
|
- },
|
|
|
- });
|
|
|
|
|
|
- function handleEdit(record: EditRecordRow) {
|
|
|
- currentEditKeyRef.value = record.key;
|
|
|
- record.onEdit?.(true);
|
|
|
- }
|
|
|
+ const { createMessage: msg } = useMessage();
|
|
|
+ const currentEditKeyRef = ref('');
|
|
|
+ const [registerTable] = useTable({
|
|
|
+ title: '可编辑行示例',
|
|
|
+ titleHelpMessage: [
|
|
|
+ '本例中修改[数字输入框]这一列时,同一行的[远程下拉]列的当前编辑数据也会同步发生改变',
|
|
|
+ ],
|
|
|
+ api: demoListApi,
|
|
|
+ columns: columns,
|
|
|
+ showIndexColumn: false,
|
|
|
+ showTableSetting: true,
|
|
|
+ tableSetting: { fullScreen: true },
|
|
|
+ actionColumn: {
|
|
|
+ width: 160,
|
|
|
+ title: 'Action',
|
|
|
+ dataIndex: 'action',
|
|
|
+ // slots: { customRender: 'action' },
|
|
|
+ },
|
|
|
+ });
|
|
|
|
|
|
- function handleCancel(record: EditRecordRow) {
|
|
|
- currentEditKeyRef.value = '';
|
|
|
- record.onEdit?.(false, false);
|
|
|
- }
|
|
|
+ function handleEdit(record: EditRecordRow) {
|
|
|
+ currentEditKeyRef.value = record.key;
|
|
|
+ record.onEdit?.(true);
|
|
|
+ }
|
|
|
|
|
|
- async function handleSave(record: EditRecordRow) {
|
|
|
- // 校验
|
|
|
- msg.loading({ content: '正在保存...', duration: 0, key: 'saving' });
|
|
|
- const valid = await record.onValid?.();
|
|
|
- if (valid) {
|
|
|
- try {
|
|
|
- const data = cloneDeep(record.editValueRefs);
|
|
|
- console.log(data);
|
|
|
- //TODO 此处将数据提交给服务器保存
|
|
|
- // ...
|
|
|
- // 保存之后提交编辑状态
|
|
|
- const pass = await record.onEdit?.(false, true);
|
|
|
- if (pass) {
|
|
|
- currentEditKeyRef.value = '';
|
|
|
- }
|
|
|
- msg.success({ content: '数据已保存', key: 'saving' });
|
|
|
- } catch (error) {
|
|
|
- msg.error({ content: '保存失败', key: 'saving' });
|
|
|
- }
|
|
|
- } else {
|
|
|
- msg.error({ content: '请填写正确的数据', key: 'saving' });
|
|
|
- }
|
|
|
- }
|
|
|
+ function handleCancel(record: EditRecordRow) {
|
|
|
+ currentEditKeyRef.value = '';
|
|
|
+ record.onEdit?.(false, false);
|
|
|
+ }
|
|
|
|
|
|
- function createActions(record: EditRecordRow): ActionItem[] {
|
|
|
- if (!record.editable) {
|
|
|
- return [
|
|
|
- {
|
|
|
- label: '编辑',
|
|
|
- disabled: currentEditKeyRef.value ? currentEditKeyRef.value !== record.key : false,
|
|
|
- onClick: handleEdit.bind(null, record),
|
|
|
- },
|
|
|
- ];
|
|
|
+ async function handleSave(record: EditRecordRow) {
|
|
|
+ // 校验
|
|
|
+ msg.loading({ content: '正在保存...', duration: 0, key: 'saving' });
|
|
|
+ const valid = await record.onValid?.();
|
|
|
+ if (valid) {
|
|
|
+ try {
|
|
|
+ const data = cloneDeep(record.editValueRefs);
|
|
|
+ console.log(data);
|
|
|
+ //TODO 此处将数据提交给服务器保存
|
|
|
+ // ...
|
|
|
+ // 保存之后提交编辑状态
|
|
|
+ const pass = await record.onEdit?.(false, true);
|
|
|
+ if (pass) {
|
|
|
+ currentEditKeyRef.value = '';
|
|
|
}
|
|
|
- return [
|
|
|
- {
|
|
|
- label: '保存',
|
|
|
- onClick: handleSave.bind(null, record),
|
|
|
- },
|
|
|
- {
|
|
|
- label: '取消',
|
|
|
- popConfirm: {
|
|
|
- title: '是否取消编辑',
|
|
|
- confirm: handleCancel.bind(null, record),
|
|
|
- },
|
|
|
- },
|
|
|
- ];
|
|
|
+ msg.success({ content: '数据已保存', key: 'saving' });
|
|
|
+ } catch (error) {
|
|
|
+ msg.error({ content: '保存失败', key: 'saving' });
|
|
|
}
|
|
|
+ } else {
|
|
|
+ msg.error({ content: '请填写正确的数据', key: 'saving' });
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- function onEditChange({ column, value, record }) {
|
|
|
- // 本例
|
|
|
- if (column.dataIndex === 'id') {
|
|
|
- record.editValueRefs.name4.value = `${value}`;
|
|
|
- }
|
|
|
- console.log(column, value, record);
|
|
|
- }
|
|
|
+ function createActions(record: EditRecordRow): ActionItem[] {
|
|
|
+ if (!record.editable) {
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ label: '编辑',
|
|
|
+ disabled: currentEditKeyRef.value ? currentEditKeyRef.value !== record.key : false,
|
|
|
+ onClick: handleEdit.bind(null, record),
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ label: '保存',
|
|
|
+ onClick: handleSave.bind(null, record),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '取消',
|
|
|
+ popConfirm: {
|
|
|
+ title: '是否取消编辑',
|
|
|
+ confirm: handleCancel.bind(null, record),
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ }
|
|
|
|
|
|
- return {
|
|
|
- registerTable,
|
|
|
- handleEdit,
|
|
|
- createActions,
|
|
|
- onEditChange,
|
|
|
- };
|
|
|
- },
|
|
|
- });
|
|
|
+ function onEditChange({ column, value, record }) {
|
|
|
+ // 本例
|
|
|
+ if (column.dataIndex === 'id') {
|
|
|
+ record.editValueRefs.name4.value = `${value}`;
|
|
|
+ }
|
|
|
+ console.log(column, value, record);
|
|
|
+ }
|
|
|
</script>
|