From 07ac63b5bbb5c8dedb9d4f6228b35e10bbb80e74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E5=BD=AA=E8=BE=89?= Date: Wed, 23 Apr 2025 23:51:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- .env.production | 6 +- .gitignore | 1 - .hbuilderx/launch.json | 32 +- package-lock.json | 12 - package.json | 1 - src/App.vue | 6 +- src/addon/components/diy/group/index.vue | 80 -- src/addon/d_store/api/hello_world.ts | 8 - src/addon/d_store/api/store.ts | 10 - .../d_store/components/diy/dstore/index.vue | 335 ----- src/addon/d_store/locale/en.json | 1 - src/addon/d_store/locale/zh-Hans.json | 1 - .../zh-Hans/pages.hello_world.index.json | 2 - src/addon/d_store/pages/detail.vue | 279 ---- src/addon/d_store/pages/index.vue | 226 ---- src/addon/d_store/utils/styles/common.scss | 215 ---- src/addon/d_store/utils/theme.json | 9 - src/addon/d_store/utils/ts/common.ts | 132 -- src/addon/d_store/utils/ts/goto.ts | 11 - src/addon/dailySignIn/api/signin.ts | 22 - src/addon/dailySignIn/locale/en.json | 1 - src/addon/dailySignIn/locale/zh-Hans.json | 1 - .../zh-Hans/pages.hello_world.index.json | 2 - src/addon/dailySignIn/pages/signIn/index.vue | 854 ------------- src/addon/dailySignIn/styles/common.scss | 5 - src/addon/dailySignIn/types/signIn.d.ts | 17 - src/addon/dailySignIn/utils/theme.json | 9 - src/addon/dailySignIn/utils/utils.ts | 3 - src/addon/erp/api/base.ts | 3 + src/addon/erp/api/purchase.ts | 13 + src/addon/erp/api/sell.ts | 13 + src/addon/erp/erp.zip | Bin 0 -> 165957 bytes src/addon/erp/locale/zh-Hans.json | 74 +- .../zh-Hans/pages.base.customer.add.json | 22 +- .../zh-Hans/pages.base.customer.detail.json | 10 +- .../zh-Hans/pages.base.customer.list.json | 12 +- .../zh-Hans/pages.base.supplier.add.json | 16 +- .../zh-Hans/pages.base.supplier.detail.json | 8 +- .../zh-Hans/pages.base.supplier.list.json | 8 +- .../zh-Hans/pages.base.warehouse.add.json | 4 +- .../zh-Hans/pages.base.warehouse.detail.json | 2 +- .../zh-Hans/pages.base.warehouse.list.json | 2 +- ....add.json => pages.inbound.order.add.json} | 29 +- .../zh-Hans/pages.inbound.order.detail.json | 41 + ...ail.json => pages.inbound.order.list.json} | 15 +- .../pages.inbound.stockPending.add.json | 66 + .../pages.inbound.stockPending.detail.json | 41 + ...n => pages.inbound.stockPending.list.json} | 14 +- .../pages.inventory.inventory.add.json | 8 +- .../pages.inventory.inventory.list.json | 6 +- .../pages.inventory.statement.list.json | 6 +- .../pages.inventory.wprelationship.list.json | 8 +- ...add.json => pages.outbound.order.add.json} | 39 +- ....json => pages.outbound.order.detail.json} | 14 +- ...st.json => pages.outbound.order.list.json} | 14 +- ... => pages.outbound.order.sell-select.json} | 14 +- .../pages.outbound.outPending.add.json | 65 + .../pages.outbound.outPending.detail.json | 38 + .../pages.outbound.outPending.list.json | 39 + .../zh-Hans/pages.product.product.add.json | 64 +- .../zh-Hans/pages.product.product.detail.json | 12 +- .../zh-Hans/pages.product.product.list.json | 28 +- .../pages.product.product.product-select.json | 16 +- ...dd.json => pages.purchase.return.add.json} | 30 +- ...json => pages.purchase.return.detail.json} | 12 +- ...t.json => pages.purchase.return.list.json} | 10 +- .../pages.purchase.storage.detail.json | 35 - .../zh-Hans/pages.purchase.storage.list.json | 35 - .../zh-Hans/pages.sell.delivery.add.json | 60 - .../zh-Hans/pages.sell.delivery.detail.json | 34 - .../zh-Hans/pages.sell.delivery.list.json | 35 - .../zh-Hans/pages.sell.sellreturn.add.json | 43 - .../zh-Hans/pages.sell.sellreturn.detail.json | 27 - .../zh-Hans/pages.sell.sellreturn.list.json | 26 - .../erp/locale/zh-Hans/pages.statistics.json | 22 +- src/addon/erp/pages/base/customer/add.vue | 118 +- src/addon/erp/pages/base/customer/detail.vue | 3 - src/addon/erp/pages/base/supplier/add.vue | 183 ++- src/addon/erp/pages/base/warehouse/add.vue | 30 +- src/addon/erp/pages/canteen/return/add.vue | 47 +- src/addon/erp/pages/canteen/return/list.vue | 660 +++++----- .../pages/{purchase => inbound}/order/add.vue | 277 ++-- .../{purchase => inbound}/order/detail.vue | 138 +- .../{purchase => inbound}/order/list.vue | 103 +- .../erp/pages/inbound/stockPending/add.vue | 565 +++++++++ .../erp/pages/inbound/stockPending/detail.vue | 252 ++++ .../erp/pages/inbound/stockPending/list.vue | 436 +++++++ src/addon/erp/pages/index.vue | 2 +- .../erp/pages/inventory/inventory/add.vue | 212 ++-- .../erp/pages/inventory/inventory/list.vue | 158 ++- .../erp/pages/inventory/statement/list.vue | 11 +- .../pages/inventory/wprelationship/list.vue | 213 +++- src/addon/erp/pages/member/bind.vue | 1 + src/addon/erp/pages/outbound/order/add.vue | 527 ++++++++ .../delivery => outbound/order}/detail.vue | 125 +- .../{sell/sell => outbound/order}/list.vue | 94 +- .../order/sell-select-copy.vue} | 16 +- .../erp/pages/outbound/order/sell-select.vue | 119 ++ .../erp/pages/outbound/outPending/add.vue | 564 +++++++++ .../retire => outbound/outPending}/detail.vue | 145 ++- .../erp/pages/outbound/outPending/list.vue | 339 +++++ src/addon/erp/pages/product/product/add.vue | 117 +- .../product/product/out-product-select.vue | 152 +++ .../pages/product/product/product-select.vue | 88 +- src/addon/erp/pages/product/type/add.vue | 10 +- src/addon/erp/pages/product/unit/add.vue | 10 +- src/addon/erp/pages/purchase/retire/list.vue | 159 --- .../pages/purchase/{retire => return}/add.vue | 251 ++-- .../{sell/sell => purchase/return}/detail.vue | 110 +- src/addon/erp/pages/purchase/return/list.vue | 327 +++++ .../erp/pages/purchase/storage/detail.vue | 154 --- src/addon/erp/pages/purchase/storage/list.vue | 156 --- src/addon/erp/pages/sell/delivery/add.vue | 358 ------ src/addon/erp/pages/sell/delivery/list.vue | 115 -- src/addon/erp/pages/sell/sell/add.vue | 385 ------ src/addon/erp/pages/sell/sellreturn/add.vue | 345 ----- .../erp/pages/sell/sellreturn/detail.vue | 141 --- src/addon/erp/pages/sell/sellreturn/list.vue | 114 -- src/addon/erp/pages/statistics.vue | 76 +- src/addon/huodong/api/act.ts | 31 - src/addon/huodong/api/index.ts | 7 - src/addon/huodong/api/order.ts | 20 - .../components/jyf-parser/jyf-parser.vue | 634 ---------- .../components/jyf-parser/libs/CssHandler.js | 100 -- .../jyf-parser/libs/MpHtmlParser.js | 580 --------- .../components/jyf-parser/libs/config.js | 80 -- .../components/jyf-parser/libs/handler.wxs | 22 - .../components/jyf-parser/libs/trees.vue | 505 -------- src/addon/huodong/components/pay/pay.vue | 223 ---- src/addon/huodong/locale/en.json | 1 - src/addon/huodong/locale/zh-Hans.json | 8 - .../locale/zh-Hans/pages.index.index.json | 7 - .../locale/zh-Hans/pages.order.list.json | 6 - src/addon/huodong/pages/act/detail.vue | 356 ------ src/addon/huodong/pages/act/form.vue | 154 --- src/addon/huodong/pages/act/rank.vue | 275 ---- src/addon/huodong/pages/admin/mingdan.vue | 251 ---- src/addon/huodong/pages/index/index.vue | 287 ----- src/addon/huodong/pages/index/rank.vue | 273 ---- src/addon/huodong/pages/order/detail.vue | 190 --- src/addon/huodong/pages/order/hexiao.vue | 164 --- src/addon/huodong/pages/order/list.vue | 282 ----- src/addon/huodong/utils/common.ts | 153 --- src/addon/mplink/locale/en.json | 1 - src/addon/mplink/locale/zh-Hans.json | 1 - src/addon/qf_notice/locale/en.json | 1 - src/addon/qf_notice/locale/zh-Hans.json | 1 - src/addon/qrcode/api/hello_world.ts | 8 - src/addon/qrcode/locale/en.json | 1 - src/addon/qrcode/locale/zh-Hans.json | 1 - .../zh-Hans/pages.hello_world.index.json | 2 - src/addon/qrcode/pages/hello_world/index.vue | 18 - src/addon/recharge/api/recharge.ts | 36 - src/addon/recharge/locale/en.json | 1 - src/addon/recharge/locale/zh-Hans.json | 5 - src/addon/recharge/locale/zh-Hans/common.json | 3 - .../locale/zh-Hans/pages.recharge.json | 17 - .../locale/zh-Hans/pages.recharge_record.json | 4 - .../zh-Hans/pages.recharge_record_detail.json | 4 - src/addon/recharge/pages/recharge.vue | 275 ---- src/addon/recharge/pages/recharge_record.vue | 121 -- .../recharge/pages/recharge_record_detail.vue | 53 - src/addon/seafox_pay/api/hello_world.ts | 8 - src/addon/seafox_pay/api/maidan.ts | 27 - .../fx-amountInput/fx-amountInput.vue | 442 ------- src/addon/seafox_pay/components/pay/pay.vue | 223 ---- .../tuniaoui-vue3/action-sheet/index.ts | 8 - .../action-sheet/src/action-sheet.ts | 64 - .../action-sheet/src/action-sheet.vue | 85 -- .../action-sheet/src/composables/index.ts | 1 - .../src/composables/use-action-sheet.ts | 135 -- .../action-sheet/src/instance.ts | 3 - .../components/tuniaoui-vue3/avatar/index.ts | 14 - .../tuniaoui-vue3/avatar/src/avatar-group.ts | 77 -- .../tuniaoui-vue3/avatar/src/avatar-group.vue | 23 - .../tuniaoui-vue3/avatar/src/avatar.ts | 144 --- .../tuniaoui-vue3/avatar/src/avatar.vue | 62 - .../avatar/src/composables/avatar-custom.ts | 119 -- .../avatar/src/composables/index.ts | 6 - .../src/composables/use-avatar-badge-props.ts | 120 -- .../src/composables/use-avatar-group.ts | 36 - .../src/composables/use-avatar-icon-props.ts | 29 - .../src/composables/use-avatar-props.ts | 116 -- .../avatar/src/composables/use-avatar.ts | 97 -- .../tuniaoui-vue3/avatar/src/instance.ts | 5 - .../components/tuniaoui-vue3/badge/index.ts | 9 - .../tuniaoui-vue3/badge/src/badge.ts | 117 -- .../tuniaoui-vue3/badge/src/badge.vue | 51 - .../badge/src/composables/badge-custom.ts | 105 -- .../badge/src/composables/index.ts | 2 - .../badge/src/composables/use-badge.ts | 52 - .../tuniaoui-vue3/badge/src/instance.ts | 3 - .../base/common-props/checkbox/index.ts | 36 - .../base/common-props/form-meta/index.ts | 16 - .../base/common-props/picker/index.ts | 52 - .../base/common-props/progress/index.ts | 34 - .../base/common-props/radio/index.ts | 28 - .../base/common-props/steps/index.ts | 16 - .../base/common-props/subsection/index.ts | 16 - .../base/common-props/swipe-action/index.ts | 11 - .../base/common-props/tabbar/index.ts | 20 - .../base/common-props/tabs/index.ts | 20 - .../use-component-common-props/index.ts | 54 - .../composables/use-progress-props/index.ts | 48 - .../base/types/checkbox/index.ts | 4 - .../tuniaoui-vue3/bubble-box/index.ts | 8 - .../bubble-box/src/bubble-box.ts | 102 -- .../bubble-box/src/bubble-box.vue | 75 -- .../src/composables/bubble-box-custom.ts | 131 -- .../bubble-box/src/composables/index.ts | 3 - .../src/composables/use-bubble-box.ts | 41 - .../src/composables/use-bubble-options.ts | 33 - .../tuniaoui-vue3/bubble-box/src/instance.ts | 3 - .../tuniaoui-vue3/bubble-box/src/types.ts | 13 - .../components/tuniaoui-vue3/button/index.ts | 8 - .../tuniaoui-vue3/button/src/button.ts | 257 ---- .../tuniaoui-vue3/button/src/button.vue | 74 -- .../button/src/composables/button-custom.ts | 135 -- .../button/src/composables/index.ts | 2 - .../button/src/composables/use-button.ts | 57 - .../tuniaoui-vue3/button/src/instance.ts | 3 - .../tuniaoui-vue3/calendar/index.ts | 8 - .../calendar/libs/lunar-calendar/index.ts | 1120 ----------------- .../tuniaoui-vue3/calendar/src/calendar.ts | 109 -- .../tuniaoui-vue3/calendar/src/calendar.vue | 148 --- .../src/composables/calendar-custom.ts | 94 -- .../calendar/src/composables/index.ts | 2 - .../src/composables/use-calendar-selector.ts | 67 - .../calendar/src/composables/use-calendar.ts | 635 ---------- .../tuniaoui-vue3/calendar/src/instance.ts | 3 - .../tuniaoui-vue3/calendar/src/types.ts | 43 - .../tuniaoui-vue3/checkbox/index.ts | 13 - .../checkbox/src/checkbox-group.ts | 49 - .../checkbox/src/checkbox-group.vue | 32 - .../tuniaoui-vue3/checkbox/src/checkbox.ts | 67 - .../tuniaoui-vue3/checkbox/src/checkbox.vue | 53 - .../src/composables/checkbox-custom.ts | 116 -- .../checkbox/src/composables/index.ts | 4 - .../composables/use-checkbox-common-props.ts | 63 - .../src/composables/use-checkbox-group.ts | 56 - .../checkbox/src/composables/use-checkbox.ts | 64 - .../tuniaoui-vue3/checkbox/src/instance.ts | 5 - .../tuniaoui-vue3/circle-progress/index.ts | 8 - .../circle-progress/src/circle-progress.ts | 24 - .../circle-progress/src/circle-progress.vue | 29 - .../circle-progress/src/composables/index.ts | 1 - .../src/composables/use-circle-progress.ts | 146 --- .../circle-progress/src/instance.ts | 3 - .../tuniaoui-vue3/collapse/index.ts | 14 - .../collapse/src/collapse-item.ts | 16 - .../collapse/src/collapse-item.vue | 60 - .../tuniaoui-vue3/collapse/src/collapse.ts | 50 - .../tuniaoui-vue3/collapse/src/collapse.vue | 22 - .../src/composables/collapse-item-custom.ts | 41 - .../collapse/src/composables/index.ts | 3 - .../src/composables/use-collapse-item.ts | 98 -- .../collapse/src/composables/use-collapse.ts | 118 -- .../tuniaoui-vue3/collapse/src/instance.ts | 5 - .../tuniaoui-vue3/count-down/index.ts | 8 - .../src/composables/count-down-custom.ts | 114 -- .../composables/count-down-separator-data.ts | 40 - .../count-down/src/composables/index.ts | 3 - .../src/composables/use-count-down.ts | 101 -- .../count-down/src/count-down.ts | 99 -- .../count-down/src/count-down.vue | 93 -- .../tuniaoui-vue3/count-down/src/instance.ts | 3 - .../tuniaoui-vue3/count-scroll/index.ts | 7 - .../src/composables/count-scroll-custom.ts | 64 - .../count-scroll/src/composables/index.ts | 2 - .../src/composables/use-count-scroll.ts | 52 - .../count-scroll/src/count-scroll.ts | 44 - .../count-scroll/src/count-scroll.vue | 35 - .../count-scroll/src/instance.ts | 3 - .../tuniaoui-vue3/count-to/index.ts | 7 - .../src/composables/count-to-custom.ts | 43 - .../count-to/src/composables/index.ts | 2 - .../count-to/src/composables/use-count-to.ts | 114 -- .../tuniaoui-vue3/count-to/src/count-to.ts | 63 - .../tuniaoui-vue3/count-to/src/count-to.vue | 20 - .../tuniaoui-vue3/count-to/src/instance.ts | 3 - .../tuniaoui-vue3/date-time-picker/index.ts | 8 - .../date-time-picker/src/composables/index.ts | 1 - .../src/composables/use-date-time-data.ts | 334 ----- .../src/composables/use-date-time-picker.ts | 303 ----- .../composables/use-handle-min-max-time.ts | 172 --- .../date-time-picker/src/date-time-picker.ts | 69 - .../date-time-picker/src/date-time-picker.vue | 45 - .../date-time-picker/src/instance.ts | 3 - .../date-time-picker/src/types.ts | 2 - .../components/tuniaoui-vue3/empty/index.ts | 8 - .../tuniaoui-vue3/empty/libs/default.ts | 18 - .../tuniaoui-vue3/empty/libs/index.ts | 1 - .../empty/src/composables/empty-custom.ts | 79 -- .../empty/src/composables/index.ts | 1 - .../tuniaoui-vue3/empty/src/empty.ts | 50 - .../tuniaoui-vue3/empty/src/empty.vue | 53 - .../tuniaoui-vue3/empty/src/instance.ts | 3 - .../components/tuniaoui-vue3/footer/index.ts | 8 - .../footer/src/composables/footer-custom.ts | 110 -- .../footer/src/composables/index.ts | 2 - .../footer/src/composables/use-footer.ts | 49 - .../tuniaoui-vue3/footer/src/footer.ts | 91 -- .../tuniaoui-vue3/footer/src/footer.vue | 51 - .../tuniaoui-vue3/footer/src/instance.ts | 3 - .../tuniaoui-vue3/footer/src/types.ts | 12 - .../components/tuniaoui-vue3/form/index.ts | 17 - .../form/src/composables/form-custom.ts | 15 - .../form/src/composables/form-item-custom.ts | 104 -- .../form/src/composables/index.ts | 6 - .../src/composables/use-form-common-props.ts | 36 - .../composables/use-form-item-operation.ts | 278 ---- .../form/src/composables/use-form-item.ts | 12 - .../form/src/composables/use-form.ts | 130 -- .../tuniaoui-vue3/form/src/form-item.ts | 83 -- .../tuniaoui-vue3/form/src/form-item.vue | 136 -- .../components/tuniaoui-vue3/form/src/form.ts | 88 -- .../tuniaoui-vue3/form/src/form.vue | 72 -- .../tuniaoui-vue3/form/src/instance.ts | 5 - .../tuniaoui-vue3/form/src/types.ts | 56 - .../tuniaoui-vue3/form/src/utils.ts | 15 - .../components/tuniaoui-vue3/icon/index.ts | 8 - .../icon/src/composables/icon-custom.ts | 90 -- .../icon/src/composables/index.ts | 1 - .../components/tuniaoui-vue3/icon/src/icon.ts | 76 -- .../tuniaoui-vue3/icon/src/icon.vue | 34 - .../tuniaoui-vue3/icon/src/instance.ts | 3 - .../tuniaoui-vue3/image-upload/index.ts | 9 - .../image-upload/src/composables/index.ts | 1 - .../src/composables/use-image-upload.ts | 377 ------ .../composables/use-upload-handle-function.ts | 230 ---- .../image-upload/src/image-upload.ts | 215 ---- .../image-upload/src/image-upload.vue | 131 -- .../image-upload/src/instance.ts | 3 - .../tuniaoui-vue3/image-upload/src/types.ts | 10 - .../tuniaoui-vue3/index-list/index.ts | 8 - .../src/composables/index-list-custom.ts | 65 - .../index-list/src/composables/index.ts | 2 - .../src/composables/use-index-list.ts | 241 ---- .../index-list/src/index-list.ts | 97 -- .../index-list/src/index-list.vue | 105 -- .../tuniaoui-vue3/index-list/src/instance.ts | 3 - .../tuniaoui-vue3/index-list/src/types.ts | 12 - .../components/tuniaoui-vue3/index.ts | 55 - .../components/tuniaoui-vue3/input/index.ts | 9 - .../input/src/composables/index.ts | 2 - .../input/src/composables/input-custom.ts | 121 -- .../input/src/composables/use-input.ts | 165 --- .../tuniaoui-vue3/input/src/input.ts | 272 ---- .../tuniaoui-vue3/input/src/input.vue | 146 --- .../tuniaoui-vue3/input/src/instance.ts | 3 - .../tuniaoui-vue3/keyboard/index.ts | 8 - .../keyboard/libs/car-keyboard-data.ts | 80 -- .../tuniaoui-vue3/keyboard/libs/index.ts | 1 - .../keyboard/src/composables/index.ts | 2 - .../src/composables/use-keyboard-data.ts | 99 -- .../keyboard/src/composables/use-keyboard.ts | 153 --- .../tuniaoui-vue3/keyboard/src/instance.ts | 3 - .../tuniaoui-vue3/keyboard/src/keyboard.ts | 98 -- .../tuniaoui-vue3/keyboard/src/keyboard.vue | 162 --- .../tuniaoui-vue3/lazy-load/index.ts | 8 - .../lazy-load/src/composables/index.ts | 2 - .../src/composables/lazy-load-custom.ts | 26 - .../src/composables/use-lazy-load.ts | 116 -- .../tuniaoui-vue3/lazy-load/src/instance.ts | 3 - .../tuniaoui-vue3/lazy-load/src/lazy-load.ts | 55 - .../tuniaoui-vue3/lazy-load/src/lazy-load.vue | 76 -- .../tuniaoui-vue3/lazy-load/src/types.ts | 1 - .../tuniaoui-vue3/line-progress/index.ts | 8 - .../line-progress/src/composables/index.ts | 1 - .../src/composables/line-progress-custom.ts | 91 -- .../line-progress/src/instance.ts | 3 - .../line-progress/src/line-progress.ts | 28 - .../line-progress/src/line-progress.vue | 32 - .../components/tuniaoui-vue3/list/index.ts | 8 - .../list/src/composables/index.ts | 1 - .../list/src/composables/list-item-custom.ts | 99 -- .../tuniaoui-vue3/list/src/instance.ts | 3 - .../tuniaoui-vue3/list/src/list-item.ts | 76 -- .../tuniaoui-vue3/list/src/list-item.vue | 46 - .../components/tuniaoui-vue3/loading/index.ts | 9 - .../loading/src/composables/index.ts | 1 - .../loading/src/composables/loading-custom.ts | 89 -- .../tuniaoui-vue3/loading/src/instance.ts | 3 - .../tuniaoui-vue3/loading/src/loading.ts | 57 - .../tuniaoui-vue3/loading/src/loading.vue | 47 - .../tuniaoui-vue3/loadmore/index.ts | 8 - .../loadmore/src/composables/index.ts | 1 - .../src/composables/loadmore-custom.ts | 97 -- .../tuniaoui-vue3/loadmore/src/instance.ts | 3 - .../tuniaoui-vue3/loadmore/src/loadmore.ts | 83 -- .../tuniaoui-vue3/loadmore/src/loadmore.vue | 81 -- .../components/tuniaoui-vue3/modal/index.ts | 8 - .../modal/src/composables/index.ts | 2 - .../modal/src/composables/modal-custom.ts | 101 -- .../modal/src/composables/use-modal.ts | 148 --- .../tuniaoui-vue3/modal/src/instance.ts | 3 - .../tuniaoui-vue3/modal/src/modal.ts | 77 -- .../tuniaoui-vue3/modal/src/modal.vue | 85 -- .../components/tuniaoui-vue3/navbar/index.ts | 8 - .../navbar/src/composables/index.ts | 2 - .../navbar/src/composables/navbar-custom.ts | 216 ---- .../navbar/src/composables/use-navbar.ts | 104 -- .../tuniaoui-vue3/navbar/src/instance.ts | 3 - .../tuniaoui-vue3/navbar/src/navbar.ts | 127 -- .../tuniaoui-vue3/navbar/src/navbar.vue | 130 -- .../tuniaoui-vue3/navbar/src/types.ts | 1 - .../tuniaoui-vue3/notice-bar/index.ts | 8 - .../notice-bar/src/column-notice-bar.vue | 46 - .../notice-bar/src/composables/index.ts | 4 - .../composables/notice-bar-common-props.ts | 99 -- .../src/composables/use-column-notice-bar.ts | 38 - .../src/composables/use-notice-bar.ts | 47 - .../src/composables/use-row-notice-bar.ts | 156 --- .../tuniaoui-vue3/notice-bar/src/instance.ts | 3 - .../notice-bar/src/notice-bar.ts | 115 -- .../notice-bar/src/notice-bar.vue | 59 - .../notice-bar/src/row-notice-bar.vue | 36 - .../components/tuniaoui-vue3/notify/index.ts | 8 - .../notify/src/composables/index.ts | 2 - .../notify/src/composables/notify-custom.ts | 73 -- .../notify/src/composables/use-notify.ts | 49 - .../tuniaoui-vue3/notify/src/instance.ts | 3 - .../tuniaoui-vue3/notify/src/notify.ts | 57 - .../tuniaoui-vue3/notify/src/notify.vue | 30 - .../tuniaoui-vue3/number-box/index.ts | 8 - .../number-box/src/composables/index.ts | 2 - .../src/composables/number-box-custom.ts | 106 -- .../src/composables/use-number-box.ts | 117 -- .../tuniaoui-vue3/number-box/src/instance.ts | 3 - .../number-box/src/number-box.ts | 109 -- .../number-box/src/number-box.vue | 79 -- .../components/tuniaoui-vue3/overlay/index.ts | 8 - .../overlay/src/composables/index.ts | 1 - .../overlay/src/composables/use-overlay.ts | 58 - .../tuniaoui-vue3/overlay/src/instance.ts | 3 - .../tuniaoui-vue3/overlay/src/overlay.ts | 43 - .../tuniaoui-vue3/overlay/src/overlay.vue | 25 - .../tuniaoui-vue3/photo-album/index.ts | 8 - .../photo-album/src/composables/index.ts | 1 - .../src/composables/use-photo-album.ts | 31 - .../tuniaoui-vue3/photo-album/src/instance.ts | 3 - .../photo-album/src/photo-album.ts | 60 - .../photo-album/src/photo-album.vue | 55 - .../components/tuniaoui-vue3/picker/index.ts | 8 - .../picker/src/composables/index.ts | 2 - .../picker/src/composables/picker-custom.ts | 72 -- .../picker/src/composables/use-picker.ts | 379 ------ .../tuniaoui-vue3/picker/src/instance.ts | 3 - .../tuniaoui-vue3/picker/src/picker.ts | 79 -- .../tuniaoui-vue3/picker/src/picker.vue | 109 -- .../components/tuniaoui-vue3/popup/index.ts | 8 - .../popup/src/composables/index.ts | 2 - .../popup/src/composables/popup-custom.ts | 116 -- .../popup/src/composables/use-popup.ts | 71 -- .../tuniaoui-vue3/popup/src/instance.ts | 3 - .../tuniaoui-vue3/popup/src/popup.ts | 121 -- .../tuniaoui-vue3/popup/src/popup.vue | 57 - .../components/tuniaoui-vue3/radio/index.ts | 13 - .../radio/src/composables/index.ts | 4 - .../radio/src/composables/radio-custom.ts | 110 -- .../src/composables/use-radio-common-props.ts | 46 - .../radio/src/composables/use-radio-group.ts | 38 - .../radio/src/composables/use-radio.ts | 49 - .../tuniaoui-vue3/radio/src/instance.ts | 5 - .../tuniaoui-vue3/radio/src/radio-group.ts | 39 - .../tuniaoui-vue3/radio/src/radio-group.vue | 32 - .../tuniaoui-vue3/radio/src/radio.ts | 41 - .../tuniaoui-vue3/radio/src/radio.vue | 41 - .../components/tuniaoui-vue3/rate/index.ts | 8 - .../rate/src/composables/index.ts | 2 - .../rate/src/composables/rate-custom.ts | 69 - .../src/composables/use-rate-item-data.ts | 70 -- .../rate/src/composables/use-rate.ts | 193 --- .../tuniaoui-vue3/rate/src/instance.ts | 3 - .../components/tuniaoui-vue3/rate/src/rate.ts | 108 -- .../tuniaoui-vue3/rate/src/rate.vue | 60 - .../tuniaoui-vue3/rate/src/types.ts | 12 - .../tuniaoui-vue3/read-more/index.ts | 8 - .../read-more/src/composables/index.ts | 2 - .../src/composables/read-more-custom.ts | 40 - .../src/composables/use-read-more.ts | 159 --- .../tuniaoui-vue3/read-more/src/instance.ts | 3 - .../tuniaoui-vue3/read-more/src/read-more.ts | 82 -- .../tuniaoui-vue3/read-more/src/read-more.vue | 76 -- .../tuniaoui-vue3/region-picker/index.ts | 8 - .../tuniaoui-vue3/region-picker/libs/index.ts | 1 - .../region-picker/libs/region-data.json | 1 - .../tuniaoui-vue3/region-picker/libs/types.ts | 6 - .../region-picker/src/composables/index.ts | 1 - .../src/composables/use-region-picker.ts | 179 --- .../region-picker/src/instance.ts | 3 - .../region-picker/src/region-picker.ts | 36 - .../region-picker/src/region-picker.vue | 42 - .../tuniaoui-vue3/scroll-list/index.ts | 8 - .../scroll-list/src/composables/index.ts | 2 - .../src/composables/scroll-list-custom.ts | 78 -- .../src/composables/use-scroll-list.ts | 85 -- .../tuniaoui-vue3/scroll-list/src/instance.ts | 3 - .../scroll-list/src/scroll-list.ts | 49 - .../scroll-list/src/scroll-list.vue | 55 - .../tuniaoui-vue3/search-box/index.ts | 8 - .../search-box/src/composables/index.ts | 2 - .../src/composables/search-box-custom.ts | 124 -- .../src/composables/use-search-box.ts | 96 -- .../tuniaoui-vue3/search-box/src/instance.ts | 3 - .../search-box/src/search-box.ts | 156 --- .../search-box/src/search-box.vue | 94 -- .../components/tuniaoui-vue3/slider/index.ts | 8 - .../slider/src/composables/index.ts | 4 - .../slider/src/composables/slider-custom.ts | 153 --- .../composables/use-slider-common-porps.ts | 16 - .../src/composables/use-slider-node-info.ts | 170 --- .../slider/src/composables/use-slider.ts | 129 -- .../tuniaoui-vue3/slider/src/instance.ts | 3 - .../tuniaoui-vue3/slider/src/slider.ts | 98 -- .../tuniaoui-vue3/slider/src/slider.vue | 74 -- .../components/tuniaoui-vue3/steps/index.ts | 15 - .../steps/src/composables/index.ts | 4 - .../steps/src/composables/step-custom.ts | 191 --- .../steps/src/composables/steps-custom.ts | 9 - .../steps/src/composables/use-step.ts | 57 - .../steps/src/composables/use-steps.ts | 96 -- .../tuniaoui-vue3/steps/src/instance.ts | 5 - .../tuniaoui-vue3/steps/src/steps-item.ts | 30 - .../tuniaoui-vue3/steps/src/steps-item.vue | 91 -- .../tuniaoui-vue3/steps/src/steps.ts | 33 - .../tuniaoui-vue3/steps/src/steps.vue | 20 - .../tuniaoui-vue3/steps/src/types.ts | 5 - .../components/tuniaoui-vue3/sticky/index.ts | 8 - .../sticky/src/composables/index.ts | 2 - .../sticky/src/composables/sticky-custom.ts | 73 -- .../src/composables/use-sticky-support.ts | 100 -- .../sticky/src/composables/use-sticky.ts | 165 --- .../tuniaoui-vue3/sticky/src/instance.ts | 3 - .../tuniaoui-vue3/sticky/src/sticky.ts | 38 - .../tuniaoui-vue3/sticky/src/sticky.vue | 34 - .../tuniaoui-vue3/sticky/src/types.ts | 5 - .../tuniaoui-vue3/subsection/index.ts | 17 - .../subsection/src/composables/index.ts | 4 - .../src/composables/subsection-custom.ts | 117 -- .../src/composables/subsection-item-custom.ts | 94 -- .../src/composables/use-subsection-item.ts | 97 -- .../src/composables/use-subsection.ts | 181 --- .../tuniaoui-vue3/subsection/src/instance.ts | 5 - .../subsection/src/subsection-item.ts | 22 - .../subsection/src/subsection-item.vue | 39 - .../subsection/src/subsection.ts | 47 - .../subsection/src/subsection.vue | 31 - .../tuniaoui-vue3/subsection/src/types.ts | 6 - .../tuniaoui-vue3/swipe-action/index.ts | 17 - .../swipe-action/src/composables/index.ts | 3 - .../src/composables/swipe-action-options.ts | 91 -- .../src/composables/use-swipe-action-item.ts | 245 ---- .../src/composables/use-swipe-action.ts | 65 - .../swipe-action/src/instance.ts | 5 - .../swipe-action/src/swipe-action-item.ts | 56 - .../swipe-action/src/swipe-action-item.vue | 88 -- .../swipe-action/src/swipe-action.ts | 30 - .../swipe-action/src/swipe-action.vue | 22 - .../components/tuniaoui-vue3/swiper/index.ts | 9 - .../swiper/src/composables/index.ts | 2 - .../swiper/src/composables/swiper-custom.ts | 99 -- .../swiper/src/composables/use-swiper.ts | 56 - .../tuniaoui-vue3/swiper/src/instance.ts | 5 - .../tuniaoui-vue3/swiper/src/swiper.ts | 135 -- .../tuniaoui-vue3/swiper/src/swiper.vue | 112 -- .../tuniaoui-vue3/switch-tab/index.ts | 8 - .../switch-tab/src/composables/index.ts | 2 - .../src/composables/switch-tab-custom.ts | 117 -- .../src/composables/use-switch-tab.ts | 21 - .../tuniaoui-vue3/switch-tab/src/instance.ts | 3 - .../switch-tab/src/switch-tab.ts | 49 - .../switch-tab/src/switch-tab.vue | 37 - .../components/tuniaoui-vue3/switch/index.ts | 8 - .../switch/src/composables/index.ts | 3 - .../switch/src/composables/switch-custom.ts | 96 -- .../composables/use-switch-common-props.ts | 15 - .../switch/src/composables/use-switch.ts | 83 -- .../tuniaoui-vue3/switch/src/instance.ts | 3 - .../tuniaoui-vue3/switch/src/switch.ts | 125 -- .../tuniaoui-vue3/switch/src/switch.vue | 69 - .../components/tuniaoui-vue3/tabbar/index.ts | 14 - .../tabbar/src/composables/index.ts | 4 - .../tabbar/src/composables/tabbar-custom.ts | 98 -- .../src/composables/tabbar-item-custom.ts | 178 --- .../tabbar/src/composables/use-tabbar-item.ts | 116 -- .../tabbar/src/composables/use-tabbar.ts | 184 --- .../tuniaoui-vue3/tabbar/src/instance.ts | 5 - .../tuniaoui-vue3/tabbar/src/tabbar-item.ts | 68 - .../tuniaoui-vue3/tabbar/src/tabbar-item.vue | 78 -- .../tuniaoui-vue3/tabbar/src/tabbar.ts | 86 -- .../tuniaoui-vue3/tabbar/src/tabbar.vue | 57 - .../tuniaoui-vue3/tabbar/src/types.ts | 6 - .../components/tuniaoui-vue3/tabs/index.ts | 15 - .../tabs/src/composables/index.ts | 4 - .../tabs/src/composables/tabs-custom.ts | 83 -- .../tabs/src/composables/tabs-item-custom.ts | 99 -- .../tabs/src/composables/use-tabs-item.ts | 108 -- .../tabs/src/composables/use-tabs.ts | 264 ---- .../tuniaoui-vue3/tabs/src/instance.ts | 5 - .../tuniaoui-vue3/tabs/src/tabs-item.ts | 47 - .../tuniaoui-vue3/tabs/src/tabs-item.vue | 55 - .../components/tuniaoui-vue3/tabs/src/tabs.ts | 90 -- .../tuniaoui-vue3/tabs/src/tabs.vue | 68 - .../tuniaoui-vue3/tabs/src/types.ts | 8 - .../components/tuniaoui-vue3/tag/index.ts | 8 - .../tag/src/composables/index.ts | 2 - .../tag/src/composables/tag-custom.ts | 88 -- .../tag/src/composables/use-tag.ts | 15 - .../tuniaoui-vue3/tag/src/instance.ts | 3 - .../components/tuniaoui-vue3/tag/src/tag.ts | 92 -- .../components/tuniaoui-vue3/tag/src/tag.vue | 27 - .../components/tuniaoui-vue3/title/index.ts | 8 - .../title/src/composables/index.ts | 1 - .../title/src/composables/title-custom.ts | 115 -- .../tuniaoui-vue3/title/src/instance.ts | 3 - .../tuniaoui-vue3/title/src/title.ts | 65 - .../tuniaoui-vue3/title/src/title.vue | 42 - .../tuniaoui-vue3/tuniaoui-vue3.vue | 6 - .../tuniaoui-vue3/water-fall/index.ts | 8 - .../water-fall/src/composables/index.ts | 1 - .../src/composables/use-water-fall.ts | 127 -- .../tuniaoui-vue3/water-fall/src/instance.ts | 3 - .../water-fall/src/water-fall.ts | 27 - .../water-fall/src/water-fall.vue | 62 - .../tuniaoui-vue3/week-calendar/index.ts | 8 - .../week-calendar/src/composables/index.ts | 2 - .../composables/use-week-calendar-selector.ts | 57 - .../src/composables/use-week-calendar.ts | 220 ---- .../src/composables/week-calendar-custom.ts | 63 - .../week-calendar/src/instance.ts | 3 - .../tuniaoui-vue3/week-calendar/src/types.ts | 9 - .../week-calendar/src/week-calendar.ts | 64 - .../week-calendar/src/week-calendar.vue | 106 -- src/addon/seafox_pay/locale/en.json | 1 - src/addon/seafox_pay/locale/zh-Hans.json | 4 - .../zh-Hans/pages.hello_world.index.json | 2 - .../locale/zh-Hans/pages.maidan.json | 3 - .../seafox_pay/pages/hello_world/index.vue | 18 - src/addon/seafox_pay/pages/maidan/index.vue | 154 --- src/addon/seafox_pay/pages/maidan/order.vue | 111 -- src/addon/seafox_pay/pages/pay/index.vue | 179 --- src/addon/shop/api/cart.ts | 59 - src/addon/shop/api/config.ts | 8 - src/addon/shop/api/coupon.ts | 63 - src/addon/shop/api/discount.ts | 25 - src/addon/shop/api/evaluate.ts | 26 - src/addon/shop/api/goods.ts | 106 -- src/addon/shop/api/newcomer.ts | 16 - src/addon/shop/api/order.ts | 86 -- src/addon/shop/api/point.ts | 45 - src/addon/shop/api/rank.ts | 29 - src/addon/shop/api/refund.ts | 71 -- src/addon/shop/api/shop.ts | 8 - .../components/diy/goods-coupon/index.vue | 389 ------ .../shop/components/diy/goods-list/index.vue | 441 ------- .../components/diy/many-goods-list/index.vue | 347 ----- .../diy/shop-exchange-goods/index.vue | 241 ---- .../diy/shop-exchange-info/index.vue | 131 -- .../diy/shop-goods-ranking/index.vue | 199 --- .../diy/shop-goods-recommend/index.vue | 208 --- .../components/diy/shop-member-info/index.vue | 260 ---- .../components/diy/shop-newcomer/index.vue | 476 ------- .../components/diy/shop-order-info/index.vue | 156 --- .../shop/components/diy/shop-search/index.vue | 109 -- .../components/diy/single-recommend/index.vue | 262 ---- .../ns-goods-manjian/ns-goods-manjian.vue | 141 --- .../ns-goods-recommend/ns-goods-recommend.vue | 67 - .../components/ns-goods-sku/ns-goods-sku.vue | 450 ------- src/addon/shop/hooks/useGoods.ts | 50 - src/addon/shop/hooks/useGoodsLimit.ts | 78 -- src/addon/shop/locale/en.json | 1 - src/addon/shop/locale/zh-Hans.json | 32 - src/addon/shop/locale/zh-Hans/common.json | 7 - .../shop/locale/zh-Hans/pages.goods.cart.json | 2 - .../locale/zh-Hans/pages.goods.category.json | 2 - .../locale/zh-Hans/pages.goods.detail.json | 2 - .../shop/locale/zh-Hans/pages.goods.list.json | 4 - .../shop/locale/zh-Hans/pages.goods.rank.json | 3 - .../shop/locale/zh-Hans/pages.index.json | 2 - .../locale/zh-Hans/pages.member.index.json | 3 - .../locale/zh-Hans/pages.order.detail.json | 24 - .../shop/locale/zh-Hans/pages.order.list.json | 16 - .../locale/zh-Hans/pages.order.payment.json | 11 - .../locale/zh-Hans/pages.point.detail.json | 5 - .../zh-Hans/pages.point.order_list.json | 14 - .../locale/zh-Hans/pages.refund.detail.json | 17 - .../locale/zh-Hans/pages.refund.list.json | 6 - src/addon/shop/pages/coupon/detail.vue | 174 --- src/addon/shop/pages/coupon/list.vue | 339 ----- src/addon/shop/pages/discount/list.vue | 281 ----- .../pages/evaluate/components/upload-img.vue | 96 -- src/addon/shop/pages/evaluate/list.vue | 225 ---- .../shop/pages/evaluate/order_evaluate.vue | 161 --- .../pages/evaluate/order_evaluate_view.vue | 173 --- src/addon/shop/pages/goods/browse.vue | 266 ---- src/addon/shop/pages/goods/cart.vue | 703 ----------- src/addon/shop/pages/goods/category.vue | 133 -- src/addon/shop/pages/goods/collect.vue | 199 --- .../pages/goods/components/add-cart-popup.vue | 374 ------ .../components/category-template-one-one.vue | 793 ------------ .../components/category-template-two-one.vue | 306 ----- .../components/category-template-two-two.vue | 896 ------------- src/addon/shop/pages/goods/detail.vue | 1011 --------------- src/addon/shop/pages/goods/list.vue | 329 ----- src/addon/shop/pages/goods/rank.vue | 311 ----- src/addon/shop/pages/goods/search.vue | 207 --- src/addon/shop/pages/index.vue | 86 -- src/addon/shop/pages/member/index.vue | 94 -- src/addon/shop/pages/member/my_coupon.vue | 220 ---- src/addon/shop/pages/newcomer/list.vue | 267 ---- .../components/address-list/address-list.vue | 100 -- .../order/components/invoice/invoice.vue | 188 --- .../logistics-tracking/logistics-tracking.vue | 114 -- .../select-coupon/select-coupon.vue | 134 -- .../components/select-store/select-store.vue | 140 --- src/addon/shop/pages/order/detail.vue | 726 ----------- src/addon/shop/pages/order/list.vue | 329 ----- src/addon/shop/pages/order/payment.vue | 516 -------- .../components/address-list/address-list.vue | 100 -- .../shop/pages/point/components/goods-sku.vue | 282 ----- src/addon/shop/pages/point/detail.vue | 630 ---------- src/addon/shop/pages/point/index.vue | 86 -- src/addon/shop/pages/point/list.vue | 207 --- src/addon/shop/pages/point/order_list.vue | 296 ----- src/addon/shop/pages/point/payment.vue | 409 ------ src/addon/shop/pages/refund/apply.vue | 285 ----- src/addon/shop/pages/refund/detail.vue | 369 ------ src/addon/shop/pages/refund/edit_apply.vue | 272 ---- src/addon/shop/pages/refund/list.vue | 163 --- src/addon/shop/pages/refund/log.vue | 61 - src/addon/shop/stores/cart.ts | 209 --- src/addon/shop/styles/common.scss | 66 - src/addon/shop/utils/map/openMap.js | 109 -- .../shop/utils/map/transformCoordinate.js | 124 -- src/addon/shop/utils/theme.json | 10 - src/addon/shop_fenxiao/api/agent.ts | 27 - src/addon/shop_fenxiao/api/fenxiao.ts | 149 --- src/addon/shop_fenxiao/api/level.ts | 9 - src/addon/shop_fenxiao/api/sale.ts | 49 - src/addon/shop_fenxiao/api/task.ts | 33 - src/addon/shop_fenxiao/api/team.ts | 28 - .../diy/fenxiao-goods-list/index.vue | 407 ------ src/addon/shop_fenxiao/locale/en.json | 1 - src/addon/shop_fenxiao/locale/zh-Hans.json | 21 - .../locale/zh-Hans/pages.agent_list.json | 4 - .../locale/zh-Hans/pages.apply.json | 14 - .../locale/zh-Hans/pages.index.json | 13 - .../locale/zh-Hans/pages.level.json | 7 - .../locale/zh-Hans/pages.order.json | 4 - .../locale/zh-Hans/pages.task_detail.json | 5 - .../locale/zh-Hans/pages.team_dividend.json | 4 - src/addon/shop_fenxiao/pages/agent_list.vue | 177 --- src/addon/shop_fenxiao/pages/apply.vue | 315 ----- .../shop_fenxiao/pages/child_fenxiao.vue | 48 - src/addon/shop_fenxiao/pages/goods.vue | 174 --- src/addon/shop_fenxiao/pages/index.vue | 322 ----- src/addon/shop_fenxiao/pages/level.vue | 257 ---- src/addon/shop_fenxiao/pages/order.vue | 164 --- src/addon/shop_fenxiao/pages/promote.vue | 113 -- src/addon/shop_fenxiao/pages/promote_code.vue | 265 ---- src/addon/shop_fenxiao/pages/sale.vue | 213 ---- src/addon/shop_fenxiao/pages/sale_detail.vue | 125 -- src/addon/shop_fenxiao/pages/sale_ranking.vue | 114 -- src/addon/shop_fenxiao/pages/task_detail.vue | 247 ---- src/addon/shop_fenxiao/pages/task_rewards.vue | 207 --- .../pages/task_rewards_detail.vue | 92 -- src/addon/shop_fenxiao/pages/team.vue | 61 - .../shop_fenxiao/pages/team_dividend.vue | 173 --- src/addon/shop_fenxiao/pages/zone.vue | 118 -- src/addon/shop_fenxiao/utils/theme.json | 10 - src/addon/shop_giftcard/api/card.ts | 103 -- src/addon/shop_giftcard/api/category.ts | 10 - src/addon/shop_giftcard/api/giftcard.ts | 34 - src/addon/shop_giftcard/api/order.ts | 47 - src/addon/shop_giftcard/api/records.ts | 24 - .../components/diy/giftcard-list/index.vue | 229 ---- .../components/give-popup/give-popup.vue | 117 -- src/addon/shop_giftcard/locale/en.json | 1 - src/addon/shop_giftcard/locale/zh-Hans.json | 19 - .../shop_giftcard/locale/zh-Hans/common.json | 2 - .../locale/zh-Hans/pages.activate.json | 13 - .../locale/zh-Hans/pages.card_bag.json | 9 - .../locale/zh-Hans/pages.detail.json | 16 - .../locale/zh-Hans/pages.give.json | 20 - .../locale/zh-Hans/pages.give_detail.json | 6 - .../locale/zh-Hans/pages.give_list.json | 5 - .../locale/zh-Hans/pages.list.json | 4 - .../locale/zh-Hans/pages.my_card_list.json | 11 - .../locale/zh-Hans/pages.order_detail.json | 25 - .../locale/zh-Hans/pages.order_list.json | 9 - .../locale/zh-Hans/pages.payment.json | 7 - .../locale/zh-Hans/pages.receive_info.json | 13 - .../locale/zh-Hans/pages.receive_list.json | 8 - .../locale/zh-Hans/pages.use_card.json | 21 - .../zh-Hans/pages.use_goods_select.json | 18 - src/addon/shop_giftcard/pages/activate.vue | 179 --- src/addon/shop_giftcard/pages/card_bag.vue | 184 --- src/addon/shop_giftcard/pages/detail.vue | 392 ------ src/addon/shop_giftcard/pages/give.vue | 293 ----- src/addon/shop_giftcard/pages/give_detail.vue | 92 -- src/addon/shop_giftcard/pages/give_list.vue | 107 -- src/addon/shop_giftcard/pages/index.vue | 86 -- src/addon/shop_giftcard/pages/list.vue | 150 --- src/addon/shop_giftcard/pages/member.vue | 94 -- .../shop_giftcard/pages/my_card_list.vue | 201 --- .../shop_giftcard/pages/order_detail.vue | 222 ---- src/addon/shop_giftcard/pages/order_list.vue | 206 --- src/addon/shop_giftcard/pages/payment.vue | 213 ---- .../shop_giftcard/pages/receive_info.vue | 181 --- .../shop_giftcard/pages/receive_list.vue | 140 --- src/addon/shop_giftcard/pages/use_card.vue | 264 ---- .../shop_giftcard/pages/use_goods_select.vue | 242 ---- src/addon/shop_giftcard/utils/theme.json | 10 - src/addon/spdr/locale/en.json | 1 - src/addon/spdr/locale/zh-Hans.json | 1 - src/addon/tk_pan/locale/en.json | 1 - src/addon/tk_pan/locale/zh-Hans.json | 1 - src/addon/tk_yht/locale/en.json | 1 - src/addon/tk_yht/locale/zh-Hans.json | 1 - src/addon/tourism/api/tourism.ts | 410 ------ .../components/diy/tourism-hotel/index.vue | 272 ---- .../components/diy/tourism-tickets/index.vue | 279 ---- .../components/diy/tourism-travel/index.vue | 241 ---- src/addon/tourism/locale/en.json | 1 - src/addon/tourism/locale/zh-Hans.json | 16 - src/addon/tourism/locale/zh-Hans/common.json | 6 - .../locale/zh-Hans/pages.hotel.detail.json | 14 - .../locale/zh-Hans/pages.hotel.list.json | 6 - .../tourism/locale/zh-Hans/pages.index.json | 2 - .../locale/zh-Hans/pages.order.detail.json | 1 - .../locale/zh-Hans/pages.scenic.detail.json | 3 - .../locale/zh-Hans/pages.scenic.list.json | 3 - .../locale/zh-Hans/pages.scenic.order.json | 3 - .../locale/zh-Hans/pages.verify.detail.json | 20 - .../locale/zh-Hans/pages.verify.index.json | 26 - .../locale/zh-Hans/pages.way.list.json | 3 - src/addon/tourism/pages/hotel/detail.vue | 525 -------- src/addon/tourism/pages/hotel/list.vue | 183 --- src/addon/tourism/pages/hotel/order.vue | 383 ------ src/addon/tourism/pages/index.vue | 86 -- src/addon/tourism/pages/member/index.vue | 148 --- src/addon/tourism/pages/order/detail.vue | 374 ------ .../tourism/pages/order/hotel_detail.vue | 154 --- src/addon/tourism/pages/order/list.vue | 339 ----- src/addon/tourism/pages/scenic/detail.vue | 355 ------ src/addon/tourism/pages/scenic/list.vue | 174 --- src/addon/tourism/pages/scenic/order.vue | 527 -------- src/addon/tourism/pages/verify/detail.vue | 110 -- src/addon/tourism/pages/verify/index.vue | 180 --- src/addon/tourism/pages/verify/record.vue | 213 ---- src/addon/tourism/pages/way/detail.vue | 403 ------ src/addon/tourism/pages/way/list.vue | 182 --- src/addon/tourism/pages/way/order.vue | 340 ----- src/addon/tourism/styles/common.scss | 0 src/addon/tourism/utils/map/openMap.js | 110 -- .../tourism/utils/map/transformCoordinate.js | 124 -- src/addon/tourism/utils/theme.json | 9 - src/addon/tt_niucloud/api/hello_world.ts | 8 - src/addon/tt_niucloud/api/member.ts | 22 - .../components/diy/parent-member/index.vue | 125 -- .../components/diy/poster/index.vue | 137 -- .../components/diy/ttn-graphic-nav/index.vue | 352 ------ src/addon/tt_niucloud/locale/en.json | 1 - src/addon/tt_niucloud/locale/zh-Hans.json | 1 - .../zh-Hans/pages.hello_world.index.json | 2 - src/addon/tt_niucloud/pages/auth/bind-wx.vue | 186 --- .../tt_niucloud/pages/hello_world/index.vue | 18 - src/addon/tt_niucloud/pages/team/index.vue | 70 -- src/addon/xypm/api/build.ts | 9 - src/addon/xypm/api/content.ts | 51 - src/addon/xypm/api/manage.ts | 99 -- src/addon/xypm/api/member.ts | 114 -- .../components/diy/xypm-activity/index.vue | 132 -- .../components/diy/xypm-article/index.vue | 127 -- src/addon/xypm/locale/en.json | 1 - src/addon/xypm/locale/zh-Hans.json | 24 - .../locale/zh-Hans/member.build.list.json | 5 - .../xypm/locale/zh-Hans/pages.build.list.json | 5 - .../zh-Hans/pages.hello_world.index.json | 4 - .../zh-Hans/pages.member.build.list.json | 5 - .../xypm/pages/content/article/detail.vue | 66 - src/addon/xypm/pages/content/article/list.vue | 112 -- src/addon/xypm/pages/content/hotline/list.vue | 74 -- .../xypm/pages/content/notice/detail.vue | 66 - src/addon/xypm/pages/content/notice/list.vue | 112 -- src/addon/xypm/pages/index.vue | 71 -- .../activity/components/signup-popup.vue | 95 -- .../xypm/pages/manage/activity/detail.vue | 172 --- src/addon/xypm/pages/manage/activity/list.vue | 89 -- .../xypm/pages/manage/activity/signup.vue | 87 -- .../pages/manage/components/upload-img.vue | 85 -- src/addon/xypm/pages/manage/decorat/add.vue | 229 ---- src/addon/xypm/pages/manage/decorat/list.vue | 147 --- src/addon/xypm/pages/manage/repair/add.vue | 201 --- src/addon/xypm/pages/manage/repair/list.vue | 135 -- src/addon/xypm/pages/manage/suggest/add.vue | 175 --- src/addon/xypm/pages/manage/suggest/list.vue | 132 -- src/addon/xypm/pages/member/bill/center.vue | 168 --- src/addon/xypm/pages/member/bill/confirm.vue | 106 -- src/addon/xypm/pages/member/bill/order.vue | 164 --- .../xypm/pages/member/bill/order_detail.vue | 152 --- src/addon/xypm/pages/member/build/bind.vue | 111 -- .../build/components/add-resident-popup.vue | 198 --- src/addon/xypm/pages/member/build/list.vue | 169 --- .../xypm/pages/member/build/resident.vue | 140 --- src/addon/xypm/pages/member/index.vue | 75 -- src/addon/xypm/styles/common.scss | 59 - src/addon/yk_recharge/api/recharge.ts | 36 - src/addon/yk_recharge/locale/en.json | 1 - src/addon/yk_recharge/locale/zh-Hans.json | 6 - .../yk_recharge/locale/zh-Hans/common.json | 3 - .../locale/zh-Hans/pages.balance.json | 15 - .../locale/zh-Hans/pages.recharge.json | 18 - .../locale/zh-Hans/pages.recharge_record.json | 4 - .../zh-Hans/pages.recharge_record_detail.json | 7 - src/addon/yk_recharge/pages/balance.vue | 230 ---- src/addon/yk_recharge/pages/recharge.vue | 145 --- .../yk_recharge/pages/recharge_record.vue | 124 -- .../pages/recharge_record_detail.vue | 61 - src/addon/zgf_cloud_live/api/live_stream.ts | 15 - src/addon/zgf_cloud_live/api/room.ts | 15 - src/addon/zgf_cloud_live/locale/en.json | 1 - src/addon/zgf_cloud_live/locale/zh-Hans.json | 1 - .../zh-Hans/pages.hello_world.index.json | 2 - .../pages/hello_world/index.vue | 18 - .../zgf_cloud_live/pages/live_stream/room.vue | 405 ------ .../pages/live_stream/webview.vue | 15 - src/addon/zgf_cloud_live/static/iconfont.css | 25 - src/addon/zgf_cloud_live/static/iconfont.ttf | Bin 2404 -> 0 bytes src/addon/zt_sms/locale/en.json | 1 - src/addon/zt_sms/locale/zh-Hans.json | 1 - src/app/pages/index/index.vue | 2 +- src/hooks/useDiy.ts | 11 +- src/locale/zh-Hans.json | 384 +++--- src/locale/zh-Hans/common.json | 9 +- src/manifest.json | 7 +- src/package.json | 20 + src/pages.json | 1011 +-------------- src/static/htz-image-upload/play.png | Bin 0 -> 1824 bytes src/stores/member.ts | 10 +- src/types/weixin-js-sdk.d.ts | 10 +- src/uni_modules/uni-data-select/changelog.md | 31 - .../uni-data-select/uni-data-select.vue | 502 -------- src/uni_modules/uni-data-select/package.json | 85 -- src/uni_modules/uni-data-select/readme.md | 8 - src/uni_modules/uni_modules.zip | Bin 0 -> 85548 bytes .../components/wht-select/wht-select.vue | 16 +- .../zxz-uni-data-select.vue | 1 + src/utils/auth.ts | 90 +- src/utils/wechat.ts | 2 +- 952 files changed, 6465 insertions(+), 79209 deletions(-) delete mode 100644 src/addon/d_store/api/hello_world.ts delete mode 100644 src/addon/d_store/api/store.ts delete mode 100644 src/addon/d_store/components/diy/dstore/index.vue delete mode 100644 src/addon/d_store/locale/en.json delete mode 100644 src/addon/d_store/locale/zh-Hans.json delete mode 100644 src/addon/d_store/locale/zh-Hans/pages.hello_world.index.json delete mode 100644 src/addon/d_store/pages/detail.vue delete mode 100644 src/addon/d_store/pages/index.vue delete mode 100644 src/addon/d_store/utils/styles/common.scss delete mode 100644 src/addon/d_store/utils/theme.json delete mode 100644 src/addon/d_store/utils/ts/common.ts delete mode 100644 src/addon/d_store/utils/ts/goto.ts delete mode 100644 src/addon/dailySignIn/api/signin.ts delete mode 100644 src/addon/dailySignIn/locale/en.json delete mode 100644 src/addon/dailySignIn/locale/zh-Hans.json delete mode 100644 src/addon/dailySignIn/locale/zh-Hans/pages.hello_world.index.json delete mode 100644 src/addon/dailySignIn/pages/signIn/index.vue delete mode 100644 src/addon/dailySignIn/styles/common.scss delete mode 100644 src/addon/dailySignIn/types/signIn.d.ts delete mode 100644 src/addon/dailySignIn/utils/theme.json delete mode 100644 src/addon/dailySignIn/utils/utils.ts create mode 100644 src/addon/erp/erp.zip rename src/addon/erp/locale/zh-Hans/{pages.purchase.order.add.json => pages.inbound.order.add.json} (71%) create mode 100644 src/addon/erp/locale/zh-Hans/pages.inbound.order.detail.json rename src/addon/erp/locale/zh-Hans/{pages.purchase.order.detail.json => pages.inbound.order.list.json} (78%) create mode 100644 src/addon/erp/locale/zh-Hans/pages.inbound.stockPending.add.json create mode 100644 src/addon/erp/locale/zh-Hans/pages.inbound.stockPending.detail.json rename src/addon/erp/locale/zh-Hans/{pages.purchase.order.list.json => pages.inbound.stockPending.list.json} (76%) rename src/addon/erp/locale/zh-Hans/{pages.sell.sell.add.json => pages.outbound.order.add.json} (66%) rename src/addon/erp/locale/zh-Hans/{pages.sell.sell.detail.json => pages.outbound.order.detail.json} (78%) rename src/addon/erp/locale/zh-Hans/{pages.sell.sell.list.json => pages.outbound.order.list.json} (78%) rename src/addon/erp/locale/zh-Hans/{pages.sell.sell.sell-select.json => pages.outbound.order.sell-select.json} (79%) create mode 100644 src/addon/erp/locale/zh-Hans/pages.outbound.outPending.add.json create mode 100644 src/addon/erp/locale/zh-Hans/pages.outbound.outPending.detail.json create mode 100644 src/addon/erp/locale/zh-Hans/pages.outbound.outPending.list.json rename src/addon/erp/locale/zh-Hans/{pages.purchase.retire.add.json => pages.purchase.return.add.json} (55%) rename src/addon/erp/locale/zh-Hans/{pages.purchase.retire.detail.json => pages.purchase.return.detail.json} (77%) rename src/addon/erp/locale/zh-Hans/{pages.purchase.retire.list.json => pages.purchase.return.list.json} (79%) delete mode 100644 src/addon/erp/locale/zh-Hans/pages.purchase.storage.detail.json delete mode 100644 src/addon/erp/locale/zh-Hans/pages.purchase.storage.list.json delete mode 100644 src/addon/erp/locale/zh-Hans/pages.sell.delivery.add.json delete mode 100644 src/addon/erp/locale/zh-Hans/pages.sell.delivery.detail.json delete mode 100644 src/addon/erp/locale/zh-Hans/pages.sell.delivery.list.json delete mode 100644 src/addon/erp/locale/zh-Hans/pages.sell.sellreturn.add.json delete mode 100644 src/addon/erp/locale/zh-Hans/pages.sell.sellreturn.detail.json delete mode 100644 src/addon/erp/locale/zh-Hans/pages.sell.sellreturn.list.json rename src/addon/erp/pages/{purchase => inbound}/order/add.vue (55%) rename src/addon/erp/pages/{purchase => inbound}/order/detail.vue (51%) rename src/addon/erp/pages/{purchase => inbound}/order/list.vue (62%) create mode 100644 src/addon/erp/pages/inbound/stockPending/add.vue create mode 100644 src/addon/erp/pages/inbound/stockPending/detail.vue create mode 100644 src/addon/erp/pages/inbound/stockPending/list.vue create mode 100644 src/addon/erp/pages/outbound/order/add.vue rename src/addon/erp/pages/{sell/delivery => outbound/order}/detail.vue (59%) rename src/addon/erp/pages/{sell/sell => outbound/order}/list.vue (62%) rename src/addon/erp/pages/{sell/sell/sell-select.vue => outbound/order/sell-select-copy.vue} (94%) create mode 100644 src/addon/erp/pages/outbound/order/sell-select.vue create mode 100644 src/addon/erp/pages/outbound/outPending/add.vue rename src/addon/erp/pages/{purchase/retire => outbound/outPending}/detail.vue (52%) create mode 100644 src/addon/erp/pages/outbound/outPending/list.vue create mode 100644 src/addon/erp/pages/product/product/out-product-select.vue delete mode 100644 src/addon/erp/pages/purchase/retire/list.vue rename src/addon/erp/pages/purchase/{retire => return}/add.vue (55%) rename src/addon/erp/pages/{sell/sell => purchase/return}/detail.vue (68%) create mode 100644 src/addon/erp/pages/purchase/return/list.vue delete mode 100644 src/addon/erp/pages/purchase/storage/detail.vue delete mode 100644 src/addon/erp/pages/purchase/storage/list.vue delete mode 100644 src/addon/erp/pages/sell/delivery/add.vue delete mode 100644 src/addon/erp/pages/sell/delivery/list.vue delete mode 100644 src/addon/erp/pages/sell/sell/add.vue delete mode 100644 src/addon/erp/pages/sell/sellreturn/add.vue delete mode 100644 src/addon/erp/pages/sell/sellreturn/detail.vue delete mode 100644 src/addon/erp/pages/sell/sellreturn/list.vue delete mode 100644 src/addon/huodong/api/act.ts delete mode 100644 src/addon/huodong/api/index.ts delete mode 100644 src/addon/huodong/api/order.ts delete mode 100644 src/addon/huodong/components/jyf-parser/jyf-parser.vue delete mode 100644 src/addon/huodong/components/jyf-parser/libs/CssHandler.js delete mode 100644 src/addon/huodong/components/jyf-parser/libs/MpHtmlParser.js delete mode 100644 src/addon/huodong/components/jyf-parser/libs/config.js delete mode 100644 src/addon/huodong/components/jyf-parser/libs/handler.wxs delete mode 100644 src/addon/huodong/components/jyf-parser/libs/trees.vue delete mode 100644 src/addon/huodong/components/pay/pay.vue delete mode 100644 src/addon/huodong/locale/en.json delete mode 100644 src/addon/huodong/locale/zh-Hans.json delete mode 100644 src/addon/huodong/locale/zh-Hans/pages.index.index.json delete mode 100644 src/addon/huodong/locale/zh-Hans/pages.order.list.json delete mode 100644 src/addon/huodong/pages/act/detail.vue delete mode 100644 src/addon/huodong/pages/act/form.vue delete mode 100644 src/addon/huodong/pages/act/rank.vue delete mode 100644 src/addon/huodong/pages/admin/mingdan.vue delete mode 100644 src/addon/huodong/pages/index/index.vue delete mode 100644 src/addon/huodong/pages/index/rank.vue delete mode 100644 src/addon/huodong/pages/order/detail.vue delete mode 100644 src/addon/huodong/pages/order/hexiao.vue delete mode 100644 src/addon/huodong/pages/order/list.vue delete mode 100644 src/addon/huodong/utils/common.ts delete mode 100644 src/addon/mplink/locale/en.json delete mode 100644 src/addon/mplink/locale/zh-Hans.json delete mode 100644 src/addon/qf_notice/locale/en.json delete mode 100644 src/addon/qf_notice/locale/zh-Hans.json delete mode 100644 src/addon/qrcode/api/hello_world.ts delete mode 100644 src/addon/qrcode/locale/en.json delete mode 100644 src/addon/qrcode/locale/zh-Hans.json delete mode 100644 src/addon/qrcode/locale/zh-Hans/pages.hello_world.index.json delete mode 100644 src/addon/qrcode/pages/hello_world/index.vue delete mode 100644 src/addon/recharge/api/recharge.ts delete mode 100644 src/addon/recharge/locale/en.json delete mode 100644 src/addon/recharge/locale/zh-Hans.json delete mode 100644 src/addon/recharge/locale/zh-Hans/common.json delete mode 100644 src/addon/recharge/locale/zh-Hans/pages.recharge.json delete mode 100644 src/addon/recharge/locale/zh-Hans/pages.recharge_record.json delete mode 100644 src/addon/recharge/locale/zh-Hans/pages.recharge_record_detail.json delete mode 100644 src/addon/recharge/pages/recharge.vue delete mode 100644 src/addon/recharge/pages/recharge_record.vue delete mode 100644 src/addon/recharge/pages/recharge_record_detail.vue delete mode 100644 src/addon/seafox_pay/api/hello_world.ts delete mode 100644 src/addon/seafox_pay/api/maidan.ts delete mode 100644 src/addon/seafox_pay/components/fx-amountInput/fx-amountInput.vue delete mode 100644 src/addon/seafox_pay/components/pay/pay.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/action-sheet/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/action-sheet/src/action-sheet.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/action-sheet/src/action-sheet.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/action-sheet/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/action-sheet/src/composables/use-action-sheet.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/action-sheet/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/avatar/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/avatar/src/avatar-group.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/avatar/src/avatar-group.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/avatar/src/avatar.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/avatar/src/avatar.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/avatar/src/composables/avatar-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/avatar/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/avatar/src/composables/use-avatar-badge-props.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/avatar/src/composables/use-avatar-group.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/avatar/src/composables/use-avatar-icon-props.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/avatar/src/composables/use-avatar-props.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/avatar/src/composables/use-avatar.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/avatar/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/badge/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/badge/src/badge.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/badge/src/badge.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/badge/src/composables/badge-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/badge/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/badge/src/composables/use-badge.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/badge/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/base/common-props/checkbox/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/base/common-props/form-meta/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/base/common-props/picker/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/base/common-props/progress/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/base/common-props/radio/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/base/common-props/steps/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/base/common-props/subsection/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/base/common-props/swipe-action/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/base/common-props/tabbar/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/base/common-props/tabs/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/base/composables/use-component-common-props/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/base/composables/use-progress-props/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/base/types/checkbox/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/bubble-box/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/bubble-box/src/bubble-box.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/bubble-box/src/bubble-box.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/bubble-box/src/composables/bubble-box-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/bubble-box/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/bubble-box/src/composables/use-bubble-box.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/bubble-box/src/composables/use-bubble-options.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/bubble-box/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/bubble-box/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/button/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/button/src/button.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/button/src/button.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/button/src/composables/button-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/button/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/button/src/composables/use-button.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/button/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/calendar/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/calendar/libs/lunar-calendar/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/calendar/src/calendar.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/calendar/src/calendar.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/calendar/src/composables/calendar-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/calendar/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/calendar/src/composables/use-calendar-selector.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/calendar/src/composables/use-calendar.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/calendar/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/calendar/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/checkbox/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/checkbox/src/checkbox-group.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/checkbox/src/checkbox-group.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/checkbox/src/checkbox.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/checkbox/src/checkbox.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/checkbox/src/composables/checkbox-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/checkbox/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/checkbox/src/composables/use-checkbox-common-props.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/checkbox/src/composables/use-checkbox-group.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/checkbox/src/composables/use-checkbox.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/checkbox/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/circle-progress/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/circle-progress/src/circle-progress.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/circle-progress/src/circle-progress.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/circle-progress/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/circle-progress/src/composables/use-circle-progress.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/circle-progress/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/collapse/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/collapse/src/collapse-item.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/collapse/src/collapse-item.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/collapse/src/collapse.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/collapse/src/collapse.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/collapse/src/composables/collapse-item-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/collapse/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/collapse/src/composables/use-collapse-item.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/collapse/src/composables/use-collapse.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/collapse/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-down/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-down/src/composables/count-down-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-down/src/composables/count-down-separator-data.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-down/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-down/src/composables/use-count-down.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-down/src/count-down.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-down/src/count-down.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-down/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-scroll/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-scroll/src/composables/count-scroll-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-scroll/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-scroll/src/composables/use-count-scroll.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-scroll/src/count-scroll.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-scroll/src/count-scroll.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-scroll/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-to/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-to/src/composables/count-to-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-to/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-to/src/composables/use-count-to.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-to/src/count-to.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-to/src/count-to.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/count-to/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/date-time-picker/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/date-time-picker/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/date-time-picker/src/composables/use-date-time-data.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/date-time-picker/src/composables/use-date-time-picker.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/date-time-picker/src/composables/use-handle-min-max-time.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/date-time-picker/src/date-time-picker.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/date-time-picker/src/date-time-picker.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/date-time-picker/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/date-time-picker/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/empty/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/empty/libs/default.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/empty/libs/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/empty/src/composables/empty-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/empty/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/empty/src/empty.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/empty/src/empty.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/empty/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/footer/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/footer/src/composables/footer-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/footer/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/footer/src/composables/use-footer.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/footer/src/footer.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/footer/src/footer.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/footer/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/footer/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/form/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/form/src/composables/form-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/form/src/composables/form-item-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/form/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/form/src/composables/use-form-common-props.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/form/src/composables/use-form-item-operation.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/form/src/composables/use-form-item.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/form/src/composables/use-form.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/form/src/form-item.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/form/src/form-item.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/form/src/form.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/form/src/form.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/form/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/form/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/form/src/utils.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/icon/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/icon/src/composables/icon-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/icon/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/icon/src/icon.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/icon/src/icon.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/icon/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/image-upload/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/image-upload/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/image-upload/src/composables/use-image-upload.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/image-upload/src/composables/use-upload-handle-function.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/image-upload/src/image-upload.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/image-upload/src/image-upload.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/image-upload/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/image-upload/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/index-list/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/index-list/src/composables/index-list-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/index-list/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/index-list/src/composables/use-index-list.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/index-list/src/index-list.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/index-list/src/index-list.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/index-list/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/index-list/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/input/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/input/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/input/src/composables/input-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/input/src/composables/use-input.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/input/src/input.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/input/src/input.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/input/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/keyboard/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/keyboard/libs/car-keyboard-data.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/keyboard/libs/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/keyboard/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/keyboard/src/composables/use-keyboard-data.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/keyboard/src/composables/use-keyboard.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/keyboard/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/keyboard/src/keyboard.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/keyboard/src/keyboard.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/lazy-load/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/lazy-load/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/lazy-load/src/composables/lazy-load-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/lazy-load/src/composables/use-lazy-load.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/lazy-load/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/lazy-load/src/lazy-load.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/lazy-load/src/lazy-load.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/lazy-load/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/line-progress/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/line-progress/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/line-progress/src/composables/line-progress-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/line-progress/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/line-progress/src/line-progress.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/line-progress/src/line-progress.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/list/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/list/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/list/src/composables/list-item-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/list/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/list/src/list-item.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/list/src/list-item.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/loading/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/loading/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/loading/src/composables/loading-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/loading/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/loading/src/loading.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/loading/src/loading.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/loadmore/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/loadmore/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/loadmore/src/composables/loadmore-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/loadmore/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/loadmore/src/loadmore.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/loadmore/src/loadmore.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/modal/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/modal/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/modal/src/composables/modal-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/modal/src/composables/use-modal.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/modal/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/modal/src/modal.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/modal/src/modal.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/navbar/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/navbar/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/navbar/src/composables/navbar-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/navbar/src/composables/use-navbar.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/navbar/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/navbar/src/navbar.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/navbar/src/navbar.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/navbar/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notice-bar/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notice-bar/src/column-notice-bar.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notice-bar/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notice-bar/src/composables/notice-bar-common-props.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notice-bar/src/composables/use-column-notice-bar.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notice-bar/src/composables/use-notice-bar.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notice-bar/src/composables/use-row-notice-bar.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notice-bar/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notice-bar/src/notice-bar.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notice-bar/src/notice-bar.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notice-bar/src/row-notice-bar.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notify/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notify/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notify/src/composables/notify-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notify/src/composables/use-notify.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notify/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notify/src/notify.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/notify/src/notify.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/number-box/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/number-box/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/number-box/src/composables/number-box-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/number-box/src/composables/use-number-box.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/number-box/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/number-box/src/number-box.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/number-box/src/number-box.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/overlay/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/overlay/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/overlay/src/composables/use-overlay.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/overlay/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/overlay/src/overlay.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/overlay/src/overlay.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/photo-album/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/photo-album/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/photo-album/src/composables/use-photo-album.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/photo-album/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/photo-album/src/photo-album.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/photo-album/src/photo-album.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/picker/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/picker/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/picker/src/composables/picker-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/picker/src/composables/use-picker.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/picker/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/picker/src/picker.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/picker/src/picker.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/popup/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/popup/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/popup/src/composables/popup-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/popup/src/composables/use-popup.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/popup/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/popup/src/popup.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/popup/src/popup.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/radio/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/radio/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/radio/src/composables/radio-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/radio/src/composables/use-radio-common-props.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/radio/src/composables/use-radio-group.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/radio/src/composables/use-radio.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/radio/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/radio/src/radio-group.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/radio/src/radio-group.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/radio/src/radio.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/radio/src/radio.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/rate/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/rate/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/rate/src/composables/rate-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/rate/src/composables/use-rate-item-data.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/rate/src/composables/use-rate.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/rate/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/rate/src/rate.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/rate/src/rate.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/rate/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/read-more/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/read-more/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/read-more/src/composables/read-more-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/read-more/src/composables/use-read-more.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/read-more/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/read-more/src/read-more.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/read-more/src/read-more.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/region-picker/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/region-picker/libs/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/region-picker/libs/region-data.json delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/region-picker/libs/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/region-picker/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/region-picker/src/composables/use-region-picker.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/region-picker/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/region-picker/src/region-picker.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/region-picker/src/region-picker.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/scroll-list/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/scroll-list/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/scroll-list/src/composables/scroll-list-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/scroll-list/src/composables/use-scroll-list.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/scroll-list/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/scroll-list/src/scroll-list.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/scroll-list/src/scroll-list.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/search-box/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/search-box/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/search-box/src/composables/search-box-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/search-box/src/composables/use-search-box.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/search-box/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/search-box/src/search-box.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/search-box/src/search-box.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/slider/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/slider/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/slider/src/composables/slider-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/slider/src/composables/use-slider-common-porps.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/slider/src/composables/use-slider-node-info.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/slider/src/composables/use-slider.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/slider/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/slider/src/slider.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/slider/src/slider.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/steps/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/steps/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/steps/src/composables/step-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/steps/src/composables/steps-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/steps/src/composables/use-step.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/steps/src/composables/use-steps.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/steps/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/steps/src/steps-item.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/steps/src/steps-item.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/steps/src/steps.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/steps/src/steps.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/steps/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/sticky/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/sticky/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/sticky/src/composables/sticky-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/sticky/src/composables/use-sticky-support.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/sticky/src/composables/use-sticky.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/sticky/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/sticky/src/sticky.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/sticky/src/sticky.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/sticky/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/subsection/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/subsection/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/subsection/src/composables/subsection-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/subsection/src/composables/subsection-item-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/subsection/src/composables/use-subsection-item.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/subsection/src/composables/use-subsection.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/subsection/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/subsection/src/subsection-item.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/subsection/src/subsection-item.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/subsection/src/subsection.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/subsection/src/subsection.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/subsection/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swipe-action/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swipe-action/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swipe-action/src/composables/swipe-action-options.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swipe-action/src/composables/use-swipe-action-item.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swipe-action/src/composables/use-swipe-action.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swipe-action/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swipe-action/src/swipe-action-item.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swipe-action/src/swipe-action-item.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swipe-action/src/swipe-action.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swipe-action/src/swipe-action.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swiper/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swiper/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swiper/src/composables/swiper-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swiper/src/composables/use-swiper.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swiper/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swiper/src/swiper.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/swiper/src/swiper.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/switch-tab/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/switch-tab/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/switch-tab/src/composables/switch-tab-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/switch-tab/src/composables/use-switch-tab.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/switch-tab/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/switch-tab/src/switch-tab.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/switch-tab/src/switch-tab.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/switch/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/switch/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/switch/src/composables/switch-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/switch/src/composables/use-switch-common-props.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/switch/src/composables/use-switch.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/switch/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/switch/src/switch.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/switch/src/switch.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabbar/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabbar/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabbar/src/composables/tabbar-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabbar/src/composables/tabbar-item-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabbar/src/composables/use-tabbar-item.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabbar/src/composables/use-tabbar.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabbar/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabbar/src/tabbar-item.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabbar/src/tabbar-item.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabbar/src/tabbar.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabbar/src/tabbar.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabbar/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabs/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabs/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabs/src/composables/tabs-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabs/src/composables/tabs-item-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabs/src/composables/use-tabs-item.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabs/src/composables/use-tabs.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabs/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabs/src/tabs-item.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabs/src/tabs-item.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabs/src/tabs.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabs/src/tabs.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tabs/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tag/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tag/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tag/src/composables/tag-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tag/src/composables/use-tag.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tag/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tag/src/tag.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tag/src/tag.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/title/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/title/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/title/src/composables/title-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/title/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/title/src/title.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/title/src/title.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/tuniaoui-vue3/tuniaoui-vue3.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/water-fall/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/water-fall/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/water-fall/src/composables/use-water-fall.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/water-fall/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/water-fall/src/water-fall.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/water-fall/src/water-fall.vue delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/week-calendar/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/week-calendar/src/composables/index.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/week-calendar/src/composables/use-week-calendar-selector.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/week-calendar/src/composables/use-week-calendar.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/week-calendar/src/composables/week-calendar-custom.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/week-calendar/src/instance.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/week-calendar/src/types.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/week-calendar/src/week-calendar.ts delete mode 100644 src/addon/seafox_pay/components/tuniaoui-vue3/week-calendar/src/week-calendar.vue delete mode 100644 src/addon/seafox_pay/locale/en.json delete mode 100644 src/addon/seafox_pay/locale/zh-Hans.json delete mode 100644 src/addon/seafox_pay/locale/zh-Hans/pages.hello_world.index.json delete mode 100644 src/addon/seafox_pay/locale/zh-Hans/pages.maidan.json delete mode 100644 src/addon/seafox_pay/pages/hello_world/index.vue delete mode 100644 src/addon/seafox_pay/pages/maidan/index.vue delete mode 100644 src/addon/seafox_pay/pages/maidan/order.vue delete mode 100644 src/addon/seafox_pay/pages/pay/index.vue delete mode 100644 src/addon/shop/api/cart.ts delete mode 100644 src/addon/shop/api/config.ts delete mode 100644 src/addon/shop/api/coupon.ts delete mode 100644 src/addon/shop/api/discount.ts delete mode 100644 src/addon/shop/api/evaluate.ts delete mode 100644 src/addon/shop/api/goods.ts delete mode 100644 src/addon/shop/api/newcomer.ts delete mode 100644 src/addon/shop/api/order.ts delete mode 100644 src/addon/shop/api/point.ts delete mode 100644 src/addon/shop/api/rank.ts delete mode 100644 src/addon/shop/api/refund.ts delete mode 100644 src/addon/shop/api/shop.ts delete mode 100644 src/addon/shop/components/diy/goods-coupon/index.vue delete mode 100644 src/addon/shop/components/diy/goods-list/index.vue delete mode 100644 src/addon/shop/components/diy/many-goods-list/index.vue delete mode 100644 src/addon/shop/components/diy/shop-exchange-goods/index.vue delete mode 100644 src/addon/shop/components/diy/shop-exchange-info/index.vue delete mode 100644 src/addon/shop/components/diy/shop-goods-ranking/index.vue delete mode 100644 src/addon/shop/components/diy/shop-goods-recommend/index.vue delete mode 100644 src/addon/shop/components/diy/shop-member-info/index.vue delete mode 100644 src/addon/shop/components/diy/shop-newcomer/index.vue delete mode 100644 src/addon/shop/components/diy/shop-order-info/index.vue delete mode 100644 src/addon/shop/components/diy/shop-search/index.vue delete mode 100644 src/addon/shop/components/diy/single-recommend/index.vue delete mode 100644 src/addon/shop/components/ns-goods-manjian/ns-goods-manjian.vue delete mode 100644 src/addon/shop/components/ns-goods-recommend/ns-goods-recommend.vue delete mode 100644 src/addon/shop/components/ns-goods-sku/ns-goods-sku.vue delete mode 100644 src/addon/shop/hooks/useGoods.ts delete mode 100644 src/addon/shop/hooks/useGoodsLimit.ts delete mode 100644 src/addon/shop/locale/en.json delete mode 100644 src/addon/shop/locale/zh-Hans.json delete mode 100644 src/addon/shop/locale/zh-Hans/common.json delete mode 100644 src/addon/shop/locale/zh-Hans/pages.goods.cart.json delete mode 100644 src/addon/shop/locale/zh-Hans/pages.goods.category.json delete mode 100644 src/addon/shop/locale/zh-Hans/pages.goods.detail.json delete mode 100644 src/addon/shop/locale/zh-Hans/pages.goods.list.json delete mode 100644 src/addon/shop/locale/zh-Hans/pages.goods.rank.json delete mode 100644 src/addon/shop/locale/zh-Hans/pages.index.json delete mode 100644 src/addon/shop/locale/zh-Hans/pages.member.index.json delete mode 100644 src/addon/shop/locale/zh-Hans/pages.order.detail.json delete mode 100644 src/addon/shop/locale/zh-Hans/pages.order.list.json delete mode 100644 src/addon/shop/locale/zh-Hans/pages.order.payment.json delete mode 100644 src/addon/shop/locale/zh-Hans/pages.point.detail.json delete mode 100644 src/addon/shop/locale/zh-Hans/pages.point.order_list.json delete mode 100644 src/addon/shop/locale/zh-Hans/pages.refund.detail.json delete mode 100644 src/addon/shop/locale/zh-Hans/pages.refund.list.json delete mode 100644 src/addon/shop/pages/coupon/detail.vue delete mode 100644 src/addon/shop/pages/coupon/list.vue delete mode 100644 src/addon/shop/pages/discount/list.vue delete mode 100644 src/addon/shop/pages/evaluate/components/upload-img.vue delete mode 100644 src/addon/shop/pages/evaluate/list.vue delete mode 100644 src/addon/shop/pages/evaluate/order_evaluate.vue delete mode 100644 src/addon/shop/pages/evaluate/order_evaluate_view.vue delete mode 100644 src/addon/shop/pages/goods/browse.vue delete mode 100644 src/addon/shop/pages/goods/cart.vue delete mode 100644 src/addon/shop/pages/goods/category.vue delete mode 100644 src/addon/shop/pages/goods/collect.vue delete mode 100644 src/addon/shop/pages/goods/components/add-cart-popup.vue delete mode 100644 src/addon/shop/pages/goods/components/category-template-one-one.vue delete mode 100644 src/addon/shop/pages/goods/components/category-template-two-one.vue delete mode 100644 src/addon/shop/pages/goods/components/category-template-two-two.vue delete mode 100644 src/addon/shop/pages/goods/detail.vue delete mode 100644 src/addon/shop/pages/goods/list.vue delete mode 100644 src/addon/shop/pages/goods/rank.vue delete mode 100644 src/addon/shop/pages/goods/search.vue delete mode 100644 src/addon/shop/pages/index.vue delete mode 100644 src/addon/shop/pages/member/index.vue delete mode 100644 src/addon/shop/pages/member/my_coupon.vue delete mode 100644 src/addon/shop/pages/newcomer/list.vue delete mode 100644 src/addon/shop/pages/order/components/address-list/address-list.vue delete mode 100644 src/addon/shop/pages/order/components/invoice/invoice.vue delete mode 100644 src/addon/shop/pages/order/components/logistics-tracking/logistics-tracking.vue delete mode 100644 src/addon/shop/pages/order/components/select-coupon/select-coupon.vue delete mode 100644 src/addon/shop/pages/order/components/select-store/select-store.vue delete mode 100644 src/addon/shop/pages/order/detail.vue delete mode 100644 src/addon/shop/pages/order/list.vue delete mode 100644 src/addon/shop/pages/order/payment.vue delete mode 100644 src/addon/shop/pages/point/components/address-list/address-list.vue delete mode 100644 src/addon/shop/pages/point/components/goods-sku.vue delete mode 100644 src/addon/shop/pages/point/detail.vue delete mode 100644 src/addon/shop/pages/point/index.vue delete mode 100644 src/addon/shop/pages/point/list.vue delete mode 100644 src/addon/shop/pages/point/order_list.vue delete mode 100644 src/addon/shop/pages/point/payment.vue delete mode 100644 src/addon/shop/pages/refund/apply.vue delete mode 100644 src/addon/shop/pages/refund/detail.vue delete mode 100644 src/addon/shop/pages/refund/edit_apply.vue delete mode 100644 src/addon/shop/pages/refund/list.vue delete mode 100644 src/addon/shop/pages/refund/log.vue delete mode 100644 src/addon/shop/stores/cart.ts delete mode 100644 src/addon/shop/styles/common.scss delete mode 100644 src/addon/shop/utils/map/openMap.js delete mode 100644 src/addon/shop/utils/map/transformCoordinate.js delete mode 100644 src/addon/shop/utils/theme.json delete mode 100644 src/addon/shop_fenxiao/api/agent.ts delete mode 100644 src/addon/shop_fenxiao/api/fenxiao.ts delete mode 100644 src/addon/shop_fenxiao/api/level.ts delete mode 100644 src/addon/shop_fenxiao/api/sale.ts delete mode 100644 src/addon/shop_fenxiao/api/task.ts delete mode 100644 src/addon/shop_fenxiao/api/team.ts delete mode 100644 src/addon/shop_fenxiao/components/diy/fenxiao-goods-list/index.vue delete mode 100644 src/addon/shop_fenxiao/locale/en.json delete mode 100644 src/addon/shop_fenxiao/locale/zh-Hans.json delete mode 100644 src/addon/shop_fenxiao/locale/zh-Hans/pages.agent_list.json delete mode 100644 src/addon/shop_fenxiao/locale/zh-Hans/pages.apply.json delete mode 100644 src/addon/shop_fenxiao/locale/zh-Hans/pages.index.json delete mode 100644 src/addon/shop_fenxiao/locale/zh-Hans/pages.level.json delete mode 100644 src/addon/shop_fenxiao/locale/zh-Hans/pages.order.json delete mode 100644 src/addon/shop_fenxiao/locale/zh-Hans/pages.task_detail.json delete mode 100644 src/addon/shop_fenxiao/locale/zh-Hans/pages.team_dividend.json delete mode 100644 src/addon/shop_fenxiao/pages/agent_list.vue delete mode 100644 src/addon/shop_fenxiao/pages/apply.vue delete mode 100644 src/addon/shop_fenxiao/pages/child_fenxiao.vue delete mode 100644 src/addon/shop_fenxiao/pages/goods.vue delete mode 100644 src/addon/shop_fenxiao/pages/index.vue delete mode 100644 src/addon/shop_fenxiao/pages/level.vue delete mode 100644 src/addon/shop_fenxiao/pages/order.vue delete mode 100644 src/addon/shop_fenxiao/pages/promote.vue delete mode 100644 src/addon/shop_fenxiao/pages/promote_code.vue delete mode 100644 src/addon/shop_fenxiao/pages/sale.vue delete mode 100644 src/addon/shop_fenxiao/pages/sale_detail.vue delete mode 100644 src/addon/shop_fenxiao/pages/sale_ranking.vue delete mode 100644 src/addon/shop_fenxiao/pages/task_detail.vue delete mode 100644 src/addon/shop_fenxiao/pages/task_rewards.vue delete mode 100644 src/addon/shop_fenxiao/pages/task_rewards_detail.vue delete mode 100644 src/addon/shop_fenxiao/pages/team.vue delete mode 100644 src/addon/shop_fenxiao/pages/team_dividend.vue delete mode 100644 src/addon/shop_fenxiao/pages/zone.vue delete mode 100644 src/addon/shop_fenxiao/utils/theme.json delete mode 100644 src/addon/shop_giftcard/api/card.ts delete mode 100644 src/addon/shop_giftcard/api/category.ts delete mode 100644 src/addon/shop_giftcard/api/giftcard.ts delete mode 100644 src/addon/shop_giftcard/api/order.ts delete mode 100644 src/addon/shop_giftcard/api/records.ts delete mode 100644 src/addon/shop_giftcard/components/diy/giftcard-list/index.vue delete mode 100644 src/addon/shop_giftcard/components/give-popup/give-popup.vue delete mode 100644 src/addon/shop_giftcard/locale/en.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/common.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/pages.activate.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/pages.card_bag.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/pages.detail.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/pages.give.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/pages.give_detail.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/pages.give_list.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/pages.list.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/pages.my_card_list.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/pages.order_detail.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/pages.order_list.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/pages.payment.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/pages.receive_info.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/pages.receive_list.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/pages.use_card.json delete mode 100644 src/addon/shop_giftcard/locale/zh-Hans/pages.use_goods_select.json delete mode 100644 src/addon/shop_giftcard/pages/activate.vue delete mode 100644 src/addon/shop_giftcard/pages/card_bag.vue delete mode 100644 src/addon/shop_giftcard/pages/detail.vue delete mode 100644 src/addon/shop_giftcard/pages/give.vue delete mode 100644 src/addon/shop_giftcard/pages/give_detail.vue delete mode 100644 src/addon/shop_giftcard/pages/give_list.vue delete mode 100644 src/addon/shop_giftcard/pages/index.vue delete mode 100644 src/addon/shop_giftcard/pages/list.vue delete mode 100644 src/addon/shop_giftcard/pages/member.vue delete mode 100644 src/addon/shop_giftcard/pages/my_card_list.vue delete mode 100644 src/addon/shop_giftcard/pages/order_detail.vue delete mode 100644 src/addon/shop_giftcard/pages/order_list.vue delete mode 100644 src/addon/shop_giftcard/pages/payment.vue delete mode 100644 src/addon/shop_giftcard/pages/receive_info.vue delete mode 100644 src/addon/shop_giftcard/pages/receive_list.vue delete mode 100644 src/addon/shop_giftcard/pages/use_card.vue delete mode 100644 src/addon/shop_giftcard/pages/use_goods_select.vue delete mode 100644 src/addon/shop_giftcard/utils/theme.json delete mode 100644 src/addon/spdr/locale/en.json delete mode 100644 src/addon/spdr/locale/zh-Hans.json delete mode 100644 src/addon/tk_pan/locale/en.json delete mode 100644 src/addon/tk_pan/locale/zh-Hans.json delete mode 100644 src/addon/tk_yht/locale/en.json delete mode 100644 src/addon/tk_yht/locale/zh-Hans.json delete mode 100644 src/addon/tourism/api/tourism.ts delete mode 100644 src/addon/tourism/components/diy/tourism-hotel/index.vue delete mode 100644 src/addon/tourism/components/diy/tourism-tickets/index.vue delete mode 100644 src/addon/tourism/components/diy/tourism-travel/index.vue delete mode 100644 src/addon/tourism/locale/en.json delete mode 100644 src/addon/tourism/locale/zh-Hans.json delete mode 100644 src/addon/tourism/locale/zh-Hans/common.json delete mode 100644 src/addon/tourism/locale/zh-Hans/pages.hotel.detail.json delete mode 100644 src/addon/tourism/locale/zh-Hans/pages.hotel.list.json delete mode 100644 src/addon/tourism/locale/zh-Hans/pages.index.json delete mode 100644 src/addon/tourism/locale/zh-Hans/pages.order.detail.json delete mode 100644 src/addon/tourism/locale/zh-Hans/pages.scenic.detail.json delete mode 100644 src/addon/tourism/locale/zh-Hans/pages.scenic.list.json delete mode 100644 src/addon/tourism/locale/zh-Hans/pages.scenic.order.json delete mode 100644 src/addon/tourism/locale/zh-Hans/pages.verify.detail.json delete mode 100644 src/addon/tourism/locale/zh-Hans/pages.verify.index.json delete mode 100644 src/addon/tourism/locale/zh-Hans/pages.way.list.json delete mode 100644 src/addon/tourism/pages/hotel/detail.vue delete mode 100644 src/addon/tourism/pages/hotel/list.vue delete mode 100644 src/addon/tourism/pages/hotel/order.vue delete mode 100644 src/addon/tourism/pages/index.vue delete mode 100644 src/addon/tourism/pages/member/index.vue delete mode 100644 src/addon/tourism/pages/order/detail.vue delete mode 100644 src/addon/tourism/pages/order/hotel_detail.vue delete mode 100644 src/addon/tourism/pages/order/list.vue delete mode 100644 src/addon/tourism/pages/scenic/detail.vue delete mode 100644 src/addon/tourism/pages/scenic/list.vue delete mode 100644 src/addon/tourism/pages/scenic/order.vue delete mode 100644 src/addon/tourism/pages/verify/detail.vue delete mode 100644 src/addon/tourism/pages/verify/index.vue delete mode 100644 src/addon/tourism/pages/verify/record.vue delete mode 100644 src/addon/tourism/pages/way/detail.vue delete mode 100644 src/addon/tourism/pages/way/list.vue delete mode 100644 src/addon/tourism/pages/way/order.vue delete mode 100644 src/addon/tourism/styles/common.scss delete mode 100644 src/addon/tourism/utils/map/openMap.js delete mode 100644 src/addon/tourism/utils/map/transformCoordinate.js delete mode 100644 src/addon/tourism/utils/theme.json delete mode 100644 src/addon/tt_niucloud/api/hello_world.ts delete mode 100644 src/addon/tt_niucloud/api/member.ts delete mode 100644 src/addon/tt_niucloud/components/diy/parent-member/index.vue delete mode 100644 src/addon/tt_niucloud/components/diy/poster/index.vue delete mode 100644 src/addon/tt_niucloud/components/diy/ttn-graphic-nav/index.vue delete mode 100644 src/addon/tt_niucloud/locale/en.json delete mode 100644 src/addon/tt_niucloud/locale/zh-Hans.json delete mode 100644 src/addon/tt_niucloud/locale/zh-Hans/pages.hello_world.index.json delete mode 100644 src/addon/tt_niucloud/pages/auth/bind-wx.vue delete mode 100644 src/addon/tt_niucloud/pages/hello_world/index.vue delete mode 100644 src/addon/tt_niucloud/pages/team/index.vue delete mode 100644 src/addon/xypm/api/build.ts delete mode 100644 src/addon/xypm/api/content.ts delete mode 100644 src/addon/xypm/api/manage.ts delete mode 100644 src/addon/xypm/api/member.ts delete mode 100644 src/addon/xypm/components/diy/xypm-activity/index.vue delete mode 100644 src/addon/xypm/components/diy/xypm-article/index.vue delete mode 100644 src/addon/xypm/locale/en.json delete mode 100644 src/addon/xypm/locale/zh-Hans.json delete mode 100644 src/addon/xypm/locale/zh-Hans/member.build.list.json delete mode 100644 src/addon/xypm/locale/zh-Hans/pages.build.list.json delete mode 100644 src/addon/xypm/locale/zh-Hans/pages.hello_world.index.json delete mode 100644 src/addon/xypm/locale/zh-Hans/pages.member.build.list.json delete mode 100644 src/addon/xypm/pages/content/article/detail.vue delete mode 100644 src/addon/xypm/pages/content/article/list.vue delete mode 100644 src/addon/xypm/pages/content/hotline/list.vue delete mode 100644 src/addon/xypm/pages/content/notice/detail.vue delete mode 100644 src/addon/xypm/pages/content/notice/list.vue delete mode 100644 src/addon/xypm/pages/index.vue delete mode 100644 src/addon/xypm/pages/manage/activity/components/signup-popup.vue delete mode 100644 src/addon/xypm/pages/manage/activity/detail.vue delete mode 100644 src/addon/xypm/pages/manage/activity/list.vue delete mode 100644 src/addon/xypm/pages/manage/activity/signup.vue delete mode 100644 src/addon/xypm/pages/manage/components/upload-img.vue delete mode 100644 src/addon/xypm/pages/manage/decorat/add.vue delete mode 100644 src/addon/xypm/pages/manage/decorat/list.vue delete mode 100644 src/addon/xypm/pages/manage/repair/add.vue delete mode 100644 src/addon/xypm/pages/manage/repair/list.vue delete mode 100644 src/addon/xypm/pages/manage/suggest/add.vue delete mode 100644 src/addon/xypm/pages/manage/suggest/list.vue delete mode 100644 src/addon/xypm/pages/member/bill/center.vue delete mode 100644 src/addon/xypm/pages/member/bill/confirm.vue delete mode 100644 src/addon/xypm/pages/member/bill/order.vue delete mode 100644 src/addon/xypm/pages/member/bill/order_detail.vue delete mode 100644 src/addon/xypm/pages/member/build/bind.vue delete mode 100644 src/addon/xypm/pages/member/build/components/add-resident-popup.vue delete mode 100644 src/addon/xypm/pages/member/build/list.vue delete mode 100644 src/addon/xypm/pages/member/build/resident.vue delete mode 100644 src/addon/xypm/pages/member/index.vue delete mode 100644 src/addon/xypm/styles/common.scss delete mode 100644 src/addon/yk_recharge/api/recharge.ts delete mode 100644 src/addon/yk_recharge/locale/en.json delete mode 100644 src/addon/yk_recharge/locale/zh-Hans.json delete mode 100644 src/addon/yk_recharge/locale/zh-Hans/common.json delete mode 100644 src/addon/yk_recharge/locale/zh-Hans/pages.balance.json delete mode 100644 src/addon/yk_recharge/locale/zh-Hans/pages.recharge.json delete mode 100644 src/addon/yk_recharge/locale/zh-Hans/pages.recharge_record.json delete mode 100644 src/addon/yk_recharge/locale/zh-Hans/pages.recharge_record_detail.json delete mode 100644 src/addon/yk_recharge/pages/balance.vue delete mode 100644 src/addon/yk_recharge/pages/recharge.vue delete mode 100644 src/addon/yk_recharge/pages/recharge_record.vue delete mode 100644 src/addon/yk_recharge/pages/recharge_record_detail.vue delete mode 100644 src/addon/zgf_cloud_live/api/live_stream.ts delete mode 100644 src/addon/zgf_cloud_live/api/room.ts delete mode 100644 src/addon/zgf_cloud_live/locale/en.json delete mode 100644 src/addon/zgf_cloud_live/locale/zh-Hans.json delete mode 100644 src/addon/zgf_cloud_live/locale/zh-Hans/pages.hello_world.index.json delete mode 100644 src/addon/zgf_cloud_live/pages/hello_world/index.vue delete mode 100644 src/addon/zgf_cloud_live/pages/live_stream/room.vue delete mode 100644 src/addon/zgf_cloud_live/pages/live_stream/webview.vue delete mode 100644 src/addon/zgf_cloud_live/static/iconfont.css delete mode 100644 src/addon/zgf_cloud_live/static/iconfont.ttf delete mode 100644 src/addon/zt_sms/locale/en.json delete mode 100644 src/addon/zt_sms/locale/zh-Hans.json create mode 100644 src/package.json create mode 100644 src/static/htz-image-upload/play.png delete mode 100644 src/uni_modules/uni-data-select/changelog.md delete mode 100644 src/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue delete mode 100644 src/uni_modules/uni-data-select/package.json delete mode 100644 src/uni_modules/uni-data-select/readme.md create mode 100644 src/uni_modules/uni_modules.zip diff --git a/.env.development b/.env.development index b93020e..986c321 100644 --- a/.env.development +++ b/.env.development @@ -22,4 +22,4 @@ VITE_REQUEST_HEADER_SITEID_KEY='site-id' VITE_REQUEST_HEADER_CHANNEL_KEY='channel' # 应用版本 -VITE_APP_VERSION='1.0.1' \ No newline at end of file +VITE_APP_VERSION='1.0.1' diff --git a/.env.production b/.env.production index 448bf61..6984900 100644 --- a/.env.production +++ b/.env.production @@ -1,13 +1,13 @@ NODE_ENV = 'production' # api请求地址 -VITE_APP_BASE_URL='' +VITE_APP_BASE_URL='https://ttts.runtong.vip/api/' # 图片服务器地址 -VITE_IMG_DOMAIN='' +VITE_IMG_DOMAIN='https://ttts.runtong.vip' # 站点id 仅在编译为小程序时生效 -VITE_SITE_ID = '' +VITE_SITE_ID = '100002' # 本地存储时token的参数名 VITE_REQUEST_STORAGE_TOKEN_KEY='wapToken' diff --git a/.gitignore b/.gitignore index 143057b..69c9a5b 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,3 @@ dist *.njsproj *.sln *.sw? -dist.zip \ No newline at end of file diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json index 81f13f4..b920e7d 100644 --- a/.hbuilderx/launch.json +++ b/.hbuilderx/launch.json @@ -1,16 +1,20 @@ -{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ - // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 - "version": "0.0", - "configurations": [{ - "default" : - { - "launchtype" : "local" - }, - "mp-weixin" : - { - "launchtype" : "local" - }, - "type" : "uniCloud" - } +{ + // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ + // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 + "version" : "0.0", + "configurations" : [ + { + "default" : { + "launchtype" : "local" + }, + "mp-weixin" : { + "launchtype" : "local" + }, + "type" : "uniCloud" + }, + { + "openVueDevtools" : true, + "type" : "uni-app:h5" + } ] } diff --git a/package-lock.json b/package-lock.json index 57d1809..7fcee6b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,6 @@ "@dcloudio/uni-mp-weixin": "3.0.0-3080720230703001", "@dcloudio/uni-quickapp-webview": "3.0.0-3080720230703001", "dayjs": "^1.11.13", - "hls.js": "^1.5.17", "html2canvas": "^1.4.1", "image-tools": "^1.4.0", "lodash-es": "^4.17.21", @@ -6757,12 +6756,6 @@ "he": "bin/he" } }, - "node_modules/hls.js": { - "version": "1.5.18", - "resolved": "https://registry.npmmirror.com/hls.js/-/hls.js-1.5.18.tgz", - "integrity": "sha512-znxR+2jecWluu/0KOBqUcvVyAB5tLff10vjMGrpAlz1eFY+ZhF1bY3r82V+Bk7WJdk03iTjtja9KFFz5BrqjSA==", - "license": "Apache-2.0" - }, "node_modules/html-encoding-sniffer": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", @@ -17597,11 +17590,6 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, - "hls.js": { - "version": "1.5.18", - "resolved": "https://registry.npmmirror.com/hls.js/-/hls.js-1.5.18.tgz", - "integrity": "sha512-znxR+2jecWluu/0KOBqUcvVyAB5tLff10vjMGrpAlz1eFY+ZhF1bY3r82V+Bk7WJdk03iTjtja9KFFz5BrqjSA==" - }, "html-encoding-sniffer": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", diff --git a/package.json b/package.json index 32a60a0..e1218fc 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,6 @@ "vue": "^3.3.0", "vue-i18n": "^9.2.2", "weixin-js-sdk": "^1.6.5", - "hls.js": "^1.5.17", "dayjs": "^1.11.13" }, "devDependencies": { diff --git a/src/App.vue b/src/App.vue index 3e9c188..f7290f2 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,6 +2,7 @@ import { onLaunch, onShow, onHide } from '@dcloudio/uni-app' import { launchInterceptor } from '@/utils/interceptor' import { getToken, isWeixinBrowser, getSiteId, currRoute, deepClone } from '@/utils/common' + import { checkAndRequestAuth} from '@/utils/auth'; import useMemberStore from '@/stores/member' import useConfigStore from '@/stores/config' import useSystemStore from '@/stores/system' @@ -186,11 +187,12 @@ // #endif } }) - }) onShow(() => { - + // #ifdef MP-WEIXIN + checkAndRequestAuth(); + // #endif }) onHide(() => { diff --git a/src/addon/components/diy/group/index.vue b/src/addon/components/diy/group/index.vue index c8482f1..a4b4c9d 100644 --- a/src/addon/components/diy/group/index.vue +++ b/src/addon/components/diy/group/index.vue @@ -52,66 +52,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -124,26 +64,6 @@ - - \ No newline at end of file diff --git a/src/addon/d_store/locale/en.json b/src/addon/d_store/locale/en.json deleted file mode 100644 index 9e26dfe..0000000 --- a/src/addon/d_store/locale/en.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/addon/d_store/locale/zh-Hans.json b/src/addon/d_store/locale/zh-Hans.json deleted file mode 100644 index 9e26dfe..0000000 --- a/src/addon/d_store/locale/zh-Hans.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/addon/d_store/locale/zh-Hans/pages.hello_world.index.json b/src/addon/d_store/locale/zh-Hans/pages.hello_world.index.json deleted file mode 100644 index 311847d..0000000 --- a/src/addon/d_store/locale/zh-Hans/pages.hello_world.index.json +++ /dev/null @@ -1,2 +0,0 @@ -{} - diff --git a/src/addon/d_store/pages/detail.vue b/src/addon/d_store/pages/detail.vue deleted file mode 100644 index cbf59fc..0000000 --- a/src/addon/d_store/pages/detail.vue +++ /dev/null @@ -1,279 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/addon/d_store/pages/index.vue b/src/addon/d_store/pages/index.vue deleted file mode 100644 index bc0bc54..0000000 --- a/src/addon/d_store/pages/index.vue +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/addon/d_store/utils/styles/common.scss b/src/addon/d_store/utils/styles/common.scss deleted file mode 100644 index 7407ed8..0000000 --- a/src/addon/d_store/utils/styles/common.scss +++ /dev/null @@ -1,215 +0,0 @@ -page{ - background-color: #f5f6fa; - @apply pt-4; -} -:root, page { - --primary-color:#4277c7; - --primary-color-dark: #F26F3E; - --primary-color-disabled: #FFB397; - --primary-color-light: #FFEAE2; - --page-bg-color: #f7f7f7; - --price-text-color: #e1251b; -} -.remove-border{ - &::after{ - border: none; - } -} - .line-box { - background-color: #e1e1e1; - height: 2rpx; - width: 100%; - }L -//css共用样式文件 -.fl{ - display: flex; -} -.fb{ - display: flex; - justify-content: space-between; -} -.font-price{ - color: #19d444; - font-size: 38rpx; - font-weight: bold; -} -.tk-p{ - color: #19d444; - font-size: 18rpx; -} -.tk{ - background: linear-gradient(-90deg, #67c6d0 0%, #19d444 100%); - color: #ffffff; - padding: 0rpx 38rpx; - border-radius: 8rpx; - margin-right: 48rpx; - line-height:54rpx; -} -.tk-btgo{ - background: linear-gradient(-90deg, #67c6d0 0%, #19d444 100%); - color: #ffffff; - border-radius: 8rpx; - margin-right: 48rpx; - text-align: center; - line-height: 80rpx; -} -.tk-desc{ - color: #4b4b4b; - font-size: 24rpx; -} -.tktype-tag{ - padding: 4rpx 8rpx; - background: linear-gradient(-90deg, #2b2b00 0%, #353528 100%); - color: aliceblue; - border-radius: 8rpx; - font-size: 22rpx; -} -.tk-tag{ - padding: 4rpx 8rpx; - background: linear-gradient(-90deg, #4596ff 30%, #3363e7 100%); - color: #ffffff; - border-radius: 8rpx; - font-size: 22rpx; -} -.tk-dsale{ - font-size:24rpx; - color: #8f8f8f; -} -.tk-dtext{ - font-size:32rpx; - font-weight: bold; - // width: 640rpx; //设置宽度 - // // max-width:200px; //也可以设置最大宽度 - // overflow : hidden; // 溢出隐藏 - // display: -webkit-box; // 自适应布局 弹性伸缩盒子 - // -webkit-box-orient: vertical; //垂直排列子元素 伸缩盒子的子元素排列 - // -webkit-line-clamp: 1; //最多显示几行 多出部分。。。显示 - // text-overflow: ellipsis; // 显示省略号 -} -.tk-sltext{ - // max-width:200px; //也可以设置最大宽度 - overflow : hidden; // 溢出隐藏 - display: -webkit-box; // 自适应布局 弹性伸缩盒子 - -webkit-box-orient: vertical; //垂直排列子元素 伸缩盒子的子元素排列 - -webkit-line-clamp: 1; //最多显示几行 多出部分。。。显示 - text-overflow: ellipsis; // 显示省略号 -} -.tk-text{ - width: 420rpx; //设置宽度 - // max-width:200px; //也可以设置最大宽度 - overflow : hidden; // 溢出隐藏 - display: -webkit-box; // 自适应布局 弹性伸缩盒子 - -webkit-box-orient: vertical; //垂直排列子元素 伸缩盒子的子元素排列 - -webkit-line-clamp: 1; //最多显示几行 多出部分。。。显示 - text-overflow: ellipsis; // 显示省略号 -} -.tk-card{ - background-color: rgba(255, 255, 255, 0.9); - margin: 24rpx; - border-radius: 12rpx; - padding: 24rpx; - box-shadow: 0 1px 1px 0 rgba(234, 234, 234, 0.2), 0 2px 2px 0 rgba(231, 231, 231, 0.2); - } -.tk-bottom{ - position: fixed; - width: 100%; - bottom:0px; - z-index:9999; - padding: 0rpx 0rpx 24rpx 24rpx; - padding-bottom: 0; - padding-bottom: constant(safe-area-inset-bottom); - padding-bottom: env(safe-area-inset-bottom); - background-color: rgba(250, 250, 250, 0.96); - border-top-left-radius:24rpx; - border-top-right-radius:24rpx; -} -.tk-top{ - height: 110rpx; - background-color: rgba(250, 250, 250, 0.0); -} -.tk-yc{ - display: flex; - flex-direction: column; - align-items: center; -} -.tk-title{ - font-size: 32rpx; - font-weight: bold; - text-align: center; -} -.tk-b-bottom{ - padding-bottom: 18rpx; - border-bottom-style: solid; - border-bottom-width: 1rpx; - border-bottom-color: rgba(165, 165, 165, 0.2); -} -.tk-bbut{ - background: linear-gradient(-90deg, #4d84dc 0%, #3b46e8 100%); - text-align: center; - width: 680rpx; - border-radius: 12rpx; - color: #ffffff; - font-size: 32rpx; - padding: 16rpx; - margin-top: 8rpx; - margin-bottom: 8rpx; - margin-left: 12rpx; -} -.tk-column{ - display: flex;flex-direction: column;justify-content: space-between; -} -.tk-end{ - justify-content: flex-end; -} -.tk-orderbtn{ - padding: 4rpx 8rpx; - background: linear-gradient(-90deg, rgba(33, 120, 86, 0.6) 0%, rgba(27, 88, 53, 0.6) 100%); - color: aliceblue; - border-radius: 8rpx; - font-size: 22rpx; -} -.tagsmall { - background: linear-gradient(-90deg, rgba(33, 120, 86, 0.6) 0%, rgba(27, 88, 53, 0.6) 100%); - color: #ffffff; - padding: 4rpx 8rpx; - border-radius: 4rpx; - } - .tk-left{ - padding-left: 24rpx; - padding-top: 24rpx; - padding-right: 24rpx; - } - .font-weight{ - font-weight: bold; - } - .tk-bluecolor{ - color: #1723cb; - } - .tk-balackcolor{ - color: #878787; - } - .text-center{ - text-align: center; - } - .common-button { - background: linear-gradient(-90deg, #67c6d0 0%, #19d444 100%); - text-align: center; - border-radius: 24rpx; - color: #ffffff; - font-size: 28rpx; - padding: 16rpx; - margin: 24rpx; - margin-top: 48rpx; - } - .tk-butto { - background: linear-gradient(-90deg, #4d84dc 0%, #3b46e8 100%); - text-align: center; - width: 690rpx; - border-radius: 12rpx; - color: #ffffff; - font-size: 32rpx; - padding: 16rpx; - margin-top: 48rpx; - margin-bottom: 16rpx; - margin-left: 12rpx; - } diff --git a/src/addon/d_store/utils/theme.json b/src/addon/d_store/utils/theme.json deleted file mode 100644 index faa35c5..0000000 --- a/src/addon/d_store/utils/theme.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "--primary-color": "#FF4142", - "--primary-help-color": "#FB7939", - "--primary-color-dark": "#F26F3E", - "--primary-color-disabled": "#FFB397", - "--primary-color-light": "#FFF4F4", - "--page-bg-color": "#f7f7f7", - "--price-text-color": "#FF4142" -} diff --git a/src/addon/d_store/utils/ts/common.ts b/src/addon/d_store/utils/ts/common.ts deleted file mode 100644 index 8e40d44..0000000 --- a/src/addon/d_store/utils/ts/common.ts +++ /dev/null @@ -1,132 +0,0 @@ -import { img, getToken } from '@/utils/common' - -import { getAddressByLatlng } from "@/app/api/system"; -import useSystemStore from "@/stores/system"; -const systemStore = useSystemStore(); -import { useLogin } from "@/hooks/useLogin"; -/** - * 获取定位信息 - */ -const getLocation = (param : any = {}) => { - uni.getLocation({ - type: param.type || 'gcj02', - success: res => { - const systemStore = useSystemStore() - systemStore.setLocation(res); - typeof param.success == 'function' && param.success(res); - }, - fail: res => { - typeof param.fail == 'function' && param.fail(res); - }, - complete: res => { - typeof param.complete == 'function' && param.complete(res); - } - }); -} - -export function authLogin() { - if (!getToken()) { - const login = useLogin(); - // 第三方平台自动登录 - // #ifdef MP - login.getAuthCode(); - // #endif - // #ifdef H5 - useLogin().setLoginBack({ url: '/addon/tk_cps/pages/diy' }) - // #endif - } - return true //自动进行登录 -} -export function dateChange(date) { - return new Date(date).getTime() // 将日期值转换为时间戳 -} -export function timeChange(timestamp) { - const date = new Date(timestamp * 1000); - const year = date.getFullYear(); - const month = date.getMonth() + 1; - const day = date.getDate(); - const hours = date.getHours(); - const minutes = date.getMinutes(); - const seconds = date.getSeconds(); - return `${hours}:${minutes}`; -} -export function timeChangeDay(timestamp) { - const date = new Date(timestamp * 1000); - const year = date.getFullYear(); - const month = date.getMonth() + 1; - const day = date.getDate(); - const hours = date.getHours(); - const minutes = date.getMinutes(); - const seconds = date.getSeconds(); - return `${day} ${hours}:${minutes}`; -} - -export function getLocationData() { - const data = uni.getStorageSync('location') - - if (data) { - return data - } - else { - getLocation() - let e = uni.getStorageSync('location') - let data = { - latlng: '' - }; - if (e.latitude && e.longitude) { - data.latlng = e.latitude + ',' + e.longitude - getAddressByLatlng(data).then((res : any) => { - if (res.data && Object.keys(res.data).length) { - uni.setStorageSync('addressByLatlng', res.data); - return e - } - }) - - } - } -} -export function telPhone(phone) { - uni.makePhoneCall({ - phoneNumber: phone - }) -} -export function openMap(lat, lng) { - uni.openLocation({ - latitude: parseFloat(lat), - longitude: parseFloat(lng), - success: function () { - console.log('success'); - } - }); -} - -export function imgListPreview(item, index) { - if (Array.isArray(item)) { - // 检查数组是否为空 - if (!item.length) return false; - - // 使用map方法代替forEach,这样可以返回一个新的数组 - const urlList = item.map(img); - - // 使用uni-app的previewImage方法预览图片 - uni.previewImage({ - indicator: "number", - current: index, // 确保index在item数组的范围内 - loop: true, - urls: urlList - }); - } else { - // 检查item是否为空字符串 - if (item === '') return false; - - // 创建包含单个图片URL的数组 - const urlList = [img(item)]; - - // 使用uni-app的previewImage方法预览单个图片 - uni.previewImage({ - indicator: "number", - loop: true, - urls: urlList - }); - } -} \ No newline at end of file diff --git a/src/addon/d_store/utils/ts/goto.ts b/src/addon/d_store/utils/ts/goto.ts deleted file mode 100644 index 82d92cd..0000000 --- a/src/addon/d_store/utils/ts/goto.ts +++ /dev/null @@ -1,11 +0,0 @@ -export async function goto(url : string) { - uni.navigateTo({ - url: url - }) -} -export async function gotourl(url : string) { - console.log('goto跳转网站测试') -} -export async function goback() { - uni.navigateBack() -} \ No newline at end of file diff --git a/src/addon/dailySignIn/api/signin.ts b/src/addon/dailySignIn/api/signin.ts deleted file mode 100644 index 106fd10..0000000 --- a/src/addon/dailySignIn/api/signin.ts +++ /dev/null @@ -1,22 +0,0 @@ -import request from '@/utils/request' - -// 签到是否开启 -export function getSignState() { - return request.get(`dailysignin/isSignInOpen`) -} -//获取签到规则 -export function getSignInAwardRules() { - return request.get(`dailysignin/rewardRules`) -} -//获取累加之和 -export function getAccumulationSum(data : AnyObject) { - return request.get(`dailysignin/sum`,data) -} -//是否已签到 -export function checkSignInStatusApi(){ - return request.get(`/dailysignin/checkSignInStatus`) -} -//签到 -export function signinApi() { - return request.post(`dailysignin/signIn`) -} \ No newline at end of file diff --git a/src/addon/dailySignIn/locale/en.json b/src/addon/dailySignIn/locale/en.json deleted file mode 100644 index 9e26dfe..0000000 --- a/src/addon/dailySignIn/locale/en.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/addon/dailySignIn/locale/zh-Hans.json b/src/addon/dailySignIn/locale/zh-Hans.json deleted file mode 100644 index 9e26dfe..0000000 --- a/src/addon/dailySignIn/locale/zh-Hans.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/addon/dailySignIn/locale/zh-Hans/pages.hello_world.index.json b/src/addon/dailySignIn/locale/zh-Hans/pages.hello_world.index.json deleted file mode 100644 index 311847d..0000000 --- a/src/addon/dailySignIn/locale/zh-Hans/pages.hello_world.index.json +++ /dev/null @@ -1,2 +0,0 @@ -{} - diff --git a/src/addon/dailySignIn/pages/signIn/index.vue b/src/addon/dailySignIn/pages/signIn/index.vue deleted file mode 100644 index a7a4061..0000000 --- a/src/addon/dailySignIn/pages/signIn/index.vue +++ /dev/null @@ -1,854 +0,0 @@ - - - diff --git a/src/addon/dailySignIn/styles/common.scss b/src/addon/dailySignIn/styles/common.scss deleted file mode 100644 index 4cea501..0000000 --- a/src/addon/dailySignIn/styles/common.scss +++ /dev/null @@ -1,5 +0,0 @@ -.remove-border { - &::after { - border: none; - } -} \ No newline at end of file diff --git a/src/addon/dailySignIn/types/signIn.d.ts b/src/addon/dailySignIn/types/signIn.d.ts deleted file mode 100644 index adc213d..0000000 --- a/src/addon/dailySignIn/types/signIn.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -export type SingInData = { - showSignDays: Array - rule: rule[] - signState: number - rewardRuleDay: Array - cycle: number - reward: {} -} -/** 签到是否开启 */ -export type BannerItem = { - status: number -} -export type rule = { - day: number - growth: number - point:number -} \ No newline at end of file diff --git a/src/addon/dailySignIn/utils/theme.json b/src/addon/dailySignIn/utils/theme.json deleted file mode 100644 index faa35c5..0000000 --- a/src/addon/dailySignIn/utils/theme.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "--primary-color": "#FF4142", - "--primary-help-color": "#FB7939", - "--primary-color-dark": "#F26F3E", - "--primary-color-disabled": "#FFB397", - "--primary-color-light": "#FFF4F4", - "--page-bg-color": "#f7f7f7", - "--price-text-color": "#FF4142" -} diff --git a/src/addon/dailySignIn/utils/utils.ts b/src/addon/dailySignIn/utils/utils.ts deleted file mode 100644 index 5342980..0000000 --- a/src/addon/dailySignIn/utils/utils.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function inArray(elem: any, arr: string | any[] | null) { - return arr == null ? -1 : arr.indexOf(elem); -} diff --git a/src/addon/erp/api/base.ts b/src/addon/erp/api/base.ts index 3575381..f58aea7 100644 --- a/src/addon/erp/api/base.ts +++ b/src/addon/erp/api/base.ts @@ -6,6 +6,9 @@ import request from '@/utils/request' export function getCustomerList(params : Record) { return request.get(`erp/base/customer`, params) } +export function getusersList(params : Record) { + return request.get(`erp/base/getusers`, params) +} // 食堂列表 export function getCustomerSelect(params : Record) { return request.get(`erp/base/customer/select`, params) diff --git a/src/addon/erp/api/purchase.ts b/src/addon/erp/api/purchase.ts index 1f3ece1..8c27832 100644 --- a/src/addon/erp/api/purchase.ts +++ b/src/addon/erp/api/purchase.ts @@ -137,6 +137,19 @@ export function deleteRetire(id : number) { export function getManualList(params: Record) { return request.get(`erp/inbound/manual`,params); } +/** + * 入库单上传照片 + * @param id 出库id + * @returns + */ +export function setManualImg(id: any,params: Record) { + return request.post(`erp/inbound/settu/${id}`,params, + { + showErrorMessage: true, + showSuccessMessage: true, + } + ); +} /** * 添加入库 * @param params diff --git a/src/addon/erp/api/sell.ts b/src/addon/erp/api/sell.ts index dccc5dc..33e4c44 100644 --- a/src/addon/erp/api/sell.ts +++ b/src/addon/erp/api/sell.ts @@ -191,6 +191,19 @@ export function takeOutOfStorage(id: any) { } ); } +/** + * 出库单上传照片 + * @param id 出库id + * @returns + */ +export function setManualImg(id: any,params: Record) { + return request.post(`erp/outbound/settu/${id}`,params, + { + showErrorMessage: true, + showSuccessMessage: true, + } + ); +} /** * 获取手工出库单列表 * @param params diff --git a/src/addon/erp/erp.zip b/src/addon/erp/erp.zip new file mode 100644 index 0000000000000000000000000000000000000000..605bbe4c96a5f0e529fb32a018a297486bf38d06 GIT binary patch literal 165957 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

