Showing
8 changed files
with
373 additions
and
0 deletions
src/locales/lang/zh-CN/spare/equip.ts
0 → 100644
1 | +export default { | ||
2 | + listText: '备件台账列表', | ||
3 | + nameText: '备件名称', | ||
4 | + nameCode: '备件编号', | ||
5 | + specifications: '规格型号', | ||
6 | + typeText: '备件类型', | ||
7 | + unitText: '单位', | ||
8 | + factoryText: '生产厂商', | ||
9 | + operatorText: '操作人', | ||
10 | + operaDate: '操作时间', | ||
11 | + createCategoryText: '创建备件台账', | ||
12 | + editOrderText: '编辑备件台账', | ||
13 | +} |
src/locales/lang/zh-CN/spare/types.ts
0 → 100644
1 | +export default { | ||
2 | + listText: '备件类型列表', | ||
3 | + nameText: '备件名称', | ||
4 | + nameCode: '备件编号', | ||
5 | + specifications: '规格型号', | ||
6 | + typeText: '备件类型', | ||
7 | + unitText: '单位', | ||
8 | + factoryText: '生产厂商', | ||
9 | + operatorText: '操作人', | ||
10 | + operaDate: '操作时间', | ||
11 | + createCategoryText: '创建备件台账', | ||
12 | + editOrderText: '编辑备件台账', | ||
13 | +} |
1 | +<template> | ||
2 | + <div> | ||
3 | + <BasicModal | ||
4 | + v-bind="$attrs" | ||
5 | + width="30rem" | ||
6 | + :title="getTitle" | ||
7 | + @register="register" | ||
8 | + @cancel="handleCancel" | ||
9 | + @ok="handleOk" | ||
10 | + destroyOnClose | ||
11 | + > | ||
12 | + | ||
13 | + </BasicModal> | ||
14 | + </div> | ||
15 | +</template> | ||
16 | +<script setup lang="ts"> | ||
17 | +import {BasicModal} from "/@/components/Modal"; | ||
18 | +import {computed, ref, unref} from "vue"; | ||
19 | +import {useI18n} from "/@/hooks/web/useI18n"; | ||
20 | +const { t } = useI18n(); | ||
21 | +const isUpdate = ref<Boolean>(false); | ||
22 | + | ||
23 | + | ||
24 | +const getTitle = computed(() => | ||
25 | + !unref(isUpdate) ? t('spare.equip.createCategoryText') : t('spare.equip.editOrderText') | ||
26 | +); | ||
27 | + | ||
28 | +const emit = defineEmits(['handleReload', 'register']); | ||
29 | + | ||
30 | + | ||
31 | + | ||
32 | +</script> |
src/views/spare/equip/components/index.ts
0 → 100644
src/views/spare/equip/index.ts
0 → 100644
1 | +import {FormSchema} from "/@/components/Form"; | ||
2 | +import {useI18n} from "/@/hooks/web/useI18n"; | ||
3 | +import {BasicColumn} from "/@/components/Table"; | ||
4 | +const { t } = useI18n(); | ||
5 | + | ||
6 | +export const columns: BasicColumn[] = [ | ||
7 | + { | ||
8 | + title: t('spare.equip.nameCode'), | ||
9 | + dataIndex: 'code', | ||
10 | + }, | ||
11 | + { | ||
12 | + title: t('spare.equip.nameText'), | ||
13 | + dataIndex: 'name', | ||
14 | + }, | ||
15 | + { | ||
16 | + title: t('spare.equip.specifications'), | ||
17 | + dataIndex: 'name', | ||
18 | + }, | ||
19 | + { | ||
20 | + title: t('spare.equip.typeText'), | ||
21 | + dataIndex: 'type', | ||
22 | + slots: { customRender: 'type' }, | ||
23 | + }, | ||
24 | + { | ||
25 | + title: t('spare.equip.unitText'), | ||
26 | + dataIndex: 'unit', | ||
27 | + slots: { customRender: 'unit' }, | ||
28 | + }, | ||
29 | + { | ||
30 | + title: t('spare.equip.factoryText'), | ||
31 | + dataIndex: 'factory', | ||
32 | + }, | ||
33 | + { | ||
34 | + title: t('spare.equip.operatorText'), | ||
35 | + dataIndex: 'operator', | ||
36 | + }, | ||
37 | + { | ||
38 | + title: t('spare.equip.operaDate'), | ||
39 | + dataIndex: 'operaDate', | ||
40 | + }, | ||
41 | +]; | ||
42 | + | ||
43 | +export const searchFormSchema: FormSchema[] = [ | ||
44 | + { | ||
45 | + field: 'name', | ||
46 | + label: t('spare.equip.nameText'), | ||
47 | + component: 'Input', | ||
48 | + colProps: { span: 6 }, | ||
49 | + }, | ||
50 | + { | ||
51 | + field: 'code', | ||
52 | + label: t('spare.equip.nameCode'), | ||
53 | + component: 'Input', | ||
54 | + colProps: { span: 6 }, | ||
55 | + }, | ||
56 | + { | ||
57 | + field: 'type', | ||
58 | + label: t('spare.equip.typeText'), | ||
59 | + component: 'Select', | ||
60 | + colProps: { span: 6 }, | ||
61 | + }, | ||
62 | + { | ||
63 | + field: 'specifications', | ||
64 | + label: t('spare.equip.specifications'), | ||
65 | + component: 'Input', | ||
66 | + colProps: { span: 6 }, | ||
67 | + }, | ||
68 | + { | ||
69 | + field: 'factory', | ||
70 | + label: t('spare.equip.factoryText'), | ||
71 | + component: 'Input', | ||
72 | + colProps: { span: 6 }, | ||
73 | + } | ||
74 | +]; |
src/views/spare/equip/index.vue
0 → 100644
1 | +<template> | ||
2 | + <div > | ||
3 | + <BasicTable style="flex: auto" @register="registerTable"> | ||
4 | + <template #toolbar> | ||
5 | + <Authority value="api:yt:equip:post"> | ||
6 | + <Button type="primary" @click="handleCreate"> | ||
7 | + {{ t('spare.equip.createCategoryText') }} | ||
8 | + </Button> | ||
9 | + </Authority> | ||
10 | + </template> | ||
11 | + <template #action="{ record }"> | ||
12 | + <TableAction | ||
13 | + :actions="[ | ||
14 | + { | ||
15 | + label: t('common.detailText'), | ||
16 | + icon: 'ant-design:eye-outlined', | ||
17 | + auth: 'api:yt:equip:get', | ||
18 | + onClick: handleDetail.bind(null, record), | ||
19 | + }, | ||
20 | + { | ||
21 | + label: t('common.editText'), | ||
22 | + auth: 'api:yt:equip:update', | ||
23 | + icon: 'clarity:note-edit-line', | ||
24 | + onClick: handleEdit.bind(null, record), | ||
25 | + }, | ||
26 | + { | ||
27 | + label: t('common.delText'), | ||
28 | + auth: 'api:yt:equip:delete', | ||
29 | + icon: 'ant-design:delete-outlined', | ||
30 | + color: 'error', | ||
31 | + popConfirm: { | ||
32 | + title: t('common.deleteConfirmText'), | ||
33 | + confirm: handleDelete.bind(null, record), | ||
34 | + }, | ||
35 | + }, | ||
36 | + ]" | ||
37 | + /> | ||
38 | + </template> | ||
39 | + </BasicTable> | ||
40 | + <EquipModal @register="registerModal" /> | ||
41 | + </div> | ||
42 | +</template> | ||
43 | +<script setup lang="ts"> | ||
44 | +import {BasicTable, TableAction, useTable} from "/@/components/Table"; | ||
45 | +import {getPlanList} from "/@/api/equipment/chenkPlan"; | ||
46 | +import {columns, searchFormSchema} from "/@/views/spare/equip/index"; | ||
47 | +import {useI18n} from "/@/hooks/web/useI18n"; | ||
48 | +import {Button} from "ant-design-vue"; | ||
49 | +import {Authority} from "/@/components/Authority"; | ||
50 | +import {useModal} from "/@/components/Modal"; | ||
51 | +import { EquipModal } from './components/index' | ||
52 | +const [registerModal, { openModal }] = useModal(); | ||
53 | + | ||
54 | +const { t } = useI18n(); | ||
55 | +const [ | ||
56 | + registerTable, | ||
57 | + { reload, setLoading, setSelectedRowKeys }, | ||
58 | +] = useTable({ | ||
59 | + title: t('spare.equip.listText'), | ||
60 | + api: getPlanList, | ||
61 | + columns, | ||
62 | + formConfig: { | ||
63 | + labelWidth: 100, | ||
64 | + schemas: searchFormSchema, | ||
65 | + }, | ||
66 | + immediate: true, | ||
67 | + useSearchForm: true, | ||
68 | + showTableSetting: true, | ||
69 | + bordered: true, | ||
70 | + showIndexColumn: false, | ||
71 | + clickToRowSelect: false, | ||
72 | + rowKey: 'id', | ||
73 | + actionColumn: { | ||
74 | + width: 230, | ||
75 | + title: t('common.actionText'), | ||
76 | + slots: { customRender: 'action' }, | ||
77 | + fixed: 'right', | ||
78 | + }, | ||
79 | +}); | ||
80 | + | ||
81 | +// 新增 | ||
82 | +const handleCreate = () => { | ||
83 | + openModal(true, { | ||
84 | + isUpdate: false, | ||
85 | + }); | ||
86 | +}; | ||
87 | + | ||
88 | +</script> |
src/views/spare/types/index.ts
0 → 100644
1 | +import {FormSchema} from "/@/components/Form"; | ||
2 | +import {useI18n} from "/@/hooks/web/useI18n"; | ||
3 | +import {BasicColumn} from "/@/components/Table"; | ||
4 | +const { t } = useI18n(); | ||
5 | + | ||
6 | +export const columns: BasicColumn[] = [ | ||
7 | + { | ||
8 | + title: t('spare.types.nameCode'), | ||
9 | + dataIndex: 'code', | ||
10 | + }, | ||
11 | + { | ||
12 | + title: t('spare.types.nameText'), | ||
13 | + dataIndex: 'name', | ||
14 | + }, | ||
15 | + { | ||
16 | + title: t('spare.types.specifications'), | ||
17 | + dataIndex: 'name', | ||
18 | + }, | ||
19 | + { | ||
20 | + title: t('spare.types.typeText'), | ||
21 | + dataIndex: 'type', | ||
22 | + slots: { customRender: 'type' }, | ||
23 | + }, | ||
24 | + { | ||
25 | + title: t('spare.types.unitText'), | ||
26 | + dataIndex: 'unit', | ||
27 | + slots: { customRender: 'unit' }, | ||
28 | + }, | ||
29 | + { | ||
30 | + title: t('spare.types.factoryText'), | ||
31 | + dataIndex: 'factory', | ||
32 | + }, | ||
33 | + { | ||
34 | + title: t('spare.types.operatorText'), | ||
35 | + dataIndex: 'operator', | ||
36 | + }, | ||
37 | + { | ||
38 | + title: t('spare.types.operaDate'), | ||
39 | + dataIndex: 'operaDate', | ||
40 | + }, | ||
41 | +]; | ||
42 | + | ||
43 | +export const searchFormSchema: FormSchema[] = [ | ||
44 | + { | ||
45 | + field: 'name', | ||
46 | + label: t('spare.types.nameText'), | ||
47 | + component: 'Input', | ||
48 | + colProps: { span: 6 }, | ||
49 | + }, | ||
50 | + { | ||
51 | + field: 'code', | ||
52 | + label: t('spare.types.nameCode'), | ||
53 | + component: 'Input', | ||
54 | + colProps: { span: 6 }, | ||
55 | + }, | ||
56 | + { | ||
57 | + field: 'type', | ||
58 | + label: t('spare.types.typeText'), | ||
59 | + component: 'Select', | ||
60 | + colProps: { span: 6 }, | ||
61 | + }, | ||
62 | + { | ||
63 | + field: 'specifications', | ||
64 | + label: t('spare.types.specifications'), | ||
65 | + component: 'Input', | ||
66 | + colProps: { span: 6 }, | ||
67 | + }, | ||
68 | + { | ||
69 | + field: 'factory', | ||
70 | + label: t('spare.types.factoryText'), | ||
71 | + component: 'Input', | ||
72 | + colProps: { span: 6 }, | ||
73 | + } | ||
74 | +]; |
src/views/spare/types/index.vue
0 → 100644
1 | +<template> | ||
2 | + <div> | ||
3 | + <BasicTable style="flex: auto" @register="registerTable"> | ||
4 | + <template #toolbar> | ||
5 | + <Authority value="api:yt:types:post"> | ||
6 | + <Button type="primary" @click="handleCreate"> | ||
7 | + {{ t('spare.types.createCategoryText') }} | ||
8 | + </Button> | ||
9 | + </Authority> | ||
10 | + </template> | ||
11 | + <template #action="{ record }"> | ||
12 | + <TableAction | ||
13 | + :actions="[ | ||
14 | + { | ||
15 | + label: t('common.detailText'), | ||
16 | + icon: 'ant-design:eye-outlined', | ||
17 | + auth: 'api:yt:types:get', | ||
18 | + onClick: handleDetail.bind(null, record), | ||
19 | + }, | ||
20 | + { | ||
21 | + label: t('common.editText'), | ||
22 | + auth: 'api:yt:types:update', | ||
23 | + icon: 'clarity:note-edit-line', | ||
24 | + onClick: handleEdit.bind(null, record), | ||
25 | + }, | ||
26 | + { | ||
27 | + label: t('common.delText'), | ||
28 | + auth: 'api:yt:types:delete', | ||
29 | + icon: 'ant-design:delete-outlined', | ||
30 | + color: 'error', | ||
31 | + popConfirm: { | ||
32 | + title: t('common.deleteConfirmText'), | ||
33 | + confirm: handleDelete.bind(null, record), | ||
34 | + }, | ||
35 | + }, | ||
36 | + ]" | ||
37 | + /> | ||
38 | + </template> | ||
39 | + </BasicTable> | ||
40 | + </div> | ||
41 | +</template> | ||
42 | +<script setup lang="ts"> | ||
43 | +import {BasicTable, TableAction, useTable} from "/@/components/Table"; | ||
44 | +import {getPlanList} from "/@/api/equipment/chenkPlan"; | ||
45 | +import {columns, searchFormSchema} from "./index"; | ||
46 | +import {useI18n} from "/@/hooks/web/useI18n"; | ||
47 | +import {Button} from "ant-design-vue"; | ||
48 | +import {Authority} from "/@/components/Authority"; | ||
49 | +const { t } = useI18n(); | ||
50 | + | ||
51 | +const [ | ||
52 | + registerTable, | ||
53 | + { reload, setLoading, setSelectedRowKeys }, | ||
54 | +] = useTable({ | ||
55 | + title: t('spare.types.listText'), | ||
56 | + api: getPlanList, | ||
57 | + columns, | ||
58 | + formConfig: { | ||
59 | + labelWidth: 100, | ||
60 | + schemas: searchFormSchema, | ||
61 | + }, | ||
62 | + immediate: true, | ||
63 | + useSearchForm: true, | ||
64 | + showTableSetting: true, | ||
65 | + bordered: true, | ||
66 | + showIndexColumn: false, | ||
67 | + clickToRowSelect: false, | ||
68 | + rowKey: 'id', | ||
69 | + actionColumn: { | ||
70 | + width: 230, | ||
71 | + title: t('common.actionText'), | ||
72 | + slots: { customRender: 'action' }, | ||
73 | + fixed: 'right', | ||
74 | + }, | ||
75 | +}); | ||
76 | +</script> |