@utogether/udp-core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/build/index.ts +90 -0
  2. package/build/plugins.ts +26 -0
  3. package/dist/403-B1R-4vXw.js +64 -0
  4. package/dist/404-fXPl8csw.js +64 -0
  5. package/dist/500-eI5842YB.js +66 -0
  6. package/dist/AuthorityInfo-CfVH6PaB.js +4 -0
  7. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-DbK-f8jH.js +102 -0
  8. package/dist/AuthorityPanel-BaLMwMgW.js +4 -0
  9. package/dist/AuthorityPanel.vue_vue_type_style_index_0_lang-C_bkqLD9.js +107 -0
  10. package/dist/Company-CYC9Avfz.js +25 -0
  11. package/dist/CompanyPanel-B4MzoqN_.js +206 -0
  12. package/dist/DataSet-DT-rGICv.js +147 -0
  13. package/dist/Department-B4BNSiYx.js +25 -0
  14. package/dist/DepartmentPanel-zJO89L2O.js +224 -0
  15. package/dist/DesignPanel-S8P0J97f.js +4 -0
  16. package/dist/DesignPanel.vue_vue_type_style_index_0_lang-DW-_Vqrr.js +1015 -0
  17. package/dist/DictView-bIS5-rK-.js +95 -0
  18. package/dist/InvOrganization-MuM2jtsG.js +66 -0
  19. package/dist/Org-kXHSjsgJ.js +35 -0
  20. package/dist/Preview-CRyiwUIR.js +48 -0
  21. package/dist/ReportDefine-WZYIx8Sm.js +10 -0
  22. package/dist/ReportDesign-D-7GKgpb.js +165 -0
  23. package/dist/ReportQuery-BIIJny6w.js +75 -0
  24. package/dist/ReportQueryFrom-OoUl7N2O.js +4 -0
  25. package/dist/ReportQueryFrom.vue_vue_type_style_index_0_lang-B878fgj8.js +177 -0
  26. package/dist/ReportTemplate-Cfeq9US-.js +161 -0
  27. package/dist/Role-BwTV2QMH.js +25 -0
  28. package/dist/RoleAssign-De1JjOun.js +26 -0
  29. package/dist/RolePanel-E3RcdByM.js +4 -0
  30. package/dist/RolePanel-pUBXsqCM.js +4 -0
  31. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-B2pQwHb0.js +148 -0
  32. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-CTIad9_Q.js +126 -0
  33. package/dist/ScrollPanel.vue_vue_type_style_index_0_lang-vMR1fBi0.js +100 -0
  34. package/dist/Staff-Czm7A8vI.js +25 -0
  35. package/dist/StaffInfo-DJzvBuxy.js +4 -0
  36. package/dist/StaffInfo.vue_vue_type_style_index_0_lang-DMTL7KCh.js +108 -0
  37. package/dist/StaffPanel-CHk60LEz.js +4 -0
  38. package/dist/StaffPanel.vue_vue_type_script_setup_true_lang-iPKLb5wG.js +114 -0
  39. package/dist/SysUser-BGwbttRn.js +15 -0
  40. package/dist/SysUserPanel-BCbKoLKt.js +4 -0
  41. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-0QUjnhjF.js +289 -0
  42. package/dist/SystemMenu-BkqZSDKl.js +151 -0
  43. package/dist/UserInfo-BsyAcT2d.js +4 -0
  44. package/dist/UserInfo.vue_vue_type_style_index_0_lang-D0-KDxAh.js +158 -0
  45. package/dist/await-to-js.es5-BtRbN2QH.js +10 -0
  46. package/dist/childView-CF83nhxb.js +4 -0
  47. package/dist/childView-CyuLTUqC.js +4 -0
  48. package/dist/childView.vue_vue_type_style_index_0_lang-CNSgGda3.js +187 -0
  49. package/dist/childView.vue_vue_type_style_index_0_lang-Cch4lE-i.js +144 -0
  50. package/dist/code-rule-Bz-gnktN.js +147 -0
  51. package/dist/core.es.js +13 -0
  52. package/dist/core.umd.js +173 -0
  53. package/dist/cron-task-CIifSUdW.js +135 -0
  54. package/dist/frameView-_d2mqjjQ.js +43 -0
  55. package/dist/img/l_img.svg +1 -0
  56. package/dist/img/minicolors.png +0 -0
  57. package/dist/img/v_img.svg +1 -0
  58. package/dist/index-BKIw8tSn.js +9195 -0
  59. package/dist/layoutView-DLKVepB8.js +3317 -0
  60. package/dist/log-in-e7D5Ss1P.js +110 -0
  61. package/dist/log-out--RRncZhN.js +120 -0
  62. package/dist/login-LREiDfFU.js +251 -0
  63. package/dist/login-log-CvVnyGi3.js +68 -0
  64. package/dist/lov-view-DDrIVILB.js +97 -0
  65. package/dist/menuInfo-B1FUV-Sk.js +4 -0
  66. package/dist/menuInfo.vue_vue_type_style_index_0_lang-Cnk3vdtD.js +338 -0
  67. package/dist/pda-app-CRhVGijN.js +2209 -0
  68. package/dist/redirect-DiaNDu8F.js +15 -0
  69. package/dist/resource-BCwx9fEv.js +97 -0
  70. package/dist/su-welcome-189A7N4r.js +526 -0
  71. package/dist/sys-config-BZ3sejow.js +277 -0
  72. package/dist/udp-core.css +9 -0
  73. package/dist/utogether-r08LNiIZ.js +182 -0
  74. package/index.ts +36 -0
  75. package/package.json +16 -0
  76. package/public/img/l_img.svg +1 -0
  77. package/public/img/minicolors.png +0 -0
  78. package/public/img/v_img.svg +1 -0
  79. package/src/App.vue +70 -0
  80. package/src/api/http.ts +50 -0
  81. package/src/api/index.ts +31 -0
  82. package/src/api/mock.ts +20 -0
  83. package/src/api/user.ts +43 -0
  84. package/src/assets/images/avatars.jpg +0 -0
  85. package/src/assets/images/empty.png +0 -0
  86. package/src/assets/images/login.png +0 -0
  87. package/src/assets/images/logo.png +0 -0
  88. package/src/assets/images/mask-text.jpg +0 -0
  89. package/src/assets/images/minicolors.png +0 -0
  90. package/src/assets/images/utogether.png +0 -0
  91. package/src/assets/images/welcome.png +0 -0
  92. package/src/assets/status/403.svg +1 -0
  93. package/src/assets/status/404.svg +1 -0
  94. package/src/assets/status/500.svg +1 -0
  95. package/src/assets/svg/back_top.svg +1 -0
  96. package/src/assets/svg/bg.svg +1 -0
  97. package/src/assets/svg/close.svg +1 -0
  98. package/src/assets/svg/close_all.svg +1 -0
  99. package/src/assets/svg/close_left.svg +1 -0
  100. package/src/assets/svg/close_other.svg +1 -0
  101. package/src/assets/svg/close_right.svg +1 -0
  102. package/src/assets/svg/dark.svg +1 -0
  103. package/src/assets/svg/day.svg +1 -0
  104. package/src/assets/svg/enter_outlined.svg +1 -0
  105. package/src/assets/svg/exit_screen.svg +1 -0
  106. package/src/assets/svg/full_screen.svg +1 -0
  107. package/src/assets/svg/globalization.svg +1 -0
  108. package/src/assets/svg/loading.svg +17 -0
  109. package/src/assets/svg/mdi_keyboard_esc.svg +1 -0
  110. package/src/assets/svg/refresh.svg +1 -0
  111. package/src/assets/svg/system.svg +1 -0
  112. package/src/components/ReCountTo/README.md +2 -0
  113. package/src/components/ReCountTo/index.ts +18 -0
  114. package/src/components/ReCountTo/src/normal/index.tsx +165 -0
  115. package/src/components/ReCountTo/src/normal/props.ts +37 -0
  116. package/src/components/ReCountTo/src/rebound/index.tsx +67 -0
  117. package/src/components/ReCountTo/src/rebound/props.ts +14 -0
  118. package/src/components/ReCountTo/src/rebound/rebound.css +77 -0
  119. package/src/components/ReCropper/index.ts +14 -0
  120. package/src/components/ReCropper/src/index.tsx +141 -0
  121. package/src/components/ReFlicker/index.css +39 -0
  122. package/src/components/ReFlicker/index.ts +50 -0
  123. package/src/components/ReFlop/index.ts +14 -0
  124. package/src/components/ReFlop/src/Filpper.tsx +99 -0
  125. package/src/components/ReFlop/src/filpper.css +184 -0
  126. package/src/components/ReFlop/src/index.vue +126 -0
  127. package/src/components/ReFlowChart/index.ts +24 -0
  128. package/src/components/ReFlowChart/src/Control.vue +139 -0
  129. package/src/components/ReFlowChart/src/DataDialog.vue +12 -0
  130. package/src/components/ReFlowChart/src/NodePanel.vue +151 -0
  131. package/src/components/ReFlowChart/src/adpterForTurbo.ts +160 -0
  132. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.css +49 -0
  133. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.eot +0 -0
  134. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.js +61 -0
  135. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.json +58 -0
  136. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.svg +47 -0
  137. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.ttf +0 -0
  138. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.woff +0 -0
  139. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.woff2 +0 -0
  140. package/src/components/ReFlowChart/src/config.ts +62 -0
  141. package/src/components/ReIcon/index.ts +12 -0
  142. package/src/components/ReIcon/src/Icon.vue +81 -0
  143. package/src/components/ReIcon/src/hooks.ts +63 -0
  144. package/src/components/ReIcon/src/iconfont.ts +45 -0
  145. package/src/components/ReIcon/src/iconifyIconOffline.ts +36 -0
  146. package/src/components/ReIcon/src/iconifyIconOnline.ts +28 -0
  147. package/src/components/ReIcon/src/offlineIcon.ts +64 -0
  148. package/src/components/ReIcon/src/types.ts +20 -0
  149. package/src/components/ReSplitPane/index.css +49 -0
  150. package/src/components/ReSplitPane/index.tsx +119 -0
  151. package/src/components/ReSplitPane/resizer.css +45 -0
  152. package/src/components/ReSplitPane/resizer.tsx +30 -0
  153. package/src/components/SuCharts/index.ts +36 -0
  154. package/src/components/SuCharts/src/EchartBar.vue +134 -0
  155. package/src/components/SuCharts/src/UserInfo.vue +78 -0
  156. package/src/components/SuCharts/src/echart-line.vue +85 -0
  157. package/src/components/SuCharts/src/echart-pie.vue +95 -0
  158. package/src/components/SuCommon/card/components/Card.vue +148 -0
  159. package/src/components/SuCommon/card/components/DialogForm.vue +127 -0
  160. package/src/components/SuCommon/card/index.vue +142 -0
  161. package/src/components/SuCommon/icon-select/index.vue +241 -0
  162. package/src/components/SuCommon/table/index.vue +208 -0
  163. package/src/components/SuCommon/utils/index.ts +103 -0
  164. package/src/components/SuCommon/utils/slot.tsx +50 -0
  165. package/src/components/SuFloatButton/index.vue +159 -0
  166. package/src/components/SuQrcode/index.ts +14 -0
  167. package/src/components/SuQrcode/src/index.scss +9 -0
  168. package/src/components/SuQrcode/src/index.tsx +236 -0
  169. package/src/components/SuScrollTree/ScrollPanel.vue +175 -0
  170. package/src/components/SuTable/SuTable.vue +334 -0
  171. package/src/components/SuTypeit/index.ts +51 -0
  172. package/src/config/index.ts +35 -0
  173. package/src/contant/index.ts +20 -0
  174. package/src/directives/elResizeDetector/index.ts +33 -0
  175. package/src/directives/index.ts +11 -0
  176. package/src/directives/permission/index.ts +29 -0
  177. package/src/layout/components/lay-chrome/index.vue +30 -0
  178. package/src/layout/components/lay-content/index.vue +143 -0
  179. package/src/layout/components/lay-navbar/index.vue +237 -0
  180. package/src/layout/components/lay-notice/data.ts +59 -0
  181. package/src/layout/components/lay-notice/index.vue +83 -0
  182. package/src/layout/components/lay-notice/noticeItem.vue +160 -0
  183. package/src/layout/components/lay-notice/noticeList.vue +19 -0
  184. package/src/layout/components/lay-panel/index.vue +150 -0
  185. package/src/layout/components/lay-search/components/SearchFooter.vue +67 -0
  186. package/src/layout/components/lay-search/components/SearchModal.vue +189 -0
  187. package/src/layout/components/lay-search/components/SearchResult.vue +132 -0
  188. package/src/layout/components/lay-search/components/index.ts +10 -0
  189. package/src/layout/components/lay-search/index.vue +25 -0
  190. package/src/layout/components/lay-select-org/index.vue +69 -0
  191. package/src/layout/components/lay-setting/index.vue +510 -0
  192. package/src/layout/components/lay-sidebar/breadCrumb.vue +131 -0
  193. package/src/layout/components/lay-sidebar/extraIcon.vue +25 -0
  194. package/src/layout/components/lay-sidebar/hamBurger.vue +72 -0
  195. package/src/layout/components/lay-sidebar/horizontal.vue +191 -0
  196. package/src/layout/components/lay-sidebar/mixNav.vue +258 -0
  197. package/src/layout/components/lay-sidebar/sidebar-logo.vue +98 -0
  198. package/src/layout/components/lay-sidebar/sidebarItem.vue +205 -0
  199. package/src/layout/components/lay-sidebar/vertical.vue +94 -0
  200. package/src/layout/components/lay-tag/index.scss +375 -0
  201. package/src/layout/components/lay-tag/index.vue +625 -0
  202. package/src/layout/frameView.vue +71 -0
  203. package/src/layout/hooks/useBoolean.ts +33 -0
  204. package/src/layout/hooks/useDataThemeChange.ts +142 -0
  205. package/src/layout/hooks/useLayout.ts +65 -0
  206. package/src/layout/hooks/useNav.ts +173 -0
  207. package/src/layout/hooks/useTag.ts +233 -0
  208. package/src/layout/hooks/useTranslationLang.ts +51 -0
  209. package/src/layout/layoutView.vue +215 -0
  210. package/src/layout/redirect.vue +30 -0
  211. package/src/layout/routerView/parent.vue +23 -0
  212. package/src/layout/types.ts +92 -0
  213. package/src/main.ts +108 -0
  214. package/src/plugins/echarts/index.ts +58 -0
  215. package/src/plugins/echarts/theme.json +394 -0
  216. package/src/plugins/i18n/en.ts +289 -0
  217. package/src/plugins/i18n/index.ts +76 -0
  218. package/src/plugins/i18n/module/u-report.ts +64 -0
  219. package/src/plugins/i18n/module/u-workflow.ts +71 -0
  220. package/src/plugins/i18n/module/umsg.ts +28 -0
  221. package/src/plugins/i18n/zh.ts +337 -0
  222. package/src/plugins/vxe-table/index.ts +46 -0
  223. package/src/plugins/vxe-table/render.tsx +397 -0
  224. package/src/router/createComponent.tsx +25 -0
  225. package/src/router/index.ts +183 -0
  226. package/src/router/modules/error.ts +32 -0
  227. package/src/router/modules/home.ts +32 -0
  228. package/src/router/modules/nested.ts +93 -0
  229. package/src/router/modules/remaining.ts +83 -0
  230. package/src/router/modules/tabs.ts +55 -0
  231. package/src/router/utils.ts +377 -0
  232. package/src/store/index.ts +9 -0
  233. package/src/store/modules/app.ts +69 -0
  234. package/src/store/modules/epTheme.ts +49 -0
  235. package/src/store/modules/multiTags.ts +109 -0
  236. package/src/store/modules/permission.ts +103 -0
  237. package/src/store/modules/settings.ts +40 -0
  238. package/src/store/modules/system.ts +180 -0
  239. package/src/store/modules/types.ts +49 -0
  240. package/src/style/button.scss +78 -0
  241. package/src/style/clear-mixin.scss +28 -0
  242. package/src/style/dark.scss +218 -0
  243. package/src/style/element-plus.scss +206 -0
  244. package/src/style/index.scss +76 -0
  245. package/src/style/login.css +336 -0
  246. package/src/style/login2.css +106 -0
  247. package/src/style/print-lock.css +375 -0
  248. package/src/style/reset.scss +272 -0
  249. package/src/style/sidebar.scss +770 -0
  250. package/src/style/suprint.css +985 -0
  251. package/src/style/tailwind.css +68 -0
  252. package/src/style/theme.scss +143 -0
  253. package/src/style/transition.scss +42 -0
  254. package/src/style/vxetable.scss +256 -0
  255. package/src/utils/authority/index.ts +29 -0
  256. package/src/utils/browers.ts +59 -0
  257. package/src/utils/dataFormat/index.ts +223 -0
  258. package/src/utils/http/index.ts +297 -0
  259. package/src/utils/http/types.d.ts +46 -0
  260. package/src/utils/index.ts +47 -0
  261. package/src/utils/lifecycle.ts +20 -0
  262. package/src/utils/mitt.ts +19 -0
  263. package/src/utils/propTypes.ts +47 -0
  264. package/src/utils/storage/index.ts +51 -0
  265. package/src/views/components/contextmenu/basic.vue +74 -0
  266. package/src/views/components/contextmenu/context-menu.vue +40 -0
  267. package/src/views/components/contextmenu/menuDynamic.vue +99 -0
  268. package/src/views/components/contextmenu/menuGroup.vue +71 -0
  269. package/src/views/components/count-to/index.vue +43 -0
  270. package/src/views/components/cropping/index.vue +59 -0
  271. package/src/views/components/cropping/picture.jpeg +0 -0
  272. package/src/views/components/split-pane/index.vue +82 -0
  273. package/src/views/components/video/index.vue +57 -0
  274. package/src/views/error/403.vue +50 -0
  275. package/src/views/error/404.vue +50 -0
  276. package/src/views/error/500.vue +52 -0
  277. package/src/views/login/login-view.vue +314 -0
  278. package/src/views/login/utils/motion.ts +47 -0
  279. package/src/views/login/utils/rule.ts +70 -0
  280. package/src/views/login/utils/verifyCode.ts +52 -0
  281. package/src/views/organization/company/Company.vue +56 -0
  282. package/src/views/organization/company/CompanyPanel.vue +259 -0
  283. package/src/views/organization/department/Department.vue +58 -0
  284. package/src/views/organization/department/DepartmentPanel.vue +283 -0
  285. package/src/views/organization/inv-org/InvOrganization.vue +53 -0
  286. package/src/views/organization/org/Org.vue +43 -0
  287. package/src/views/organization/staff/Staff.vue +58 -0
  288. package/src/views/organization/staff/StaffInfo.vue +163 -0
  289. package/src/views/organization/staff/StaffPanel.vue +144 -0
  290. package/src/views/system/cron/cron-task.vue +157 -0
  291. package/src/views/system/menu/AuthorityPanel.vue +140 -0
  292. package/src/views/system/menu/SystemMenu.vue +191 -0
  293. package/src/views/system/menu/menuInfo.vue +368 -0
  294. package/src/views/system/role/AuthorityInfo.vue +147 -0
  295. package/src/views/system/role/Role.vue +57 -0
  296. package/src/views/system/role/RolePanel.vue +191 -0
  297. package/src/views/system/role/UserInfo.vue +193 -0
  298. package/src/views/system/role-assign/RoleAssign.vue +57 -0
  299. package/src/views/system/role-assign/RolePanel.vue +136 -0
  300. package/src/views/system/sys/sys-config.vue +291 -0
  301. package/src/views/system/sysUser/SysUser.vue +45 -0
  302. package/src/views/system/sysUser/SysUserPanel.vue +278 -0
  303. package/src/views/uapp/pda/pda-app.vue +176 -0
  304. package/src/views/udev/coderule/code-rule.vue +121 -0
  305. package/src/views/udev/dict/DictView.vue +106 -0
  306. package/src/views/udev/dict/childView.vue +222 -0
  307. package/src/views/udev/lov/childView.vue +180 -0
  308. package/src/views/udev/lov/lov-view.vue +91 -0
  309. package/src/views/ufile/aggregation/File.vue +87 -0
  310. package/src/views/ufile/file/water-mark.vue +103 -0
  311. package/src/views/uhome/components/menu-favorite.vue +331 -0
  312. package/src/views/uhome/su-welcome.vue +339 -0
  313. package/src/views/ulogin/login.vue +316 -0
  314. package/src/views/umsg/monitor/msg-monitor.vue +36 -0
  315. package/src/views/umsg/msg/TemplateContent.vue +103 -0
  316. package/src/views/umsg/msg/msg-template.vue +66 -0
  317. package/src/views/umsg/send/childView.vue +142 -0
  318. package/src/views/umsg/send/msg-send.vue +95 -0
  319. package/src/views/upms/interface/log-in.vue +106 -0
  320. package/src/views/upms/interface/log-out.vue +107 -0
  321. package/src/views/upms/user/login-log.vue +60 -0
  322. package/src/views/urpt/dataSet/DataSet.vue +139 -0
  323. package/src/views/urpt/design/DesignPanel.vue +526 -0
  324. package/src/views/urpt/design/Preview.vue +65 -0
  325. package/src/views/urpt/design/ReportDesign.vue +249 -0
  326. package/src/views/urpt/design/bg.png +0 -0
  327. package/src/views/urpt/design/panel.ts +841 -0
  328. package/src/views/urpt/design/print-data.ts +59 -0
  329. package/src/views/urpt/query/ReportQuery.vue +122 -0
  330. package/src/views/urpt/query/ReportQueryFrom.vue +252 -0
  331. package/src/views/urpt/report-request/ReportDefine.vue +10 -0
  332. package/src/views/urpt/static-resource/resource.vue +116 -0
  333. package/src/views/urpt/template/ReportTemplate.vue +198 -0
  334. package/tsconfig.json +30 -0
  335. package/types/env.d.ts +1 -0
  336. package/types/global-components.d.ts +12 -0
  337. package/types/global.d.ts +236 -0
  338. package/types/image.d.ts +7 -0
  339. package/types/index.d.ts +73 -0
  340. package/types/router.d.ts +107 -0
  341. package/types/shims-tsx.d.ts +22 -0
  342. package/types/shims-vue.d.ts +20 -0
  343. package/vite.config.ts +73 -0