Y$oDLJ5%2$wC^(!9ta3|yzf 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 UJz=nm;6F`pk9|T5jK#430gkxl$^ZZW literal 0 HcmV?d00001 diff --git a/src/addon/erp/locale/zh-Hans.json b/src/addon/erp/locale/zh-Hans.json index 6395623..834d784 100644 --- a/src/addon/erp/locale/zh-Hans.json +++ b/src/addon/erp/locale/zh-Hans.json @@ -1,31 +1,47 @@ { - "pages.index": "ERP首页", - "pages.member.index": "ERP个人中心", - "pages.base.customer.list": "客户管理666", - "pages.member.bind": "绑定账号", - "pages.statistics": "统计", - "pages.base.supplier.list": "供应商管理", - "pages.base.warehouse.list": "仓库管理", - "pages.product.type.list": "产品分类", - "pages.product.unit.list": "产品单位", - "pages.product.product.list": "产品列表", - "pages.purchase.order.list": "采购单列表", - "pages.purchase.order.add": "采购开单", - "pages.purchase.order.detail": "采购单详情", - "pages.purchase.storage.list": "入库单管理", - "pages.purchase.storage.detail": "入库单详情", - "pages.purchase.retire.list": "退货单管理", - "pages.purchase.retire.detail": "退货单详情", - "pages.sell.sell.list": "销售单管理", - "pages.sell.sell.add": "添加销售单", - "pages.sell.sell.detail": "销售单详情", - "pages.sell.delivery.list": "出库单管理", - "pages.sell.delivery.add": "添加出库单", - "pages.sell.delivery.detail": "出库单详情", - "pages.sell.sellreturn.list": "退货单管理", - "pages.sell.sellreturn.add": "添加退货单", - "pages.sell.sellreturn.detail": "退货单详情", - "pages.inventory.inventory.list": "盘点记录", - "pages.inventory.inventory.add": "库存盘点", - "pages.inventory.statement.list": "库存流水" + "erp.pages.index": "首页", + "erp.pages.member.bind": "绑定账号", + "erp.pages.member.index": "个人中心", + "erp.pages.statistics": "统计", + "erp.pages.base.customer.list": "食堂列表", + "erp.pages.base.customer.add": "添加食堂", + "erp.pages.base.customer.detail": "食堂详情", + "erp.pages.base.supplier.list": "供应商列表", + "erp.pages.base.supplier.add": "添加供应商", + "erp.pages.base.supplier.detail": "供应商详情", + "erp.pages.base.warehouse.list": "仓库列表", + "erp.pages.base.warehouse.add": "添加仓库", + "erp.pages.base.warehouse.detail": "仓库详情", + "erp.pages.product.type.list": "食材分类列表", + "erp.pages.product.type.add": "添加食材分类", + "erp.pages.product.type.detail": "食材分类详情", + "erp.pages.product.unit.list": "食材单位列表", + "erp.pages.product.unit.add": "添加食材单位", + "erp.pages.product.unit.detail": "食材单位详情", + "erp.pages.product.product.list": "食材列表", + "erp.pages.product.product.add": "添加食材", + "erp.pages.product.product.detail": "食材详情", + "erp.pages.inbound.order.list": "入库订单列表", + "erp.pages.inbound.order.add": "添加入库订单", + "erp.pages.inbound.order.detail": "入库订单详情", + "erp.pages.inbound.stockPending.list": "入库订单列表", + "erp.pages.inbound.stockPending.add": "添加入库订单", + "erp.pages.inbound.stockPending.detail": "入库订单详情", + "erp.pages.purchase.return.list": "采购退货列表", + "erp.pages.purchase.return.add": "添加采购退货", + "erp.pages.purchase.return.detail": "采购退货详情", + "erp.pages.outbound.order.list": "出库订单列表", + "erp.pages.outbound.order.add": "添加出库订单", + "erp.pages.outbound.order.detail": "出库订单详情", + "erp.pages.outbound.order.select": "选择", + "erp.pages.outbound.outPending.list": "出库订单列表", + "erp.pages.outbound.outPending.add": "添加出库订单", + "erp.pages.outbound.outPending.detail": "出库订单详情", + "erp.pages.canteen.return.list": "食堂退货列表", + "erp.pages.canteen.return.add": "添加食堂退货", + "erp.pages.canteen.return.detail": "食堂退货详情", + "erp.pages.inventory.inventory.list": "盘点管理", + "erp.pages.inventory.inventory.add": "添加盘点", + "erp.pages.inventory.statement.list": "库存流水列表", + "erp.pages.inventory.wprelationship.list": "库存查询列表" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.base.customer.add.json b/src/addon/erp/locale/zh-Hans/pages.base.customer.add.json index f12bc0b..9ad7cbc 100644 --- a/src/addon/erp/locale/zh-Hans/pages.base.customer.add.json +++ b/src/addon/erp/locale/zh-Hans/pages.base.customer.add.json @@ -1,18 +1,18 @@ { - "title": "客户管理22222", + "title": "食堂管理", - "code": "客户编号", - "codePlaceholder": "请输入客户编号", - "name": "客户名称", - "namePlaceholder": "请输入客户名称", - "level": "客户等级", - "levelPlaceholder": "请输入客户等级", + "code": "食堂编号", + "codePlaceholderNew": "请输入食堂编号", + "name": "食堂名称", + "namePlaceholder": "请输入食堂名称", + "level": "食堂等级", + "levelPlaceholder": "请输入食堂等级", "contact": "联系人", "contactPlaceholder": "请输入联系人", "phone": "手机号码", "phonePlaceholder": "请输入手机号码", - "telephone": "公司电话", - "telephonePlaceholder": "请输入公司电话", + "telephone": "负责人电话", + "telephonePlaceholder": "请输入负责人电话", "fax": "传真", "faxPlaceholder": "请输入传真", "salesmanId": "业务员", @@ -39,8 +39,8 @@ "firmidPlaceholder": "请输入企业编号", "status": "状态", "statusPlaceholder": "请输入状态", - "addCustomer": "添加客户信息", - "updateCustomer": "编辑客户信息", + "addCustomer": "添加食堂信息", + "updateCustomer": "编辑食堂信息", "customerDeleteTips": "确定要删除该数据吗?", "customerStatusTips": "确定要变更该数据吗?", "startDate": "请选择开始时间", diff --git a/src/addon/erp/locale/zh-Hans/pages.base.customer.detail.json b/src/addon/erp/locale/zh-Hans/pages.base.customer.detail.json index ad59e46..6d280c0 100644 --- a/src/addon/erp/locale/zh-Hans/pages.base.customer.detail.json +++ b/src/addon/erp/locale/zh-Hans/pages.base.customer.detail.json @@ -1,13 +1,13 @@ { - "title": "客户管理77777", + "title": "食堂管理", "info": "详情", "delete": "删除", - "code": "客户编号", - "name": "客户名称", - "level": "客户等级", + "code": "食堂编号", + "name": "食堂名称", + "level": "食堂等级", "contact": "联系人", "phone": "联系方式", - "telephone": "公司电话", + "telephone": "负责人电话", "fax": "传真", "salesmanId": "业务员", "city": "所属区域", diff --git a/src/addon/erp/locale/zh-Hans/pages.base.customer.list.json b/src/addon/erp/locale/zh-Hans/pages.base.customer.list.json index d43a71b..23bc30a 100644 --- a/src/addon/erp/locale/zh-Hans/pages.base.customer.list.json +++ b/src/addon/erp/locale/zh-Hans/pages.base.customer.list.json @@ -1,10 +1,10 @@ { - "title": "客户管理641233333", + "title": "食堂管理", "info": "详情", "delete": "删除", - "code": "客户编号", - "name": "客户名称", - "level": "客户等级", + "code": "食堂编号", + "name": "食堂名称", + "level": "食堂等级", "contact": "联系人", "phone": "联系方式", "telephone": "公司电话", @@ -20,8 +20,8 @@ "description": "说明", "firmid": "企业编号", "status": "状态", - "addCustomer": "添加客户信息", - "updateCustomer": "编辑客户信息", + "addCustomer": "添加食堂信息", + "updateCustomer": "编辑食堂信息", "Invalid ID": "无效ID", "customerDeleteTips": "确定要删除该数据吗?", "customerStatusTips": "确定要变更该数据吗?" diff --git a/src/addon/erp/locale/zh-Hans/pages.base.supplier.add.json b/src/addon/erp/locale/zh-Hans/pages.base.supplier.add.json index 22f4324..739846d 100644 --- a/src/addon/erp/locale/zh-Hans/pages.base.supplier.add.json +++ b/src/addon/erp/locale/zh-Hans/pages.base.supplier.add.json @@ -1,18 +1,18 @@ { "code": "供应商编码", - "codePlaceholder": "请输入供应商编码", + "codePlaceholderNew": "请输入供应商编码", "name": "供应商名称", "namePlaceholder": "请输入供应商名称", "contact": "联系人", "contactPlaceholder": "请输入联系人", - "phone": "联系方式", - "phonePlaceholder": "请输入联系方式", + "phone": "联系电话", + "phonePlaceholder": "请输入联系电话", "city": "区域", "cityPlaceholder": "请输入区域", "address": "详细地址", "addressPlaceholder": "请输入详细地址", - "mobile": "公司电话", - "mobilePlaceholder": "请输入公司电话", + "merchantMobile": "商家电话", + "merchantMobilePlaceholder": "请输入商家电话", "bank": "开户银行", "bankPlaceholder": "请输入开户银行", "banknums": "银行账号", @@ -31,5 +31,9 @@ "descriptionPlaceholder": "请输入说明", "addSupplier": "添加供应商", "updateSupplier": "编辑供应商", - "supplierDeleteTips": "确定要删除该数据吗?" + "supplierDeleteTips": "确定要删除该数据吗?", + "credentialImage": "供应商资质", + "credentialImagePlaceholder": "请上传供应商资质", + "productType": "供货类型", + "productTypePlaceholder": "请选择供货类型" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.base.supplier.detail.json b/src/addon/erp/locale/zh-Hans/pages.base.supplier.detail.json index 6a253ee..b5e5670 100644 --- a/src/addon/erp/locale/zh-Hans/pages.base.supplier.detail.json +++ b/src/addon/erp/locale/zh-Hans/pages.base.supplier.detail.json @@ -2,10 +2,10 @@ "code": "供应商编码", "name": "供应商名称", "contact": "联系人", - "phone": "联系方式", + "phone": "联系电话", "city": "区域", "address": "详细地址", - "mobile": "公司电话", + "merchantMobile": "商家电话", "bank": "开户银行", "banknums": "银行账号", "term": "账期(天)", @@ -14,5 +14,7 @@ "credit": "社会信用代码", "amount": "信用额度(元)", "salesmanId": "业务员", - "description": "说明" + "description": "说明", + "credentialImage": "供应商资质", + "productType": "供货类型" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.base.supplier.list.json b/src/addon/erp/locale/zh-Hans/pages.base.supplier.list.json index 6cd1eef..1396958 100644 --- a/src/addon/erp/locale/zh-Hans/pages.base.supplier.list.json +++ b/src/addon/erp/locale/zh-Hans/pages.base.supplier.list.json @@ -4,10 +4,10 @@ "code": "供应商编码", "name": "供应商名称", "contact": "联系人", - "phone": "联系方式", + "phone": "联系电话", "city": "区域", "address": "详细地址", - "mobile": "公司电话", + "merchantMobile": "商家电话", "bank": "开户银行", "banknums": "银行账号", "term": "账期(天)", @@ -18,5 +18,7 @@ "description": "说明", "addSupplier": "添加供应商", "updateSupplier": "编辑供应商", - "supplierDeleteTips": "确定要删除该数据吗?" + "supplierDeleteTips": "确定要删除该数据吗?", + "credentialImage": "供应商资质", + "productType": "供货类型" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.base.warehouse.add.json b/src/addon/erp/locale/zh-Hans/pages.base.warehouse.add.json index 01188cf..fd19597 100644 --- a/src/addon/erp/locale/zh-Hans/pages.base.warehouse.add.json +++ b/src/addon/erp/locale/zh-Hans/pages.base.warehouse.add.json @@ -7,8 +7,8 @@ "numberPlaceholder": "请输入仓库编号", "remark": "备注", "remarkPlaceholder": "请输入备注", - "linkman": "联系人", - "linkmanPlaceholder": "请输入联系人", + "linkman": "仓管员", + "linkmanPlaceholder": "请输入仓管员", "phone": "联系电话", "phonePlaceholder": "请输入联系电话", "postal": "邮政编码", diff --git a/src/addon/erp/locale/zh-Hans/pages.base.warehouse.detail.json b/src/addon/erp/locale/zh-Hans/pages.base.warehouse.detail.json index fd33f19..5c83aef 100644 --- a/src/addon/erp/locale/zh-Hans/pages.base.warehouse.detail.json +++ b/src/addon/erp/locale/zh-Hans/pages.base.warehouse.detail.json @@ -2,7 +2,7 @@ "name": "仓库名称", "number": "仓库编号", "remark": "备注", - "linkman": "联系人", + "linkman": "仓管员", "phone": "联系电话", "postal": "邮政编码", "inventory": "库存", diff --git a/src/addon/erp/locale/zh-Hans/pages.base.warehouse.list.json b/src/addon/erp/locale/zh-Hans/pages.base.warehouse.list.json index 4cbc982..cd72e18 100644 --- a/src/addon/erp/locale/zh-Hans/pages.base.warehouse.list.json +++ b/src/addon/erp/locale/zh-Hans/pages.base.warehouse.list.json @@ -2,7 +2,7 @@ "name": "仓库名称", "number": "仓库编号", "remark": "备注", - "linkman": "联系人", + "linkman": "仓管员", "phone": "联系电话", "postal": "邮政编码", "inventory": "库存", diff --git a/src/addon/erp/locale/zh-Hans/pages.purchase.order.add.json b/src/addon/erp/locale/zh-Hans/pages.inbound.order.add.json similarity index 71% rename from src/addon/erp/locale/zh-Hans/pages.purchase.order.add.json rename to src/addon/erp/locale/zh-Hans/pages.inbound.order.add.json index 4c9b514..9961b99 100644 --- a/src/addon/erp/locale/zh-Hans/pages.purchase.order.add.json +++ b/src/addon/erp/locale/zh-Hans/pages.inbound.order.add.json @@ -1,9 +1,9 @@ { "code": "单据编号", - "productCode": "产品编号", - "codePlaceholder": "请输入单据编号", + "productCode": "食材编号", + "codePlaceholderNew": "请输入单据编号", "supplierId": "供应商", - "supplierIdPlaceholder": "请输入供应商", + "supplierIdPlaceholder": "请选择供应商", "contact": "联系人", "contactPlaceholder": "请输入联系人", "phone": "联系电话", @@ -11,7 +11,7 @@ "deliveryTime": "交货日期", "deliveryTimePlaceholder": "请输入交货日期", "type": "交货方式", - "typePlaceholder": "请输入交货方式", + "typePlaceholder": "请选择交货方式", "purmanId": "采购审核人", "purmanIdPlaceholder": "请输入采购审核人", "warehouseId": "仓库", @@ -41,21 +41,26 @@ "storageStatus": "入库状态", "addOrder": "添加采购订单", "createTime": "创建时间", - "productName": "产品名称", - "productTypeId": "产品分类", - "productSpec": "产品规格", - "productUnitId": "产品单位", + "productName": "食材名称", + "productTypeId": "食材分类", + "productSpec": "食材规格", + "productUnitId": "食材单位", "choose": "选择", "purchaseQuantity": "采购数量", "purchasePrice": "采购价格(元)", "totalPrice": "小计(元)", "total": "合计(元)", - - "Enter product": "录入产品", + "batchNumber":"批次号", + "batchNumberPlaceholder": "请输入批次号", + "inboundImage":"图片", + "inboundImagePlaceholder": "请上传图片", + "inspectionReportImage":"检验图片", + "inspectionReportImagePlaceholder": "请上传检验图片", + "Enter product": "录入食材", "Add product": "新增", - "productCode": "产品编号", - "spec": "产品规格", + "productCode": "食材编号", + "spec": "食材规格", "purchasePrice": "采购单价", "purchaseQuantity": "采购数量" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.inbound.order.detail.json b/src/addon/erp/locale/zh-Hans/pages.inbound.order.detail.json new file mode 100644 index 0000000..dccfa71 --- /dev/null +++ b/src/addon/erp/locale/zh-Hans/pages.inbound.order.detail.json @@ -0,0 +1,41 @@ +{ + "code": "单据编号", + "productCode": "食材编号", + "supplierId": "供应商", + "contact": "联系人", + "phone": "联系电话", + "deliveryTime": "到货日期", + "type": "交货方式", + "purmanId": "采购审核人", + "warehouseId": "仓库", + "billingTime": "制单日期", + "waitNums": "待入库数", + "city": "所属区域", + "address": "详细地址", + "totalNums": "采购数量", + "storageNums": "已入库数", + "rate": "税率(%)", + "money": "税前金额", + "totalMoney": "应付金额", + "status": "审核状态", + "remark": "备注", + "reason": "失败原因", + "storageStatus": "入库状态", + "createTime": "创建时间", + "productName": "食材名称", + "productTypeId": "食材分类", + "productSpec": "食材规格", + "productUnitId": "食材单位", + "choose": "选择", + "purchaseQuantity": "采购数量", + "purchasePrice": "采购价格(元)", + "totalPrice": "小计(元)", + "total": "合计(元)", + "batchNumber":"批次号", + "inboundImage":"图片", + "inspectionReportImage":"检验图片", + + "spec": "食材规格", + "info": "详情", + "Product List": "食材列表" +} \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.purchase.order.detail.json b/src/addon/erp/locale/zh-Hans/pages.inbound.order.list.json similarity index 78% rename from src/addon/erp/locale/zh-Hans/pages.purchase.order.detail.json rename to src/addon/erp/locale/zh-Hans/pages.inbound.order.list.json index ec28908..ef19434 100644 --- a/src/addon/erp/locale/zh-Hans/pages.purchase.order.detail.json +++ b/src/addon/erp/locale/zh-Hans/pages.inbound.order.list.json @@ -1,6 +1,6 @@ { "code": "单据编号", - "productCode": "产品编号", + "productCode": "食材编号", "supplierId": "供应商", "contact": "联系人", "phone": "联系电话", @@ -22,17 +22,16 @@ "reason": "失败原因", "storageStatus": "入库状态", "createTime": "创建时间", - "productName": "产品名称", - "productTypeId": "产品分类", - "productSpec": "产品规格", - "productUnitId": "产品单位", + "productName": "食材名称", + "productTypeId": "食材分类", + "productSpec": "食材规格", + "productUnitId": "食材单位", "choose": "选择", "purchaseQuantity": "采购数量", "purchasePrice": "采购价格(元)", "totalPrice": "小计(元)", "total": "合计(元)", - - "spec": "产品规格", "info": "详情", - "Product List": "产品列表" + "batchNumber":"批次号", + "detailGo":"详情" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.inbound.stockPending.add.json b/src/addon/erp/locale/zh-Hans/pages.inbound.stockPending.add.json new file mode 100644 index 0000000..9961b99 --- /dev/null +++ b/src/addon/erp/locale/zh-Hans/pages.inbound.stockPending.add.json @@ -0,0 +1,66 @@ +{ + "code": "单据编号", + "productCode": "食材编号", + "codePlaceholderNew": "请输入单据编号", + "supplierId": "供应商", + "supplierIdPlaceholder": "请选择供应商", + "contact": "联系人", + "contactPlaceholder": "请输入联系人", + "phone": "联系电话", + "phonePlaceholder": "请输入联系电话", + "deliveryTime": "交货日期", + "deliveryTimePlaceholder": "请输入交货日期", + "type": "交货方式", + "typePlaceholder": "请选择交货方式", + "purmanId": "采购审核人", + "purmanIdPlaceholder": "请输入采购审核人", + "warehouseId": "仓库", + "warehouseIdPlaceholder": "请选择仓库", + "billingTime": "制单日期", + "billingTimePlaceholder": "请输入制单日期", + "waitNums": "待入库数", + "waitNumsPlaceholder": "请输入待入库数", + "city": "所属区域", + "cityPlaceholder": "请输入所属区域", + "address": "详细地址", + "addressPlaceholder": "请输入详细地址", + "totalNums": "总数量", + "storageNums": "已入库数", + "totalNumsPlaceholder": "请输入总数量", + "rate": "税率(%)", + "ratePlaceholder": "请输入税率", + "money": "税前金额", + "moneyPlaceholder": "请输入税前金额", + "totalMoney": "应付金额", + "totalMoneyPlaceholder": "请输入应付金额", + "status": "审核状态", + "statusPlaceholder": "请输入", + "remark": "备注", + "remarkPlaceholder": "请输入备注", + "reason": "失败原因", + "storageStatus": "入库状态", + "addOrder": "添加采购订单", + "createTime": "创建时间", + "productName": "食材名称", + "productTypeId": "食材分类", + "productSpec": "食材规格", + "productUnitId": "食材单位", + "choose": "选择", + "purchaseQuantity": "采购数量", + "purchasePrice": "采购价格(元)", + "totalPrice": "小计(元)", + "total": "合计(元)", + "batchNumber":"批次号", + "batchNumberPlaceholder": "请输入批次号", + "inboundImage":"图片", + "inboundImagePlaceholder": "请上传图片", + "inspectionReportImage":"检验图片", + "inspectionReportImagePlaceholder": "请上传检验图片", + "Enter product": "录入食材", + "Add product": "新增", + + "productCode": "食材编号", + "spec": "食材规格", + "purchasePrice": "采购单价", + "purchaseQuantity": "采购数量" +} \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.inbound.stockPending.detail.json b/src/addon/erp/locale/zh-Hans/pages.inbound.stockPending.detail.json new file mode 100644 index 0000000..dccfa71 --- /dev/null +++ b/src/addon/erp/locale/zh-Hans/pages.inbound.stockPending.detail.json @@ -0,0 +1,41 @@ +{ + "code": "单据编号", + "productCode": "食材编号", + "supplierId": "供应商", + "contact": "联系人", + "phone": "联系电话", + "deliveryTime": "到货日期", + "type": "交货方式", + "purmanId": "采购审核人", + "warehouseId": "仓库", + "billingTime": "制单日期", + "waitNums": "待入库数", + "city": "所属区域", + "address": "详细地址", + "totalNums": "采购数量", + "storageNums": "已入库数", + "rate": "税率(%)", + "money": "税前金额", + "totalMoney": "应付金额", + "status": "审核状态", + "remark": "备注", + "reason": "失败原因", + "storageStatus": "入库状态", + "createTime": "创建时间", + "productName": "食材名称", + "productTypeId": "食材分类", + "productSpec": "食材规格", + "productUnitId": "食材单位", + "choose": "选择", + "purchaseQuantity": "采购数量", + "purchasePrice": "采购价格(元)", + "totalPrice": "小计(元)", + "total": "合计(元)", + "batchNumber":"批次号", + "inboundImage":"图片", + "inspectionReportImage":"检验图片", + + "spec": "食材规格", + "info": "详情", + "Product List": "食材列表" +} \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.purchase.order.list.json b/src/addon/erp/locale/zh-Hans/pages.inbound.stockPending.list.json similarity index 76% rename from src/addon/erp/locale/zh-Hans/pages.purchase.order.list.json rename to src/addon/erp/locale/zh-Hans/pages.inbound.stockPending.list.json index 90d55b0..ef19434 100644 --- a/src/addon/erp/locale/zh-Hans/pages.purchase.order.list.json +++ b/src/addon/erp/locale/zh-Hans/pages.inbound.stockPending.list.json @@ -1,6 +1,6 @@ { "code": "单据编号", - "productCode": "产品编号", + "productCode": "食材编号", "supplierId": "供应商", "contact": "联系人", "phone": "联系电话", @@ -22,14 +22,16 @@ "reason": "失败原因", "storageStatus": "入库状态", "createTime": "创建时间", - "productName": "产品名称", - "productTypeId": "产品分类", - "productSpec": "产品规格", - "productUnitId": "产品单位", + "productName": "食材名称", + "productTypeId": "食材分类", + "productSpec": "食材规格", + "productUnitId": "食材单位", "choose": "选择", "purchaseQuantity": "采购数量", "purchasePrice": "采购价格(元)", "totalPrice": "小计(元)", "total": "合计(元)", - "info": "详情" + "info": "详情", + "batchNumber":"批次号", + "detailGo":"详情" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.inventory.inventory.add.json b/src/addon/erp/locale/zh-Hans/pages.inventory.inventory.add.json index 1ab3f17..7b088aa 100644 --- a/src/addon/erp/locale/zh-Hans/pages.inventory.inventory.add.json +++ b/src/addon/erp/locale/zh-Hans/pages.inventory.inventory.add.json @@ -3,10 +3,10 @@ "warehouseName": "所在仓库", "warehouseNamePlaceholder": "请选择仓库", "productId": "商品ID", - "productName": "产品名称", - "productSpec": "产品规格", - "productUnit": "产品单位", - "productNamePlaceholder": "请选择产品", + "productName": "食材名称", + "productSpec": "食材规格", + "productUnit": "食材单位", + "productNamePlaceholder": "请选择食材", "surfaceNum": "账目数量", "surfaceNumPlaceholder": "请输入账目数量", "number": "盈亏数量", diff --git a/src/addon/erp/locale/zh-Hans/pages.inventory.inventory.list.json b/src/addon/erp/locale/zh-Hans/pages.inventory.inventory.list.json index 19c937e..03e3df9 100644 --- a/src/addon/erp/locale/zh-Hans/pages.inventory.inventory.list.json +++ b/src/addon/erp/locale/zh-Hans/pages.inventory.inventory.list.json @@ -2,9 +2,9 @@ "warehouseId": "仓库", "warehouseName": "所在仓库", "productId": "商品ID", - "productName": "产品名称", - "productSpec": "产品规格", - "productUnit": "产品单位", + "productName": "食材名称", + "productSpec": "食材规格", + "productUnit": "食材单位", "surfaceNum": "账目数量", "number": "盈亏数量", "realNum": "实际数量", diff --git a/src/addon/erp/locale/zh-Hans/pages.inventory.statement.list.json b/src/addon/erp/locale/zh-Hans/pages.inventory.statement.list.json index e6ac8d2..bf3837e 100644 --- a/src/addon/erp/locale/zh-Hans/pages.inventory.statement.list.json +++ b/src/addon/erp/locale/zh-Hans/pages.inventory.statement.list.json @@ -1,6 +1,6 @@ { "productId": "商品ID", - "productName": "产品名称", + "productName": "食材名称", "warehouseId": "仓库ID", "warehouseName": "所在仓库", "number": "流水数量", @@ -11,6 +11,6 @@ "startDate": "请选择开始时间", "endDate": "请选择结束时间", "updateTime": "更新时间", - "productUnit": "产品单位", - "productSpec": "产品规格" + "productUnit": "食材单位", + "productSpec": "食材规格" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.inventory.wprelationship.list.json b/src/addon/erp/locale/zh-Hans/pages.inventory.wprelationship.list.json index 6f36339..acda48f 100644 --- a/src/addon/erp/locale/zh-Hans/pages.inventory.wprelationship.list.json +++ b/src/addon/erp/locale/zh-Hans/pages.inventory.wprelationship.list.json @@ -1,10 +1,10 @@ { "warehouseId": "仓库id", "warehouseName": "所在仓库", - "productId": "产品id", - "productName": "产品名称", - "productUnit": "产品单位", - "productSpec": "产品规格", + "productId": "食材id", + "productName": "食材名称", + "productUnit": "食材单位", + "productSpec": "食材规格", "inventory": "可用库存", "freeze": "冻结库存", "updateTime": "更新时间" diff --git a/src/addon/erp/locale/zh-Hans/pages.sell.sell.add.json b/src/addon/erp/locale/zh-Hans/pages.outbound.order.add.json similarity index 66% rename from src/addon/erp/locale/zh-Hans/pages.sell.sell.add.json rename to src/addon/erp/locale/zh-Hans/pages.outbound.order.add.json index c426667..f11a95f 100644 --- a/src/addon/erp/locale/zh-Hans/pages.sell.sell.add.json +++ b/src/addon/erp/locale/zh-Hans/pages.outbound.order.add.json @@ -1,16 +1,22 @@ { "code": "单据编号", - "codePlaceholder": "请输入单据编号", - "customerId": "客户名称", - "customerIdPlaceholder": "请输入客户", + "codePlaceholderNew": "请输入单据编号", + "customerId": "食堂名称", + "customerIdPlaceholder": "请选择食堂", "contact": "联系人", "phone": "联系电话", - "deliveryTime": "交货时间", - "deliveryTimePlaceholder": "请输入交货时间", + "deliveryTime": "送货日期", + "deliveryTimePlaceholder": "请选择送货日期", "type": "交货方式", - "typePlaceholder": "交货方式", + "typePlaceholder": "请选择交货方式", + "batchNumber":"批次号", + "batchNumberPlaceholder": "请输入批次号", + "warehouseName": "仓库名称", + "warehousePlaceholder": "请选择仓库", + "outboundImage": "图片", + "outboundImagePlaceholder": "请上传图片", "purmanId": "销售审核人", "purmanIdPlaceholder": "请输入销售审核人", "billingTime": "制单日期", @@ -37,28 +43,23 @@ "sellDeleteTips": "确定要删除该数据吗?", "startDate": "请选择开始时间", "endDate": "请选择结束时间", - - "productCode": "产品编号", - "productName": "产品名称", - "productTypeId": "产品分类", - "productSpec": "产品规格", - "productUnitId": "产品单位", + "productCode": "食材编号", + "productName": "食材名称", + "productTypeId": "食材分类", + "productSpec": "食材规格", + "productUnitId": "食材单位", "choose": "选择", - "quantity": "数量", + "quantity": "出库数量", "inventory": "库存", "canUseInventory": "可用库存", - "warehouseName": "仓库名称", - "sellPrice": "销售单价(元)", + "sellPrice": "单价(元)", "totalPrice": "小计(元)", "total": "合计(元)", - "city": "所属区域", "address": "详细地址", - "delivery": "发货", "sellDelivery": "销售单", "sellQuantity": "出库数量", - - "Enter product": "录入产品", + "Enter product": "录入食材", "Add product": "新增" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.sell.sell.detail.json b/src/addon/erp/locale/zh-Hans/pages.outbound.order.detail.json similarity index 78% rename from src/addon/erp/locale/zh-Hans/pages.sell.sell.detail.json rename to src/addon/erp/locale/zh-Hans/pages.outbound.order.detail.json index 469b4d6..e0a2c9c 100644 --- a/src/addon/erp/locale/zh-Hans/pages.sell.sell.detail.json +++ b/src/addon/erp/locale/zh-Hans/pages.outbound.order.detail.json @@ -1,6 +1,6 @@ { "code": "单据编号", - "customerId": "客户名称", + "customerId": "食堂名称", "contact": "联系人", "phone": "联系电话", "deliveryTime": "交货时间", @@ -14,11 +14,11 @@ "status": "状态", "supplierName": "供应商名称", "remark": "备注", - "productCode": "产品编号", - "productName": "产品名称", - "productTypeId": "产品分类", - "productSpec": "产品规格", - "productUnitId": "产品单位", + "productCode": "食材编号", + "productName": "食材名称", + "productTypeId": "食材分类", + "productSpec": "食材规格", + "productUnitId": "食材单位", "choose": "选择", "quantity": "数量", "inventory": "库存", @@ -34,5 +34,5 @@ "delivery": "发货", "sellDelivery": "销售单", "sellQuantity": "出库数量", - "Product List": "产品列表" + "Product List": "食材列表" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.sell.sell.list.json b/src/addon/erp/locale/zh-Hans/pages.outbound.order.list.json similarity index 78% rename from src/addon/erp/locale/zh-Hans/pages.sell.sell.list.json rename to src/addon/erp/locale/zh-Hans/pages.outbound.order.list.json index 85d7053..f2e1118 100644 --- a/src/addon/erp/locale/zh-Hans/pages.sell.sell.list.json +++ b/src/addon/erp/locale/zh-Hans/pages.outbound.order.list.json @@ -1,6 +1,6 @@ { "code": "单据编号", - "customerId": "客户名称", + "customerId": "食堂名称", "contact": "联系人", "phone": "联系电话", "deliveryTime": "交货时间", @@ -14,11 +14,11 @@ "status": "状态", "supplierName": "供应商名称", "remark": "备注", - "productCode": "产品编号", - "productName": "产品名称", - "productTypeId": "产品分类", - "productSpec": "产品规格", - "productUnitId": "产品单位", + "productCode": "食材编号", + "productName": "食材名称", + "productTypeId": "食材分类", + "productSpec": "食材规格", + "productUnitId": "食材单位", "choose": "选择", "quantity": "数量", "inventory": "库存", @@ -34,6 +34,6 @@ "delivery": "发货", "sellDelivery": "销售单", "sellQuantity": "出库数量", - "Enter product": "录入产品", + "Enter product": "录入食材", "Add product": "新增" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.sell.sell.sell-select.json b/src/addon/erp/locale/zh-Hans/pages.outbound.order.sell-select.json similarity index 79% rename from src/addon/erp/locale/zh-Hans/pages.sell.sell.sell-select.json rename to src/addon/erp/locale/zh-Hans/pages.outbound.order.sell-select.json index 6e472a6..f3a5328 100644 --- a/src/addon/erp/locale/zh-Hans/pages.sell.sell.sell-select.json +++ b/src/addon/erp/locale/zh-Hans/pages.outbound.order.sell-select.json @@ -1,6 +1,6 @@ { "code": "单据编号", - "customerId": "客户名称", + "customerId": "食堂名称", "contact": "联系人", "phone": "联系电话", "deliveryTime": "交货时间", @@ -14,11 +14,11 @@ "status": "状态", "supplierName": "供应商名称", "remark": "备注", - "productCode": "产品编号", - "productName": "产品名称", - "productTypeId": "产品分类", - "productSpec": "产品规格", - "productUnitId": "产品单位", + "productCode": "食材编号", + "productName": "食材名称", + "productTypeId": "食材分类", + "productSpec": "食材规格", + "productUnitId": "食材单位", "choose": "选择", "quantity": "数量", "inventory": "库存", @@ -34,7 +34,7 @@ "delivery": "发货", "sellDelivery": "销售单", "sellQuantity": "出库数量", - "Enter product": "录入产品", + "Enter product": "录入食材", "Add product": "新增", "choose": "选择", "confirmChoose": "确认选择" diff --git a/src/addon/erp/locale/zh-Hans/pages.outbound.outPending.add.json b/src/addon/erp/locale/zh-Hans/pages.outbound.outPending.add.json new file mode 100644 index 0000000..f11a95f --- /dev/null +++ b/src/addon/erp/locale/zh-Hans/pages.outbound.outPending.add.json @@ -0,0 +1,65 @@ +{ + "code": "单据编号", + "codePlaceholderNew": "请输入单据编号", + "customerId": "食堂名称", + "customerIdPlaceholder": "请选择食堂", + + "contact": "联系人", + "phone": "联系电话", + + "deliveryTime": "送货日期", + "deliveryTimePlaceholder": "请选择送货日期", + "type": "交货方式", + "typePlaceholder": "请选择交货方式", + "batchNumber":"批次号", + "batchNumberPlaceholder": "请输入批次号", + "warehouseName": "仓库名称", + "warehousePlaceholder": "请选择仓库", + "outboundImage": "图片", + "outboundImagePlaceholder": "请上传图片", + "purmanId": "销售审核人", + "purmanIdPlaceholder": "请输入销售审核人", + "billingTime": "制单日期", + "billingTimePlaceholder": "请输入制单日期", + "totalNums": "总数量", + "totalNumsPlaceholder": "请输入总数量", + "rate": "税率(%)", + "ratePlaceholder": "请输入税率", + "theoryMoney": "税前金额", + "theoryMoneyPlaceholder": "请输入税前金额", + "realMoney": "应付金额", + "realMoneyPlaceholder": "请输入应付金额", + "status": "状态", + "statusPlaceholder": "请选择状态", + "supplierName": "供应商名称", + "remark": "备注", + "remarkPlaceholder": "请输入备注", + "createBy": "操作员", + "createByPlaceholder": "请输入操作员", + "addSell": "添加销售单", + "addDelivery": "添加发货单", + "updateSell": "编辑销售单", + "infoSell": "销售单详情", + "sellDeleteTips": "确定要删除该数据吗?", + "startDate": "请选择开始时间", + "endDate": "请选择结束时间", + "productCode": "食材编号", + "productName": "食材名称", + "productTypeId": "食材分类", + "productSpec": "食材规格", + "productUnitId": "食材单位", + "choose": "选择", + "quantity": "出库数量", + "inventory": "库存", + "canUseInventory": "可用库存", + "sellPrice": "单价(元)", + "totalPrice": "小计(元)", + "total": "合计(元)", + "city": "所属区域", + "address": "详细地址", + "delivery": "发货", + "sellDelivery": "销售单", + "sellQuantity": "出库数量", + "Enter product": "录入食材", + "Add product": "新增" +} \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.outbound.outPending.detail.json b/src/addon/erp/locale/zh-Hans/pages.outbound.outPending.detail.json new file mode 100644 index 0000000..e0a2c9c --- /dev/null +++ b/src/addon/erp/locale/zh-Hans/pages.outbound.outPending.detail.json @@ -0,0 +1,38 @@ +{ + "code": "单据编号", + "customerId": "食堂名称", + "contact": "联系人", + "phone": "联系电话", + "deliveryTime": "交货时间", + "type": "交货方式", + "typePlaceholder": "交货方式", + "billingTime": "制单日期", + "totalNums": "总数量", + "rate": "税率(%)", + "theoryMoney": "税前金额", + "realMoney": "应付金额", + "status": "状态", + "supplierName": "供应商名称", + "remark": "备注", + "productCode": "食材编号", + "productName": "食材名称", + "productTypeId": "食材分类", + "productSpec": "食材规格", + "productUnitId": "食材单位", + "choose": "选择", + "quantity": "数量", + "inventory": "库存", + "canUseInventory": "可用库存", + "warehouseName": "仓库名称", + "sellPrice": "销售单价(元)", + "totalPrice": "小计(元)", + "total": "合计(元)", + "updateTime": "更新时间", + "city": "所属区域", + "address": "详细地址", + "completeOrder": "订单完成", + "delivery": "发货", + "sellDelivery": "销售单", + "sellQuantity": "出库数量", + "Product List": "食材列表" +} \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.outbound.outPending.list.json b/src/addon/erp/locale/zh-Hans/pages.outbound.outPending.list.json new file mode 100644 index 0000000..f2e1118 --- /dev/null +++ b/src/addon/erp/locale/zh-Hans/pages.outbound.outPending.list.json @@ -0,0 +1,39 @@ +{ + "code": "单据编号", + "customerId": "食堂名称", + "contact": "联系人", + "phone": "联系电话", + "deliveryTime": "交货时间", + "type": "交货方式", + "typePlaceholder": "交货方式", + "billingTime": "制单日期", + "totalNums": "总数量", + "rate": "税率(%)", + "theoryMoney": "税前金额", + "realMoney": "应付金额", + "status": "状态", + "supplierName": "供应商名称", + "remark": "备注", + "productCode": "食材编号", + "productName": "食材名称", + "productTypeId": "食材分类", + "productSpec": "食材规格", + "productUnitId": "食材单位", + "choose": "选择", + "quantity": "数量", + "inventory": "库存", + "canUseInventory": "可用库存", + "warehouseName": "仓库名称", + "sellPrice": "销售单价(元)", + "totalPrice": "小计(元)", + "total": "合计(元)", + "updateTime": "更新时间", + "city": "所属区域", + "address": "详细地址", + "completeOrder": "订单完成", + "delivery": "发货", + "sellDelivery": "销售单", + "sellQuantity": "出库数量", + "Enter product": "录入食材", + "Add product": "新增" +} \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.product.product.add.json b/src/addon/erp/locale/zh-Hans/pages.product.product.add.json index ff89e75..ddbc3d2 100644 --- a/src/addon/erp/locale/zh-Hans/pages.product.product.add.json +++ b/src/addon/erp/locale/zh-Hans/pages.product.product.add.json @@ -1,32 +1,36 @@ { - "code":"产品编号", - "codePlaceholder":"请输入产品编号", - "name":"产品名称", - "namePlaceholder":"请输入产品名称", - "productTypeId":"产品类型", - "productTypeIdPlaceholder":"请输入产品类型", - "spec":"规格", - "specPlaceholder":"请输入规格", - "inventory":"产品库存", - "inventoryPlaceholder":"请输入产品库存", - "minWarning":"最低库存预警", - "minWarningPlaceholder":"请输入最低库存预警", - "maxWarning":"最高库存预警", - "maxWarningPlaceholder":"请输入最高库存预警", - "raise":"加价费用", - "raisePlaceholder":"请输入加价费用", - "remark":"备注", - "remarkPlaceholder":"请输入备注", - "productUnitId":"单位", - "productUnitIdPlaceholder":"请输入单位", - "unit":"单位值", - "unitPlaceholder":"请输入单位值", - "image":"图片", - "imagePlaceholder":"请输入", - "addProduct":"添加产品信息", - "updateProduct":"编辑产品信息", - "productDeleteTips":"确定要删除该数据吗?", - "startDate":"请选择开始时间", - "endDate":"请选择结束时间", - "createTime":"创建时间" + "code": "食材编号", + "codePlaceholderNew": "请输入食材编号", + "name": "食材名称", + "namePlaceholder": "请输入食材名称", + "productTypeId": "食材类型", + "productTypeIdPlaceholder": "请输入食材类型", + "spec": "规格", + "specPlaceholder": "请输入规格", + "inventory": "食材库存", + "inventoryPlaceholder": "请输入食材库存", + "minWarning": "最低库存预警", + "minWarningPlaceholder": "请输入最低库存预警", + "maxWarning": "最高库存预警", + "maxWarningPlaceholder": "请输入最高库存预警", + "raise": "加价费用", + "raisePlaceholder": "请输入加价费用", + "remark": "备注", + "remarkPlaceholder": "请输入备注", + "productUnitId": "单位", + "productUnitIdPlaceholder": "请输入单位", + "unit": "单位值", + "unitPlaceholder": "请输入单位值", + "image": "图片", + "imagePlaceholder": "请上传图片", + "addProduct": "添加食材信息", + "updateProduct": "编辑食材信息", + "productDeleteTips": "确定要删除该数据吗?", + "startDate": "请选择开始时间", + "endDate": "请选择结束时间", + "createTime": "创建时间", + "expiryTerm": "保质期时长(天)", + "expiryTermPlaceholder": "请输入保质期时长", + "expiryAlertTerm": "临期报警时长(天)", + "expiryAlertTermPlaceholder": "请输入临期报警时长" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.product.product.detail.json b/src/addon/erp/locale/zh-Hans/pages.product.product.detail.json index 79280fb..306e6e7 100644 --- a/src/addon/erp/locale/zh-Hans/pages.product.product.detail.json +++ b/src/addon/erp/locale/zh-Hans/pages.product.product.detail.json @@ -1,9 +1,9 @@ { - "code": "产品编号", - "name": "产品名称", - "productTypeId": "产品类型", + "code": "食材编号", + "name": "食材名称", + "productTypeId": "食材类型", "spec": "规格", - "inventory": "产品库存", + "inventory": "食材库存", "minWarning": "最低库存预警", "maxWarning": "最高库存预警", "raise": "加价费用", @@ -13,5 +13,7 @@ "unitPlaceholder": "请输入单位值", "image": "图片", "productDeleteTips": "确定要删除该数据吗?", - "createTime": "创建时间" + "createTime": "创建时间", + "expiryTerm": "保质期时长(天)", + "expiryAlertTerm": "临期报警时长(天)" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.product.product.list.json b/src/addon/erp/locale/zh-Hans/pages.product.product.list.json index 099fdb7..2b64044 100644 --- a/src/addon/erp/locale/zh-Hans/pages.product.product.list.json +++ b/src/addon/erp/locale/zh-Hans/pages.product.product.list.json @@ -1,14 +1,14 @@ { - "code":"产品编号", - "codePlaceholder":"请输入产品编号", - "name":"产品名称", - "namePlaceholder":"请输入产品名称", - "productTypeId":"产品类型", - "productTypeIdPlaceholder":"请输入产品类型", - "spec":"产品规格", + "code":"食材编号", + "codePlaceholder":"请输入食材编号", + "name":"食材名称", + "namePlaceholder":"请输入食材名称", + "productTypeId":"食材类型", + "productTypeIdPlaceholder":"请输入食材类型", + "spec":"食材规格", "specPlaceholder":"请输入规格", - "inventory":"产品库存", - "inventoryPlaceholder":"请输入产品库存", + "inventory":"食材库存", + "inventoryPlaceholder":"请输入食材库存", "minWarning":"最低库存预警", "minWarningPlaceholder":"请输入最低库存预警", "maxWarning":"最高库存预警", @@ -17,18 +17,20 @@ "raisePlaceholder":"请输入加价费用", "remark":"备注", "remarkPlaceholder":"请输入备注", - "productUnitId":"产品单位", + "productUnitId":"食材单位", "productUnitIdPlaceholder":"请输入单位", "unit":"单位值", "unitPlaceholder":"请输入单位值", "image":"图片", "imagePlaceholder":"请输入", - "addProduct":"添加产品信息", - "updateProduct":"编辑产品信息", + "addProduct":"添加食材信息", + "updateProduct":"编辑食材信息", "productDeleteTips":"确定要删除该数据吗?", "startDate":"请选择开始时间", "endDate":"请选择结束时间", "createTime":"创建时间", "info": "详情", - "delete": "删除" + "delete": "删除", + "expiryTerm": "保质期时长(天)", + "expiryAlertTerm": "临期报警时长(天)" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.product.product.product-select.json b/src/addon/erp/locale/zh-Hans/pages.product.product.product-select.json index 1b8150a..6623a1d 100644 --- a/src/addon/erp/locale/zh-Hans/pages.product.product.product-select.json +++ b/src/addon/erp/locale/zh-Hans/pages.product.product.product-select.json @@ -1,17 +1,17 @@ { - "code":"产品编号", - "name":"产品名称", - "productTypeId":"产品类型", - "spec":"产品规格", - "inventory":"产品库存", + "code":"食材编号", + "name":"食材名称", + "productTypeId":"食材类型", + "spec":"食材规格", + "inventory":"食材库存", "minWarning":"最低库存预警", "maxWarning":"最高库存预警", "raise":"加价费用", "remark":"备注", - "productUnitId":"产品单位", + "productUnitId":"食材单位", "unit":"单位值", - "addProduct":"添加产品信息", - "updateProduct":"编辑产品信息", + "addProduct":"添加食材信息", + "updateProduct":"编辑食材信息", "createTime":"创建时间", "choose": "选择", "confirmChoose": "确认选择" diff --git a/src/addon/erp/locale/zh-Hans/pages.purchase.retire.add.json b/src/addon/erp/locale/zh-Hans/pages.purchase.return.add.json similarity index 55% rename from src/addon/erp/locale/zh-Hans/pages.purchase.retire.add.json rename to src/addon/erp/locale/zh-Hans/pages.purchase.return.add.json index 1bfb793..847947b 100644 --- a/src/addon/erp/locale/zh-Hans/pages.purchase.retire.add.json +++ b/src/addon/erp/locale/zh-Hans/pages.purchase.return.add.json @@ -1,17 +1,21 @@ { - "code": "编码", - "codePlaceholder": "请输入编码", + "code": "退货单号", + "codePlaceholderNew": "请输入退货单号", "supplierId": "供应商ID", "supplierName": "供应商", - "supplierIdPlaceholder": "请输入供应商ID", - "supplierNamePlaceholder": "请输入供应商", + "supplierIdPlaceholder": "请选择供应商", + "supplierNamePlaceholder": "请选择供应商", + "outboundImage": "图片", + "outboundImagePlaceholder": "请上传图片", "warehouseId": "仓库ID", "warehouseName": "仓库", - "warehouseIdPlaceholder": "请输入仓库ID", + "warehouseIdPlaceholder": "请选择仓库", "billingTime": "制单时间", "billingTimePlaceholder": "请输入制单时间", - "remark": "备注", - "remarkPlaceholder": "请输入备注", + "remark": "退货原因", + "remarkPlaceholder": "请输入退货原因", + "image": "图片", + "imagePlaceholder": "请上传图片", "reviewerId": "审核人", "reviewerIdPlaceholder": "请输入审核人", "money": "退款金额", @@ -23,11 +27,11 @@ "status": "状态", "addRetire": "添加", "infoRetire": "退货单详情", - "productCode": "产品编号", - "productSpec": "产品规格", - "productName": "产品名称", - "productUnitId": "产品单位", - "productTypeId": "产品分类", + "productCode": "食材编号", + "productSpec": "食材规格", + "productName": "食材名称", + "productUnitId": "食材单位", + "productTypeId": "食材分类", "choose": "选择", "retireQuantity": "退货数量", @@ -36,6 +40,6 @@ "total": "合计(元)", "updateTime": "更新时间", - "Enter product": "录入产品", + "Enter product": "录入食材", "Add product": "新增" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.purchase.retire.detail.json b/src/addon/erp/locale/zh-Hans/pages.purchase.return.detail.json similarity index 77% rename from src/addon/erp/locale/zh-Hans/pages.purchase.retire.detail.json rename to src/addon/erp/locale/zh-Hans/pages.purchase.return.detail.json index fa3acc2..982f3c0 100644 --- a/src/addon/erp/locale/zh-Hans/pages.purchase.retire.detail.json +++ b/src/addon/erp/locale/zh-Hans/pages.purchase.return.detail.json @@ -17,11 +17,11 @@ "status": "状态", "addRetire": "添加", "infoRetire": "退货单详情", - "productCode": "产品编号", - "productSpec": "产品规格", - "productName": "产品名称", - "productUnitId": "产品单位", - "productTypeId": "产品分类", + "productCode": "食材编号", + "productSpec": "食材规格", + "productName": "食材名称", + "productUnitId": "食材单位", + "productTypeId": "食材分类", "choose": "选择", "retireQuantity": "退货数量", @@ -30,5 +30,5 @@ "total": "合计(元)", "updateTime": "更新时间", - "Product List": "产品列表" + "Product List": "食材列表" } \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.purchase.retire.list.json b/src/addon/erp/locale/zh-Hans/pages.purchase.return.list.json similarity index 79% rename from src/addon/erp/locale/zh-Hans/pages.purchase.retire.list.json rename to src/addon/erp/locale/zh-Hans/pages.purchase.return.list.json index 1ff455b..23d20d7 100644 --- a/src/addon/erp/locale/zh-Hans/pages.purchase.retire.list.json +++ b/src/addon/erp/locale/zh-Hans/pages.purchase.return.list.json @@ -15,11 +15,11 @@ "status": "状态", "addRetire": "添加", "infoRetire": "退货单详情", - "productCode": "产品编号", - "productSpec": "产品规格", - "productName": "产品名称", - "productUnitId": "产品单位", - "productTypeId": "产品分类", + "productCode": "食材编号", + "productSpec": "食材规格", + "productName": "食材名称", + "productUnitId": "食材单位", + "productTypeId": "食材分类", "choose": "选择", "retireQuantity": "退货数量", diff --git a/src/addon/erp/locale/zh-Hans/pages.purchase.storage.detail.json b/src/addon/erp/locale/zh-Hans/pages.purchase.storage.detail.json deleted file mode 100644 index f13038c..0000000 --- a/src/addon/erp/locale/zh-Hans/pages.purchase.storage.detail.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "code": "单据编号", - "purchaseCode": "采购单号", - "supplierName": "供应商", - "contact": "联系人", - "phone": "联系方式", - "billingTime": "制单时间", - "deliveryTime": "交货日期", - "totalNum": "入库数量", - "rate": "税率", - "money": "总金额", - "partitionId": "库区", - "warehouseId": "仓库编号", - "theWay": "交货方式", - "city": "所属区域", - "address": "详细地址", - "stromanId": "入库人", - "status": "入库单状态", - "remark": "备注", - "addStorage": "添加入库", - "updateStorage": "编辑入库", - "infoStorage": "入库单详情", - "updateTime": "更新时间", - "createTime": "创建时间", - "productCode": "产品编号", - "productName": "产品名称", - "productTypeId": "产品分类", - "productSpec": "产品规格", - "productUnitId": "产品单位", - "purchaseQuantity": "入库数", - "purchasePrice": "单价(元)", - "totalPrice": "小计(元)", - "total": "合计(元)", - "Product List": "产品列表" -} \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.purchase.storage.list.json b/src/addon/erp/locale/zh-Hans/pages.purchase.storage.list.json deleted file mode 100644 index 5e4a467..0000000 --- a/src/addon/erp/locale/zh-Hans/pages.purchase.storage.list.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "code": "单据编号", - "codePlaceholder": "请输入单据编号", - "purchaseCode": "采购单号", - "purchaseIdPlaceholder": "请输入采购单号", - "supplierName": "供应商", - "supplierIdPlaceholder": "请输入供应商编号", - "contact": "联系人", - "phone": "联系方式", - "adminId": "入库单录入人员", - "billingTime": "制单时间", - "deliveryTime": "交货日期", - "totalNum": "入库数量", - "rate": "税率", - "money": "总金额", - "partitionId": "库区", - "warehouseId": "仓库编号", - "theWay": "交货方式", - "city": "所属区域", - "address": "详细地址", - "stromanId": "入库人", - "status": "入库单状态", - "remark": "备注", - "createTime": "创建时间", - "updateTime": "更新时间", - "productCode": "产品编号", - "productName": "产品名称", - "productTypeId": "产品分类", - "productSpec": "产品规格", - "productUnitId": "产品单位", - "purchaseQuantity": "入库数", - "purchasePrice": "单价(元)", - "totalPrice": "小计(元)", - "total": "合计(元)" -} \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.sell.delivery.add.json b/src/addon/erp/locale/zh-Hans/pages.sell.delivery.add.json deleted file mode 100644 index 93b2fdd..0000000 --- a/src/addon/erp/locale/zh-Hans/pages.sell.delivery.add.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "code": "单据编号", - "codePlaceholder": "请输入单据编号", - "sellCode": "销售单单号", - "sellCodePlaceholder": "请输入销售单单号", - "sellId": "销售单ID", - "sellIdPlaceholder": "请输入销售单ID", - "customerId": "客户ID", - "customerName": "客户名称", - "customerIdPlaceholder": "请输入客户ID", - "contact": "联系人", - "contactPlaceholder": "请输入联系人", - "phone": "联系方式", - "phonePlaceholder": "请输入联系方式", - "billingTime": "制单时间", - "billingTimePlaceholder": "请输入制单时间", - "deliveryTime": "交货日期", - "deliveryTimePlaceholder": "请输入交货日期", - "totalNum": "数量", - "totalNumPlaceholder": "请输入合计", - "type": "交货方式", - "typePlaceholder": "请输入交货方式", - "city": "所属区域", - "cityPlaceholder": "请输入所属区域", - "address": "详细地址", - "addressPlaceholder": "请输入详细地址", - "status": "状态", - "statusPlaceholder": "请输入状态", - "remark": "备注", - "remarkPlaceholder": "请输入备注", - "addDelivery": "添加出库单", - "updateDelivery": "编辑出库单", - "infoDelivery": "出库单详情", - "deliveryDeleteTips": "确定要删除该数据吗?", - "startDate": "请选择开始时间", - "endDate": "请选择结束时间", - - "productCode": "产品编号", - "productName": "产品名称", - "productList": "产品列表", - "productTypeId": "产品分类", - "productSpec": "产品规格", - "productUnitId": "产品单位", - "choose": "选择", - "quantity": "数量", - "deliveryQuantity": "出库数量", - "inventory": "库存", - "canUseInventory": "可用库存", - "warehouseName": "仓库名称", - "warehousePlaceholder": "请选择仓库", - "sellPrice": "销售单价(元)", - "totalPrice": "小计(元)", - "total": "合计(元)", - - - "delivery": "发货", - "sellDelivery": "销售单", - "sellDeliveryPlaceholder": "请选择销售单", - "sellQuantity": "出库数量" -} \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.sell.delivery.detail.json b/src/addon/erp/locale/zh-Hans/pages.sell.delivery.detail.json deleted file mode 100644 index 70cf32f..0000000 --- a/src/addon/erp/locale/zh-Hans/pages.sell.delivery.detail.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "code": "单据编号", - "sellCode": "销售单号", - "sellId": "销售单ID", - "customerId": "客户ID", - "customerName": "客户名称", - "contact": "联系人", - "phone": "联系方式", - "billingTime": "制单时间", - "deliveryTime": "交货日期", - "totalNum": "数量", - "address": "详细地址", - "status": "状态", - "remark": "备注", - "city": "所属区域", - "productCode": "产品编号", - "productName": "产品名称", - "productTypeId": "产品分类", - "productSpec": "产品规格", - "productUnitId": "产品单位", - "choose": "选择", - "quantity": "数量", - "deliveryQuantity": "出库数量", - "inventory": "库存", - "canUseInventory": "可用库存", - "warehouseName": "仓库名称", - "sellPrice": "销售单价(元)", - "totalPrice": "小计(元)", - "total": "合计(元)", - - "type": "交货方式", - "delivery": "发货", - "Product List": "产品列表" -} \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.sell.delivery.list.json b/src/addon/erp/locale/zh-Hans/pages.sell.delivery.list.json deleted file mode 100644 index 4bf81a3..0000000 --- a/src/addon/erp/locale/zh-Hans/pages.sell.delivery.list.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "code": "单据编号", - "sellCode": "销售单号", - "sellId": "销售单ID", - "customerId": "客户ID", - "customerName": "客户名称", - "linkman": "联系人", - "phone": "联系方式", - "billingTime": "制单时间", - "deliveryTime": "交货日期", - "totalNum": "数量", - "address": "详细地址", - "status": "状态", - "remark": "备注", - "productCode": "产品编号", - "productName": "产品名称", - "productTypeId": "产品分类", - "productSpec": "产品规格", - "productUnitId": "产品单位", - "choose": "选择", - "quantity": "数量", - "deliveryQuantity": "出库数量", - "inventory": "库存", - "canUseInventory": "可用库存", - "warehouseName": "仓库名称", - "sellPrice": "销售单价(元)", - "totalPrice": "小计(元)", - "total": "合计(元)", - - "contact": "联系人", - - "delivery": "发货", - "sellDelivery": "销售单", - "sellQuantity": "出库数量" -} \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.sell.sellreturn.add.json b/src/addon/erp/locale/zh-Hans/pages.sell.sellreturn.add.json deleted file mode 100644 index de64e68..0000000 --- a/src/addon/erp/locale/zh-Hans/pages.sell.sellreturn.add.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "code": "单据编号", - "codePlaceholder": "请输入单据编号", - "sellId": "销售单ID", - "sellIdPlaceholder": "请输入销售单ID", - "sellCode": "销售单单号", - "sellCodePlaceholder": "请输入销售单单号", - "customerId": "客户ID", - "customerName": "客户名称", - "customerIdPlaceholder": "请输入客户ID", - "status": "状态", - "statusPlaceholder": "请输入状态", - "addSellReturn": "添加退货单", - "updateSellReturn": "编辑退货单", - "sellReturnDeleteTips": "确定要删除该数据吗?", - "startDate": "请选择开始时间", - "endDate": "请选择结束时间", - "sellList": "销售单", - "contact": "联系人", - "contactPlaceholder": "请输入联系人", - "phone": "联系方式", - "phonePlaceholder": "请输入联系方式", - "billingTime": "制单时间", - "billingTimePlaceholder": "请输入制单时间", - "remark": "备注", - "remarkPlaceholder": "请输入备注", - "productCode": "产品编号", - "productList": "产品列表", - "warehouseName": "仓库名称", - "warehousePlaceholder": "请输入仓库名称", - "productName": "产品名称", - "productTypeId": "产品分类", - "productSpec": "产品规格", - "productUnitId": "产品单位", - "choose": "选择", - "quantity": "数量", - "returnQuantity": "退货数量", - "sellQuantity": "销售数量", - "sellPrice": "单价", - "totalPrice": "小计(元)", - "total": "合计(元)", - "sellDeliveryPlaceholder": "请选择销售单" -} \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.sell.sellreturn.detail.json b/src/addon/erp/locale/zh-Hans/pages.sell.sellreturn.detail.json deleted file mode 100644 index 1a6ac74..0000000 --- a/src/addon/erp/locale/zh-Hans/pages.sell.sellreturn.detail.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "code": "单据编号", - "sellId": "销售单ID", - "sellCode": "销售单单号", - "customerId": "客户ID", - "customerName": "客户名称", - "status": "状态", - "contact": "联系人", - "phone": "联系方式", - "billingTime": "制单时间", - "address": "详细地址", - "remark": "备注", - "productCode": "产品编号", - "warehouseName": "仓库名称", - "productName": "产品名称", - "productTypeId": "产品分类", - "productSpec": "产品规格", - "productUnitId": "产品单位", - "choose": "选择", - "quantity": "数量", - "returnQuantity": "退货数量", - "sellQuantity": "销售数量", - "sellPrice": "单价", - "totalPrice": "小计(元)", - "total": "合计(元)", - "Product List": "产品列表" -} \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.sell.sellreturn.list.json b/src/addon/erp/locale/zh-Hans/pages.sell.sellreturn.list.json deleted file mode 100644 index 1fb3c3d..0000000 --- a/src/addon/erp/locale/zh-Hans/pages.sell.sellreturn.list.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "code": "单据编号", - "sellId": "销售单ID", - "sellCode": "销售单单号", - "customerId": "客户ID", - "customerName": "客户名称", - "status": "状态", - "contact": "联系人", - "phone": "联系方式", - "billingTime": "制单时间", - "address": "详细地址", - "remark": "备注", - "productCode": "产品编号", - "warehouseName": "仓库名称", - "productName": "产品名称", - "productTypeId": "产品分类", - "productSpec": "产品规格", - "productUnitId": "产品单位", - "choose": "选择", - "quantity": "数量", - "returnQuantity": "退货数量", - "sellQuantity": "销售数量", - "sellPrice": "单价", - "totalPrice": "小计(元)", - "total": "合计(元)" -} \ No newline at end of file diff --git a/src/addon/erp/locale/zh-Hans/pages.statistics.json b/src/addon/erp/locale/zh-Hans/pages.statistics.json index 19eefc3..5ae2d35 100644 --- a/src/addon/erp/locale/zh-Hans/pages.statistics.json +++ b/src/addon/erp/locale/zh-Hans/pages.statistics.json @@ -1,20 +1,20 @@ { - "dataSummary": "数据汇总", + "dataSummary": "今日汇总", "updateTime": "更新时间", - "todayPurchaseCount": "今日采购订单数", + "todayPurchaseCount": "今日入库订单数", "purchaseCount": "采购订单总数", "yesterday": "昨日", - "todayPurchaseSale": "今日采购金额", + "todayPurchaseSale": "今日入库金额数", "purchaseTotal": "采购总额(元)", - "todaySellCount": "今日销售订单数", + "todaySellCount": "今日出库订单数", "sellCount": "销售订单总数", - "todaySellSale": "今日销售金额", + "todaySellSale": "今日出库金额数", "salesTotal": "销售总额(元)", "agentMatters": "代办事项", - "waitApprovePurchase": "待审核采购单", - "waitInventoryPurchase": "待入库订单", - "waitReturnPurchase": "待退货采购单", - "waitSellOrder": "待审核销售单", - "waitDeliveryOrder": "待出库销售单", - "waitReturnOrder": "待退货销售单" + "waitApprovePurchase": "采购待入库数", + "waitInventoryPurchase": "食堂待出库数", + "waitReturnPurchase": "采购退货待审核数", + "waitSellOrder": "食堂退货待审核数", + "waitDeliveryOrder": "采购退货待出库数", + "waitReturnOrder": "食堂退货待入库数" } \ No newline at end of file diff --git a/src/addon/erp/pages/base/customer/add.vue b/src/addon/erp/pages/base/customer/add.vue index 47deeff..d193c4e 100644 --- a/src/addon/erp/pages/base/customer/add.vue +++ b/src/addon/erp/pages/base/customer/add.vue @@ -3,41 +3,62 @@ - - + + + + + + + + + + + + + + + + + - + - + - + - - - {{ t('cityPlaceholder') }} - {{ formData.cityName }} - - + + + + + + + + - + - + @@ -56,10 +77,18 @@ - - \ No newline at end of file diff --git a/src/addon/erp/pages/purchase/order/add.vue b/src/addon/erp/pages/inbound/order/add.vue similarity index 55% rename from src/addon/erp/pages/purchase/order/add.vue rename to src/addon/erp/pages/inbound/order/add.vue index 6922039..cf8c11a 100644 --- a/src/addon/erp/pages/purchase/order/add.vue +++ b/src/addon/erp/pages/inbound/order/add.vue @@ -5,68 +5,88 @@ labelWidth="180rpx"> + + + + + - - - {{ t('supplierIdPlaceholder') }} - - {{ formData.supplier_name }} - + + + + + + - - - {{ t('warehouseIdPlaceholder') }} - - {{ formData.warehouse_name }} - + + + + + + - + + + + + + - - - - {{ t('deliveryTimePlaceholder') }} - - {{ formData.delivery_time }} - - + + - - - - {{ t('billingTimePlaceholder') }} - - {{ formData.billing_time }} - - + + - - + + + > + + + + + + + + + + @@ -119,18 +139,27 @@ + + + 有效期(天): + + + + + {{ t('purchaseQuantity') }}: - {{ t('totalPrice') }}:{{ item.purchase_quantity * item.purchase_price }} + class="ml-[20rpx] text-[var(--primary-color)]">{{ item.inbound_quantity * item.purchase_price }} @@ -139,23 +168,13 @@ - 暂未选择产品 + 暂未选择食材 - - - - - - - @@ -173,14 +192,19 @@ import { t } from '@/locale' import { onLoad, onReady } from '@dcloudio/uni-app'; import { getSupplierSelect, getWarehouseSelect } from '@/addon/erp/api/base'; - import { addOrder } from '@/addon/erp/api/purchase'; + import { addManual } from '@/addon/erp/api/purchase'; import { generatedCode } from '@/addon/erp/utils/common'; + import {uploadImage } from '@/app/api/system' import { redirect } from '@/utils/common'; import dayjs from 'dayjs' - + interface FileItem { + url: string; + status?: string; + message?: string; + } const formRef : any = ref(null) const loading = ref(false) - + const rules = reactive({ // 'supplier_id': { @@ -198,22 +222,36 @@ const formData = ref({ id: "", - code: generatedCode("CG"), + code: generatedCode("RK"), supplier_id: "", supplier_name: "", delivery_time: dayjs().format('YYYY-MM-DD'), - type: "", + type: "送货上门", warehouse_id: "", warehouse_name: "", billing_time: dayjs().format('YYYY-MM-DD'), remark: "", - rate: 16, product: [] as any[], - total_num: 0, - money: 0, - total_money: 0 + batch_number: generatedCode('BN'), + inbound_image:"", + inspection_report_image:"", + total_num:0, + total_amount:0, }) - + const typeList = ref([ + { + name: '送货上门' + }, + { + name: '到店自提' + }, + { + name: '邮寄配送' + } + ]) + const inbinboundImageFileList=ref([]) + const inspectionReportImageFileList=ref([]) + onReady(() => { formRef.value.setRules(rules); }) @@ -232,28 +270,93 @@ uniqueItems[item.code] = item; }); - res.forEach(item => { + res.forEach((item:any) => { if (!uniqueItems[item.code]) { uniqueItems[item.code] = item; } }); const uniqueArray = Object.values(uniqueItems); - formData.value.product = uniqueArray.map(item => { + formData.value.product = uniqueArray.map((item:any) => { item.purchase_price = 0; - item.purchase_quantity = 1; + item.inbound_quantity = 1; + item.expiry_term=item.expiry_term || 0 item.unit = item.productUnit?.name return item; }); - }) }) + + const afterRead = async (event: any) => { + // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式 + let lists:FileItem[] = [].concat(event.file) ; + let fileListLen = inbinboundImageFileList.value.length; + lists = lists.filter((item:FileItem) => item.url); + lists.map((item: any) => { + inbinboundImageFileList.value.push({ + url: item.url, + status: 'uploading', + message: '上传中', + }); + }) + for (let i = 0; i < lists.length; i++) { + const result = await uploadFilePromise(lists[i].url); + let item = inbinboundImageFileList.value[fileListLen]; + inbinboundImageFileList.value.splice(fileListLen, 1, { + ...item, + status: 'success', + message: '', + url: result as string, + }); + fileListLen++; + } + } + + const inspectionReportImageAfterRead = async (event: any) => { + // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式 + let lists:FileItem[] = [].concat(event.file) ; + let fileListLen = inspectionReportImageFileList.value.length; + lists = lists.filter((item:FileItem) => item.url); + lists.map((item: any) => { + inspectionReportImageFileList.value.push({ + url: item.url, + status: 'uploading', + message: '上传中', + }); + }) + for (let i = 0; i < lists.length; i++) { + const result = await uploadFilePromise(lists[i].url); + let item = inspectionReportImageFileList.value[fileListLen]; + inspectionReportImageFileList.value.splice(fileListLen, 1, { + ...item, + status: 'success', + message: '', + url: result as string, + }); + fileListLen++; + } + } + + const uploadFilePromise = (url: any) => { + return new Promise((resolve, reject) => { + let a = uploadImage({ + filePath:url, + name: 'file' + }).then((res:any)=>{ + setTimeout(() => { + resolve(res.data.url as string); + }, 1000); + }) + }); + } + const updateType = (e : any) => { + formData.value.type = e.name; + } /** * 供应商 */ - const supplierSheetShow = ref(false) const supplierList = ref([]); - const updateSex = (e : any) => { + const supplierIdChange = (e : any) => { formData.value.supplier_id = e.id; formData.value.supplier_name = e.name; if (formRef.value) { @@ -275,9 +378,8 @@ /** * 仓库 */ - const warehouseSheetShow = ref(false) const warehouseList = ref([]); - const updateSexWarehouse = (e : any) => { + const warehouseIdChange = (e : any) => { formData.value.warehouse_id = e.id; formData.value.warehouse_name = e.name; if (formRef.value) { @@ -296,7 +398,7 @@ }) } - // 跳转到产品选择页 + // 跳转到食材选择页 const goProductSelect = () => { if (!formData.value.warehouse_id) { uni.showToast({ icon: 'none', title: t('warehouseIdPlaceholder') }) @@ -338,23 +440,23 @@ const totalData = computed(() => { let data = { money: 0, - total_money: 0, nums: 0, }; for (let item of formData.value.product) { - let amount = Number(item.purchase_quantity) * Number(item.purchase_price); + let amount = Number(item.inbound_quantity) * Number(item.purchase_price); data.money += amount; - data.nums += Number(item.purchase_quantity); + data.nums += Number(item.inbound_quantity); } - // 税后金额 - data.total_money = data.money + data.money * (formData.value.rate / 100); return data; }); // 保存 const handSave = () => { if (loading.value) return - + if (!formData.value.code) { + uni.showToast({ icon: 'none', title: t('codePlaceholderNew') }) + return false; + } if (!formData.value.supplier_id) { uni.showToast({ icon: 'none', title: t('supplierIdPlaceholder') }) return false; @@ -363,17 +465,28 @@ uni.showToast({ icon: 'none', title: t('warehouseIdPlaceholder') }) return false; } + if (!formData.value.batch_number) { + uni.showToast({ icon: 'none', title: t('batchNumberPlaceholder') }) + return false; + } loading.value = true - formData.value.total_num = totalData.value.nums; - formData.value.money = totalData.value.money; - formData.value.total_money = totalData.value.total_money; - - addOrder(formData.value).then((res : any) => { + formData.value.total_amount = totalData.value.money; + formData.value.delivery_time = uni.$u.date(formData.value.delivery_time, 'yyyy-mm-dd'); + formData.value.billing_time = uni.$u.date(formData.value.billing_time, 'yyyy-mm-dd'); + if(inbinboundImageFileList.value.length > 0){ + const imgUrls=inbinboundImageFileList.value.map((item:any)=>item.url) + formData.value.inbound_image=imgUrls.join(',') + } + if(inspectionReportImageFileList.value.length > 0){ + const imgUrls=inspectionReportImageFileList.value.map((item:any)=>item.url) + formData.value.inspection_report_image=imgUrls.join(',') + } + addManual(formData.value).then((res : any) => { loading.value = false if (res.code == 1) { - redirect({ url: '/addon/erp/pages/purchase/order/list' }) + redirect({ url: '/addon/erp/pages/inbound/order/list' }) } }).catch((err) => { // 如果是4001,没有绑定企业账号,强制跳转绑定 diff --git a/src/addon/erp/pages/purchase/order/detail.vue b/src/addon/erp/pages/inbound/order/detail.vue similarity index 51% rename from src/addon/erp/pages/purchase/order/detail.vue rename to src/addon/erp/pages/inbound/order/detail.vue index e5a87c2..5db86d0 100644 --- a/src/addon/erp/pages/purchase/order/detail.vue +++ b/src/addon/erp/pages/inbound/order/detail.vue @@ -6,12 +6,8 @@ {{t('code')}}:{{formData.code}} - - - - + @@ -38,7 +34,19 @@ {{ t('totalNums') }}:{{formData.total_num}} - + + {{ t('deliveryTime') }}:{{formData.delivery_time}} + + + {{ t('warehouseId') }}:{{formData.warehouse.name}} + + + {{ t('remark') }}:{{formData.remark}} + + + + {{ '录入人' }}:{{formData.enter_name }} + + + {{ '入库人' }}:{{formData.store_name}} {{ t('createTime') }}: - - {{item.products?.name}} + {{item.product?.name}} {{ t('productCode') }}:{{item.products?.code}} + class="ml-[20rpx] text-[var(--primary-color)]">{{item.product?.code}} {{ t('spec') }}:{{item.products?.spec}} + class="ml-[20rpx] text-[var(--primary-color)]">{{item.product?.spec}} {{ t('productUnitId') }}: {{ t('purchaseQuantity') }}: - {{item.nums}} + {{item.num}} @@ -99,7 +114,7 @@ {{ t('totalPrice') }}:{{ item.nums * item.price }} + class="ml-[20rpx] text-[var(--primary-color)]">{{ item.num * item.price }} @@ -108,12 +123,45 @@ - 暂未选择产品 + 暂未选择食材 - + + + + {{ t('inboundImage') }} + + + + + + + + 暂未上传{{ t('inboundImage') }} + + + {{ t('inspectionReportImage') }} + + + + + + 暂未上传{{ t('inspectionReportImage') }} + + + - + + + + + + + @@ -121,8 +169,8 @@ import { ref, reactive, computed, onMounted } from 'vue' import { t } from '@/locale' import { onLoad } from '@dcloudio/uni-app'; - import { getOrderInfo } from '@/addon/erp/api/purchase'; - + import { getManualInfo,putInStorage } from '@/addon/erp/api/purchase'; + import { img } from '@/utils/common' const formRef : any = ref(null) const formData = reactive({ @@ -131,6 +179,7 @@ productType: { name: '' }, + id:'', spec: '', productUnit: { name: '' @@ -140,19 +189,64 @@ max_warning: '', remark: '', create_time: '', - productList: [] + delivery_time:'', + productList: [], + warehouse:{ + name:'' + }, + inbound_image:"", + inspection_report_image:"" + }) + const enteringWarehouseShow = ref(false); + const inboundImageArr=computed (()=>{ + if(formData.inbound_image){ + return formData.inbound_image.split(',') + } + return [] + }) + const inspectionReportImageArr=computed (()=>{ + if(formData.inspection_report_image){ + return formData.inspection_report_image.split(',') + } + return [] }) - // 加载 onLoad((data : any) => { getInfo(data.id); }) const getInfo = async (id : number) => { - const data = await (await getOrderInfo(id)).data; + const data = await (await getManualInfo(id)).data; Object.assign(formData, data); } + + // 立即入库 + const handleEnteringWarehouse= (item:any)=>{ + enteringWarehouseShow.value=true + } + + // 确认立即入库 + const enteringWarehouseConfirm = () => { + putInStorage(formData.id) + .then((res:any) => { + if(res.code ===1){ + getInfo(formData.id); + enteringWarehouseShow.value = false; + } + }).catch(() => { }); + } + const previewImageClick=(url:string)=>{ + uni.previewImage({ + current: 0, + urls:[url] + }) + } - \ No newline at end of file diff --git a/src/addon/erp/pages/purchase/order/list.vue b/src/addon/erp/pages/inbound/order/list.vue similarity index 62% rename from src/addon/erp/pages/purchase/order/list.vue rename to src/addon/erp/pages/inbound/order/list.vue index 4721256..5b7ae9e 100644 --- a/src/addon/erp/pages/purchase/order/list.vue +++ b/src/addon/erp/pages/inbound/order/list.vue @@ -1,24 +1,19 @@ @@ -76,16 +79,17 @@ import MescrollBody from '@/components/mescroll/mescroll-body/mescroll-body.vue'; import MescrollEmpty from '@/components/mescroll/mescroll-empty/mescroll-empty.vue'; import useMescroll from '@/components/mescroll/hooks/useMescroll.js'; - import { getOrderList, getOrderStatus } from '@/addon/erp/api/purchase'; + import { getManualList, getManualStatus,putInStorage} from '@/addon/erp/api/purchase'; import { onShow, onPageScroll, onReachBottom, onLoad } from '@dcloudio/uni-app'; const { downCallback, mescrollInit, getMescroll } = useMescroll(onPageScroll, onReachBottom); - - const show = ref(false); + const enteringWarehouseId=ref('') + const subsectionCurrent=ref(0) + const enteringWarehouseShow = ref(false); const statusList = ref([]); const searchParams = ref({ - status: undefined, + status: 3, }); // 获取系统状态栏的高度 @@ -97,25 +101,37 @@ onLoad(() => { - getStatusAllFn(); - }) - - // 获取状态 - const getStatusAllFn = () => { - getOrderStatus().then((res) => { - statusList.value = res.data; - statusList.value.unshift('全部') + // 获取状态 + getManualStatus().then((res:any) => { + statusList.value = Object.values(res.data); + subsectionCurrent.value=statusList.value.findIndex((item:any)=>item === '待入库') }); - }; - + }) + // 立即入库 + const handleEnteringWarehouse= (item:any)=>{ + enteringWarehouseShow.value=true + enteringWarehouseId.value=item.id + } + + // 确认立即入库 + const enteringWarehouseConfirm = () => { + if (enteringWarehouseId.value == '') { + uni.showToast({ icon: 'none', title: t("Invalid ID") }); + return false; + } + putInStorage(enteringWarehouseId.value) + .then((res:any) => { + if(res.code ===1){ + getMescroll().resetUpScroll(); + enteringWarehouseId.value = ''; + enteringWarehouseShow.value = false; + } + }).catch(() => { }); + } + // 分段器改变事件 const handleChange = (index : number) => { - // 由于多了一个全部,这里多个处理 - if (index === 0) { - searchParams.value.status = undefined - } else { - searchParams.value.status = index - 1; - } + searchParams.value.status = index===0?2:3; getMescroll().resetUpScroll(); } @@ -138,9 +154,9 @@ let data : Object = { page: mescroll.num, limit: mescroll.size, - status: searchParams.value.status + storage_status: searchParams.value.status }; - getOrderList(data).then((res : any) => { + getManualList(data).then((res : any) => { let newArr = res.data.data; mescroll.endSuccess(newArr.length); //设置列表数据 @@ -162,5 +178,10 @@ } - \ No newline at end of file diff --git a/src/addon/erp/pages/inbound/stockPending/add.vue b/src/addon/erp/pages/inbound/stockPending/add.vue new file mode 100644 index 0000000..fd58dfb --- /dev/null +++ b/src/addon/erp/pages/inbound/stockPending/add.vue @@ -0,0 +1,565 @@ + + + + + \ No newline at end of file diff --git a/src/addon/erp/pages/inbound/stockPending/detail.vue b/src/addon/erp/pages/inbound/stockPending/detail.vue new file mode 100644 index 0000000..e6f815d --- /dev/null +++ b/src/addon/erp/pages/inbound/stockPending/detail.vue @@ -0,0 +1,252 @@ + + + + + \ No newline at end of file diff --git a/src/addon/erp/pages/inbound/stockPending/list.vue b/src/addon/erp/pages/inbound/stockPending/list.vue new file mode 100644 index 0000000..40f1130 --- /dev/null +++ b/src/addon/erp/pages/inbound/stockPending/list.vue @@ -0,0 +1,436 @@ + + + + + \ No newline at end of file diff --git a/src/addon/erp/pages/index.vue b/src/addon/erp/pages/index.vue index 549850c..340b031 100644 --- a/src/addon/erp/pages/index.vue +++ b/src/addon/erp/pages/index.vue @@ -41,7 +41,7 @@ const diy = useDiy({ name: "DIY_ERP_INDEX" }) - + const diyGroupRef = ref(null) const wxPrivacyPopupRef:any = ref(null) diff --git a/src/addon/erp/pages/inventory/inventory/add.vue b/src/addon/erp/pages/inventory/inventory/add.vue index 850f4d7..de2897c 100644 --- a/src/addon/erp/pages/inventory/inventory/add.vue +++ b/src/addon/erp/pages/inventory/inventory/add.vue @@ -5,60 +5,90 @@ labelWidth="150rpx"> - - - - {{ t('warehouseNamePlaceholder') }} - - {{ formData.warehouse_name }} - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - {{ t('productName') }} - - {{ formData.product_name }} - + + + + + + + + + + + + + + + + - - + (其中因未完成出库单占用的冻结数量:{{ formData.freeze }}) + + + + + + + + + + - - - - - - - - - - + + - - - - - - ([]); + const batchNumberList = ref([]); const rules = reactive({ // 'supplier_id': { @@ -99,32 +139,41 @@ const formData = ref({ - id: "", - warehouse_id: "", - warehouse_name: "", - product_id: "", - product_name: "", - surface_num: "", - number: "", - real_num: "", - type: "", - + id: '', + code: generatedCode('PD'), + billing_time: dayjs().format('YYYY-MM-DD'), + check_time: dayjs().format('YYYY-MM-DD'), + operator_id:'', + warehouse_id: '', + inventory_id: '', + product_id: '', + surface_num: '', + freeze: '', + number: '', + real_num: '', + type: '' }) - + const check_time_new=ref(dayjs().format('YYYY-MM-DD')) onReady(() => { formRef.value.setRules(rules); }) - + const getOperator = async () => { + const res = await getMemberInfo(); + return res.data?.adminInfo?.uid || ''; + } // 页面加载 - onLoad((option : any) => { + onLoad(async (option : any) => { getTypeAllFn(); getWarehouseList(); + formData.value.operator_id = await getOperator(); }) - // 获取状态 const getTypeAllFn = () => { - getInventoryTypeList().then((res) => { - typeList.value = res.data; + getCheckTypeList().then((res) => { + const data= Object.values(res.data); + typeList.value =data.map((item:any)=>{ + return {name:item} + }) }); }; @@ -132,12 +181,15 @@ /** * 仓库 */ - const warehouseSheetShow = ref(false) const warehouseList = ref([]); const updateSexWarehouse = (e : any) => { formData.value.warehouse_id = e.id; - formData.value.warehouse_name = e.name; - getInventoryProduct({ + formData.value.inventory_id = '' + formData.value.product_id = '' + formData.value.surface_num = '' + formData.value.freeze = '' + batchNumberList.value = [] + getCheckProduct({ warehouse_id: e.id, }).then((res) => { productList.value = res.data; @@ -154,50 +206,62 @@ } }) } - - // 产品 - const productSheetShow = ref(false); + const checkTimeConfirm = (e : any) => { + formData.value.check_time = uni.$u.date(e.value, 'yyyy-mm-dd'); + checkTimeShow.value = false; + } + // 食材 const productList = ref([]); - const updateSexProduct = (e : any) => { - formData.value.product_id = e.id; - formData.value.product_name = e.name; + const productIdChange = (e : any) => { + formData.value.product_id = e.product_id; - handleProductIdChange(e.id); + handleProductIdChange(e.product_id); + } + // 批次号 + const inventoryIdChange = (e : any) => { + formData.value.inventory_id = e.inventory_id; + } + // 盘点结果 + const typeChange = (e : any) => { + formData.value.type = e.name; } - // 产品选择事件 + // 食材选择事件 const handleProductIdChange = (val : number) => { - const product = productList.value.find((item) => item.id === val); + const product = productList.value.find((item) => item.product_id === val); + batchNumberList.value = productList.value.filter((item) => item.product_id === val) if (product) { formData.value.surface_num = product.surface_num; + formData.value.freeze = product.freeze } }; // 保存 - const handSave = () => { + const handSave = async() => { + const hasPermission = await checkBtnPermission(memberStore.btnPermission,'erp_inventory_check_add') + if (!hasPermission) return if (loading.value) return - if (!formData.value.warehouse_id) { - uni.showToast({ icon: 'none', title: t('warehouseNamePlaceholder') }) + uni.showToast({ icon: 'none', title: '请选择仓库' }) return false; } if (!formData.value.product_id) { - uni.showToast({ icon: 'none', title: t('productNamePlaceholder') }) + uni.showToast({ icon: 'none', title: '请选择食材' }) return false; } if (!formData.value.number) { - uni.showToast({ icon: 'none', title: t('numberPlaceholder') }) + uni.showToast({ icon: 'none', title: '请输入操作数量' }) return false; } if (!formData.value.type) { - uni.showToast({ icon: 'none', title: t('typePlaceholder') }) + uni.showToast({ icon: 'none', title: '请选择盘点结果' }) return false; } loading.value = true - - addInventory(formData.value).then((res : any) => { + formData.value.check_time = uni.$u.date(formData.value.check_time, 'yyyy-mm-dd'); + addCheck(formData.value).then((res : any) => { loading.value = false if (res.code == 1) { redirect({ url: '/addon/erp/pages/inventory/inventory/list' }) diff --git a/src/addon/erp/pages/inventory/inventory/list.vue b/src/addon/erp/pages/inventory/inventory/list.vue index 2c6bcb6..6f8fd61 100644 --- a/src/addon/erp/pages/inventory/inventory/list.vue +++ b/src/addon/erp/pages/inventory/inventory/list.vue @@ -1,6 +1,6 @@ @@ -74,17 +107,108 @@ import MescrollBody from '@/components/mescroll/mescroll-body/mescroll-body.vue'; import MescrollEmpty from '@/components/mescroll/mescroll-empty/mescroll-empty.vue'; import useMescroll from '@/components/mescroll/hooks/useMescroll.js'; - import { getInventoryList } from '@/addon/erp/api/inventory'; + import { getCheckList,getCheckTypeList,updateCheckStatus,putInStorage} from '@/addon/erp/api/inventory'; import { onShow, onPageScroll, onReachBottom, onLoad } from '@dcloudio/uni-app'; + import { checkBtnPermission } from '@/utils/auth'; + import useMemberStore from '@/stores/member' const { downCallback, mescrollInit, getMescroll } = useMescroll(onPageScroll, onReachBottom); - - - const show = ref(false); + + const memberStore = useMemberStore() + + const auditOrderItem = ref(null); + const auditOrderShow = ref(false); + const notAuditOrderShow = ref(false); + const storageOrderShow = ref(false); + const refuseReason=ref("") + const statusList = ref([]); const searchParams = ref({ - status: undefined, + status: '增加', }); - + onLoad(() => { + // 获取状态 + getCheckTypeList().then((res:any) => { + statusList.value = Object.values(res.data); + }); + }) + // 操作 + const handleOperateOrder= async(item:any,type:string)=>{ + if (type === 'audit') { + const hasPermission = await checkBtnPermission(memberStore.btnPermission, 'erp_inventory_check_updateStatus') + if (!hasPermission) return + auditOrderShow.value = true + } else if (type === 'notAudit') { + const hasPermission = await checkBtnPermission(memberStore.btnPermission,'erp_inventory_check_updateStatus') + if (!hasPermission) return + notAuditOrderShow.value = true + } else if (type === 'storage') { + const hasPermission = await checkBtnPermission(memberStore.btnPermission, 'erp_inventory_check_putInStorage') + if (!hasPermission) return + storageOrderShow.value = true + } + refuseReason.value="" + auditOrderItem.value=item + } + // 确认审核 + const auditOrderConfirm = () => { + if (!auditOrderItem.value) { + uni.showToast({ + title: '数据不存在', + icon: 'none' + }); + return; + } + updateCheckStatus({ id: auditOrderItem.value.id,type: 'pass' }) + .then((res:any) => { + if(res.code ===1){ + getMescroll().resetUpScroll(); + auditOrderItem.value = null; + auditOrderShow.value = false; + } + }).catch(() => { }); + } + // 确认立即入库 + const storageOrderConfirm = () => { + if (!auditOrderItem.value) { + uni.showToast({ + title: '数据不存在', + icon: 'none' + }); + return; + } + putInStorage(auditOrderItem.value.id) + .then((res:any) => { + if(res.code ===1){ + getMescroll().resetUpScroll(); + auditOrderItem.value = null; + storageOrderShow.value = false; + } + }).catch(() => { }); + } + // 确认拒绝通过审核 + const notAuditOrderConfirm = () => { + if (!auditOrderItem.value) { + uni.showToast({ + title: '数据不存在', + icon: 'none' + }); + return; + } + updateCheckStatus({ id: auditOrderItem.value.id,type: 'reject',reject_reason:refuseReason.value }) + .then((res:any) => { + if(res.code ===1){ + getMescroll().resetUpScroll(); + auditOrderItem.value = null; + notAuditOrderShow.value = false; + } + }).catch(() => { }); + } + // 分段器改变事件 + const handleChange = (index : number) => { + searchParams.value.status = index===0?'增加':'减少'; + getMescroll().resetUpScroll(); + } + // 获取系统状态栏的高度 let menuButtonInfo : any = {}; // 如果是小程序,获取右上角胶囊的尺寸信息,避免导航栏右侧内容与胶囊重叠(支付宝小程序非本API,尚未兼容) @@ -111,9 +235,9 @@ let data : Object = { page: mescroll.num, limit: mescroll.size, - status: searchParams.value.status + type: searchParams.value.status }; - getInventoryList(data).then((res : any) => { + getCheckList(data).then((res : any) => { let newArr = res.data.data; mescroll.endSuccess(newArr.length); //设置列表数据 @@ -135,5 +259,5 @@ } - \ No newline at end of file diff --git a/src/addon/erp/pages/inventory/statement/list.vue b/src/addon/erp/pages/inventory/statement/list.vue index 81871b9..e02ffae 100644 --- a/src/addon/erp/pages/inventory/statement/list.vue +++ b/src/addon/erp/pages/inventory/statement/list.vue @@ -9,10 +9,9 @@ - {{item.products.name}} + {{item.product.name}} - @@ -20,11 +19,15 @@ {{ t('productSpec') }}:{{item.products?.spec}} + class="ml-[20rpx] text-[var(--primary-color)]">{{item.product?.spec}} {{ t('productUnit') }}:{{item.products?.productUnit?.name}} + class="ml-[20rpx] text-[var(--primary-color)]">{{item.product?.productUnit?.name}} + + + 批次号:{{item.batch_number}} {{ t('warehouseName') }}: - {{item.products.name}} + {{item.product.name}} {{ t('productSpec') }}:{{item.products?.spec}} + class="ml-[20rpx] text-[var(--primary-color)]">{{item.product?.spec}} {{ t('productUnit') }}:{{item.products?.productUnit?.name}} + class="ml-[20rpx] text-[var(--primary-color)]">{{item.product?.productUnit?.name}} + + + 批次号:{{item.batch_number}} + + + 到期时间:{{item.expiry_at}} {{ t('warehouseName') }}: + + + + + + + + + + + + + + + + + + + + + + + + + + + + 重置 + 确认 + + + + + + + + + + + + + + + 库存总数: + {{sumF.total_quantity}} + + + 合计金额(元): + {{sumF.total_amount}} + + + + @@ -60,16 +126,95 @@ import MescrollEmpty from '@/components/mescroll/mescroll-empty/mescroll-empty.vue'; import useMescroll from '@/components/mescroll/hooks/useMescroll.js'; import { getWpRelationshipList } from '@/addon/erp/api/inventory'; + import { getWarehouseSelect,getSupplierSelect} from '@/addon/erp/api/base'; import { onShow, onPageScroll, onReachBottom, onLoad } from '@dcloudio/uni-app'; const { downCallback, mescrollInit, getMescroll } = useMescroll(onPageScroll, onReachBottom); - const show = ref(false); - const searchParams = ref({ - status: undefined, - }); - + const queryShow = ref(false); + const sumShow = ref(false); + + const sumF = ref({ + total_quantity: 0, + total_amount: 0.00 + }) + const queryF = ref({ + batch_number: '', + warehouse_id: '', + product_name: '', + supplier_id: '', + hasQuery:0 + }) + + // 页面加载 + onLoad((option : any) => { + getWarehouseList() + getSupplierList(); + queryF.value.hasQuery=0 + sumShow.value=false + }) + + const querySearch = () => { + sumShow.value = false + queryShow.value = true + } + const queryClose = () => { + queryShow.value = false + } + const smmarieTip= ()=>{ + sumShow.value =!sumShow.value + } + const resetQuery =()=>{ + Object.keys(queryF.value ).forEach((key: string) => { + (queryF.value as any)[key] = "" + }) + queryF.value.hasQuery=0 + } + const submitQuery =()=>{ + queryShow.value = false + queryF.value.hasQuery=1 + getMescroll().resetUpScroll(); + } + + /** + * 仓库 + */ + const warehouseList = ref([]); + const warehouseIdChange = (e : any) => { + queryF.value.warehouse_id = e.id; + } + // 获取仓库 + const getWarehouseList = () => { + getWarehouseSelect({}).then((res : any) => { + warehouseList.value = res.data; + }).catch(err => { + // 如果是4001,没有绑定企业账号,强制跳转绑定 + if (err.code == 4001) { + redirect({ url: '/addon/erp/pages/member/bind' }) + } + }) + } + + /** + * 供应商 + */ + const supplierList = ref([]); + const supplierIdChange = (e : any) => { + queryF.value.supplier_id = e.id; + } + // 获取供应商 + const getSupplierList = () => { + getSupplierSelect({}).then((res : any) => { + supplierList.value = res.data; + }).catch(err => { + // 如果是4001,没有绑定企业账号,强制跳转绑定 + if (err.code == 4001) { + redirect({ url: '/addon/erp/pages/member/bind' }) + } + }) + } + // 获取系统状态栏的高度 let menuButtonInfo : any = {}; // 如果是小程序,获取右上角胶囊的尺寸信息,避免导航栏右侧内容与胶囊重叠(支付宝小程序非本API,尚未兼容) @@ -96,8 +241,14 @@ let data : Object = { page: mescroll.num, limit: mescroll.size, - status: searchParams.value.status + batch_number:queryF.value.hasQuery===1?queryF.value.batch_number:'', + warehouse_id:queryF.value.hasQuery===1?queryF.value.warehouse_id:'', + product_name:queryF.value.hasQuery===1?queryF.value.product_name:'', + supplier_id:queryF.value.hasQuery===1?queryF.value.supplier_id:'', }; + // 重置 sumF 变量 + sumF.value.total_quantity = 0; + sumF.value.total_amount = 0.00; getWpRelationshipList(data).then((res : any) => { let newArr = res.data.data; mescroll.endSuccess(newArr.length); @@ -106,6 +257,11 @@ relationshipList.value = []; //如果是第一页需手动制空列表 } relationshipList.value = relationshipList.value.concat(newArr); + relationshipList.value.forEach((item: any) => { + sumF.value.total_quantity += Number(item.inventory) + const amount = Number(sumF.value.total_amount) + Number(item.inventory) * Number(item.price) + sumF.value.total_amount = parseFloat(amount.toFixed(2)) + }) listLoading.value = false; loading.value = false; }).catch((err) => { @@ -120,5 +276,42 @@ } - \ No newline at end of file diff --git a/src/addon/erp/pages/member/bind.vue b/src/addon/erp/pages/member/bind.vue index 450dc1c..5458637 100644 --- a/src/addon/erp/pages/member/bind.vue +++ b/src/addon/erp/pages/member/bind.vue @@ -120,6 +120,7 @@ bindAdminAccout(formData).then((res : any) => { if (info.value) { memberStore.getMemberInfo() + memberStore.getUserBtnRole() redirect({ url: '/addon/erp/pages/member/index', mode: 'redirectTo' }) } else { memberStore.setToken(res.data.token) diff --git a/src/addon/erp/pages/outbound/order/add.vue b/src/addon/erp/pages/outbound/order/add.vue new file mode 100644 index 0000000..4554347 --- /dev/null +++ b/src/addon/erp/pages/outbound/order/add.vue @@ -0,0 +1,527 @@ + + + + + \ No newline at end of file diff --git a/src/addon/erp/pages/sell/delivery/detail.vue b/src/addon/erp/pages/outbound/order/detail.vue similarity index 59% rename from src/addon/erp/pages/sell/delivery/detail.vue rename to src/addon/erp/pages/outbound/order/detail.vue index 1e03958..6c0aa7b 100644 --- a/src/addon/erp/pages/sell/delivery/detail.vue +++ b/src/addon/erp/pages/outbound/order/detail.vue @@ -6,12 +6,8 @@ {{t('code')}}:{{formData.code}} - - - - + @@ -19,7 +15,7 @@ - {{ t('customerName') }}:{{formData.customer?.name}} @@ -32,11 +28,6 @@ class="ml-[20rpx] text-[var(--primary-color)]">{{formData.phone}} - - {{ t('city') }}:{{formData.city}} - - {{ t('address') }}:{{formData.address}} @@ -46,7 +37,7 @@ class="ml-[20rpx] text-[var(--primary-color)]">{{formData.type}} - {{ t('deliveryTime') }}:{{formData.delivery_time}} @@ -57,6 +48,18 @@ {{ t('remark') }}:{{formData.remark}} + + {{ '申领人' }}:{{formData.enter_name }} + + + {{ '出库人' }}:{{formData.store_name}} + + + {{ t('updateTime') }}:{{formData.update_time}} + @@ -74,50 +77,74 @@ - {{item.products?.name}} + {{item.product?.name}} {{ t('productCode') }}:{{item.products?.code}} + class="ml-[20rpx] text-[var(--primary-color)]">{{item.product?.code}} {{ t('productSpec') }}:{{item.products?.spec}} + class="ml-[20rpx] text-[var(--primary-color)]">{{item.product?.spec}} {{ t('productUnitId') }}:{{item.unit}} - {{ t('warehouseName') }}:{{item.w_name}} + 批次号: + {{item.batch_number}} - {{ t('deliveryQuantity') }}: + 仓库名称: + {{item.warehouse?.name}} + + + 出库数量: {{item.num}} - - {{ t('sellPrice') }}: + 单价(元): {{item.price}} {{ t('totalPrice') }}:{{ item.subtotal }} - - + + + 图片 + + + + + + + + 暂未上传图片 + + - + + + + + + + @@ -125,8 +152,8 @@ import { ref, reactive, computed, onMounted } from 'vue' import { t } from '@/locale' import { onLoad } from '@dcloudio/uni-app'; - import { getDeliveryInfo } from '@/addon/erp/api/sell'; - + import { getManualInfo ,takeOutOfStorage} from '@/addon/erp/api/sell'; + import { img } from '@/utils/common' const formRef : any = ref(null) const formData = reactive({ @@ -143,21 +170,53 @@ billing_time: '', remark: '', create_time: '', - status: '', - status_text: '', - productList: [] + storage_status: '', + storage_status_text: '', + productList: [], + outbound_image:"" }) - + const outWarehouseShow = ref(false); // 加载 onLoad((data : any) => { getInfo(data.id); }) - + const imageArr=computed (()=>{ + if(formData.outbound_image){ + return formData.outbound_image.split(',') + } + return [] + }) const getInfo = async (id : number) => { - const data = await (await getDeliveryInfo(id)).data; + const data = await (await getManualInfo(id)).data; Object.assign(formData, data); } + // 立即出库 + const handleOutWarehouse= (item:any)=>{ + outWarehouseShow.value=true + } + + // 确认立即出库 + const outWarehouseConfirm = () => { + takeOutOfStorage(formData.id) + .then((res:any) => { + if(res.code ===1){ + getInfo(formData.id); + outWarehouseShow.value = false; + } + }).catch(() => { }); + } + const previewImageClick=(url:string)=>{ + uni.previewImage({ + current: 0, + urls:[url] + }) + } - \ No newline at end of file diff --git a/src/addon/erp/pages/sell/sell/list.vue b/src/addon/erp/pages/outbound/order/list.vue similarity index 62% rename from src/addon/erp/pages/sell/sell/list.vue rename to src/addon/erp/pages/outbound/order/list.vue index 0d51a7b..9e0365a 100644 --- a/src/addon/erp/pages/sell/sell/list.vue +++ b/src/addon/erp/pages/outbound/order/list.vue @@ -1,23 +1,19 @@ @@ -80,15 +82,17 @@ import MescrollBody from '@/components/mescroll/mescroll-body/mescroll-body.vue'; import MescrollEmpty from '@/components/mescroll/mescroll-empty/mescroll-empty.vue'; import useMescroll from '@/components/mescroll/hooks/useMescroll.js'; - import { getSellList } from '@/addon/erp/api/sell'; + import { getManualList,takeOutOfStorage} from '@/addon/erp/api/sell'; import { onShow, onPageScroll, onReachBottom, onLoad } from '@dcloudio/uni-app'; const { downCallback, mescrollInit, getMescroll } = useMescroll(onPageScroll, onReachBottom); - - const show = ref(false); + const outWarehouseId=ref('') + const subsectionCurrent=ref(0) + const statusList = ref(['待出库','已完成']); + const outWarehouseShow = ref(false); const searchParams = ref({ - status: undefined, + status: 6, }); // 获取系统状态栏的高度 @@ -97,7 +101,17 @@ // #ifdef MP-WEIXIN || MP-BAIDU || MP-TOUTIAO || MP-QQ menuButtonInfo = uni.getMenuButtonBoundingClientRect(); // #endif - + onLoad(() => { + // 获取状态 + // getManualStatus().then((res:any) => { + // statusList.value = Object.values(res.data); + // }); + }) + // 分段器改变事件 + const handleChange = (index : number) => { + searchParams.value.status = index === 0?5:6; + getMescroll().resetUpScroll(); + } const mescrollTop = "20rpx" const sellList = ref>([]), @@ -117,9 +131,9 @@ let data : Object = { page: mescroll.num, limit: mescroll.size, - status: searchParams.value.status + storage_status: searchParams.value.status }; - getSellList(data).then((res : any) => { + getManualList(data).then((res : any) => { let newArr = res.data.data; mescroll.endSuccess(newArr.length); //设置列表数据 @@ -139,7 +153,33 @@ mescroll.endErr(); // 请求失败, 结束加载 }) } + // 立即出库 + const handleoutWarehouse= (item:any)=>{ + outWarehouseShow.value=true + outWarehouseId.value=item.id + } + + // 确认立即出库 + const outWarehouseConfirm = () => { + if (outWarehouseId.value == '') { + uni.showToast({ icon: 'none', title: t("Invalid ID") }); + return false; + } + takeOutOfStorage(outWarehouseId.value) + .then((res:any) => { + if(res.code ===1){ + getMescroll().resetUpScroll(); + outWarehouseId.value = ''; + outWarehouseShow.value = false; + } + }).catch(() => { }); + } - \ No newline at end of file diff --git a/src/addon/erp/pages/sell/sell/sell-select.vue b/src/addon/erp/pages/outbound/order/sell-select-copy.vue similarity index 94% rename from src/addon/erp/pages/sell/sell/sell-select.vue rename to src/addon/erp/pages/outbound/order/sell-select-copy.vue index 28d1243..394f7ef 100644 --- a/src/addon/erp/pages/sell/sell/sell-select.vue +++ b/src/addon/erp/pages/outbound/order/sell-select-copy.vue @@ -82,7 +82,7 @@ import MescrollBody from '@/components/mescroll/mescroll-body/mescroll-body.vue'; import MescrollEmpty from '@/components/mescroll/mescroll-empty/mescroll-empty.vue'; import useMescroll from '@/components/mescroll/hooks/useMescroll.js'; - import { getSellList } from '@/addon/erp/api/sell'; + import { getOutboundManualSelect } from '@/addon/erp/api/sell'; import { onShow, onPageScroll, onReachBottom, onLoad } from '@dcloudio/uni-app'; const { downCallback, mescrollInit, getMescroll } = useMescroll(onPageScroll, onReachBottom); @@ -90,12 +90,12 @@ const show = ref(false); const searchParams = ref({ - status: undefined, + id: undefined, }); // 页面加载 onLoad((option : any) => { - searchParams.value.status = option.status ? option.status : undefined; + searchParams.value.id = option.id ? option.id : undefined; }) @@ -124,13 +124,9 @@ const getListFn = (mescroll : mescrollStructure) => { listLoading.value = true; - let data : Object = { - page: mescroll.num, - limit: mescroll.size, - status: searchParams.value.status - }; - getSellList(data).then((res : any) => { - let newArr = res.data.data; + getOutboundManualSelect(searchParams.value.id).then((res : any) => { + let newArr = res.data; + console.log(res) mescroll.endSuccess(newArr.length); //设置列表数据 if (mescroll.num == 1) { diff --git a/src/addon/erp/pages/outbound/order/sell-select.vue b/src/addon/erp/pages/outbound/order/sell-select.vue new file mode 100644 index 0000000..ea2d6b7 --- /dev/null +++ b/src/addon/erp/pages/outbound/order/sell-select.vue @@ -0,0 +1,119 @@ + + + + + \ No newline at end of file diff --git a/src/addon/erp/pages/outbound/outPending/add.vue b/src/addon/erp/pages/outbound/outPending/add.vue new file mode 100644 index 0000000..cad57cc --- /dev/null +++ b/src/addon/erp/pages/outbound/outPending/add.vue @@ -0,0 +1,564 @@ + + + + + \ No newline at end of file diff --git a/src/addon/erp/pages/purchase/retire/detail.vue b/src/addon/erp/pages/outbound/outPending/detail.vue similarity index 52% rename from src/addon/erp/pages/purchase/retire/detail.vue rename to src/addon/erp/pages/outbound/outPending/detail.vue index 13fb31f..6c0aa7b 100644 --- a/src/addon/erp/pages/purchase/retire/detail.vue +++ b/src/addon/erp/pages/outbound/outPending/detail.vue @@ -6,12 +6,8 @@ {{t('code')}}:{{formData.code}} - - - - + @@ -19,22 +15,31 @@ - {{ t('supplierName') }}:{{formData.supplier?.name}} - - - {{ t('warehouseName') }}:{{formData.warehouse?.name}} + {{ t('customerId') }}:{{formData.customer?.name}} {{ t('contact') }}:{{formData.supplier?.contact}} - - - {{ t('phone') }}:{{formData.supplier?.phone}} + class="ml-[20rpx] text-[var(--primary-color)]">{{formData.contact}} + + {{ t('phone') }}:{{formData.phone}} + + + + {{ t('address') }}:{{formData.address}} + + + {{ t('type') }}:{{formData.type}} + + + {{ '送货日期' }}:{{formData.delivery_time}} + {{ t('billingTime') }}:{{formData.billing_time}} @@ -43,6 +48,14 @@ {{ t('remark') }}:{{formData.remark}} + + {{ '申领人' }}:{{formData.enter_name }} + + + {{ '出库人' }}:{{formData.store_name}} + {{ t('updateTime') }}:{{formData.update_time}} @@ -64,46 +77,74 @@ - {{item.products?.name}} + {{item.product?.name}} {{ t('productCode') }}:{{item.products?.code}} + class="ml-[20rpx] text-[var(--primary-color)]">{{item.product?.code}} {{ t('productSpec') }}:{{item.products?.spec}} + class="ml-[20rpx] text-[var(--primary-color)]">{{item.product?.spec}} {{ t('productUnitId') }}:{{item.unit}} - {{ t('retireQuantity') }}: - {{item.nums}} - + 批次号: + {{item.batch_number}} - {{ t('retirePrice') }}: + 仓库名称: + {{item.warehouse?.name}} + + + 出库数量: + {{item.num}} + + + 单价(元): {{item.price}} {{ t('totalPrice') }}:{{ item.subtotal }} - - + + + 图片 + + + + + + + + 暂未上传图片 + + - + + + + + + + @@ -111,8 +152,8 @@ import { ref, reactive, computed, onMounted } from 'vue' import { t } from '@/locale' import { onLoad } from '@dcloudio/uni-app'; - import { getRetireInfo } from '@/addon/erp/api/purchase'; - + import { getManualInfo ,takeOutOfStorage} from '@/addon/erp/api/sell'; + import { img } from '@/utils/common' const formRef : any = ref(null) const formData = reactive({ @@ -129,21 +170,53 @@ billing_time: '', remark: '', create_time: '', - status: '', - status_text: '', - productList: [] + storage_status: '', + storage_status_text: '', + productList: [], + outbound_image:"" }) - + const outWarehouseShow = ref(false); // 加载 onLoad((data : any) => { getInfo(data.id); }) - + const imageArr=computed (()=>{ + if(formData.outbound_image){ + return formData.outbound_image.split(',') + } + return [] + }) const getInfo = async (id : number) => { - const data = await (await getRetireInfo(id)).data; + const data = await (await getManualInfo(id)).data; Object.assign(formData, data); } + // 立即出库 + const handleOutWarehouse= (item:any)=>{ + outWarehouseShow.value=true + } + + // 确认立即出库 + const outWarehouseConfirm = () => { + takeOutOfStorage(formData.id) + .then((res:any) => { + if(res.code ===1){ + getInfo(formData.id); + outWarehouseShow.value = false; + } + }).catch(() => { }); + } + const previewImageClick=(url:string)=>{ + uni.previewImage({ + current: 0, + urls:[url] + }) + } - \ No newline at end of file diff --git a/src/addon/erp/pages/outbound/outPending/list.vue b/src/addon/erp/pages/outbound/outPending/list.vue new file mode 100644 index 0000000..6239424 --- /dev/null +++ b/src/addon/erp/pages/outbound/outPending/list.vue @@ -0,0 +1,339 @@ + + + + + \ No newline at end of file diff --git a/src/addon/erp/pages/product/product/add.vue b/src/addon/erp/pages/product/product/add.vue index 269babc..80f1efd 100644 --- a/src/addon/erp/pages/product/product/add.vue +++ b/src/addon/erp/pages/product/product/add.vue @@ -14,9 +14,15 @@ + + + + + - @@ -33,7 +39,7 @@ - @@ -41,30 +47,55 @@ + :placeholder="t('minWarningPlaceholder')" > - + + + + + + + + + + + > + + + + + - + - + @@ -87,8 +118,17 @@ import { onLoad } from '@dcloudio/uni-app'; import { getProductTypeSelect, getProductUnitSelect, addProduct } from '@/addon/erp/api/product'; import { generatedCode } from '@/addon/erp/utils/common'; + import {uploadImage } from '@/app/api/system' import { redirect } from '@/utils/common'; - + import { checkBtnPermission } from '@/utils/auth'; + import useMemberStore from '@/stores/member' + + const memberStore = useMemberStore() + interface FileItem { + url: string; + status?: string; + message?: string; + } const formRef : any = ref(null) const loading = ref(false) @@ -110,7 +150,7 @@ trigger: ['blur', 'change'], }, 'product_unit_id': { - type: 'string', + type: 'number', required: true, message: t('productUnitIdPlaceholder'), trigger: ['blur', 'change'], @@ -126,7 +166,7 @@ const formData = ref({ id: "", - code: generatedCode("P"), + code:generatedCode("P"), name: "", product_type_id: "", product_type_name: "", @@ -137,9 +177,12 @@ remark: "", product_unit_id: "", product_unit_name: "", + expiry_term :"", + expiry_alert_term:"", image: "", }) + const imageFileList=ref([]) /** * 分类 */ @@ -182,15 +225,63 @@ }) } - + const afterRead = async (event: any) => { + // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式 + let lists:FileItem[] = [].concat(event.file) ; + let fileListLen = imageFileList.value.length; + lists = lists.filter((item:FileItem) => item.url); + lists.map((item: any) => { + imageFileList.value.push({ + url: item.url, + status: 'uploading', + message: '上传中', + }); + }) + for (let i = 0; i < lists.length; i++) { + const result = await uploadFilePromise(lists[i].url); + let item = imageFileList.value[fileListLen]; + imageFileList.value.splice(fileListLen, 1, { + ...item, + status: 'success', + message: '', + url: result as string, + }); + fileListLen++; + } + } + const imageDelete = (event:any) => { + if (event.index !== undefined && event.file !== undefined) { + const imageIndex = event.index; + const currentFileList = imageFileList.value; + currentFileList.splice(imageIndex, 1); + imageFileList.value = [...imageFileList.value]; + } + } + const uploadFilePromise = (url: any) => { + return new Promise((resolve, reject) => { + let a = uploadImage({ + filePath:url, + name: 'file' + }).then((res:any)=>{ + setTimeout(() => { + resolve(res.data.url as string); + }, 1000); + }) + }); + } // 保存 - const handSave = () => { + const handSave = async() => { + const hasPermission = await checkBtnPermission(memberStore.btnPermission, 'erp_product_add') + if (!hasPermission) return formRef.value.validate().then(() => { if (loading.value) return loading.value = true - + if(imageFileList.value.length > 0){ + const imgUrls=imageFileList.value.map((item:any)=>item.url) + formData.value.image=imgUrls.join(',') + } addProduct(formData.value).then((res : any) => { loading.value = false if (res.code == 1) { diff --git a/src/addon/erp/pages/product/product/out-product-select.vue b/src/addon/erp/pages/product/product/out-product-select.vue new file mode 100644 index 0000000..d4cf910 --- /dev/null +++ b/src/addon/erp/pages/product/product/out-product-select.vue @@ -0,0 +1,152 @@ + + + + + \ No newline at end of file diff --git a/src/addon/erp/pages/product/product/product-select.vue b/src/addon/erp/pages/product/product/product-select.vue index 8172325..6f3dec7 100644 --- a/src/addon/erp/pages/product/product/product-select.vue +++ b/src/addon/erp/pages/product/product/product-select.vue @@ -1,53 +1,49 @@