Commit 9d64bffd authored by 陈浩玮's avatar 陈浩玮

代码调整

parent 41fec57a
...@@ -50,20 +50,38 @@ export default { ...@@ -50,20 +50,38 @@ export default {
}, },
row: Object, row: Object,
}, },
watch: {
row() {
this.init();
},
},
data() {
return {
buttonsArr: [],
};
},
created() {
this.init();
},
computed: { computed: {
basicBtns() { basicBtns() {
return this.buttons.length > 3 ? this.buttons.slice(0, 3) : this.buttons; return this.buttonsArr.length > 3 ? this.buttonsArr.slice(0, 3) : this.buttonsArr;
}, },
moreBtns() { moreBtns() {
return this.buttons.length > 3 ? this.buttons.slice(3) : []; return this.buttonsArr.length > 3 ? this.buttonsArr.slice(3) : [];
}, },
}, },
methods: { methods: {
getDelUrl(url, row) { getDelUrl(url, row) {
if (isFunction(url)) return url(row); if (isFunction(url)) return url(row);
return url; return url;
}, },
init() {
this.buttons.map((i) => {
i.__hidden__ = i.isHidden && i.isHidden(this.row);
});
this.buttonsArr = this.buttons.filter((i) => !i.__hidden__);
},
}, },
}; };
</script> </script>
...@@ -6,11 +6,11 @@ ...@@ -6,11 +6,11 @@
<script> <script>
import { EMPTY_FUN } from '@/utils'; import { EMPTY_FUN } from '@/utils';
import { delReq } from '@/utils'; import { delReq, getReq, postReq, putReq } from '@/utils';
export default { export default {
props: { props: {
url: String, url: [String, Object],
cb: { cb: {
type: Function, type: Function,
default: EMPTY_FUN, default: EMPTY_FUN,
...@@ -30,9 +30,25 @@ export default { ...@@ -30,9 +30,25 @@ export default {
}, },
methods: { methods: {
async confirm() { async confirm() {
if (this.url) { if (typeof this.url === 'string') {
await delReq(this.url); await delReq(this.url);
} }
if (typeof this.url === 'object') {
switch (this.url.method) {
case 'get':
await getReq(this.url.url, this.url?.data);
break;
case 'post':
await postReq(this.url.url, this.url?.data);
break;
case 'put':
await putReq(this.url.url, this.url?.data);
break;
case 'del':
await delReq(this.url.url, this.url?.data);
break;
}
}
if (this.onOk) { if (this.onOk) {
await this.onOk(); await this.onOk();
} }
......
...@@ -20,9 +20,7 @@ ...@@ -20,9 +20,7 @@
<a-button v-if="addBtn" type="primary" key="add" v-bind="addBtn.options" @click="add"> <a-button v-if="addBtn" type="primary" key="add" v-bind="addBtn.options" @click="add">
{{ addBtn.text || '新建' }} {{ addBtn.text || '新建' }}
</a-button> </a-button>
<template v-for="btn of buttons"> <slot name="buttons" />
<a-button :type="btn.primary" :key="btn.text">{{ btn.text }}</a-button>
</template>
</a-space> </a-space>
<div class="tw-mb-2"> <div class="tw-mb-2">
<a-alert <a-alert
......
<template> <template>
<my-table url="/api/v1/users" rowKey="userId" :addBtn="addBtn" ref="table"> <my-table url="/api/v1/users" rowKey="userId" ref="table">
<template #drawer> <template #drawer>
<Form ref="form" /> <Form ref="form" />
</template> </template>
...@@ -11,6 +11,9 @@ ...@@ -11,6 +11,9 @@
<a-input placeholder="Basic usage" v-model="query.loginId" /> <a-input placeholder="Basic usage" v-model="query.loginId" />
</my-form-item> </my-form-item>
</template> </template>
<template #buttons>
<a-button type="primary">新增</a-button>
</template>
<a-table-column title="账号" data-index="loginId" /> <a-table-column title="账号" data-index="loginId" />
<a-table-column title="姓名" data-index="userName" /> <a-table-column title="姓名" data-index="userName" />
...@@ -21,36 +24,91 @@ ...@@ -21,36 +24,91 @@
<a-table-column title="是否锁定" data-index="isLockedName" /> <a-table-column title="是否锁定" data-index="isLockedName" />
<a-table-column title="操作"> <a-table-column title="操作">
<template #default="row"> <template #default="row">
<a @click="() => view(row, 1)">编辑</a> <!-- <a @click="() => view(row, 1)">编辑</a>
<a-divider type="vertical" /> <a-divider type="vertical" />
<PopconfirmDelete :url="`/api/v1/jobs/${row.jobId}`" :cb="refreshTable" /> <PopconfirmDelete :url="`/api/v1/jobs/${row.jobId}`" :cb="refreshTable" /> -->
<ActionButton :buttons="buttons" :row="row" />
</template> </template>
</a-table-column> </a-table-column>
</my-table> </my-table>
</template> </template>
<script> <script>
import Form from './form.vue'; import Form from './form.vue';
import PopconfirmDelete from '@/components/popconfirm_delete/index.vue'; import ActionButton from '@/components/action_button/index.vue';
import OrganizationTree from '../components/OrganizationTree.vue'; import OrganizationTree from '../components/OrganizationTree.vue';
export default { export default {
components: { Form, PopconfirmDelete, OrganizationTree }, components: { Form, OrganizationTree, ActionButton },
data() { data() {
return { return {
addBtn: { width: 600, onOk: () => this.$refs['form']?.submit() }, buttons: [
span: { xs: 12, md: 8, lg: 6 }, {
label: '编辑',
click: (row) => {},
},
{
type: 'confirm',
url: (row) => `/api/v1/jobs/${row.jobId}`,
after: () => this.refreshTable(),
isHidden: (row) => {
return row.userId === 1;
},
},
{
type: 'confirm',
label: '重置',
title: '确认是否重置?',
url: (row) => {
return {
url: `/api/v1/users/${row.userId}/resetting`,
method: 'put',
};
},
after: () => this.refreshTable(),
},
{
type: 'confirm',
label: '解锁',
title: '确认是否解锁?',
url: (row) => {
return {
url: `/api/v1/users/${row.userId}/unlocking`,
method: 'put',
};
},
after: () => this.refreshTable(),
isHidden: (row) => {
return !row.isLocked;
},
},
{
type: 'confirm',
label: '锁定',
title: '确认是否锁定?',
url: (row) => {
return {
url: `/api/v1/users/${row.userId}/locking`,
method: 'put',
};
},
after: () => this.refreshTable(),
isHidden: (row) => {
return !!row.isLocked;
},
},
],
}; };
}, },
methods: { methods: {
refreshTable() { refreshTable() {
this.$refs['table']?.getData(); this.$refs['table']?.getData();
}, },
view(data, type) { // view(data, type) {
this.$refs['table']?.show({ type }); // this.$refs['table']?.show({ type });
this.$nextTick(() => { // this.$nextTick(() => {
this.$refs['form'].setData({ ...data }, type); // this.$refs['form'].setData({ ...data }, type);
}); // });
}, // },
}, },
}; };
</script> </script>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment