From 7edc9414f52f8224c421748353c8e7a7a1acad4d Mon Sep 17 00:00:00 2001 From: ruanqi Date: Thu, 6 Jan 2022 17:13:52 +0800 Subject: [PATCH] =?UTF-8?q?0823=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 142 ++- package.json | 5 + src/api/base.js | 36 + src/assets/scss/global.scss | 48 + src/main.js | 6 +- src/utils/decimalUtil.js | 42 + src/views/common/home.vue | 10 +- src/views/common/login.vue | 8 +- src/views/modules/base/calendar.vue | 1176 +++++++++++++++++++ src/views/modules/base/calendarDatetype.vue | 1057 +++++++++++++++++ src/views/modules/production/dailyPlan.vue | 57 +- src/views/modules/sys/shiftData.vue | 1 - 12 files changed, 2552 insertions(+), 36 deletions(-) create mode 100644 src/api/base.js create mode 100644 src/utils/decimalUtil.js create mode 100644 src/views/modules/base/calendar.vue create mode 100644 src/views/modules/base/calendarDatetype.vue diff --git a/package-lock.json b/package-lock.json index a93bf88..b2cbbb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,11 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://rg.cnpmjs.org/@types/json-schema/download/@types/json-schema-7.0.9.tgz", + "integrity": "sha1-l+3JA36gw4WFMgsolk3eOznkZg0=" + }, "@types/node": { "version": "8.10.48", "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.48.tgz", @@ -1076,8 +1081,7 @@ "babel-plugin-syntax-dynamic-import": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", - "dev": true + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=" }, "babel-plugin-syntax-exponentiation-operator": { "version": "6.13.0", @@ -3526,6 +3530,11 @@ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", "dev": true }, + "dayjs": { + "version": "1.10.7", + "resolved": "https://r.cnpmjs.org/dayjs/download/dayjs-1.10.7.tgz", + "integrity": "sha1-LPX5Gt0oEWdIRAhmoKHSbzps5Gg=" + }, "de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -3545,6 +3554,11 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://r.cnpmjs.org/decimal.js/download/decimal.js-10.3.1.tgz", + "integrity": "sha1-2MOkRKnGd0umDKatcmHDqU/V54M=" + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -16349,6 +16363,11 @@ "safe-buffer": "^5.1.2" } }, + "pubsub-js": { + "version": "1.9.3", + "resolved": "https://r.cnpmjs.org/pubsub-js/download/pubsub-js-1.9.3.tgz", + "integrity": "sha1-Z07qTVaNBALgUnzbEOKqt7VWIdI=" + }, "pump": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", @@ -19470,6 +19489,11 @@ "integrity": "sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g==", "dev": true }, + "vue-i18n": { + "version": "8.25.0", + "resolved": "https://r.cnpmjs.org/vue-i18n/download/vue-i18n-8.25.0.tgz", + "integrity": "sha1-EDfZKV+ihFojC3cd5HNIHtss/Ew=" + }, "vue-jest": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/vue-jest/-/vue-jest-1.0.2.tgz", @@ -19656,6 +19680,95 @@ } } }, + "vue-pdf": { + "version": "4.3.0", + "resolved": "https://rg.cnpmjs.org/vue-pdf/download/vue-pdf-4.3.0.tgz", + "integrity": "sha1-1feQ7nln57eqkIm5exGrFo4Z29A=", + "requires": { + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "loader-utils": "^1.4.0", + "pdfjs-dist": "2.6.347", + "raw-loader": "^4.0.2", + "vue-resize-sensor": "^2.0.0", + "worker-loader": "^2.0.0" + }, + "dependencies": { + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://rg.cnpmjs.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz", + "integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0=" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://r.cnpmjs.org/emojis-list/download/emojis-list-3.0.0.tgz", + "integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang=" + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://rg.cnpmjs.org/loader-utils/download/loader-utils-1.4.0.tgz", + "integrity": "sha1-xXm140yzSxp07cbB+za/o3HVphM=", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://r.cnpmjs.org/minimist/download/minimist-1.2.5.tgz", + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=" + }, + "pdfjs-dist": { + "version": "2.6.347", + "resolved": "https://rg.cnpmjs.org/pdfjs-dist/download/pdfjs-dist-2.6.347.tgz", + "integrity": "sha1-8lftZug76QDND9KFJKIYf7niXNU=" + }, + "raw-loader": { + "version": "4.0.2", + "resolved": "https://r.cnpmjs.org/raw-loader/download/raw-loader-4.0.2.tgz", + "integrity": "sha1-GqxrfRrRUB5m79rBUixz5ZpYTrY=", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "2.2.0", + "resolved": "https://r.cnpmjs.org/json5/download/json5-2.2.0.tgz", + "integrity": "sha1-Lf7+cgxrpSXZ69kJlQ8FFTFsiaM=", + "requires": { + "minimist": "^1.2.5" + } + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://rg.cnpmjs.org/loader-utils/download/loader-utils-2.0.2.tgz", + "integrity": "sha1-1uO0+4GHByGuTghoqxHdY4NowSk=", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://rg.cnpmjs.org/schema-utils/download/schema-utils-3.1.1.tgz", + "integrity": "sha1-vHTEtraZXB2I92qLd76nIZ4MgoE=", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "vue-resize-sensor": { + "version": "2.0.0", + "resolved": "https://rg.cnpmjs.org/vue-resize-sensor/download/vue-resize-sensor-2.0.0.tgz", + "integrity": "sha1-Olh/1oAuFohwnPLFqtrnoAdZUr8=" + }, "vue-router": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.0.1.tgz", @@ -20472,6 +20585,31 @@ "errno": "~0.1.7" } }, + "worker-loader": { + "version": "2.0.0", + "resolved": "https://rg.cnpmjs.org/worker-loader/download/worker-loader-2.0.0.tgz", + "integrity": "sha1-Rf2j73asqBV3GokQc5nuQRm0MKw=", + "requires": { + "loader-utils": "^1.0.0", + "schema-utils": "^0.4.0" + }, + "dependencies": { + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://rg.cnpmjs.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz", + "integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0=" + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://rg.cnpmjs.org/schema-utils/download/schema-utils-0.4.7.tgz", + "integrity": "sha1-unT1l9K+LqiAExdG7hfQoJPGgYc=", + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", diff --git a/package.json b/package.json index e368a41..5334dfe 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,8 @@ "axios": "0.17.1", "babel-plugin-component": "0.10.1", "babel-polyfill": "6.26.0", + "dayjs": "^1.10.7", + "decimal.js": "^10.3.1", "element-ui": "2.8.2", "file-saver": "^2.0.5", "gulp": "4.0.2", @@ -27,11 +29,14 @@ "lodash": "4.17.5", "node-sass": "4.13.1", "npm": "^6.9.0", + "pubsub-js": "^1.9.3", "sass-loader": "6.0.6", "svg-sprite-loader": "3.7.3", "vue": "2.5.16", "vue-cookie": "1.1.4", + "vue-i18n": "^8.25.0", "vue-json-excel": "^0.3.0", + "vue-pdf": "^4.3.0", "vue-router": "3.0.1", "vuex": "3.0.1", "xlsx": "^0.17.0" diff --git a/src/api/base.js b/src/api/base.js new file mode 100644 index 0000000..a01e263 --- /dev/null +++ b/src/api/base.js @@ -0,0 +1,36 @@ +import { createAPI } from "@/utils/httpRequest.js"; + + +// 获取工作日类型列表 +export const calendarDatetypeInfo = data => createAPI(`/base/calendarDatetypeInfo`,'post',data) + + + +export const saveCalendarDatetypeData = data => createAPI(`/base/saveCalendarDatetypeData`,'post',data) + + +export const delCalendarType = data => createAPI(`/base/delCalendarType`,'post',data) + +export const getShiftData = data => createAPI(`/base/getShiftData`,'post',data) + +export const saveShift = data => createAPI(`/base/saveShift`,'post',data) + +export const updateShift = data => createAPI(`/base/updateShift`,'post',data) + + +export const delShift = data => createAPI(`/base/delShift`,'post',data) + + +export const getCalendarData = data => createAPI(`/base/getCalendarData`,'post',data) + + +export const saveCalendar = data => createAPI(`/base/saveCalendar`,'post',data) + +export const delCalendar = data => createAPI(`/base/delCalendar`,'post',data) + +export const getCalendarExceptionData = data => createAPI(`/base/getCalendarExceptionData`,'post',data) + +export const batchSaveCDData = data => createAPI(`/base/batchSaveCDData`,'post',data) + + + diff --git a/src/assets/scss/global.scss b/src/assets/scss/global.scss index 91d97ff..fa96f3c 100644 --- a/src/assets/scss/global.scss +++ b/src/assets/scss/global.scss @@ -131,3 +131,51 @@ line-height: 31px; } /* el-form-item 时间选择器图标 end*/ + + +/* 布局间距 */ +.el-card__body { + padding: 5px; +} +.site-content > .el-tabs > .el-tabs__content { + padding: 0 5px 5px; +} +.site-content--tabs { + padding: 30px 0 0; +} +.site-navbar__brand { + height: 35px; + line-height: 35px; + font-size: 18px; +} +.site-navbar { + height: 35px; +} +.site-sidebar { + top: 35px; +} +.site-navbar__body { + height: 35px; +} + +.site-content > .el-tabs > .el-tabs__header { + top: 35px; +} +.site-navbar__menu .el-menu-item, .site-navbar__menu .el-submenu > .el-submenu__title { + height: 35px; + line-height: 35px; +} +.site-content > .el-tabs > .el-tabs__content > .site-tabs__tools { + top: 35px; + height: 40px; + font-size: 16px; + line-height: 40px; +} + +/*提示消息 按钮 确认在右 取消仔左*/ +.el-message-box__btns { + padding: 5px 15px 0; + display: flex; + flex-direction: row-reverse; + gap: 10px; +} diff --git a/src/main.js b/src/main.js index 7ecc2eb..4f50478 100644 --- a/src/main.js +++ b/src/main.js @@ -2,7 +2,8 @@ import Vue from 'vue' import App from '@/App' import router from '@/router' // api: https://github.com/vuejs/vue-router import store from '@/store' // api: https://github.com/vuejs/vuex -import VueCookie from 'vue-cookie' // api: https://github.com/alfhen/vue-cookie +import VueCookie from 'vue-cookie' +import dayjs from 'dayjs';// api: https://github.com/alfhen/vue-cookie import '@/element-ui' // api: https://github.com/ElemeFE/element import '@/icons' // api: http://www.iconfont.cn/ import '@/element-ui-theme' @@ -13,6 +14,7 @@ import cloneDeep from 'lodash/cloneDeep' import JsonExcel from 'vue-json-excel' import i18n from '@/i18n/i18n' import './directives' +import decimalUtil from '@/utils/decimalUtil.js' Vue.component('downloadExcel', JsonExcel) @@ -28,6 +30,8 @@ if (process.env.NODE_ENV !== 'production') { // 挂载全局 Vue.prototype.$http = httpRequest // ajax请求方法 Vue.prototype.isAuth = isAuth // 权限方法 +Vue.prototype.decimalUtil = decimalUtil // 计算 +Vue.prototype.dayjs = dayjs //时间格式化插件 2021-11-02 // 保存整站vuex本地储存初始状态 window.SITE_CONFIG['storeState'] = cloneDeep(store.state) diff --git a/src/utils/decimalUtil.js b/src/utils/decimalUtil.js new file mode 100644 index 0000000..a0d09f9 --- /dev/null +++ b/src/utils/decimalUtil.js @@ -0,0 +1,42 @@ +import { Decimal } from "decimal.js"; +// args第一位为被操作数据 + +//加法 +function add(...args) { + let result = new Decimal(args[0]); + for (let i = 1; i < args.length; i++) { + result = result.add(new Decimal(args[i])); + } + return result.toNumber(); +} +//减法 +function sub(...args) { + let result = new Decimal(args[0]); + for (let i = 1; i < args.length; i++) { + result = result.sub(new Decimal(args[i])); + } + return result.toNumber(); +} +//乘法 +function mul(...args) { + let result = new Decimal(args[0]); + for (let i = 1; i < args.length; i++) { + result = result.mul(new Decimal(args[i])); + } + return result.toNumber(); +} +//除法 +function div(...args) { + let result = new Decimal(args[0]); + for (let i = 1; i < args.length; i++) { + result = result.div(new Decimal(args[i])); + } + return result.toNumber(); +} + +export default { + add, + sub, + mul, + div +}; diff --git a/src/views/common/home.vue b/src/views/common/home.vue index ae7deb3..6514026 100644 --- a/src/views/common/home.vue +++ b/src/views/common/home.vue @@ -1,13 +1,7 @@ diff --git a/src/views/common/login.vue b/src/views/common/login.vue index 666b50b..62c6135 100644 --- a/src/views/common/login.vue +++ b/src/views/common/login.vue @@ -2,10 +2,10 @@
-
-

xujie-fast-vue

-

xujie-fast-vue基于vue、element-ui构建开发,实现xujie-fast后台管理前端功能,提供一套更优的前端解决方案。

-
+ + + +