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 @@
+
+
+
+
+
+ 新增
+ 搜索
+
+
+
+
+
+
+
+
+
+
+
+ 保存
+ 取消
+
+
+ 编辑
+ 删除
+
+
+
+
+
+ {
+ select.page_size = e;
+ select.page = 1;
+ getList();
+ }"
+ @current-change="e => {
+ select.page = e;
+ getList();
+ }"
+ />
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+ 搜索
+
+
+
+
+
+
+
+
+
+ {{ row.attendance[item.date] instanceof Array ? '' : row.attendance[item.date][0].sign_in_at }}
+
+
+
+
+ {{ row.attendance[item.date] instanceof Array ? '' : row.attendance[item.date][0].sign_out_at }}
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
$emit('update:isShow',e)"
+ >
+
+
+
+
+
+
+
+
+
+ 点击上传
+ 上传文件不超过10Mb
+
+
+
+
+
+
+
+
+ 确认
+
+
+
+
+
+
+
+
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"
>
-
+
+
+
+
+
+ 预览
+ 删除
+
+
+
+ {
+ select.page_size = e;
+ select.page = 1;
+ getList();
+ }"
+ @current-change="e => {
+ select.page = e;
+ getList();
+ }"
+ />
+
+