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 @@
项目介绍
-
-
+ 欢迎使用!
+
xujie-fast-vue基于vue、element-ui构建开发,实现xujie-fast后台管理前端功能,提供一套更优的前端解决方案。
-