@@ -0,0 +1,59 @@
1
+ /*
2
+ * @Author: wei.li
3
+ * @Date: 2022-03-22 13:49:18
4
+ * @LastEditors: wei.li
5
+ * @LastEditTime: 2022-03-23 15:04:34
6
+ * @Description: file content
7
+ */
8
+ export default {
9
+ name: '黄磊',
10
+ password: '12346',
11
+ longText:
12
+ '浙江在线3月29日讯最近,\n一篇小学五年级学生写的作文引起了钱报记者的关注这篇作文的题目叫做《脏话风波》,讲述的是小作者班级里发生的一种不文明现象——讲脏话的同学越来越多,有的人说话甚至句句“带把儿”。班主任为了遏制这种现象,煞费苦心想了很多办法,跟学生斗智斗勇……看到这篇作文,记者突然想到,自己读六年级的儿子有天突然冒出一句脏话。此前,他是从不说脏话的。问他怎么学会的,他也说不出个所以然来。于是,记者做了这个小学生脏话现象调查。经过了解才发现,小学生爱说脏话竟然较为普遍,一般三年级会冒出苗头。无论是学习成绩好的,还是平时不太起眼的,都会说脏话。而且,说脏话会“传染”,一旦冒头不制止,到了五六年级甚至可能在班里大爆发。以下为作文《脏话风波》浙江在线3月29日讯最近,一篇小学五年级学生写的作文引起了钱报记者的关注。这篇作文的题目叫做《脏话风波》,讲述的是小作者班级里发生的一种不文明现象——讲脏话的同学越来越多,有的人说话甚至句句“带把儿”。班主任为了遏制这种现象,煞费苦心想了很多办法,跟学生斗智斗勇……看到这篇作文,记者突然想到,自己读六年级的儿子有天突然冒出一句脏话。此前,他是从不说脏话的。问他怎么学会的,他也说不出个所以然来。于是,记者做了这个小学生脏话现象调查。经过了解才发现,小学生爱说脏话竟然较为普遍,一般三年级会冒出苗头。无论是学习成绩好的,还是平时不太起眼的,都会说脏话。而且,说脏话会“传染”,一旦冒头不制止,到了五六年级甚至可能在班里大爆发。以下为作文《脏话风波》浙江在线3月29日讯最近,一篇小学五年级学生写的作文引起了钱报记者的关注。这篇作文的题目叫做《脏话风波》,讲述的是小作者班级里发生的一种不文明现象——讲脏话的同学越来越多,有的人说话甚至句句“带把儿”。班主任为了遏制这种现象,煞费苦心想了很多办法,跟学生斗智斗勇……看到这篇作文,记者突然想到,自己读六年级的儿子有天突然冒出一句脏话。此前,他是从不说脏话的。问他怎么学会的,他也说不出个所以然来。于是,记者做了这个小学生脏话现象调查。经过了解才发现,小学生爱说脏话竟然较为普遍,一般三年级会冒出苗头。无论是学习成绩好的,还是平时不太起眼的,都会说脏话。而且,说脏话会“传染”,一旦冒头不制止,到了五六年级甚至可能在班里大爆发。以下为作文《脏话风波》浙江在线3月29日讯最近,一篇小学五年级学生写的作文引起了钱报记者的关注。这篇作文的题目叫做《脏话风波》,讲述的是小作者班级里发生的一种不文明现象——讲脏话的同学越来越多,有的人说话甚至句句“带把儿”。班主任为了遏制这种现象,煞费苦心想了很多办法,跟学生斗智斗勇……看到这篇作文,记者突然想到,自己读六年级的儿子有天突然冒出一句脏话。此前,他是从不说脏话的。问他怎么学会的,他也说不出个所以然来。于是,记者做了这个小学生脏话现象调查。经过了解才发现,小学生爱说脏话竟然较为普遍,一般三年级会冒出苗头。无论是学习成绩好的,还是平时不太起眼的,都会说脏话。而且,说脏话会“传染”,一旦冒头不制止,到了五六年级甚至可能在班里大爆发。以下为作文《脏话风波》浙江在线3月29日讯最近,一篇小学五年级学生写的作文引起了钱报记者的关注。这篇作文的题目叫做《脏话风波》,讲述的是小作者班级里发生的一种不文明现象——讲脏话的同学越来越多,有的人说话甚至句句“带把儿”。班主任为了遏制这种现象,煞费苦心想了很多办法,跟学生斗智斗勇……看到这篇作文,记者突然想到,自己读六年级的儿子有天突然冒出一句脏话。此前,他是从不说脏话的。问他怎么学会的,他也说不出个所以然来。于是,记者做了这个小学生脏话现象调查。经过了解才发现,小学生爱说脏话竟然较为普遍,一般三年级会冒出苗头。无论是学习成绩好的,还是平时不太起眼的,都会说脏话。而且,说脏话会“传染”,一旦冒头不制止,到了五六年级甚至可能在班里大爆发。以下为作文讲述的是小作者班级里发生的一种不文明现象——讲脏话的同学越来越多,有的人说话甚至句句“带把儿”。班主任为了遏制这种现象,煞费苦心想了很多办法,跟学生斗智斗勇……看到这篇作文,记者突然想到,自己读六年级的儿子有天突然冒出一句脏话。此前,他是从不说脏话的。问他怎么学会的,他也说不出个所以然来。于是,记者做了这个小学生脏话现象调查。经过了解才发现,小学生爱说脏话竟然较为普遍,一般三年级会冒出苗头。无论是学习成绩好的,还是平时不太起眼的,都会说脏话。而且,说脏话会“传染”,一旦冒头不制止,到了五六年级甚至可能在班里大爆发。以下为作文经过了解才发现,小学生爱说脏话竟然较为普遍,一般三年级会冒出苗头。无论是学习成绩好的,还是平时不太起眼的,都会说脏话。而且,说脏话会“传染”,一旦冒头不制止,到了五六年级甚至可能在班里大爆发。以下为作文讲述的是小作者班级里发生的一种不文明现象——讲脏话的同学越来越多,有的人说话甚至句句“带把儿”。班主任为了遏制这种现象,煞费苦心想了很多办法,跟学生斗智斗勇……看到这篇作文,记者突然想到,自己读六年级的儿子有天突然冒出一句脏话。此前,他是从不说脏话的。问他怎么学会的,他也说不出个所以然来。于是,记者做了这个小学生脏话现象调查。经过了解才发现,小学生爱说脏话竟然较为普遍,一般三年级会冒出苗头。无论是学习成绩好的,还是平时不太起眼的,都会说脏话。而且,说脏话会“传染”,一旦冒头不制止,到了五六年级甚至可能在班里大爆发。以下为作文',
13
+ table: [
14
+ { id: '1', name: '王小可', gender: '男', count: '120', amount: '9089元' },
15
+ { id: '2', name: '梦之遥', gender: '女', count: '20', amount: '89元' },
16
+ { id: '3', name: '梦之遥', gender: '女', count: '720', amount: '29089元' },
17
+ { id: '4', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
18
+ { id: '5', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
19
+ { id: '6', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
20
+ { id: '7', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
21
+ { id: '8', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
22
+ { id: '9', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
23
+ { id: '10', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
24
+ { id: '11', name: '王小可', gender: '男', count: '120', amount: '9089元' },
25
+ { id: '12', name: '梦之遥', gender: '女', count: '20', amount: '89元' },
26
+ { id: '13', name: '梦之遥', gender: '女', count: '720', amount: '29089元' },
27
+ { id: '14', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
28
+ { id: '15', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
29
+ { id: '16', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
30
+ { id: '17', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
31
+ { id: '18', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
32
+ { id: '19', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
33
+ { id: '20', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
34
+ { id: '21', name: '王小可', gender: '男', count: '120', amount: '9089元' },
35
+ { id: '22', name: '梦之遥', gender: '女', count: '20', amount: '89元' },
36
+ { id: '23', name: '梦之遥', gender: '女', count: '720', amount: '29089元' },
37
+ { id: '24', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
38
+ { id: '25', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
39
+ { id: '26', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
40
+ { id: '27', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
41
+ { id: '28', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
42
+ { id: '29', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
43
+ { id: '21', name: '王小可', gender: '男', count: '120', amount: '9089元' },
44
+ { id: '22', name: '梦之遥', gender: '女', count: '20', amount: '89元' },
45
+ { id: '23', name: '梦之遥', gender: '女', count: '720', amount: '29089元' },
46
+ { id: '24', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
47
+ { id: '25', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
48
+ { id: '26', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
49
+ { id: '27', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
50
+ { id: '28', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
51
+ { id: '29', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
52
+ { id: '21', name: '王小可', gender: '男', count: '120', amount: '9089元' },
53
+ { id: '22', name: '梦之遥', gender: '女', count: '20', amount: '89元' },
54
+ { id: '23', name: '梦之遥', gender: '女', count: '720', amount: '29089元' },
55
+
56
+ { id: '29', name: '黄小菊', gender: '女', count: '420', amount: '19089元' },
57
+ { id: '30', name: '黄小菊', gender: '女', count: '420', amount: '19089元' }
58
+ ]
59
+ };
@@ -0,0 +1,122 @@
1
+ <!--
2
+ * @Author: wei.li
3
+ * @Date: 2021-11-27 20:34:11
4
+ * @LastEditors: wei.li
5
+ * @LastEditTime: 2024-07-04 09:27:26
6
+ * @Description: file content
7
+ -->
8
+ <template>
9
+ <div>
10
+ <ut-grid v-show="!data.showChild" ref="xgrid" :tems="formItems" :columns="columns" />
11
+ <ReportQueryFrom
12
+ v-if="data.showChild"
13
+ :record="data.record"
14
+ :data-status="data.dataStatus"
15
+ @onClose="onClose"
16
+ />
17
+ </div>
18
+ </template>
19
+ <script lang="ts">
20
+ export default { name: 'ReportQuery' };
21
+ </script>
22
+ <script setup lang="ts">
23
+ // import { useI18n } from 'vue-i18n';
24
+ import { ref, reactive, watch, onMounted } from 'vue';
25
+ import { useRoute } from 'vue-router';
26
+ // import { clone } from 'xe-utils';
27
+ import ReportQueryFrom from './ReportQueryFrom.vue';
28
+ import { useRender } from '@utogether/utils';
29
+
30
+ const data = reactive<IRecord>({
31
+ record: {},
32
+ showChild: false,
33
+ loading: false,
34
+ dataStatus: ''
35
+ });
36
+
37
+ const route = useRoute();
38
+ // const systemStoreHook = useSystemStore();
39
+ const renderHook = useRender();
40
+
41
+ watch(
42
+ () => route.path,
43
+ () => {
44
+ // if (route.to === 'ReportQuery') {
45
+ // }
46
+ }
47
+ );
48
+
49
+ const formItems = [
50
+ { field: 'templateName' },
51
+ { field: 'createdByName' },
52
+ { field: 'exportResult', itemRender: renderHook.renderDict('SU.REPORT.EXPORT_STATUS') },
53
+ {
54
+ field: 'exportDate',
55
+ itemRender: { name: '#SuDateRange' },
56
+ fromField: 'exportDateFrom',
57
+ toField: 'exportDateTo'
58
+ },
59
+ {
60
+ field: 'creationDate',
61
+ itemRender: { name: '#SuDateRange' },
62
+ fromField: 'createDateFrom',
63
+ toField: 'createDateTo'
64
+ }
65
+ ];
66
+ // const buttons = [{ code: 'add', status: 'u-cyan', icon: 'ri-add-line' }];
67
+ // 列字段
68
+ const columns = [
69
+ { field: 'exportNo', title: 'message.reportCode', width: 100 },
70
+ { field: 'templateName', width: 150 },
71
+ { field: 'fileName', width: 150 },
72
+ { field: 'exportStatus', width: 90 },
73
+ { field: 'exportResult', width: 70 },
74
+ { field: 'fileType', width: 80 },
75
+ { field: 'exportMsg', minWidth: 100 },
76
+ { field: 'createdByName', width: 100 },
77
+ { field: 'exportDate', width: 100 },
78
+ { field: 'creationDate', width: 100, formatter: ['formatDate'] }
79
+ ];
80
+
81
+ // const onClick = ({ code }) => {
82
+ // if (code === 'add') {
83
+ // data.dataStatus = code;
84
+ // data.showChild = true;
85
+ // } else if (code === 'del') {
86
+ // handleDelete();
87
+ // }
88
+ // };
89
+
90
+ // const handleEdit = record => {
91
+ // const { status } = record;
92
+ // data.dataStatus = 'detail';
93
+ // data.record = clone(record);
94
+ // if (status === '1' && data.dataStatus !== 'detail') {
95
+ // data.record.takeOrderName = data.record.takeOrderName || systemStoreHook.userInfo.name;
96
+ // data.record.takeOrderUserName = data.record.takeOrderUserName || systemStoreHook.userInfo.userName;
97
+ // }
98
+ // data.record.placeOrderData = data.record.placeOrderData && data.record.placeOrderData.split(',');
99
+ // data.showChild = true;
100
+ // };
101
+
102
+ // const handleDelete = async () => {
103
+ // const type = await VXETable.modal.confirm('您确定要删除所选记录吗?');
104
+ // if (type === 'confirm') {
105
+ // const selectRecords = xgrid.value.getCheckboxRecords();
106
+ // xgrid.value.showLoading();
107
+ // await to(getServiceApi().delete('EXP012', selectRecords));
108
+ // xgrid.value.refreshData();
109
+ // }
110
+ // };
111
+
112
+ const xgrid = ref(null);
113
+ const onClose = () => {
114
+ data.showChild = false;
115
+ };
116
+ onMounted(() => {
117
+ if (route?.params?.isJump) {
118
+ data.dataStatus = 'add';
119
+ data.showChild = true;
120
+ }
121
+ });
122
+ </script>
@@ -0,0 +1,252 @@
1
+ <!--
2
+ * @Author: wei.li
3
+ * @Date: 2021-12-20 15:29:29
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2024-06-25 21:05:12
6
+ * @Description: file content
7
+ -->
8
+ <!-- -->
9
+ <template>
10
+ <div class="ut-drawer-template">
11
+ <el-drawer
12
+ :model-value="show"
13
+ :title="drawTitle"
14
+ :before-close="handleClose"
15
+ destroy-on-close
16
+ size="66%"
17
+ >
18
+ <div class="flex">
19
+ <vxe-form
20
+ ref="xForm"
21
+ :data="data.row"
22
+ :rules="rules"
23
+ :items="data.items"
24
+ :loading="loading"
25
+ title-colon
26
+ title-align="right"
27
+ title-width="110"
28
+ />
29
+ </div>
30
+ <el-divider />
31
+ <el-row type="flex" justify="end" style="padding-right: 22px">
32
+ <ut-button content="cancel" @click="handleClose()" />
33
+ <ut-button content="confirm" status="u-cyan" @click="onSubmit" />
34
+ </el-row>
35
+ </el-drawer>
36
+ </div>
37
+ </template>
38
+ <script setup lang="ts">
39
+ import { useI18n } from 'vue-i18n';
40
+ import { reactive, ref, computed, onBeforeMount, nextTick } from 'vue';
41
+ import { clone } from 'xe-utils';
42
+ import { useRoute } from 'vue-router';
43
+ import { templateRef } from '@vueuse/core';
44
+ // import dayjs from 'dayjs';
45
+ import { getServiceApi } from '../../../api';
46
+ import { useRender } from '@utogether/utils';
47
+
48
+ interface IProps {
49
+ show?: boolean;
50
+ record: IRecord;
51
+ dataStatus?: string;
52
+ drawTitle?: string;
53
+ direction?: string;
54
+ }
55
+
56
+ const props = withDefaults(defineProps<IProps>(), {
57
+ show: true,
58
+ record: (): IRecord => {
59
+ return {};
60
+ },
61
+ dataStatus: 'add',
62
+ drawTitle: '报表模板',
63
+ direction: 'rtl'
64
+ });
65
+
66
+ const { t } = useI18n();
67
+ const route = useRoute();
68
+ let currentRecord: IRecord = {};
69
+ const xForm = templateRef<any>('xForm', null);
70
+ const loading = ref(false);
71
+
72
+ const renderHook = useRender();
73
+
74
+ const serviceApi = getServiceApi();
75
+ /**
76
+ * @description: 根据items 获取必填选
77
+ */
78
+ const rules = computed(() => {
79
+ const rule = {};
80
+ if (!data.items.length) return rule;
81
+ data.items
82
+ .filter(item => item.required)
83
+ .forEach(item => {
84
+ rule[item.field] = [
85
+ {
86
+ required: true,
87
+ message: `${t('message.required')}${item?.title ? t(item.title) : ''}`
88
+ }
89
+ ];
90
+ });
91
+ return rule;
92
+ });
93
+
94
+ // 表单item
95
+ const items: IFormItemProps[] = [
96
+ { field: 'fileName', title: 'message.fileName', span: 24, itemRender: { name: '$input' } },
97
+ {
98
+ field: 'templateName',
99
+ required: true,
100
+ span: 24,
101
+ itemRender: renderHook.renderSelect(
102
+ {
103
+ optionProps: { label: 'tempName', value: 'tempName' },
104
+ props: { code: 'EXP005', fetchField: 'tempName' }
105
+ },
106
+ onChange
107
+ )
108
+ },
109
+ {
110
+ field: 'fileType',
111
+ required: true,
112
+ span: 24,
113
+ itemRender: {
114
+ name: '$select',
115
+ props: {
116
+ options: [],
117
+ disabled: true
118
+ }
119
+ }
120
+ }
121
+ ];
122
+
123
+ function getItems() {
124
+ return items.map(item => {
125
+ item.title = item.title || `message.${item.field}`;
126
+ item.span = item.span || 8;
127
+ return item;
128
+ });
129
+ }
130
+
131
+ function onChange(e, item, record, field) {
132
+ if (field === 'templateName') {
133
+ record[field] && getTemplateInfo(item);
134
+ }
135
+ }
136
+ function getTemplateInfo(row) {
137
+ currentRecord = row;
138
+ items[2].itemRender.props = {
139
+ disabled: false,
140
+ options: row.exportFileType.split(',').map(m => {
141
+ return { label: m, value: m };
142
+ })
143
+ };
144
+ serviceApi.post('EXP010', { templateId: row.id }).then((res: IResponseData) => {
145
+ res.list.forEach(f => {
146
+ const obj = {
147
+ field: f.parameterField,
148
+ title: f.parameterName,
149
+ span: 24,
150
+ dynamicsField: 'Y',
151
+ itemRender: getFormItem(f)
152
+ };
153
+
154
+ items.push(obj);
155
+ });
156
+ nextTick(() => {
157
+ data.items = getItems();
158
+ });
159
+ });
160
+ }
161
+
162
+ const getFormItem = item => {
163
+ let itemRender = {};
164
+ switch (item.parameterType) {
165
+ case 'date':
166
+ itemRender = { name: '$input', props: { type: 'date' } };
167
+ break;
168
+ case 'number':
169
+ itemRender = { name: '$input', props: { type: 'number' } };
170
+ break;
171
+ default:
172
+ if (item.selectOptions === 'Y') {
173
+ if (item.valueType === '0') {
174
+ itemRender = renderHook.renderDict(item.serviceCode);
175
+ } else if (item.valueType === '1') {
176
+ itemRender = renderHook.renderSelect(
177
+ {
178
+ optionProps: { label: item.showField, value: item.valueField },
179
+ props: { code: item.serviceCode, fetchField: item.showField }
180
+ },
181
+ onChange
182
+ );
183
+ }
184
+ } else {
185
+ itemRender = { name: '$input' };
186
+ }
187
+ break;
188
+ }
189
+ return itemRender;
190
+ };
191
+
192
+ const onSubmit = () => {
193
+ xForm.value.validate(async valid => {
194
+ if (!valid) {
195
+ const { dataStatus } = props;
196
+ const { row } = data;
197
+ const body: IRecord = clone(row, true);
198
+ const serviceCode = dataStatus === 'add' ? 'EXP011' : 'EXP003';
199
+ const reportData = {};
200
+ items.forEach(item => {
201
+ if (item.dynamicsField) {
202
+ reportData[item.field] = body[item.field];
203
+ }
204
+ });
205
+ body.templateId = currentRecord.id;
206
+ body.reportData = JSON.stringify(reportData);
207
+ await serviceApi.post(serviceCode, body);
208
+ handleClose('submit');
209
+ }
210
+ });
211
+ };
212
+
213
+ const emit = defineEmits<{
214
+ (e: 'onClose', type: string): void;
215
+ }>();
216
+
217
+ // 抽屉关闭
218
+ function handleClose(type?) {
219
+ emit('onClose', type);
220
+ }
221
+ const data = reactive({
222
+ items: getItems(),
223
+ fetchParamExt: {},
224
+ row: {}
225
+ });
226
+
227
+ onBeforeMount(() => {
228
+ data.row = props.record;
229
+ data.fetchParamExt = { templateId: props.record.id };
230
+ if (route?.params?.isJump) {
231
+ data.row = route.params;
232
+ serviceApi.post('EXP005', { tempName: '', pageSize: 1 }).then((res: IResponseData) => {
233
+ if (res?.list) {
234
+ items[1].itemRender.props.options = res.list;
235
+ data.items = getItems();
236
+ getTemplateInfo(res?.list[0]);
237
+ }
238
+ });
239
+ }
240
+ });
241
+ </script>
242
+ <style lang="scss">
243
+ .ut-drawer-template {
244
+ .el-drawer__header {
245
+ margin-bottom: 12px;
246
+ }
247
+
248
+ .el-divider {
249
+ margin: 6px 0;
250
+ }
251
+ }
252
+ </style>
@@ -0,0 +1,10 @@
1
+ <!--
2
+ * @Author: wei.li
3
+ * @Date: 2021-11-27 20:34:11
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2024-06-25 21:06:27
6
+ * @Description: file content
7
+ -->
8
+ <template>
9
+ <div />
10
+ </template>
@@ -0,0 +1,116 @@
1
+ <!--
2
+ * @Description: 静态资源服务
3
+ -->
4
+
5
+ <template>
6
+ <div>
7
+ <ut-grid
8
+ ref="xgrid"
9
+ :columns="columns"
10
+ :url="url"
11
+ :editable="false"
12
+ mode="form"
13
+ :events="onEvents"
14
+ />
15
+ <ut-modal-form
16
+ v-if="showModalForm"
17
+ :record="record"
18
+ :items="items"
19
+ :width="300"
20
+ :height="340"
21
+ data-status="add"
22
+ title="静态资源新增"
23
+ :url="url"
24
+ @close="showModalForm = false"
25
+ @confirm="onConfirm"
26
+ />
27
+ </div>
28
+ </template>
29
+ <script lang="tsx">
30
+ export default { name: 'StaticResource' };
31
+ </script>
32
+ <script setup lang="tsx">
33
+ import { ref } from 'vue';
34
+ import { successMessage } from '@utogether/utils';
35
+ import { useClipboard } from '@vueuse/core';
36
+ import { getBaseURL } from '../../../api';
37
+
38
+ const { copy } = useClipboard();
39
+ const url = '/upms/v1/pdfTemplate';
40
+ const xgrid = ref(null);
41
+ const record = ref({});
42
+
43
+ const baseUrl = getBaseURL();
44
+
45
+ // 列字段
46
+ const columns = [
47
+ { type: 'checkbox', width: 40, align: 'center' },
48
+ { field: 'templateCode', title: 'message.file.resourceCode', width: 140 },
49
+ { field: 'templateName', title: 'message.file.resourceName', width: 150 },
50
+ { field: 'templateUrl', title: 'message.file.resourceUrl', miWidth: 200 },
51
+ {
52
+ field: 'operate',
53
+ width: 180,
54
+ fixed: 'right',
55
+ slots: {
56
+ default: ({ row }) => {
57
+ return [
58
+ <>
59
+ <ut-button
60
+ content="download"
61
+ icon="ri-download-line"
62
+ status="success"
63
+ onTap={() => handleDownFile(row)}
64
+ />
65
+ </>
66
+ ];
67
+ }
68
+ }
69
+ }
70
+ ];
71
+
72
+ // 启用/禁用
73
+ // async function handleClick({ row }) {
74
+ // await to(serviceApi.put(url, row));
75
+ // xgrid.value.refreshData();
76
+ // }
77
+
78
+ /**
79
+ * @description:监听grid事件
80
+ * @return {*}
81
+ */
82
+ const onEvents = {
83
+ toolbarButtonClick({ code }) {
84
+ code === 'add' && handleAdd(code);
85
+ }
86
+ };
87
+
88
+ const items = [
89
+ { field: 'templateCode', required: true },
90
+ { field: 'templateName', required: true },
91
+ {
92
+ field: 'templateUrl',
93
+ required: true,
94
+ itemRender: { name: '#upload', props: { baseUrl } }
95
+ }
96
+ ];
97
+
98
+ const showModalForm = ref(false);
99
+
100
+ /**
101
+ * @description: 添加
102
+ */
103
+ const handleAdd = code => {
104
+ record.value = {};
105
+ showModalForm.value = true;
106
+ };
107
+
108
+ const handleDownFile = row => {
109
+ copy(baseUrl + '/ufil/' + row.templateUrl);
110
+ successMessage('复制成功,快试试右键粘贴吧');
111
+ };
112
+
113
+ const onConfirm = () => {
114
+ xgrid.value.refreshData();
115
+ };
116
+ </script>