diff --git a/src/App.vue b/src/App.vue index e78f8b6..9fb69fa 100644 --- a/src/App.vue +++ b/src/App.vue @@ -3,15 +3,18 @@ + diff --git a/src/api/attendance.js b/src/api/attendance.js index 524dcea..6de8870 100644 --- a/src/api/attendance.js +++ b/src/api/attendance.js @@ -17,3 +17,12 @@ export function sign(params,isLoading = true) { isLoading }) } + +export function statistics(params,isLoading= true) { + return request({ + method: 'get', + url: '/api/oa/attendance/statistics', + params, + isLoading + }) +} diff --git a/src/api/document.js b/src/api/document.js index 994d61f..b9057be 100644 --- a/src/api/document.js +++ b/src/api/document.js @@ -6,7 +6,7 @@ export function index(params) { return request({ url: '/api/oa/document/index', method: 'get', - params + params, }) } export function show(params, isLoading = true) { diff --git a/src/api/flow/index.js b/src/api/flow/index.js index 1142476..9236005 100644 --- a/src/api/flow/index.js +++ b/src/api/flow/index.js @@ -194,3 +194,12 @@ export function statistics(type, params, isLoading=true) { isLoading }) } + +export function updateTime(params,isLoading=true) { + return request({ + method: 'get', + url: '/api/oa/flow/update-time', + params, + isLoading + }) +} diff --git a/src/components/OnlineFile/index.vue b/src/components/OnlineFile/index.vue new file mode 100644 index 0000000..9f16ec7 --- /dev/null +++ b/src/components/OnlineFile/index.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/main.js b/src/main.js index 29acece..105deff 100644 --- a/src/main.js +++ b/src/main.js @@ -79,7 +79,10 @@ if (window.__POWERED_BY_WUJIE__) { instance = new Vue({ router, store, - render: h => h(App) + render: h => h(App), + beforeCreate() { + Vue.prototype.$bus = this + } }).$mount("#app") window.MODULE_NAME = window.$wujie?.props?.module_name; console.log('token-wujie',window.MODULE_NAME) @@ -94,7 +97,10 @@ if (window.__POWERED_BY_WUJIE__) { new Vue({ router, store, - render: h => h(App) + render: h => h(App), + beforeCreate() { + Vue.prototype.$bus = this + } }).$mount("#app") } diff --git a/src/utils/request.js b/src/utils/request.js index 3d41e59..d728d8d 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -18,7 +18,7 @@ const loading = throttle(() => { const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url // withCredentials: true, // send cookies when cross-domain requests - timeout: 5000 // request timeout + timeout: 10000 // request timeout }) // request interceptor diff --git a/src/views/BeOnDuty/components/AddBeOnDuty.vue b/src/views/BeOnDuty/components/AddBeOnDuty.vue index 9da826b..7ab55e5 100644 --- a/src/views/BeOnDuty/components/AddBeOnDuty.vue +++ b/src/views/BeOnDuty/components/AddBeOnDuty.vue @@ -65,7 +65,7 @@ export default { required: true }, users: { - type: Boolean, + type: Array, default: () => [] } }, diff --git a/src/views/VehicleCertificate/components/AddVehicleCertificate.vue b/src/views/VehicleCertificate/components/AddVehicleCertificate.vue new file mode 100644 index 0000000..98b6b2f --- /dev/null +++ b/src/views/VehicleCertificate/components/AddVehicleCertificate.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/src/views/VehicleCertificate/index.vue b/src/views/VehicleCertificate/index.vue new file mode 100644 index 0000000..57b85b7 --- /dev/null +++ b/src/views/VehicleCertificate/index.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/src/views/attendance/index.vue b/src/views/attendance/index.vue index 080deb0..679f49e 100644 --- a/src/views/attendance/index.vue +++ b/src/views/attendance/index.vue @@ -6,7 +6,8 @@ 打卡
-
当前位置:
+
打卡状态 {{ isGetLocation ? '可打卡' : '不可打卡' }}
+
当前位置: ({{pos.lng}},{{pos.lat}})
当前距离:
最大打卡范围:
@@ -26,7 +27,13 @@ export default { MonthStatics }, data() { - return {} + return { + isGetLocation: false, + pos: { + lng: '', + lat: '' + } + } }, computed: {}, methods: { @@ -37,7 +44,73 @@ export default { } catch (err) { console.error(err) } - }, 1000, true) + }, 1000, true), + + isAuthPermission() { + if(!navigator.geolocation) { + this.isGetLocation = false + this.$msgbox.alert("您的浏览器不支持获取定位", "提示") + } else { + this.getLocation() + } + }, + getLocation() { + navigator.geolocation.getCurrentPosition((pos) => { + this.isGetLocation = true + console.log('经度', pos.coords.latitude); + console.log('纬度', pos.coords.longitude); + this.pos.lng = pos.coords.longitude + this.pos.lat = pos.coords.latitude + }, (error) => { + if (error.code) { + switch (error.code) { + case error.PERMISSION_DENIED: + this.$msgbox.confirm("需授权定位后进行打卡", "提示",{ + confirmButtonText: '重试' + }).then(_ => { + this.getLocation() + }) + this.isGetLocation = false + break; + case error.POSITION_UNAVAILABLE: + this.$msgbox.confirm("无法获取当前位置,请重试", "提示",{ + confirmButtonText: '重试' + }).then(_ => { + this.getLocation() + }) + this.isGetLocation = false + break; + case error.TIMEOUT: + this.$msgbox.confirm("获取位置超时,请重试", "提示",{ + confirmButtonText: '重试' + }).then(_ => { + this.getLocation() + }) + this.isGetLocation = false + break; + case error.UNKNOWN_ERROR: + this.$msgbox.confirm("获取位置错误,请重试", "提示",{ + confirmButtonText: '重试' + }).then(_ => { + this.getLocation() + }) + this.isGetLocation = false + break; + default: + this.$msgbox.confirm("获取位置错误,请重试", "提示",{ + confirmButtonText: '重试' + }).then(_ => { + this.getLocation() + }) + this.isGetLocation = false + break; + } + } + }); + }, + }, + created() { + this.isAuthPermission() } } diff --git a/src/views/attendance/statistics.vue b/src/views/attendance/statistics.vue new file mode 100644 index 0000000..2da42da --- /dev/null +++ b/src/views/attendance/statistics.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index b9fc036..e94accc 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -112,16 +112,21 @@
- -
- {{ item.name }} -
-
+ + +
+ {{ item.name }} +
+
+
@@ -269,7 +274,7 @@ export default { ]), weather: {}, - calendar: this.$moment().format("YYYY-MM"), + calendar: this.$moment().format("YYYY-MM-DD"), attendanceData: { attendances: [], }, @@ -278,22 +283,27 @@ export default { { name: "我收藏的", url: "/flow/list/fav", + num: 0 }, { name: "我办理过的", url: "/flow/list/handled", + num: 0 }, { name: "我发起的", url: "/flow/list/my", + num: 0 }, { name: "所有待办", url: "/flow/list/todo", + num: 0 }, { name: "抄送给我的", url: "/flow/list/cc", + num: 0 }, ], @@ -377,7 +387,22 @@ export default { console.error(err); } }, - async getTotal() {}, + async getTotal() { + try { + const res = await axios.get(`${process.env.VUE_APP_BASE_API}/api/oa/statistics/notifications`,{ + headers: { + Authorization: `Bearer ${getToken()}`, + } + }); + if (res.status === 200) { + console.log(res) + this.quickMenus[3].num = res.data.data?.count_unread ?? 0 + this.quickMenus[4].num = res.data.data?.count_unread_ccs ?? 0 + } + } catch (err) { + console.error(err); + } + }, async getWeather() { try { const res = await axios.get( @@ -518,6 +543,9 @@ $btn-colors: linear-gradient(90deg, #d4bbfd 0%, #af7bff 100%), ::v-deep .el-calendar { border-radius: 0 0 10px 10px; } +::v-deep .el-badge__content.is-fixed { + z-index: 1; +} ::v-deep .el-calendar-table .is-today { position: relative; &::after { @@ -711,7 +739,7 @@ $btn-colors: linear-gradient(90deg, #d4bbfd 0%, #af7bff 100%), cursor: pointer; border-radius: 10px; margin: 10px 10px 0 0; - overflow: hidden; + // overflow: hidden; position: relative; &::before { @@ -829,6 +857,7 @@ $btn-colors: linear-gradient(90deg, #d4bbfd 0%, #af7bff 100%), background: var(--theme-color); padding: 2px 4px; margin-left: auto; + text-align: center; } .sign-out { margin-top: 4px; @@ -839,6 +868,7 @@ $btn-colors: linear-gradient(90deg, #d4bbfd 0%, #af7bff 100%), background-color: #251f83; padding: 2px 4px; margin-left: auto; + text-align: center; } } diff --git a/src/views/document/components/AddDocument.vue b/src/views/document/components/AddDocument.vue index e69de29..00bf1e9 100644 --- a/src/views/document/components/AddDocument.vue +++ b/src/views/document/components/AddDocument.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/src/views/document/index.vue b/src/views/document/index.vue index 252cdf8..5524935 100644 --- a/src/views/document/index.vue +++ b/src/views/document/index.vue @@ -11,6 +11,7 @@ ref="tree" :indent="10" style="margin-top: 8px;" + :expand-on-click-node="false" class="filter-tree" :data="types" :props="{ @@ -18,6 +19,7 @@ }" default-expand-all :filter-node-method="filterNode" + @node-click="treeClick" /> @@ -41,15 +43,47 @@ :data="tableData" > - + + + + + + + + + +