¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <BasicTable @register="registerTable"> |
| | | <template #toolbar> |
| | | <a-button type="primary" @click="handleCreate" preIcon="add_02|svg"> æ°å¢ </a-button> |
| | | </template> |
| | | <template #action="{ record }"> |
| | | <TableAction :actions="createActions(record)" /> |
| | | </template> |
| | | <template #[item]="{ field }" v-for="item in colSlots" :key="item"> |
| | | <!-- <template #form-BAS_REASON3aadd="{ field }"> --> |
| | | <a-button |
| | | v-if="field" |
| | | class="mt-1 ml-1" |
| | | size="small" |
| | | @click="handleSelectItem(item)" |
| | | preIcon="search|svg" |
| | | /> |
| | | <GeneralModal |
| | | @register="registerItemAdd" |
| | | @success="(d, u) => handleItemSuccess(d, u, item)" |
| | | /> |
| | | </template> |
| | | </BasicTable> |
| | | <normalDrawer @register="registerDrawer" @success="handleSuccess" /> |
| | | </div> |
| | | </template> |
| | | <script lang="ts" setup> |
| | | import { Ref, inject, onMounted, ref } from 'vue'; |
| | | import { BasicTable, useTable, TableAction } from '/@/components/Table'; |
| | | import { useForm } from '/@/components/Form/index'; |
| | | import { useDrawer } from '/@/components/Drawer'; |
| | | import GeneralModal from '/@/views/components/GeneralModal.vue'; |
| | | import normalDrawer from '../normalDrawer.vue'; |
| | | import { isNullOrUnDef } from '/@/utils/is'; |
| | | import { useModal } from '/@/components/Modal'; |
| | | import { useGo } from '/@/hooks/web/usePage'; |
| | | import { DeleteEntity, getListByPage } from '/@/api/tigerapi/system'; |
| | | import { useI18n } from '/@/hooks/web/useI18n'; |
| | | |
| | | const { t } = useI18n(); |
| | | |
| | | const props = defineProps({ |
| | | useTableData: { type: Object as PropType<{}>, default: { table: [] } }, |
| | | entityName: { type: String }, |
| | | }); |
| | | const objParams = inject('objParams') as Ref<any>; |
| | | const data = inject('data') as Ref<Recordable[]>; |
| | | const others = inject('others') as Ref<Recordable[]>; |
| | | const go = useGo(); |
| | | const [registerDrawer, { openDrawer }] = useDrawer(); |
| | | const [registerItemAdd, { openModal: openItemModal }] = useModal(); |
| | | const cType = ref(''); |
| | | const colSlots = ref<any>(objParams['colSlots']); //æé®ææ§½ |
| | | const dtlSlots = ref([] as any[]); |
| | | const useModalData = ref({}); //表åä¸ææ§½æ¸²ææé®æå¼æ¨¡ææ¡useModalæ¹æ³ |
| | | const useFormData = ref({}); |
| | | const custImport = ref<any[]>(await import(/* @vite-ignore */ `../entityts/${props.entityName}`)); |
| | | const [{ EditeOperation, GetBaseColumns, GetSearchForm, GetCrudForm, OthersValues }] = |
| | | custImport.value['default'](); |
| | | others.value = OthersValues(objParams['CODE'], objParams['ID']); |
| | | const [registerTable, { getForm, reload, setProps }] = useTable({ |
| | | title: `${objParams['firstTitle']}å表`, |
| | | api: getListByPage, |
| | | searchInfo: { TABLE_NAME: objParams['Name'], ...objParams['others'] }, |
| | | columns: GetBaseColumns(), |
| | | formConfig: { |
| | | labelWidth: 140, |
| | | schemas: GetSearchForm(), |
| | | }, |
| | | useSearchForm: true, |
| | | showTableSetting: true, |
| | | bordered: true, |
| | | canResize: true, |
| | | showIndexColumn: false, |
| | | actionColumn: { |
| | | width: 130, |
| | | title: 'æä½', |
| | | dataIndex: 'action', |
| | | slots: { customRender: 'action' }, |
| | | fixed: undefined, |
| | | }, //èªå®ä¹æä½å |
| | | }); |
| | | |
| | | onMounted(() => {}); |
| | | |
| | | function createActions(record) { |
| | | const params = { |
| | | record, |
| | | isUpdate: true, |
| | | ifSave: false, |
| | | entityName: props.entityName, |
| | | formJson: GetCrudForm(), //getFormSchema(`${entityName.value}_Crud`), |
| | | cType, |
| | | dtlSlots, |
| | | useModalData, |
| | | useFormData, |
| | | crudColSlots: colSlots.value, |
| | | data, |
| | | }; |
| | | const actionItem = [ |
| | | { |
| | | icon: 'clarity:note-edit-line', |
| | | onClick: editRecord.bind(null, openDrawer, params), |
| | | }, |
| | | { |
| | | icon: 'ant-design:delete-outlined', |
| | | color: 'error', |
| | | popConfirm: { |
| | | title: 'æ¯å¦ç¡®è®¤å é¤?', |
| | | placement: 'left', |
| | | confirm: deleteRecord.bind(null, reload, params), |
| | | }, |
| | | }, |
| | | ]; |
| | | if (isNullOrUnDef(custImport.value)) { |
| | | return actionItem; |
| | | } |
| | | const [{ ActionItem }] = custImport.value['default'](); |
| | | return ActionItem( |
| | | params, |
| | | actionItem, |
| | | openDrawer, |
| | | reload, |
| | | null, |
| | | useForm, |
| | | useModal, |
| | | go, |
| | | setProps, |
| | | ); |
| | | } |
| | | |
| | | /** |
| | | * @description: å
¬ç¨ç¼è¾æ¹æ³ |
| | | * @param {Fn} fn |
| | | * @param {*} params |
| | | * @return {*} |
| | | */ |
| | | function editRecord(fn: Fn, params: {}) { |
| | | fn(true, params); |
| | | } |
| | | |
| | | /** |
| | | * @description: å
¬ç¨å 餿¹æ³ |
| | | * @param {Fn} fn |
| | | * @param {*} params |
| | | * @return {*} |
| | | */ |
| | | function deleteRecord(fn: Fn, params: {}) { |
| | | console.log(params['record']); |
| | | //å é¤ |
| | | DeleteEntity(params['record'], params['entityName']).then((action) => { |
| | | if (action.IsSuccessed) { |
| | | fn(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | function handleCreate() { |
| | | const _cruds = GetCrudForm(); |
| | | let isExistSql = ''; |
| | | for (const i in _cruds) { |
| | | if (_cruds[i].isexist == 'Y') { |
| | | isExistSql = _cruds[i].field; |
| | | } |
| | | } |
| | | openDrawer(true, { |
| | | isUpdate: false, |
| | | ifSave: false, |
| | | entityName: props.entityName, |
| | | formJson: GetCrudForm(), //getFormSchema(`${entityName.value}_Crud`), |
| | | crudColSlots: colSlots.value, |
| | | others: others.value, |
| | | isExistSql: isExistSql, |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * @description: æ°å¢ç¼è¾è¿åæåæ¹æ³ |
| | | * @param {*} d |
| | | * @param {*} u |
| | | * @return {*} |
| | | */ |
| | | function handleSuccess(d, u) { |
| | | reload(); |
| | | } |
| | | |
| | | /** |
| | | * @description: å¼¹åºéæ©æ¡éæ©æååäºä»¶ |
| | | * @param {*} d |
| | | * @param {*} u |
| | | * @param {*} item |
| | | * @return {*} |
| | | */ |
| | | function handleItemSuccess(d, u, item) { |
| | | /* 卿importå®ä½å.tsçèªå®ä¹æ¹æ³ */ |
| | | try { |
| | | import( |
| | | /* @vite-ignore */ `../entityts/${getForm().getFieldsValue()[`${item.replace(/form-/, '').replace(/add/, '')}PSelect_0`]}` |
| | | ) |
| | | .then((m) => { |
| | | const [{ GetSelectSuccess }] = m.default(); |
| | | getForm().setFieldsValue(GetSelectSuccess(d, u)); |
| | | }) |
| | | .catch(() => { |
| | | getForm().setFieldsValue({ |
| | | ITEM_CODE: d.values['val'], |
| | | }); |
| | | }); |
| | | } catch (e) {} |
| | | } |
| | | |
| | | /** |
| | | * @description: å¼¹åºéæ©æ¡ |
| | | * @param {*} item |
| | | * @return {*} |
| | | */ |
| | | function handleSelectItem(item) { |
| | | /* 卿importå®ä½å.tsçèªå®ä¹æ¹æ³ */ |
| | | try { |
| | | import( |
| | | /* @vite-ignore */ `../entityts/${props.useTableData['table'][1].getForm().getFieldsValue()[`${item.replace(/form-/, '').replace(/add/, '')}PSelect_0`]}` |
| | | ) |
| | | .then((m) => { |
| | | const [{ OpenSelectItem }] = m.default(); |
| | | OpenSelectItem(openItemModal); |
| | | }) |
| | | .catch(() => { |
| | | openItemModal(true, { |
| | | title: 'ç©æå表', |
| | | schemas: [ |
| | | { |
| | | field: 'ITEM_CODE', |
| | | component: 'Input', |
| | | label: 'ç©æç¼ç ', |
| | | colProps: { |
| | | span: 12, |
| | | }, |
| | | }, |
| | | ], |
| | | ItemColumns: [ |
| | | { |
| | | title: t('ç©æç¼ç '), |
| | | dataIndex: 'ITEM_CODE', |
| | | resizable: true, |
| | | sorter: true, |
| | | width: 200, |
| | | }, |
| | | { |
| | | title: t('ç©æåç§°'), |
| | | dataIndex: 'ITEM_NAME', |
| | | resizable: true, |
| | | sorter: true, |
| | | width: 180, |
| | | }, |
| | | ], |
| | | tableName: 'BAS_ITEM', |
| | | rowKey: 'ITEM_CODE', |
| | | searchInfo: { TABLE_NAME: 'BAS_ITEM' }, |
| | | }); |
| | | }); |
| | | } catch (e) {} |
| | | } |
| | | </script> |
| | |
| | | <!-- |
| | | * @Description: file content |
| | | * @Author: Ben Lin |
| | | * @version: |
| | | * @Date: 2024-06-18 15:09:48 |
| | | * @LastEditors: Ben Lin |
| | | * @LastEditTime: 2024-06-23 00:31:33 |
| | | --> |
| | | <!-- |
| | | * @Description: ä½ä»£ç 详æ
åç°é¡µé¢ |
| | | * @Author: Ben Lin |
| | | * @version: |
| | | * @Date: 2024-05-30 13:28:20 |
| | | * @LastEditors: your name |
| | | * @LastEditTime: 2024-06-17 11:29:54 |
| | | * @LastEditors: Ben Lin |
| | | * @LastEditTime: 2024-06-23 22:58:33 |
| | | --> |
| | | <template> |
| | | <PageWrapper :title="pageTitle" :content="contentStr" contentBackground @back="goBack"> |
| | |
| | | </template> |
| | | <div> |
| | | <div v-if="currentKey == 'detailfirst'"> |
| | | <BasicTable @register="detailTable"> |
| | | <template #toolbar> |
| | | <a-button type="primary" @click="handleCreate" preIcon="add_02|svg"> æ°å¢ </a-button> |
| | | </template> |
| | | <template #action="{ record }"> |
| | | <TableAction |
| | | :actions="[ |
| | | { |
| | | icon: 'clarity:note-edit-line', |
| | | onClick: handleEdit.bind(null, record), |
| | | }, |
| | | { |
| | | icon: 'ant-design:delete-outlined', |
| | | color: 'error', |
| | | popConfirm: { |
| | | title: 'æ¯å¦ç¡®è®¤å é¤?', |
| | | placement: 'left', |
| | | confirm: handleDelete.bind(null, record), |
| | | }, |
| | | }, |
| | | ]" |
| | | /> |
| | | </template> |
| | | <template #[item]="{ field }" v-for="item in colSlots" :key="item"> |
| | | <a-button |
| | | v-if="field" |
| | | class="mt-1 ml-1" |
| | | size="small" |
| | | @click="handleSelectItem(item)" |
| | | preIcon="search|svg" |
| | | /> |
| | | <GeneralModal |
| | | @register="registerItemAdd" |
| | | @success="(d, u) => handleItemSuccess(d, u, item)" |
| | | /> |
| | | </template> |
| | | </BasicTable> |
| | | <Suspense> |
| | | <detail :entityName="entityName" /> |
| | | </Suspense> |
| | | </div> |
| | | <div v-if="currentKey == 'detailsecond'"> |
| | | <BasicTable @register="detailsecondTable"> |
| | | <template #toolbar> |
| | | <a-button type="primary" @click="secondCreate" preIcon="add_02|svg"> æ°å¢ </a-button> |
| | | </template> |
| | | <template #[item]="{ field }" v-for="item in secondColSlots" :key="item"> |
| | | <a-button |
| | | v-if="field" |
| | | class="mt-1 ml-1" |
| | | size="small" |
| | | @click="handleSelectItem(item)" |
| | | preIcon="search|svg" |
| | | /> |
| | | <GeneralModal |
| | | @register="registerItemAdd" |
| | | @success="(d, u) => handleItemSuccess(d, u, item)" |
| | | /> |
| | | </template> |
| | | </BasicTable> |
| | | <Suspense></Suspense> |
| | | </div> |
| | | </div> |
| | | <normalDrawer @register="registerDrawer" @success="handleSuccess" /> |
| | | <CustModal |
| | | @register="registerCust" |
| | | @success="custSuccess" |
| | |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | | import { ref, reactive } from 'vue'; |
| | | import { ref, provide, Ref } from 'vue'; |
| | | import { useRoute } from 'vue-router'; |
| | | import { PageWrapper } from '/@/components/Page'; |
| | | import { useTabs } from '/@/hooks/web/useTabs'; |
| | | import { Tabs } from 'ant-design-vue'; |
| | | import { useGo } from '/@/hooks/web/usePage'; |
| | | //详æ
å表 |
| | | import { BasicTable, useTable, TableAction } from '/@/components/Table'; |
| | | import { OpenCustModal, custOnChange } from '../data'; |
| | | import detail from './detail.vue'; |
| | | import { useI18n } from '/@/hooks/web/useI18n'; |
| | | import { useMessage } from '/@/hooks/web/useMessage'; |
| | | import { DeleteEntity, getListByPage } from '/@/api/tigerapi/system'; |
| | | import { useDrawer } from '/@/components/Drawer'; |
| | | import normalDrawer from '../normalDrawer.vue'; |
| | | import GeneralModal from '/@/views/components/GeneralModal.vue'; |
| | | import CustModal from '/@/views/components/CustModal.vue'; |
| | | import { BasicForm } from '/@/components/Form/index'; |
| | | import { useGlobSetting } from '/@/hooks/setting'; |
| | | import { useModal } from '/@/components/Modal'; |
| | | import { GetBaseColumns, GetFormColumns, GetSearchFormColumns } from './data'; |
| | | import { isNullOrUnDef } from '/@/utils/is'; |
| | | |
| | | const { t } = useI18n(); |
| | | |
| | | const { t: bt } = useI18n(''); |
| | | const { createMessage } = useMessage(); |
| | | const route = useRoute(); |
| | | const objParams = ref(JSON.parse(decodeURI(route.params?.id as string))); |
| | |
| | | var ITEM_CODE = ref(''); |
| | | const go = useGo(); |
| | | const pageTitle = ref(objParams.value.pageTitle); |
| | | const firstTitle = ref(objParams.value.firstTitle); |
| | | const secondTitle = ref(objParams.value.secondTitle); |
| | | const contentStr = ref(objParams.value.contentStr); |
| | | const firstTabName = ref(objParams.value.firstTabName); |
| | | const secondTabName = ref(objParams.value.secondTabName); |
| | | const entityName = ref(objParams.value.ID); |
| | | const entityName = ref(objParams.value.Name); |
| | | const detailName = ref(objParams.value.detailName); |
| | | const globSetting = useGlobSetting(); |
| | | const _columns = ref([]); |
| | | const _searchFormSchema = ref([]); |
| | | const _crudFormSchema = ref([]); |
| | | const formSchemas = ref({}); //å¼¹åºæ¡å¤è¡¨åç»æ |
| | | const useModalData = ref({}); //表åä¸ææ§½æ¸²ææé®æå¼æ¨¡ææ¡useModalæ¹æ³ |
| | | const useFormData = ref({}); |
| | | const colSlots = ref<any>(objParams.value.colSlots); //æé®ææ§½ |
| | | const secondColSlots = ref<any>(objParams.value.secondColSlots); //æé®ææ§½ |
| | | const crudColSlots = ref<any>(objParams.value.colSlots); |
| | | const cType = ref(''); |
| | | const dtlSlots = ref([] as any[]); |
| | | const selectVals = ref({}); |
| | | //è·åJobId |
| | | const BILLCODE = ref(route.params?.BillCode); |
| | | const others = ref<any>(null); |
| | | provide<Ref<any>>('objParams', objParams.value); |
| | | provide<Ref<any>>('others', others); |
| | | const [registerCust] = useModal(); |
| | | const [registerItemAdd, { openModal: openItemModal }] = useModal(); |
| | | const [registerDrawer, { openDrawer }] = useDrawer(); |
| | | const [detailTable, { reload: reloadFirst }] = useTable({ |
| | | title: `${firstTitle.value}å表`, |
| | | api: getListByPage, |
| | | searchInfo: { TABLE_NAME: entityName.value, ...objParams.value.others }, |
| | | columns: GetBaseColumns(entityName.value, 'detailfirst'), |
| | | useSearchForm: true, |
| | | showTableSetting: true, |
| | | bordered: true, |
| | | canResize: true, |
| | | showIndexColumn: false, |
| | | formConfig: { |
| | | labelWidth: 120, |
| | | schemas: GetSearchFormColumns(entityName.value, 'detailfirst'), |
| | | }, |
| | | actionColumn: { |
| | | width: 130, |
| | | title: 'æä½', |
| | | dataIndex: 'action', |
| | | slots: { customRender: 'action' }, |
| | | fixed: 'right', //undefined, |
| | | }, |
| | | // searchInfo: { BILLCODE }, |
| | | }); |
| | | const [detailsecondTable, { getForm, reload }] = useTable({ |
| | | title: `${secondTitle.value}å表`, |
| | | api: getListByPage, |
| | | columns: GetBaseColumns(entityName.value, 'detailsecond'), |
| | | formConfig: { |
| | | labelWidth: 120, |
| | | schemas: GetFormColumns(entityName.value, 'detailsecond'), |
| | | model: { ITEM_CODE: ITEM_CODE }, |
| | | }, |
| | | useSearchForm: true, |
| | | // searchInfo: { BILLCODE }, |
| | | showTableSetting: false, |
| | | bordered: true, |
| | | canResize: true, |
| | | showIndexColumn: false, |
| | | }); |
| | | |
| | | function handleCreate() { |
| | | openDrawer(true, { |
| | | isUpdate: false, |
| | | entityName: objParams.value.ID, |
| | | formJson: GetFormColumns(entityName.value, 'detailfirst'), |
| | | crudColSlots, |
| | | others: objParams.value.others, |
| | | }); |
| | | } |
| | | |
| | | function secondCreate() { |
| | | openDrawer(true, { |
| | | isUpdate: false, |
| | | entityName: objParams.value.ID, |
| | | formJson: _crudFormSchema.value, |
| | | crudColSlots, |
| | | }); |
| | | } |
| | | |
| | | // æ¤å¤å¯ä»¥å¾å°ç¨æ·ID |
| | | //const BILLCODE = ref(route.params?.BILLCODE.split(',')[1]); |
| | | var currentKey = ref('detailfirst'); |
| | | const { setTitle } = useTabs(); |
| | | // TODO |
| | | // æ¬é¡µä»£ç ä»
使¼ç¤ºï¼å®é
åºå½éè¿userId仿¥å£è·å¾ç¨æ·çç¸å
³èµæ |
| | | |
| | | // 设置Tabçæ é¢ï¼ä¸ä¼å½±å页颿 é¢ï¼ |
| | | setTitle(`详æ
ï¼${detailName.value}`); |
| | |
| | | ITEM_CODE.value = ''; |
| | | } |
| | | }; |
| | | |
| | | /** |
| | | * @description: detailfirst tabä¸çè¡¨æ ¼ç¼è¾è®°å½å¼¹åºä¾§è¾¹æ¡æ¹æ³ |
| | | * @param {*} record |
| | | * @return {*} |
| | | */ |
| | | function handleEdit(record: Recordable) { |
| | | openDrawer(true, { |
| | | record, |
| | | isUpdate: true, |
| | | entityName: objParams.value.ID, |
| | | formJson: GetFormColumns(entityName.value, 'detailfirst'), |
| | | crudColSlots, |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * @description: detailfirst tabä¸çè¡¨æ ¼å é¤è®°å½æ¹æ³ |
| | | * @param {*} record |
| | | * @return {*} |
| | | */ |
| | | function handleDelete(record: Recordable) { |
| | | console.log(record); |
| | | //å é¤ |
| | | DeleteEntity(record, entityName.value).then((action) => { |
| | | if (action.IsSuccessed) { |
| | | reloadFirst(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * @description: detailfirst tabä¸å¢å æ¹æåè¿åæ¹æ³ |
| | | * @return {*} |
| | | */ |
| | | function handleSuccess() { |
| | | reloadFirst(); |
| | | } |
| | | |
| | | /** |
| | | * @description: å¼¹åºéæ©æ¡éæ©æååäºä»¶ |
| | | * @param {*} d |
| | | * @param {*} u |
| | | * @param {*} item |
| | | * @return {*} |
| | | */ |
| | | function handleItemSuccess(d, u, item) { |
| | | /* 卿importå®ä½å.tsçèªå®ä¹æ¹æ³ */ |
| | | try { |
| | | import( |
| | | /* @vite-ignore */ `../entityts/${getForm().getFieldsValue()[`${item.replace(/form-/, '').replace(/add/, '')}PSelect_0`]}` |
| | | ) |
| | | .then((m) => { |
| | | const [{ GetSelectSuccess }] = m.default(); |
| | | getForm().setFieldsValue(GetSelectSuccess(d, u)); |
| | | }) |
| | | .catch(() => { |
| | | getForm().setFieldsValue({ |
| | | ITEM_CODE: d.values['val'], |
| | | }); |
| | | }); |
| | | } catch (e) {} |
| | | } |
| | | |
| | | /** |
| | | * @description: å¼¹åºéæ©æ¡ |
| | | * @param {*} item |
| | | * @return {*} |
| | | */ |
| | | function handleSelectItem(item) { |
| | | /* 卿importå®ä½å.tsçèªå®ä¹æ¹æ³ */ |
| | | try { |
| | | import( |
| | | /* @vite-ignore */ `../entityts/${getForm().getFieldsValue()[`${item.replace(/form-/, '').replace(/add/, '')}PSelect_0`]}` |
| | | ) |
| | | .then((m) => { |
| | | const [{ OpenSelectItem }] = m.default(); |
| | | OpenSelectItem(openItemModal); |
| | | }) |
| | | .catch(() => { |
| | | openItemModal(true, { |
| | | title: 'ç©æå表', |
| | | schemas: [ |
| | | { |
| | | field: 'ITEM_CODE', |
| | | component: 'Input', |
| | | label: 'ç©æç¼ç ', |
| | | colProps: { |
| | | span: 12, |
| | | }, |
| | | }, |
| | | ], |
| | | ItemColumns: [ |
| | | { |
| | | title: t('ç©æç¼ç '), |
| | | dataIndex: 'ITEM_CODE', |
| | | resizable: true, |
| | | sorter: true, |
| | | width: 200, |
| | | }, |
| | | { |
| | | title: t('ç©æåç§°'), |
| | | dataIndex: 'ITEM_NAME', |
| | | resizable: true, |
| | | sorter: true, |
| | | width: 180, |
| | | }, |
| | | ], |
| | | tableName: 'BAS_ITEM', |
| | | rowKey: 'ITEM_CODE', |
| | | searchInfo: { TABLE_NAME: 'BAS_ITEM' }, |
| | | }); |
| | | }); |
| | | } catch (e) {} |
| | | } |
| | | |
| | | /** |
| | | * @description: Select èªå®ä¹onChangeæ¹æ³ |
| | |
| | | * @return {*} |
| | | */ |
| | | function custSuccess(d) { |
| | | reload(); |
| | | // reload(); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @version: |
| | | * @Date: 2024-06-19 20:34:27 |
| | | * @LastEditors: Ben Lin |
| | | * @LastEditTime: 2024-06-22 20:35:33 |
| | | * @LastEditTime: 2024-06-23 23:53:41 |
| | | */ |
| | | |
| | | import { ActionItem, BasicColumn } from '/@/components/Table'; |
| | |
| | | */ |
| | | function goDetail(go: Fn, params: Recordable) { |
| | | const id = { |
| | | ID: 'BAS_LABEL_VAR', |
| | | ID: params['record'].ID, |
| | | CODE: params['record']['LABEL_CODE'], |
| | | Name: 'BAS_LABEL_VAR', |
| | | firstTabName: 'æ ç¾æ¨¡æ¿åé', |
| | | secondTabName: '', //'æ ç¾è¿ç¨åé', |
| | | firstTitle: '模æ¿åé', |
| | |
| | | * @version: |
| | | * @Date: 2024-06-19 20:34:27 |
| | | * @LastEditors: Ben Lin |
| | | * @LastEditTime: 2024-06-23 00:28:56 |
| | | * @LastEditTime: 2024-06-23 23:42:04 |
| | | */ |
| | | |
| | | import { ActionItem, BasicColumn } from "/@/components/Table"; |
| | | import { Tag, Tooltip } from 'ant-design-vue'; |
| | | import { ActionItem, BasicColumn } from '/@/components/Table'; |
| | | import { useI18n } from '/@/hooks/web/useI18n'; |
| | | import { h, unref } from 'vue'; |
| | | import { GetEnum } from '/@/api/tigerapi/system'; |
| | | import { useLocale } from '/@/locales/useLocale'; |
| | | |
| | | const { getLocale } = useLocale(); |
| | | |
| | | const { t } = useI18n(); |
| | | |
| | | function _default() { |
| | | const ActionColumn: BasicColumn = { |
| | |
| | | }, |
| | | GetHomeUrl: () => { |
| | | return `/BAS_LABEL_TEMP/LC/${encodeURI(JSON.stringify({ ID: 'BAS_LABEL_TEMP', colSlots: [], crudColSlots: [] }))}`; |
| | | }, |
| | | GetBaseColumns: () => { |
| | | return [ |
| | | { |
| | | dataIndex: 'LABEL_ID', |
| | | title: 'æ ç¾æ¨¡æ¿ID', |
| | | ifShow: false, |
| | | sorter: true, |
| | | resizable: true, |
| | | }, |
| | | { |
| | | dataIndex: 'VAR_NAME', |
| | | title: 'åéåç§°', |
| | | ifShow: true, |
| | | sorter: true, |
| | | resizable: true, |
| | | customRender: () => {}, |
| | | }, |
| | | { |
| | | dataIndex: 'VAR_TYPE', |
| | | title: 'åéç±»å', |
| | | ifShow: true, |
| | | sorter: true, |
| | | resizable: true, |
| | | customRender: ({ record }) => { |
| | | let color = ''; |
| | | let text = ''; |
| | | switch (record.VAR_TYPE) { |
| | | case 0: |
| | | text = '常é'; |
| | | color = 'green'; |
| | | break; |
| | | case 1: |
| | | text = 'è¿ç¨åé'; |
| | | color = 'orange'; |
| | | break; |
| | | case 2: |
| | | text = 'æ¥æåé'; |
| | | color = '#4f68b0'; |
| | | break; |
| | | case 3: |
| | | text = 'èªå®ä¹åé'; |
| | | color = '#bfbfbf'; |
| | | break; |
| | | } |
| | | return h(Tooltip, { title: text }, () => h(Tag, { color: color }, () => text)); |
| | | }, |
| | | }, |
| | | { |
| | | dataIndex: 'VAR_VALUE', |
| | | title: 'åéå¼', |
| | | ifShow: true, |
| | | sorter: true, |
| | | resizable: true, |
| | | }, |
| | | { |
| | | dataIndex: 'REMARK', |
| | | title: '夿³¨', |
| | | ifShow: true, |
| | | sorter: true, |
| | | resizable: true, |
| | | }, |
| | | ]; |
| | | }, |
| | | GetSearchForm: () => { |
| | | return [ |
| | | { |
| | | field: 'VAR_NAME', |
| | | label: t('åéå'), |
| | | colProps: { span: 8 }, |
| | | component: 'Input', |
| | | }, |
| | | ]; |
| | | }, |
| | | GetCrudForm: () => { |
| | | let isShow = false; |
| | | return [ |
| | | { |
| | | field: 'ID', |
| | | label: 'åéID', |
| | | component: 'Input', |
| | | colProps: { |
| | | span: 20, |
| | | }, |
| | | show: false, |
| | | }, |
| | | { |
| | | field: 'LABEL_ID', |
| | | label: 'æ ç¾æ¨¡æ¿ID', |
| | | component: 'Input', |
| | | colProps: { |
| | | span: 20, |
| | | }, |
| | | show: false, |
| | | }, |
| | | { |
| | | field: 'VAR_NAME', |
| | | label: 'åéå', |
| | | required: true, |
| | | component: 'Input', |
| | | isexist: 'Y', |
| | | colProps: { |
| | | span: 20, |
| | | }, |
| | | }, |
| | | { |
| | | field: 'VAR_TYPE', |
| | | label: 'åéç±»å', |
| | | component: 'ApiSelect', |
| | | colProps: { |
| | | span: 20, |
| | | }, |
| | | componentProps: { |
| | | api: GetEnum, |
| | | params: { name: 'BAS_LABEL_VAR+VAR_TYPEs' }, |
| | | resultField: 'Data', |
| | | labelField: unref(getLocale) == 'zh_CN' ? 'Desc' : 'Name', |
| | | valueField: 'Value', |
| | | onChange: (e) => { |
| | | if (e == 1) { |
| | | isShow = true; |
| | | } else { |
| | | isShow = false; |
| | | } |
| | | }, |
| | | }, |
| | | }, |
| | | { |
| | | field: 'VAR_VALUE', |
| | | label: 'åéå¼', |
| | | required: true, |
| | | component: 'Input', |
| | | colProps: { |
| | | span: 20, |
| | | }, |
| | | }, |
| | | { |
| | | field: 'BAS_LABEL_PV1PSelect_0', //æä½ä»£ç é
ç½®çè§åï¼å®ä½å+åºå·+PSelect_0ï¼åºå·ç¨æ¥åºåå¤ä¸ªçæ¶åï¼PSelect_0è¿æ¯ä¸ªåºå®åç¼ |
| | | label: '1', |
| | | defaultValue: 'BAS_LABEL_PV', |
| | | component: 'Input', |
| | | colProps: { span: 4 }, |
| | | ifShow: ({ values }) => isShow, |
| | | colSlot: 'BAS_LABEL_PV1add', //æä½ä»£ç é
ç½®çè§åï¼å®ä½å+åºå·+addï¼åºå·ç¨æ¥åºåå¤ä¸ªçæ¶åï¼addè¿æ¯ä¸ªåºå®åç¼ |
| | | }, |
| | | { |
| | | field: 'REMARK', |
| | | label: '夿³¨', |
| | | component: 'Input', |
| | | colProps: { |
| | | span: 20, |
| | | }, |
| | | }, |
| | | ]; |
| | | }, |
| | | OthersValues: (val: string, id: string) => { |
| | | return { LABEL_ID: id }; |
| | | }, |
| | | }; |
| | | |
| | | return [methods, ActionColumn]; |
| | |
| | | * @version: |
| | | * @Date: 2024-06-18 15:09:48 |
| | | * @LastEditors: Ben Lin |
| | | * @LastEditTime: 2024-06-23 18:03:27 |
| | | * @LastEditTime: 2024-06-23 22:11:00 |
| | | --> |
| | | <!-- |
| | | * _oo0oo_ |
| | |
| | | <script lang="ts" setup> |
| | | import { Ref, h, nextTick, onMounted, provide, ref, unref } from 'vue'; |
| | | import { Card } from 'ant-design-vue'; |
| | | import { useTable } from '/@/components/Table'; |
| | | import { PageWrapper } from '/@/components/Page'; |
| | | import dtl from './dtl.vue'; |
| | | import baseForm from './baseForm.vue'; |
| | |
| | | import { useRoute, useRouter } from 'vue-router'; |
| | | import CustModal from '/@/views/components/CustModal.vue'; |
| | | import { BasicForm, useForm } from '/@/components/Form/index'; |
| | | import { custOnChange, OpenCustModal, GetBasicColumnAndInit, getTitle } from '../data'; |
| | | import { custOnChange, OpenCustModal, getTitle } from '../data'; |
| | | import { useModal } from '/@/components/Modal'; |
| | | import { useLocale } from '/@/locales/useLocale'; |
| | | import { useGo } from '/@/hooks/web/usePage'; |
| | |
| | | provide<Ref<any>>('others', others); |
| | | provide<Ref<{}>>('useFormData', useFormData); |
| | | provide<Ref<any>>('baseCards', baseCards); |
| | | //è·åè¡¨æ ¼åä¿¡æ¯å¹¶åå§åä¸äºæ°æ®ï¼å¦ï¼formSchemas(å¼¹åºæ¡æé«çº§é¡µé¢å¤è¡¨åç»æ), useFormData(表åä¸ææ§½æ¸²ææé®æå¼æ¨¡ææ¡useModalæ¹æ³)...ç |
| | | const _columns = GetBasicColumnAndInit( |
| | | entityName.value, |
| | | formSchemas, |
| | | useFormData, |
| | | baseCards, |
| | | otherCards, |
| | | useForm, |
| | | useTableData, |
| | | useTable, |
| | | data, |
| | | ); |
| | | |
| | | const [registerCust, { openModal: openCustomModal, closeModal }] = useModal(); |
| | | const { setTitle } = useTabs(); |
| | | setTitle(objParams.value.Title); //设置æ ç¾é¡µæ é¢ |