main.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  1. // The Vue build version to load with the `import` command
  2. // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
  3. import iviewArea from 'iview-area'
  4. import Vue from 'vue'
  5. import App from './App'
  6. import router from './router'
  7. import store from './store'
  8. import iView from 'view-design'
  9. import i18n from '@/locale'
  10. import config from '@/config'
  11. import baseMethod from '@/api/base-method'
  12. import importDirective from '@/directive'
  13. import {directive as clickOutside} from 'v-click-outside-x'
  14. import installPlugin from '@/plugin'
  15. import './libs/base/prototype'
  16. import Loading from '_c/loading'
  17. import '@/assets/al-icon/iconfont.css'
  18. import '@/assets/al-icon/iconfont.js'
  19. import 'viewerjs/dist/viewer.css'
  20. import 'bootstrap/scss/bootstrap.scss';
  21. import '@/libs/tools/date-tools'
  22. import '@/libs/tools/array-tools'
  23. import '@/libs/tools/string-tools'
  24. import '@/libs/tools/tools'
  25. import '@/libs/tools/user-tools'
  26. import '@/libs/tools/user-tools'
  27. import 'xe-utils'
  28. import VXETable from 'vxe-table'
  29. import 'vxe-table/lib/style.css'
  30. import tools from '@/libs/tools/tools'
  31. import './index.less'
  32. import {localRead} from "@/libs/base/util";
  33. //周选择器
  34. import '_c/business/date-week/index.less'
  35. let fontSize = localRead('fontSize');
  36. // 根据字体读取不同的字体样式文件
  37. if (fontSize === '14') {
  38. import ('./font-less/font-14.less')
  39. } else if(fontSize === '13'){
  40. import ('./font-less/font-13.less')
  41. } else {
  42. import ('./font-less/font-12.less')
  43. }
  44. // 实际打包时应该不引入mock
  45. /* eslint-disable */
  46. //iview 4.0
  47. import 'view-design/dist/styles/iview.css';
  48. /* 签名 */
  49. import vueEsign from 'vue-esign'
  50. Vue.use(vueEsign)
  51. /* 组织结构图 */
  52. import ZmTreeOrg from 'zm-tree-org'
  53. import 'zm-tree-org/lib/zm-tree-org.css'
  54. Vue.use(ZmTreeOrg)
  55. /* 饿了么 */
  56. import ElementUI from 'element-ui'
  57. import 'element-ui/lib/theme-chalk/index.css'
  58. Vue.use(ElementUI)
  59. /* 共通方法*/
  60. import libaray from '@/libs/tools/libaray'
  61. Object.defineProperty(Vue.prototype, '$libaray', {value: libaray})
  62. /* 更新列*/
  63. import updateColumns from '@/libs/update-columns/index'
  64. Object.defineProperty(Vue.prototype, '$updateColumns', {value: updateColumns})
  65. import appfunc from '_c/base/dk-approval-flow/js/preload.js'
  66. Vue.prototype.$appfunc = appfunc;
  67. /* vxe */
  68. Vue.use(VXETable)
  69. Vue.prototype.$VXETable = VXETable
  70. VXETable.setup({
  71. // 对组件内置的提示语进行国际化翻译
  72. i18n: (key, args) => i18n.t(key, args),
  73. table: {
  74. //行的唯一键
  75. rowId: '_X_ID'
  76. }
  77. })
  78. /* 打印 */
  79. import Print from 'vue-printjs'
  80. Vue.use(Print)
  81. /* 打印 */
  82. import {hiPrintPlugin} from 'vue-plugin-hiprint'
  83. Vue.use(hiPrintPlugin, '$dkprint')
  84. hiPrintPlugin.disAutoConnect(); // 取消自动连接直接打印客户端
  85. import printUtil from '@/utils/printUtil.js'
  86. Vue.prototype.$printUtil=printUtil
  87. /* 拖动组件 */
  88. // import VueDragResize from 'vue-drag-resize'
  89. // Vue.component('vue-drag-resize', VueDragResize)
  90. //
  91. // //组织机构图
  92. // import DkOrgTree from '_c/base/dk-org-tree'
  93. // Vue.component('DkOrgTree', DkOrgTree)
  94. //照片墙
  95. import DkPicWall from '_c/base/dk-pic-wall'
  96. Vue.component('DkPicWall', DkPicWall)
  97. //审批相关
  98. import nodeWrap from '_c/base/dk-approval-flow/nodeWrap'
  99. Vue.component('nodeWrap', nodeWrap) //初始化组件
  100. import addNode from '_c/base/dk-approval-flow/addNode'
  101. Vue.component('addNode', addNode) //初始化组件
  102. import DkApprovalFlow from '_c/base/dk-approval-flow'
  103. Vue.component('DkApprovalFlow',DkApprovalFlow)
  104. import ApprovalDetailTable from '_c/business/approval-detail-table'
  105. Vue.component('ApprovalDetailTable',ApprovalDetailTable)
  106. /* 全局引入组件 */
  107. import SearchCond from '_c/business/search-cond'
  108. Vue.component('SearchCond', SearchCond)
  109. import InputPop from '_c/base/input-pop'
  110. Vue.component('InputPop', InputPop)
  111. import InputNumberPop from '_c/base/input-number-pop'
  112. Vue.component('InputNumberPop', InputNumberPop)
  113. import SelectPop from '_c/base/select-pop'
  114. Vue.component('SelectPop', SelectPop)
  115. import DkFilterButton from '_c/base/dk-filter-button'
  116. Vue.component('DkFilterButton', DkFilterButton)
  117. import SelectInputPop from '_c/base/select-input-pop'
  118. Vue.component('SelectInputPop', SelectInputPop)
  119. import DatePickerPop from '_c/base/dk-date-picker-pop'
  120. Vue.component('DatePickerPop', DatePickerPop)
  121. import MonthRangePickerPop from '_c/base/dk-month-range-picker-pop'
  122. Vue.component('MonthRangePickerPop', MonthRangePickerPop)
  123. import {DkForm, DkFormItem} from '_c/base/dk-form'
  124. Vue.component('DkForm', DkForm)
  125. Vue.component('DkFormItem', DkFormItem)
  126. import {BaseIndexButtonGroup, BaseIndexButton} from '_c/base/index-button-group'
  127. Vue.component('BaseIndexButtonGroup', BaseIndexButtonGroup)
  128. Vue.component('BaseIndexButton', BaseIndexButton)
  129. import DkTabs from '_c/base/dk-tabs'
  130. Vue.component('DkTabs', DkTabs)
  131. import DkRadio from '_c/base/dk-radio'
  132. Vue.component('DkRadio', DkRadio)
  133. import DkRow from '_c/base/dk-row'
  134. Vue.component('DkRow', DkRow)
  135. import DkSwitch from '_c/base/dk-switch'
  136. Vue.component('DkSwitch', DkSwitch)
  137. import DkCol from '_c/base/dk-col'
  138. Vue.component('DkCol', DkCol)
  139. import DkSplit from '_c/base/dk-split'
  140. Vue.component('DkSplit', DkSplit)
  141. import DkCollapse from '_c/base/dk-collapse'
  142. Vue.component('DkCollapse', DkCollapse)
  143. import DkPanel from '_c/base/dk-collapse/dk-panel'
  144. Vue.component('DkPanel', DkPanel)
  145. import DkButton from '_c/base/dk-button'
  146. Vue.component('DkButton', DkButton)
  147. import DkSaveButton from '_c/base/dk-save-button'
  148. Vue.component('DkSaveButton', DkSaveButton)
  149. import DkPageButton from '_c/base/dk-page-button'
  150. Vue.component('DkPageButton', DkPageButton)
  151. import DkModal from '_c/base/dk-modal'
  152. Vue.component('DkModal', DkModal)
  153. import {DkTableColumn, DkTable} from '_c/base/dk-table'
  154. Vue.component('DkTableColumn', DkTableColumn)
  155. Vue.component('DkTable', DkTable)
  156. import DkTree from '_c/base/dk-tree'
  157. Vue.component('DkTree', DkTree)
  158. // import TableSelect from '_c/business/table-select'
  159. // Vue.component('TableSelect', TableSelect)
  160. import PrependTransparent from '_c/base/prepend-transparent'
  161. Vue.component('PrependTransparent', PrependTransparent)
  162. import EditTable from '_c/base/edit-table'
  163. Vue.component('EditTable', EditTable)
  164. import EditTreeTable from '_c/base/edit-tree-table'
  165. Vue.component('EditTreeTable', EditTreeTable)
  166. import RegionsChoose from '_c/base/regions-choose'
  167. Vue.component('RegionsChoose', RegionsChoose)
  168. import SelectMagnifier from '_c/business/select-magnifier'
  169. Vue.component('SelectMagnifier', SelectMagnifier)
  170. import ModalReceipt from '_c/business/modal-receipt'
  171. Vue.component('ModalReceipt', ModalReceipt)
  172. import CustomReport from '_c/base/custom-report'
  173. Vue.component('CustomReport', CustomReport)
  174. import DkList from '_c/base/dk-list'
  175. Vue.component('DkList', DkList)
  176. import MultiSelect from '_c/business/multi-select'
  177. Vue.component('MultiSelect', MultiSelect)
  178. import Message from '_c/base/dk-message'
  179. Vue.prototype.$IBMessage = Message.install
  180. import SearchForm from '_c/business/modal-search-form'
  181. Vue.prototype.$SearchForm = SearchForm.install
  182. import Position from '_c/base/dk-position'
  183. Vue.prototype.$Position = Position.install
  184. import DkTableMax from '_c/base/dk-table-max'
  185. Vue.prototype.$TableMax = DkTableMax.install
  186. import Perspective from '_c/base/dk-perspective'
  187. Vue.prototype.$Perspective = Perspective.install
  188. import Export from '_c/base/dk-export'
  189. Vue.prototype.$Export = Export.install
  190. import Function from '_c/base/dk-function'
  191. Vue.prototype.$Function = Function.install
  192. import ModalBatchEdit from '_c/business/modal_batch_edit'
  193. Vue.prototype.$BatchEdit = ModalBatchEdit.install
  194. import ModalTableFilter from '_c/business/modal_table_filter'
  195. Vue.prototype.$TableFilter = ModalTableFilter.install
  196. //点击复制
  197. import VueClipboard from 'vue-clipboard2'
  198. Vue.use(VueClipboard)
  199. /* 腾讯地图跨域 */
  200. import {VueJsonp} from 'vue-jsonp'
  201. Vue.use(VueJsonp)
  202. Vue.prototype.$jsonp = VueJsonp
  203. /* Tour */
  204. import VueTour from 'vue-tour'
  205. require('vue-tour/dist/vue-tour.css')
  206. Vue.use(VueTour)
  207. import Prepend from '_c/sub/prepend'
  208. Vue.component('Prepend', Prepend)
  209. // import echarts from 'echarts';
  210. // Echarts 5.x 不再支持上面的引入方式
  211. import * as echarts from 'echarts'
  212. Vue.prototype.$echarts = echarts
  213. // Vue.use(iviewArea);
  214. // quill富文本
  215. import VueQuillEditor from 'vue-quill-editor'
  216. // 引入相关css
  217. import 'quill/dist/quill.core.css'
  218. import 'quill/dist/quill.snow.css'
  219. import 'quill/dist/quill.bubble.css'
  220. Vue.use(VueQuillEditor)
  221. Vue.use(iView)
  222. Vue.use(iviewArea);
  223. // Vue.component(Tree.name, Tree);
  224. Vue.component(Loading.name, Loading);
  225. /**
  226. * @description 注册admin内置插件
  227. */
  228. installPlugin(Vue)
  229. /**
  230. * @description 生产环境关掉提示
  231. */
  232. Vue.config.productionTip = false
  233. /**
  234. * @description 全局注册应用配置
  235. */
  236. // Vue.prototype.$appfunc = appfunc;
  237. /**
  238. * @desc : 读取所有的服务实体
  239. * @author : 周兴
  240. * @date : 2022/12/13 15:27
  241. */
  242. const services = require.context("@/api/pages", true, /\.js$/);
  243. let commonRoute = null;
  244. let serviceKeys = services.keys();
  245. // 获取common
  246. for (let i = 0; i < serviceKeys.length; i++) {
  247. if (serviceKeys[i] === './common/common.js') {
  248. commonRoute = services(serviceKeys[i]).routeUrl;
  249. break;
  250. }
  251. }
  252. let res_services = {};
  253. let routeUrl = {search: {key: 'search'}}
  254. serviceKeys.forEach((item) => {
  255. let comp = services(item);
  256. // 路由地址
  257. if (comp.routeUrl && Object.keys(comp.routeUrl).length !== 0) {
  258. // 如果存在就加进去
  259. if (!item.includes('common.js')) {
  260. let key = Object.keys(comp.routeUrl)[0];
  261. tools.objectMergeByMainJs(comp.routeUrl[key], commonRoute)
  262. // Object.assign(comp.routeUrl[key], commonRoute)
  263. }
  264. } else {
  265. // 没有那么按照列名进行
  266. let itemName = item;
  267. if (itemName) {
  268. itemName = itemName.substring(itemName.lastIndexOf('/') + 1).replace('.js', '');
  269. // 中划线转驼峰
  270. itemName = itemName.getCamelCase();
  271. let route = {}
  272. route[itemName] = commonRoute;
  273. if (comp.routeUrl) {
  274. tools.objectMergeByMainJs(comp.routeUrl, route)
  275. // Object.assign(comp.routeUrl, route)
  276. } else {
  277. Object.assign(comp, {routeUrl: route})
  278. }
  279. }
  280. }
  281. if (!item.includes('common.js')) {
  282. Object.assign(routeUrl, comp.routeUrl);
  283. }
  284. if (comp.default) {
  285. let item = comp.default
  286. let keys = Object.keys(item)
  287. if (keys && keys.length > 0) {
  288. for (let i = 0; i < keys.length; i++) {
  289. let values = item[keys[i]];
  290. // 给每个value增加基本方法
  291. Object.assign(values, baseMethod);
  292. }
  293. }
  294. Object.assign(res_services, item);
  295. }
  296. });
  297. console.log('33334', routeUrl)
  298. Vue.prototype.$service = res_services;
  299. Object.assign(config, {routeUrl: routeUrl})
  300. Vue.prototype.$config = config
  301. /**
  302. * 注册指令
  303. */
  304. importDirective(Vue)
  305. Vue.directive('clickOutside', clickOutside)
  306. /* eslint-disable no-new */
  307. let vueMain = window.vm = new Vue({
  308. el: '#app',
  309. router,
  310. i18n,
  311. store,
  312. service:res_services,
  313. render: h => h(App)
  314. })
  315. export default vueMain
  316. //[iview]Table中点击图片预览放大
  317. import Viewer from 'v-viewer'
  318. Vue.use(Viewer);
  319. Viewer.setDefaults({
  320. Options: {
  321. "inline": true,
  322. "button": true,
  323. "navbar": true,
  324. "title": true,
  325. "toolbar": true,
  326. "tooltip": true,
  327. "movable": true,
  328. "zoomable": true,
  329. "rotatable": true,
  330. "scalable": true,
  331. "transition": true,
  332. "fullscreen": true,
  333. "keyboard": true,
  334. "url": "data-source"
  335. }
  336. });