main.ts 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. import { App, createApp } from "vue";
  2. import MainApp from "./App.vue";
  3. // reset style sheet
  4. import "@/styles/index.scss";
  5. // CSS common style sheet
  6. import "@/styles/common.scss";
  7. // iconfont css
  8. import "@/assets/iconfont/iconfont.css";
  9. // import "@/assets/iconfont/iconfont.js";
  10. // font css
  11. import "@/assets/fonts/font.scss";
  12. // element css
  13. import "element-plus/dist/index.css";
  14. // element dark css
  15. import "element-plus/theme-chalk/dark/css-vars.css";
  16. // custom element dark css
  17. import "@/styles/theme/element-dark.scss";
  18. // custom element css
  19. import "@/styles/element.scss";
  20. import "@vue-office/docx/lib/index.css";
  21. import "@vue-office/excel/lib/index.css";
  22. // postcss-pxtorem
  23. // import "@/utils/rem";
  24. // svg icons
  25. import "virtual:svg-icons-register";
  26. // element plus
  27. // import ElementPlus from "element-plus";
  28. // element icons
  29. // import * as Icons from "@element-plus/icons-vue";
  30. // custom directives
  31. import directives from "@/directives/index";
  32. // vue Router
  33. import router from "@/routers";
  34. // vue i18n
  35. import I18n from "@/languages/index";
  36. // pinia store
  37. import pinia from "@/stores";
  38. // errorHandler
  39. import errorHandler from "@/utils/errorHandler";
  40. import Toast from "vue-toastification";
  41. // import "vue-toastification/dist/index.css";
  42. import "@/styles/var/toastification.scss";
  43. // vant css
  44. import "vant/lib/tabs/style";
  45. import "vant/lib/tab/style";
  46. import "vant/lib/cell/style";
  47. import "vant/lib/cell-group/style";
  48. import "vant/lib/empty/style";
  49. // 打印模块
  50. import { hiPrintPlugin } from "vue-plugin-hiprint";
  51. import {
  52. ElAutocomplete,
  53. ElBacktop,
  54. ElBadge,
  55. ElImage,
  56. ElImageViewer,
  57. ElInput,
  58. ElInputNumber,
  59. ElDatePicker,
  60. ElSelect,
  61. ElSelectV2,
  62. ElTreeSelect,
  63. ElSwitch,
  64. ElStatistic,
  65. ElCheckbox,
  66. ElCheckboxGroup,
  67. ElCheckboxButton,
  68. ElNotification,
  69. ElProgress,
  70. ElRadio,
  71. ElRadioButton,
  72. ElRadioGroup,
  73. ElResult,
  74. ElSpace,
  75. ElText,
  76. ElTag,
  77. ElCheckTag,
  78. ElTimeline,
  79. ElTimelineItem,
  80. ElUpload
  81. } from "element-plus";
  82. // vxe-table
  83. // import XEUtils from "xe-utils";
  84. import {
  85. // 全局对象
  86. VXETable,
  87. // 表格功能
  88. Filter,
  89. Edit,
  90. Menu,
  91. Export,
  92. Keyboard,
  93. Validator,
  94. // 可选组件
  95. Icon,
  96. Column,
  97. Colgroup,
  98. Grid,
  99. Tooltip,
  100. Toolbar,
  101. Pager,
  102. Form,
  103. FormItem,
  104. FormGather,
  105. Checkbox,
  106. CheckboxGroup,
  107. Radio,
  108. RadioGroup,
  109. RadioButton,
  110. Switch,
  111. Input,
  112. Select,
  113. Optgroup,
  114. Option,
  115. Textarea,
  116. Button,
  117. Modal,
  118. List,
  119. Pulldown,
  120. // 表格
  121. Table
  122. } from "vxe-table";
  123. // import "vxe-table/styles/variable.scss";
  124. // import "vxe-table/styles/cssvar.scss";
  125. // import "vxe-table/lib/style.css";
  126. import "@/styles/var/vxe-variable.scss";
  127. import "@/styles/var/vant-variable.scss";
  128. import { Tab as VanTab, Tabs as VanTabs, Cell, CellGroup, Empty as VanEmpty } from "vant";
  129. // 按需加载的方式默认是不带国际化的,自定义国际化需要自行解析占位符 '{0}',例如:
  130. VXETable.setup({
  131. // @ts-ignore
  132. i18n: (key, args) => I18n.global.t(key, args),
  133. // 重置vxetable的图标
  134. icon: {
  135. TABLE_FILTER_NONE: "iconfont iconfilter-funnel-01",
  136. TABLE_FILTER_MATCH: "iconfont iconfilter-funnel-01-fill"
  137. }
  138. });
  139. import "@/components/LjVxeTable/interface/plugins.tsx";
  140. function useTable(app: App) {
  141. // 表格功能
  142. app.use(Filter).use(Edit).use(Menu).use(Export).use(Keyboard).use(Validator);
  143. // 可选组件
  144. app
  145. .use(Icon)
  146. .use(Column)
  147. .use(Colgroup)
  148. .use(Grid)
  149. .use(Tooltip)
  150. .use(Toolbar)
  151. .use(Pager)
  152. .use(Form)
  153. .use(FormItem)
  154. .use(FormGather)
  155. .use(Checkbox)
  156. .use(CheckboxGroup)
  157. .use(Radio)
  158. .use(RadioGroup)
  159. .use(RadioButton)
  160. .use(Switch)
  161. .use(Input)
  162. .use(Select)
  163. .use(Optgroup)
  164. .use(Option)
  165. .use(Textarea)
  166. .use(Button)
  167. .use(Modal)
  168. .use(List)
  169. .use(Pulldown)
  170. // 安装表格
  171. .use(Table);
  172. }
  173. // import VXETable from "vxe-table";
  174. // import "vxe-table/lib/style.css";
  175. // // 按需加载的方式默认是不带国际化的,自定义国际化需要自行解析占位符 '{0}',例如:
  176. // VXETable.setup({
  177. // i18n: (key, args) => I18n.global.t(key, args)
  178. // });
  179. // function useTable(app: App) {
  180. // app.use(VXETable);
  181. // }
  182. const app = createApp(MainApp);
  183. app.config.errorHandler = errorHandler;
  184. // app.config.globalProperties.$toast = Toast;
  185. app.use(Toast, {
  186. transition: "Vue-Toastification__fade",
  187. maxToasts: 20,
  188. newestOnTop: true,
  189. position: "top-right",
  190. timeout: 5000,
  191. closeOnClick: false,
  192. pauseOnFocusLoss: true,
  193. pauseOnHover: true,
  194. draggable: true,
  195. // draggablePercent: 0.6,
  196. showCloseButtonOnHover: false,
  197. hideProgressBar: false,
  198. closeButton: "button",
  199. icon: true,
  200. rtl: false
  201. });
  202. // register the element Icons component
  203. // Object.keys(Icons).forEach(key => {
  204. // app.component(key, Icons[key as keyof typeof Icons]);
  205. // });
  206. app.use(directives).use(router).use(I18n).use(pinia).mount("#app");
  207. app.use(useTable);
  208. app.use(hiPrintPlugin);
  209. hiPrintPlugin.install(app);
  210. // hiPrintPlugin.disAutoConnect();
  211. app.use(ElAutocomplete);
  212. app.use(ElBacktop);
  213. app.use(ElBadge);
  214. app.use(ElDatePicker);
  215. app.use(ElImage);
  216. app.use(ElImageViewer);
  217. app.use(ElInput);
  218. app.use(ElInputNumber);
  219. app.use(ElSelect);
  220. app.use(ElSelectV2);
  221. app.use(ElTreeSelect);
  222. app.use(ElSwitch);
  223. app.use(ElStatistic);
  224. app.use(ElCheckbox);
  225. app.use(ElCheckboxGroup);
  226. app.use(ElCheckboxButton);
  227. app.use(ElNotification);
  228. app.use(ElProgress);
  229. app.use(ElRadio);
  230. app.use(ElRadioButton);
  231. app.use(ElRadioGroup);
  232. app.use(ElResult);
  233. app.use(ElSpace);
  234. app.use(ElText);
  235. app.use(ElTag);
  236. app.use(ElCheckTag);
  237. app.use(ElTimeline);
  238. app.use(ElTimelineItem);
  239. app.use(ElUpload);
  240. // vant init
  241. app.use(VanTabs);
  242. app.use(VanTab);
  243. app.use(Cell);
  244. app.use(CellGroup);
  245. app.use(VanEmpty);
  246. // 引入函数式弹窗
  247. import Dialog from "@/utils/dialog";
  248. // 挂载到app
  249. app.config.globalProperties.$dialog = Dialog;