From d7c484c2f5ff13b000b38cc2d078bfe752d3dad8 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 10 十月 2024 15:12:30 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java | 81 +-
admin/src/layouts/TableLayout1.vue | 4
admin/src/views/platform/LogisticsRecord/leaveAuth.vue | 2
admin/src/views/vehicle/components/OperaCategoryWindow.vue | 6
screen/vite.config.js | 3
server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java | 49 +
admin/src/api/system/sms.js | 10
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java | 9
admin/public/favicon.ico | 0
admin/src/components/business/OperaPlatformApproveTemplWindow.vue | 660 +++++++++++++---------------
admin/src/views/system/smsMessage.vue | 132 +++++
screen/src/views/PlatformCall.vue | 112 +++-
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java | 17
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java | 5
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWaterGasService.java | 3
admin/src/components/business/OperaDeviceLedWindow.vue | 2
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/HkOpenApiController.java | 21
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java | 2
admin/src/views/platform/LogisticsRecord/waybillQuery.vue | 181 +++++++
admin/src/views/platform/components/WaybillDetail.vue | 22
server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformWarnEventListResponse.java | 2
admin/src/views/platform/platformGroup.vue | 4
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java | 41 +
admin/src/components/business/OperaCarsWindow.vue | 1
24 files changed, 921 insertions(+), 448 deletions(-)
diff --git a/admin/public/favicon.ico b/admin/public/favicon.ico
index c6ff5db..ec96d02 100644
--- a/admin/public/favicon.ico
+++ b/admin/public/favicon.ico
Binary files differ
diff --git a/admin/src/api/system/sms.js b/admin/src/api/system/sms.js
new file mode 100644
index 0000000..e0f700b
--- /dev/null
+++ b/admin/src/api/system/sms.js
@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+// 鐭俊閫氱煡 鍒嗛〉鍒楄〃
+export function getSmsList (data) {
+ return request.post('/visitsAdmin/cloudService/business/smsConfig/page', data)
+}
+// 鐭俊閫氱煡 鐘舵�佹洿鏂�
+export function SmsStatusUpdate (data) {
+ return request.post('/visitsAdmin/cloudService/business/smsConfig/updateById', data)
+}
diff --git a/admin/src/components/business/OperaCarsWindow.vue b/admin/src/components/business/OperaCarsWindow.vue
index f8bfc58..a81913f 100644
--- a/admin/src/components/business/OperaCarsWindow.vue
+++ b/admin/src/components/business/OperaCarsWindow.vue
@@ -16,6 +16,7 @@
label: 'name',
value: 'id',
children: 'childCategoryList',
+ checkStrictly: true
}"></el-cascader>
</el-form-item>
<el-form-item label="閫夋嫨缁勭粐锛�" prop="groupId">
diff --git a/admin/src/components/business/OperaDeviceLedWindow.vue b/admin/src/components/business/OperaDeviceLedWindow.vue
index 03cb79a..c135b7e 100644
--- a/admin/src/components/business/OperaDeviceLedWindow.vue
+++ b/admin/src/components/business/OperaDeviceLedWindow.vue
@@ -10,7 +10,7 @@
<el-input v-model="form.title" placeholder="璇疯緭鍏ED灞忔樉绀哄唴瀹�" v-trim/>
</el-form-item>
<el-form-item label="鎾斁閫熷害" prop="speed">
- <el-input type="number" v-model="form.speed" placeholder="璇疯緭鍏ユ挱鏀鹃�熷害(澶т簬0鏁板瓧锛�" v-trim/>
+ <el-input type="number" v-model="form.speed" placeholder="璇疯緭鍏ユ挱鏀鹃�熷害锛屾暟瀛楄秺灏忔挱鏀捐秺蹇紝寤鸿閫熷害8" v-trim/>
</el-form-item>
</el-form>
</GlobalWindow>
diff --git a/admin/src/components/business/OperaPlatformApproveTemplWindow.vue b/admin/src/components/business/OperaPlatformApproveTemplWindow.vue
index 6ff22bc..3b093f9 100644
--- a/admin/src/components/business/OperaPlatformApproveTemplWindow.vue
+++ b/admin/src/components/business/OperaPlatformApproveTemplWindow.vue
@@ -1,11 +1,5 @@
<template>
- <GlobalWindow
- :title="title"
- width="100%"
- :visible.sync="visible"
- :confirm-working="isWorking"
- @confirm="confirm"
- >
+ <GlobalWindow :title="title" width="100%" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
<TableLayout>
<template v-slot:table-wrap>
<div class="config">
@@ -23,14 +17,10 @@
<img src="@/assets/images/peizhi_ar@2x.png" alt="" />
</div>
<div v-for="(item, index) in apprList" :key="index">
- <div
- class="item yellow"
- :class="{
+ <div class="item yellow" :class="{
active: activeIndex == index,
blue: item.type == '1',
- }"
- @click="flowClick(index)"
- >
+ }" @click="flowClick(index)">
<div class="head">{{ item.remark }}</div>
<div class="content">
<!-- 瀹℃壒 -->
@@ -40,25 +30,19 @@
</template>
<template v-if="item.memberType == '1'">
<div v-if="item.objIds && item.objIds.length === 1">
- <span
- >{{ item.objIds[0].name }}
- {{ item.objIds[0].companyName }}</span
- >
+ <span>{{ item.objIds[0].name }}
+ {{ item.objIds[0].companyName }}</span>
<span v-if="item.approveType == 0 && item.type == '0'">
- 鎴栫</span
- >
+ 鎴栫</span>
<span v-if="item.approveType == 1 && item.type == '0'">
- 浼氱</span
- >
+ 浼氱</span>
</div>
<div v-else-if="item.objIds && item.objIds.length > 1">
<span>{{ item.objIds[0].name }} 绛�</span>
<span v-if="item.approveType == 0 && item.type == '0'">
- 鎴栫</span
- >
+ 鎴栫</span>
<span v-if="item.approveType == 1 && item.type == '0'">
- 浼氱</span
- >
+ 浼氱</span>
</div>
<div v-else>璇烽�夋嫨</div>
<i class="el-icon-arrow-right"></i>
@@ -67,19 +51,14 @@
<!-- 鎶勯�� -->
<template v-if="item.type == 1">
<div v-if="item.objIds && item.objIds.length === 1">
- <span
- >{{ item.objIds[0].name }}
- {{ item.objIds[0].companyName }}</span
- >
+ <span>{{ item.objIds[0].name }}
+ {{ item.objIds[0].companyName }}</span>
</div>
<div v-else-if="item.objIds && item.objIds.length > 1">
<span>{{ item.objIds[0].name }} 绛�</span>
</div>
<div v-else>璇烽�夋嫨</div>
- <i
- v-if="item.memberType == '1'"
- class="el-icon-arrow-right"
- ></i>
+ <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i>
</template>
</div>
</div>
@@ -88,11 +67,7 @@
<div class="line"></div>
<img src="@/assets/images/peizhi_ar@2x.png" alt="" />
</template>
- <i
- v-if="apprList.length - 2 === index"
- @click="handleAddAppr()"
- class="el-icon-circle-plus add"
- ></i>
+ <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i>
</div>
</div>
</div>
@@ -102,171 +77,114 @@
<div class="config_data_item_label">閫夋嫨璇ヨ妭鐐圭殑瀹℃壒浜�</div>
<div class="df_ac mb10">
<div>瀹℃壒鑺傜偣鍚嶇О</div>
- <el-input
- class="w200 ml10"
- v-model="apprList[activeIndex].remark"
- ></el-input>
+ <el-input class="w200 ml10" v-model="apprList[activeIndex].remark"></el-input>
</div>
<!-- 鎶勯�佷汉 -->
<template v-if="apprList[activeIndex].type == '1'">
<div class="config_data_item_reviewed_content">
- <div
- v-for="mem in apprList[activeIndex].objIds"
- :key="mem.id"
- class="config_data_item_reviewed_content_item"
- >
+ <div v-for="mem in apprList[activeIndex].objIds" :key="mem.id"
+ class="config_data_item_reviewed_content_item">
<span>{{ mem.name }}</span>
<i class="el-icon-close"></i>
</div>
<span class="add" @click="selStaff">+娣诲姞</span>
</div>
</template>
- <el-radio-group
- v-if="apprList[activeIndex].type == '0'"
- v-model="apprList[activeIndex].memberType"
- >
-<!-- <el-radio :label="0">鐢宠浜�</el-radio>-->
+ <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType">
+ <!-- <el-radio :label="0">鐢宠浜�</el-radio>-->
<el-radio :label="1">鎸囧畾浜哄憳</el-radio>
<el-radio :label="2">閮ㄩ棬涓荤</el-radio>
</el-radio-group>
- <div
- class="config_data_item_reviewed"
- v-if="apprList[activeIndex].memberType == 1"
- >
+ <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1">
<div class="config_data_item_reviewed_label">
<span>鎸囧畾瀹℃牳浜�</span>
<span>涓嶈秴杩�20浜�</span>
</div>
<div class="config_data_item_reviewed_content">
- <div
- v-for="(mem, memIndex) in apprList[activeIndex].objIds"
- :key="mem.id"
- class="config_data_item_reviewed_content_item"
- >
+ <div v-for="(mem, memIndex) in apprList[activeIndex].objIds" :key="mem.id"
+ class="config_data_item_reviewed_content_item">
<span>{{ mem.name }}</span>
<i class="el-icon-close" @click="memDel(memIndex)"></i>
</div>
<span class="add" @click="selStaff">+娣诲姞</span>
</div>
</div>
- <div
- class="config_data_item_reviewed"
- v-if="apprList[activeIndex].memberType == 2"
- >
+ <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2">
<div class="config_data_item_reviewed_label">
<span>閮ㄩ棬涓荤</span>
</div>
<div class="config_data_item_reviewed_r">
<span>鐢宠浜虹殑</span>
- <el-select
- v-model="apprList[activeIndex].objLevel"
- placeholder="璇烽�夋嫨"
- style="margin: 0 20px 0 10px"
- >
+ <el-select v-model="apprList[activeIndex].objLevel" placeholder="璇烽�夋嫨" style="margin: 0 20px 0 10px">
<el-option label="鐩存帴涓荤" :value="0" />
<el-option label="浜岀骇涓荤" :value="1" />
<el-option label="涓夌骇涓荤" :value="2" />
<el-option label="鍥涚骇涓荤" :value="4" />
</el-select>
- <el-checkbox
- v-model="apprList[activeIndex].noleaderOpt"
- :true-label="1"
- :false-label="0"
- >鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox>
+ <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1"
+ :false-label="0">鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox>
</div>
</div>
</div>
- <div
- class="config_data_item"
- v-if="
+ <div class="config_data_item" v-if="
(apprList[activeIndex].memberType == 1 ||
apprList[activeIndex].memberType == 2) &&
apprList[activeIndex].type == '0'
- "
- >
+ ">
<div class="config_data_item_label">
瀹℃壒鏂瑰紡
<span>瀹℃壒浜轰负澶氫釜鏃讹紝閲囩敤鐨勫鎵规柟寮�</span>
</div>
- <el-radio-group
- v-model="apprList[activeIndex].approveType"
- style="display: flex; flex-direction: column"
- >
- <el-radio :label="0" style="margin-bottom: 20px"
- >鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio
- >
+ <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column">
+ <el-radio :label="0" style="margin-bottom: 20px">鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio>
<el-radio :label="1">浼氱锛堟墍鏈夊鎵逛汉閮藉悓鎰忔墠鍙�氳繃锛�</el-radio>
</el-radio-group>
</div>
<div class="config_data_submit">
- <el-button
- @click="onSubmit"
- :loading="subLoading"
- style="background: #435ebe"
- type="primary"
- >淇濆瓨閰嶇疆椤�</el-button
- >
- <el-button
- v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1"
- type="danger"
- plain
- @click="handleDel"
- >鍒犻櫎鑺傜偣</el-button
- >
+ <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe"
+ type="primary">淇濆瓨閰嶇疆椤�</el-button>
+ <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain
+ @click="handleDel">鍒犻櫎鑺傜偣</el-button>
</div>
</div>
</div>
</template>
<!-- -->
- <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="1000px" style="z-index: 99999" append-to-body>
+ <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="900px" style="z-index: 99999" append-to-body>
<div class="staff_modal">
<div class="left">
- <div
- style="
+ <div style="
width: 100%;
height: 50px;
background: rgba(242, 242, 242, 1);
line-height: 50px;
text-align: center;
font-size: 14px;
- "
- >
+ ">
浼佷笟缁勭粐鏋舵瀯
</div>
<div style="width: 100%; height: 100%; overflow-y: scroll">
- <Tree
- :list="companyTree"
- :defaultProps="{
+ <Tree :list="companyTree" :defaultProps="{
name: 'name',
status: 'fsStatus',
children: 'childList',
id: 'id',
- }"
- @callback="callback"
- />
+ }" @callback="callback" />
</div>
</div>
- <el-transfer
- filterable
- :title="['鏈��', '宸查��']"
- openAll
- :props="{ label: 'name', key: 'keyTemp' }"
- filter-placeholder="鎼滅储鍛樺伐"
- v-model="searchForm.objIds"
- :data="memberList"
- class="transfer"
- >
+ <el-transfer filterable :titles="['鏈��', '宸查��']" openAll :props="{ label: 'name', key: 'keyTemp' }"
+ filter-placeholder="鎼滅储鍛樺伐" v-model="searchForm.objIds" :data="memberList" class="transfer">
</el-transfer>
</div>
<span slot="footer" class="dialog-footer">
- <el-button @click="isShowTransfer = false">鍙� 娑�</el-button>
- <el-button type="primary" @click="TransferSub">纭� 瀹�</el-button>
- </span>
+ <el-button @click="isShowTransfer = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="TransferSub">纭� 瀹�</el-button>
+ </span>
</el-dialog>
</TableLayout>
<span slot="footer" class="dialog-footer">
- <el-button @click="visible= false">杩斿洖</el-button>
- </span>
+ <el-button @click="visible = false">杩斿洖</el-button>
+ </span>
</GlobalWindow>
</template>
@@ -274,7 +192,7 @@
import BaseOpera from '@/components/base/BaseOpera'
import TableLayout from '@/layouts/TableLayout'
import Tree from '@/components/common/Tree'
-import {approveTemplSave, approveTemplById} from '@/api'
+import { approveTemplSave, approveTemplById } from '@/api'
import { fetchList } from '@/api/business/company'
import { fetchList as memberListPost } from '@/api/business/member'
import GlobalWindow from '@/components/common/GlobalWindow'
@@ -282,14 +200,14 @@
name: 'OperaPlatformReasonWindow',
extends: BaseOpera,
components: { Tree, GlobalWindow, TableLayout },
- data () {
+ data() {
return {
- model:{},
+ model: {},
reasonId: null,
activeType: '6',
subLoading: false,
apprList: [
- { remark: '瀹℃壒浜�', active: false,memberType:1, type: '1', objIds: [] },
+ { remark: '瀹℃壒浜�', active: false, memberType: 1, type: '1', objIds: [] },
{ remark: '鎶勯�佷汉', active: false, type: '1', objIds: [] }
],
activeIndex: 0,
@@ -300,18 +218,18 @@
companyTree: []
}
},
- created () {
+ created() {
},
methods: {
- open (title, row) {
+ open(title, row) {
this.title = title + '銆�' + row.reason + '銆�'
this.visible = true
this.reasonId = row.id
this.model = row
this.getfindCompanyTreePage()
this.apprList = [
- { remark: '瀹℃壒浜�', active: false, type: '0',memberType:1, objIds: [] },
+ { remark: '瀹℃壒浜�', active: false, type: '0', memberType: 1, objIds: [] },
{ remark: '鎶勯�佷汉', active: false, type: '1', objIds: [] }
]
this.param = {}
@@ -321,7 +239,7 @@
this.companyTree = []
this.initDate()
},
- flowClick (i) {
+ flowClick(i) {
this.activeIndex = i
this.apprList.forEach((item, index) => {
if (i === index) {
@@ -339,8 +257,8 @@
}
})
},
- initDate () {
- if(this.model.approveTemplId){
+ initDate() {
+ if (this.model.approveTemplId) {
approveTemplById(this.model.approveTemplId).then(res => {
if (res && res.paramList) {
const arr = res.paramList || []
@@ -353,7 +271,7 @@
companyName: i.companyName
}
})
- }else{
+ } else {
item.objIds = []
}
})
@@ -365,7 +283,7 @@
})
}
},
- onSubmit () {
+ onSubmit() {
const { apprList, activeType } = this
const temp = JSON.parse(JSON.stringify(apprList))
temp.forEach((item, index) => {
@@ -379,7 +297,7 @@
this.subLoading = true
approveTemplSave({
type: activeType,
- reasonId:this.model.id,
+ reasonId: this.model.id,
paramList: temp
}).then(res => {
this.subLoading = false
@@ -389,17 +307,17 @@
this.subLoading = false
})
},
- handleDel () {
+ handleDel() {
const { activeIndex } = this
this.apprList.splice(activeIndex, 1)
this.activeIndex = 0
},
- handleAddAppr () {
- this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�', active: false,memberType:1, type: 0, objIds: [] })
+ handleAddAppr() {
+ this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�', active: false, memberType: 1, type: 0, objIds: [] })
// this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
},
// 鑾峰彇缁勭粐鏍�
- getfindCompanyTreePage () {
+ getfindCompanyTreePage() {
fetchList()
.then(res => {
if (res && res.length > 0) {
@@ -411,7 +329,7 @@
}
})
},
- getMemberList () {
+ getMemberList() {
memberListPost({
model: {
companyId: this.searchForm.companyId || '',
@@ -433,13 +351,13 @@
// console.log('defaultProps', res)
})
},
- callback (row) {
+ callback(row) {
console.log(row)
this.$set(this.searchForm, 'companyId', row.id)
this.$set(this.searchForm, 'erpOrgId', row.erpId)
this.getMemberList()
},
- TransferSub () {
+ TransferSub() {
const { activeIndex } = this
if (this.searchForm.objIds && this.searchForm.objIds.length > 0) {
if (this.searchForm.objIds.length > 20) return this.$message.warning('鏈�澶氶�夋嫨20浜�')
@@ -460,7 +378,7 @@
this.isShowTransfer = false
console.log(this.searchForm.objIds)
},
- memDel (memIndex) {
+ memDel(memIndex) {
const { activeIndex } = this
this.apprList.forEach((item, index) => {
if (activeIndex === index) {
@@ -472,11 +390,11 @@
}
})
},
- selStaff () {
+ selStaff() {
this.isShowTransfer = true
this.getMemberList()
},
- seleItem (i) {
+ seleItem(i) {
this.list.forEach((item, index) => {
item.active = index === i
})
@@ -485,175 +403,205 @@
}
</script>
<style lang="scss" scoped>
-.labelTip{
+.labelTip {
font-size: 12px;
color: #666666;
}
+
.config {
- width: 100%;
- padding-bottom: 20px;
- box-sizing: border-box;
- height: calc(100vh - 140px);
- display: flex;
- align-items: center;
- justify-content: space-between;
-.config_list {
- width: 543px;
- height: 100%;
- flex-shrink: 0;
- border-radius: 2px;
- padding: 20px;
- box-sizing: border-box;
- border: 1px solid #eeeeee;
- background: #f7f7f7;
-.config_list_head {
width: 100%;
- height: 40px;
+ padding-bottom: 20px;
+ box-sizing: border-box;
+ height: calc(100vh - 140px);
display: flex;
align-items: center;
justify-content: space-between;
-span {
- font-size: 18px;
- font-weight: 500;
- color: #222222;
+
+ .config_list {
+ width: 543px;
+ height: 100%;
+ flex-shrink: 0;
+ border-radius: 2px;
+ padding: 20px;
+ box-sizing: border-box;
+ border: 1px solid #eeeeee;
+ background: #f7f7f7;
+
+ .config_list_head {
+ width: 100%;
+ height: 40px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ span {
+ font-size: 18px;
+ font-weight: 500;
+ color: #222222;
+ }
+ }
+
+ .config_content {
+ width: 100%;
+ height: calc(100% - 40px);
+ padding-top: 45px;
+ box-sizing: border-box;
+ overflow-y: scroll;
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+
+ &::-webkit-scrollbar {
+ width: 0;
+ }
+
+ .active {
+ border: 2px solid #4456ac !important;
+ }
+
+ .yellow {
+ background: #e89e42 !important;
+ }
+
+ .blue {
+ background: #5094f3 !important;
+ }
+
+ .arrows {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ position: relative;
+
+ .line {
+ width: 1px;
+ height: 60px;
+ background-color: #ccc;
+ }
+
+ .add {
+ font-size: 40px;
+ color: #2080f7;
+ position: absolute;
+ cursor: pointer;
+ z-index: 999;
+ top: 10px;
+ }
+
+ img {
+ width: 12px;
+ }
+ }
+
+ .item {
+ width: 200px;
+ cursor: pointer;
+ border: 2px solid #f7f7f7;
+ height: 80px;
+ background: #4456ac;
+ border-radius: 2px;
+ position: relative;
+ display: flex;
+ flex-direction: column;
+
+ .head {
+ height: 32px;
+ line-height: 32px;
+ padding: 2px 12px;
+ color: #fff;
+ }
+
+ .content {
+ flex: 1;
+ background-color: #fff;
+ display: flex;
+ align-items: center;
+ padding: 0 12px;
+ justify-content: space-between;
+ }
+
+ &:last-child {
+ margin: 0 !important;
+ }
+ }
+ }
+ }
+
+ .config_data {
+ flex: 1;
+ height: 100%;
+ margin-left: 20px;
+
+ .config_data_submit {
+ margin-top: 50px;
+ }
+
+ .config_data_item {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 30px;
+
+ &:last-child {
+ margin: 0 !important;
+ }
+
+ .config_data_item_label {
+ font-size: 16px;
+ font-weight: 500;
+ color: #222222;
+ margin-bottom: 20px;
+
+ span {
+ font-size: 12px;
+ font-weight: 400;
+ color: #999999;
+ margin-left: 10px;
+ }
+ }
+
+ .config_data_item_reviewed {
+ width: 100%;
+ margin-top: 20px;
+
+ .config_data_item_reviewed_r {
+ margin-top: 10px;
+ width: 100%;
+ display: flex;
+ align-items: center;
+
+ span {
+ flex-shrink: 0;
+ font-size: 14px;
+ font-weight: 400;
+ color: #666666;
+ }
+ }
+
+ .config_data_item_reviewed_label {
+ display: flex;
+ align-items: center;
+
+ span {
+ &:nth-child(1) {
+ font-size: 14px;
+ font-weight: 400;
+ color: #222222;
+ }
+
+ &:nth-child(2) {
+ font-size: 12px;
+ font-weight: 400;
+ color: #999999;
+ margin-left: 8px;
+ }
+ }
+ }
+ }
+ }
+ }
}
-}
-.config_content {
- width: 100%;
- height: calc(100% - 40px);
- padding-top: 45px;
- box-sizing: border-box;
- overflow-y: scroll;
- display: flex;
- align-items: center;
- flex-direction: column;
-&::-webkit-scrollbar {
- width: 0;
- }
-.active {
- border: 2px solid #4456ac !important;
-}
-.yellow {
- background: #e89e42 !important;
-}
-.blue {
- background: #5094f3 !important;
-}
-.arrows {
- display: flex;
- flex-direction: column;
- align-items: center;
- position: relative;
-.line {
- width: 1px;
- height: 60px;
- background-color: #ccc;
-}
-.add {
- font-size: 40px;
- color: #2080f7;
- position: absolute;
- cursor: pointer;
- z-index: 999;
- top: 10px;
-}
-img {
- width: 12px;
-}
-}
-.item {
- width: 200px;
- cursor: pointer;
- border: 2px solid #f7f7f7;
- height: 80px;
- background: #4456ac;
- border-radius: 2px;
- position: relative;
- display: flex;
- flex-direction: column;
-.head {
- height: 32px;
- line-height: 32px;
- padding: 2px 12px;
- color: #fff;
-}
-.content {
- flex: 1;
- background-color: #fff;
- display: flex;
- align-items: center;
- padding: 0 12px;
- justify-content: space-between;
-}
-&:last-child {
- margin: 0 !important;
- }
-}
-}
-}
-.config_data {
- flex: 1;
- height: 100%;
- margin-left: 20px;
-.config_data_submit {
- margin-top: 50px;
-}
-.config_data_item {
- width: 100%;
- display: flex;
- flex-direction: column;
- margin-bottom: 30px;
-&:last-child {
- margin: 0 !important;
- }
-.config_data_item_label {
- font-size: 16px;
- font-weight: 500;
- color: #222222;
- margin-bottom: 20px;
-span {
- font-size: 12px;
- font-weight: 400;
- color: #999999;
- margin-left: 10px;
-}
-}
-.config_data_item_reviewed {
- width: 100%;
- margin-top: 20px;
-.config_data_item_reviewed_r {
- margin-top: 10px;
- width: 100%;
- display: flex;
- align-items: center;
-span {
- flex-shrink: 0;
- font-size: 14px;
- font-weight: 400;
- color: #666666;
-}
-}
-.config_data_item_reviewed_label {
- display: flex;
- align-items: center;
-span {
-&:nth-child(1) {
- font-size: 14px;
- font-weight: 400;
- color: #222222;
- }
-&:nth-child(2) {
- font-size: 12px;
- font-weight: 400;
- color: #999999;
- margin-left: 8px;
- }
-}
-}
-}
-}
-}
-}
+
.config_data_item_reviewed_content {
width: 400px;
margin-top: 10px;
@@ -665,46 +613,62 @@
display: flex;
align-items: flex-start;
flex-wrap: wrap;
-.add {
- font-size: 12px;
- font-weight: 400;
- color: #435ebe;
- cursor: pointer;
- margin-top: 3px;
+
+ .add {
+ font-size: 12px;
+ font-weight: 400;
+ color: #435ebe;
+ cursor: pointer;
+ margin-top: 3px;
+ }
+
+ .config_data_item_reviewed_content_item {
+ padding: 3px 5px;
+ background: #f4f7fc;
+ border-radius: 2px;
+ box-sizing: border-box;
+ margin-right: 10px;
+ margin-bottom: 10px;
+
+ span {
+ font-size: 12px;
+ font-weight: 400;
+ color: #333333;
+ }
+
+ i {
+ color: #949ba2;
+ margin-left: 10px;
+ cursor: pointer;
+ }
+ }
}
-.config_data_item_reviewed_content_item {
- padding: 3px 5px;
- background: #f4f7fc;
- border-radius: 2px;
- box-sizing: border-box;
- margin-right: 10px;
- margin-bottom: 10px;
-span {
- font-size: 12px;
- font-weight: 400;
- color: #333333;
-}
-i {
- color: #949ba2;
- margin-left: 10px;
- cursor: pointer;
-}
-}
-}
+
.staff_modal {
display: flex;
-.left {
- width: 300px;
- margin-right: 20px;
-}
-.transfer {
- height: 600px;
-::v-deep .el-transfer-panel__body {
- height: 500px;
-}
-::v-deep .el-transfer-panel__list.is-filterable {
- height: 480px;
-}
-}
+
+ .left {
+ width: 240px;
+ margin-right: 20px;
+ }
+
+ .transfer {
+ height: 600px;
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ ::v-deep .el-transfer-panel{
+ flex: 1;
+ height: 100%;
+ }
+ ::v-deep .el-transfer-panel__body {
+ height: 500px;
+ }
+
+ ::v-deep .el-transfer-panel__list.is-filterable {
+ height: 480px;
+ }
+ }
}
</style>
diff --git a/admin/src/layouts/TableLayout1.vue b/admin/src/layouts/TableLayout1.vue
index dd2e38d..56992b0 100644
--- a/admin/src/layouts/TableLayout1.vue
+++ b/admin/src/layouts/TableLayout1.vue
@@ -8,10 +8,10 @@
</div>-->
<Profile :roles="roles" :permissions="permissions">
<div style="width: 100%; height: 100%; padding: 0 16px; box-sizing: border-box; display: flex; align-items: center; justify-content: space-between;">
- <div style="width: 300px; height: 100%; flex-shrink: 0; background: #ffffff;">
+ <div style="width: 240px; height: 100%; flex-shrink: 0; background: #ffffff;">
<slot name="menu"></slot>
</div>
- <div style="width: calc(100% - 310px); height: 100%">
+ <div style="width: calc(100% - 250px); height: 100%">
<!-- 鎼滅储琛ㄥ崟閮ㄥ垎 -->
<div class="table-search-form" style="padding: 0 !important;">
<div class="form-wrap">
diff --git a/admin/src/views/platform/LogisticsRecord/leaveAuth.vue b/admin/src/views/platform/LogisticsRecord/leaveAuth.vue
index 688c2ef..032b282 100644
--- a/admin/src/views/platform/LogisticsRecord/leaveAuth.vue
+++ b/admin/src/views/platform/LogisticsRecord/leaveAuth.vue
@@ -122,7 +122,7 @@
{
filed: 'selDate',
type: 'datetimerange',
- label: '鎿嶄綔鏃堕棿',
+ label: '浣滀笟瀹屾垚鏃堕棿鎼滅储',
pickerOptions: {}
},
{
diff --git a/admin/src/views/platform/LogisticsRecord/waybillQuery.vue b/admin/src/views/platform/LogisticsRecord/waybillQuery.vue
new file mode 100644
index 0000000..e9cb826
--- /dev/null
+++ b/admin/src/views/platform/LogisticsRecord/waybillQuery.vue
@@ -0,0 +1,181 @@
+<template>
+ <div class="main_app">
+ <QueryForm v-model="filters" :query-form-config="queryFormConfig" @changeForm='changeForm' @handleQuery="getList(1)"
+ @clear="clear">
+ </QueryForm>
+ <div class="pt16">
+ <el-button :loading="exLoading" @click="handleEx"
+ v-permissions="['business:platformjob:exportExcel']">瀵煎嚭</el-button>
+ </div>
+ <el-table class="mb20" v-loading="loading" :data="list" stripe>
+ <el-table-column prop="billCode" label="濮撳悕" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="carCodeFront" label="鎵嬫満鍙�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="taskOrigin" label="钀ラ攢鍖哄煙" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="carrierName" label="澶囨敞" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="driverName" label="鏈�鍚庢洿鏂版椂闂�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="name" label="鎿嶄綔" min-width="120" align="center" fixed="right" show-overflow-tooltip>
+ <template v-slot="scope">
+ <el-button v-if="scope.row.status == '12'" type="text" class="red" v-permissions="['business:platformjob:delete']"
+ @click="handleDel(scope.row)">鍒犻櫎</el-button>
+ <el-button v-if="scope.row != 12" type="text" v-permissions="['business:platformjob:query']"
+ @click="handleDetail(scope.row)">缂栬緫</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+ <!-- -->
+ <!-- -->
+ <WaybillDetailRef v-if="isShowDetail" ref="WaybillDetailRef" />
+ </div>
+</template>
+
+<script>
+import Pagination from '@/components/common/Pagination'
+import QueryForm from '@/components/common/QueryForm'
+import { platformJobPage, platformJobExport, platformJobDel } from '@/api'
+import { statusMap } from '../config'
+import WaybillDetailRef from "../components/WaybillDetail.vue"
+import GlobalWindow from '@/components/common/GlobalWindow'
+import UploadFaceImg from '@/components/common/UploadFaceImg'
+import { Message } from 'element-ui'
+import dayjs from 'dayjs'
+export default {
+ components: {
+ Pagination,
+ QueryForm,
+ WaybillDetailRef,
+ GlobalWindow,
+ UploadFaceImg
+ },
+ data() {
+ return {
+ statusMap,
+ isShowDetail: false,
+ exLoading: false,
+ loading: false,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0
+ },
+ filters: {
+ selDate: [],
+ fastdate: 0
+ },
+ list: [],
+ queryFormConfig: {
+ formItems: [
+ {
+ filed: 'name',
+ type: 'input',
+ label: '濮撳悕'
+ },
+ {
+ filed: 'phone',
+ type: 'input',
+ label: '鎵嬫満鍙�'
+ }
+ ],
+ online: true
+ },
+ }
+ },
+ created() {
+ this.changeRadio('0')
+ this.getList()
+ },
+ methods: {
+ changeRadio(day) {
+ const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59']
+ this.$set(this.filters, 'selDate', arr)
+ this.getList()
+ },
+ changeForm(str) {
+ if (str === 'selDate') {
+ this.$set(this.filters, 'fastdate', null)
+ this.getList()
+ }
+ },
+ getList(page) {
+ const { pagination, filters } = this
+ this.loading = true
+ platformJobPage({
+ model: {
+ ...filters,
+ jobType: '0',
+ createDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
+ createDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
+ },
+ capacity: pagination.pageSize,
+ page: page || pagination.page,
+ }).then(res => {
+ this.loading = false
+ this.list = res.records || []
+ this.list.forEach(item => {
+ item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
+ item.taskOrigin = 'WMS鑾峰彇'
+ })
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+ handleDel(row) {
+ this.$dialog.exportConfirm('纭鍒犻櫎鍚楋紵').then(() => {
+ platformJobDel(row.id).then(res => {
+ Message.success('鍒犻櫎鎴愬姛')
+ this.getList()
+ })
+ })
+ },
+ handleEx() {
+ this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
+ .then(() => {
+ this.exLoading = true
+ platformJobExport({
+ page: this.pagination.page,
+ capacity: 1000000,
+ jobType: '0',
+ model: this.filters
+ })
+ .then(response => {
+ this.download(response)
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.exLoading = false
+ })
+ })
+ },
+ clear() {
+ this.pagination.page = 1
+ this.filters = {
+ selDate: [],
+ fastdate: 0
+ }
+ this.getList()
+ },
+ handleDetail(row) {
+ this.isShowDetail = true
+ this.$nextTick(() => {
+ this.$refs.WaybillDetailRef.isShowModal = true
+ this.$refs.WaybillDetailRef.id = row.id
+ this.$refs.WaybillDetailRef.getDetail()
+ })
+ },
+ handleSizeChange(capacity) {
+ this.pagination.pageSize = capacity
+ }
+ }
+}
+</script>
+<style lang="scss" scoped>
+.param_title {
+ font-size: 18px;
+ font-weight: 600;
+ color: #000000;
+ margin-bottom: 15px;
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/platform/components/WaybillDetail.vue b/admin/src/views/platform/components/WaybillDetail.vue
index 066ef82..546ce85 100644
--- a/admin/src/views/platform/components/WaybillDetail.vue
+++ b/admin/src/views/platform/components/WaybillDetail.vue
@@ -27,7 +27,16 @@
<div class="title">鍚堝悓鍒楄〃</div>
<div class="content">
<div class="item" v-for="item in info.wmsJobContractVOList">
- <div class="contract">鍚堝悓鍙凤細{{ item.contractCode }}</div>
+ <div class="contract">
+ <span>鍚堝悓鍙凤細{{ item.contractCode }}</span>
+ <div>
+ <span class="scs" v-if="item.platformWmsDetailList[0].status == 1">WMS浣滀笟宸插畬鎴�</span>
+ <span class="pad" v-if="item.platformWmsDetailList[0].status == 0">WMS浣滀笟鏈畬鎴�</span>
+ <span class="err" v-if="item.platformWmsDetailList[0].status == 2">WMS浣滀笟宸插彇娑�</span>
+ <span class="scs" v-if="item.platformWmsDetailList[0].lockStatus == 1">鐢靛瓙閿佸凡涓婇攣</span>
+ <span class="pad" v-if="item.platformWmsDetailList[0].lockStatus == 0">鐢靛瓙閿佹湭涓婇攣</span>
+ </div>
+ </div>
<div class="placeholder6">鏀惰揣鍦帮細{{ item.address }}</div>
<div class="list">
<div class="line" v-for="line in item.platformWmsDetailList">
@@ -151,6 +160,17 @@
font-size: 15px;
color: #279baa;
margin-bottom: 4px;
+ display: flex;
+ justify-content: space-between;
+ .scs{
+ color: #00ba67;
+ }
+ .pad{
+ color: #f19c3f;
+ }
+ .err{
+ color: red;
+ }
}
.line {
diff --git a/admin/src/views/platform/platformGroup.vue b/admin/src/views/platform/platformGroup.vue
index 52fb60f..62b3061 100644
--- a/admin/src/views/platform/platformGroup.vue
+++ b/admin/src/views/platform/platformGroup.vue
@@ -26,8 +26,8 @@
<span v-if="row.type == 2">甯傚叕鍙稿嵏璐�</span>
</template>
</el-table-column>
- <el-table-column prop="waitCallTime" label="鍙彿绛夊緟鏃堕棿锛堝垎閽燂級" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="editDate" label="鏈�杩戞洿鏂版椂闂�" min-width="140px" align="center"></el-table-column>
+ <el-table-column prop="waitCallTime" label="鍙彿绛夊緟鏃堕棿锛堝垎閽燂級" min-width="140px" align="center"></el-table-column>
+ <el-table-column prop="editDate" label="鏈�杩戞洿鏂版椂闂�" min-width="150px" align="center"></el-table-column>
<el-table-column
v-if="containPermissions(['business:platformgroup:update', 'business:platformgroup:delete'])"
label="鎿嶄綔"
diff --git a/admin/src/views/system/smsMessage.vue b/admin/src/views/system/smsMessage.vue
new file mode 100644
index 0000000..9b1052e
--- /dev/null
+++ b/admin/src/views/system/smsMessage.vue
@@ -0,0 +1,132 @@
+<template>
+ <div class="main_app">
+ <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)"
+ @clear="clear">
+ </QueryForm>
+ <!-- <div class="pt16">
+ <el-button :loading="exLoading" @click="handleEx"
+ v-permissions="['business:platformjob:exportExcel']">瀵煎嚭</el-button>
+ </div> -->
+ <el-table class="mb20" v-loading="loading" :data="list" stripe>
+ <el-table-column prop="name" label="娑堟伅鏍囬" min-width="160" show-overflow-tooltip />
+ <el-table-column prop="code" label="娑堟伅缂栫爜" min-width="150" show-overflow-tooltip />
+ <el-table-column prop="content" label="娑堟伅妯℃澘" min-width="300" show-overflow-tooltip />
+ <el-table-column label="鐘舵��" width="120" align="center" fixed="right">
+ <template v-slot="scope">
+ <el-switch v-model="scope.row.status" @change="changeStatus(scope.row)" :active-value="0" :inactive-value="1">
+ </el-switch>
+ </template>
+ </el-table-column>
+ </el-table>
+ <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+ </div>
+</template>
+
+<script>
+import Pagination from '@/components/common/Pagination'
+import QueryForm from '@/components/common/QueryForm'
+import { getSmsList, SmsStatusUpdate } from '@/api/system/sms'
+
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { Message } from 'element-ui'
+import dayjs from 'dayjs'
+export default {
+ components: {
+ Pagination,
+ QueryForm,
+ GlobalWindow,
+ },
+ data() {
+ return {
+ isShowDetail: false,
+ exLoading: false,
+ loading: false,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0
+ },
+ filters: {},
+ list: [],
+ queryFormConfig: {
+ formItems: [
+ {
+ filed: 'name',
+ type: 'input',
+ label: '娑堟伅鏍囬'
+ },
+ {
+ filed: 'status',
+ type: 'select',
+ label: '鍚敤鐘舵��',
+ options: [
+ { value: 0, label: '鍚敤' },
+ { value: 1, label: '绂佺敤' },
+ ]
+ },
+ {
+ filed: 'code',
+ type: 'input',
+ label: '娑堟伅缂栫爜'
+ }
+ ],
+ online: true
+ },
+ }
+ },
+ created() {
+ this.getList()
+ },
+ methods: {
+ changeStatus(row) {
+ console.log('row', row);
+ SmsStatusUpdate({
+ ...row
+ }).then(res => {
+ Message.success('鐘舵�佹洿鏂版垚鍔�')
+ }, () => {
+ this.getList()
+ })
+ },
+ getList(page) {
+ const { pagination, filters } = this
+ this.loading = true
+ getSmsList({
+ model: {
+ ...filters,
+ },
+ capacity: pagination.pageSize,
+ page: page || pagination.page,
+ }).then(res => {
+ this.loading = false
+ this.list = res.records || []
+ this.list.forEach(item => {
+ item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
+ item.taskOrigin = 'WMS鑾峰彇'
+ })
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+
+
+ clear() {
+ this.pagination.page = 1
+ this.filters = {}
+ this.getList()
+ },
+ handleSizeChange(capacity) {
+ this.pagination.pageSize = capacity
+ }
+ }
+}
+</script>
+<style lang="scss" scoped>
+.param_title {
+ font-size: 18px;
+ font-weight: 600;
+ color: #000000;
+ margin-bottom: 15px;
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/vehicle/components/OperaCategoryWindow.vue b/admin/src/views/vehicle/components/OperaCategoryWindow.vue
index feaead6..962c1b8 100644
--- a/admin/src/views/vehicle/components/OperaCategoryWindow.vue
+++ b/admin/src/views/vehicle/components/OperaCategoryWindow.vue
@@ -1,13 +1,13 @@
<template>
<GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" width="600px" @close="close" @confirm="confirm">
<el-form :model="form" ref="form" :rules="rules">
- <el-form-item label="涓�绾у垎绫�" prop="parentId">
+ <el-form-item label="鎵�灞炲垎绫�" prop="parentId">
<el-select v-model="form.parentId" placeholder="涓嶅~涓哄垯涓�绾у垎绫�">
<el-option v-for="op in dataList" :key="op.id" :label="op.name" :value="op.id"></el-option>
</el-select>
</el-form-item>
- <el-form-item label="浜岀骇鍒嗙被" prop="name">
- <el-input v-model="form.name" placeholder="璇疯緭鍏ヤ簩绾у垎绫�" v-trim />
+ <el-form-item label="鍒嗙被鍚嶇О" prop="name">
+ <el-input v-model="form.name" placeholder="璇疯緭鍏ュ垎绫诲悕绉�" v-trim />
</el-form-item>
<!-- <el-form-item label="鐘舵��" prop="status">
<el-select v-model="form.status" placeholder="璇烽�夋嫨">
diff --git a/screen/src/views/PlatformCall.vue b/screen/src/views/PlatformCall.vue
index a3ed50c..dbe977f 100644
--- a/screen/src/views/PlatformCall.vue
+++ b/screen/src/views/PlatformCall.vue
@@ -1,5 +1,5 @@
<script setup>
-import { ref, onMounted } from 'vue'
+import { ref, onMounted, nextTick } from 'vue'
import dayjs from 'dayjs'
import UQRCode from 'uqrcodejs'
import { getLargeScreenData } from '@/utils/request'
@@ -22,7 +22,8 @@
if (res.data && res.data.allList) {
contentList.value = res.data.allList.map(item => {
if (item.optTime) {
- item.optTimeTemp = dayjs.duration(item.optTime).format('HH灏忔椂mm鍒�')
+ item.optTimeTemp = dayjs(item.optTime).format('HH:mm')
+ // item.optTimeTemp = dayjs.duration(Math.abs(new Date().getTime() - item.optTime)).format('HH:mm')
}
return item
})
@@ -106,7 +107,7 @@
var qr = new UQRCode()
// 璁剧疆浜岀淮鐮佸唴瀹�
qr.data = qrcode.value
- qr.size = 220
+ qr.size = 210
// 璋冪敤鍒朵綔浜岀淮鐮佹柟娉�
qr.make()
var canvas = document.getElementById("qrcode")
@@ -139,6 +140,51 @@
newDate.value = dayjs().format('YYYY-MM-DD')
newTime.value = dayjs().format('HH:mm')
}, 1000)
+
+const isFullscreen = ref(false);
+const handleFull = () => {
+ if(!isFullscreen.value){
+ handleFullScreen()
+ }else{
+ cancelFullscreen()
+ }
+}
+setTimeout(() => {
+ handleFull()
+}, 1000)
+const handler = () => {
+ isFullscreen.value = document.fullscreenElement !== null;
+ if (!isFullscreen) {
+ // 閫�鍑哄叏灞忔椂鍊欒В闄ょ洃鍚紝涓嶇劧姣忔鐩戝惉閮戒細娣诲姞涓�娆$粦瀹�
+ document.removeEventListener("fullscreenchange", handler);
+ }
+};
+document.addEventListener("fullscreenchange", handler);
+const handleFullScreen = () => {
+ let elem = document.documentElement
+ // 灏濊瘯鍚敤鍏ㄥ睆妯″紡
+ if (elem.requestFullscreen) {
+ elem.requestFullscreen()
+ } else if (elem.mozRequestFullScreen) { // 鍏煎 Firefox
+ elem.mozRequestFullScreen()
+ } else if (elem.webkitRequestFullscreen) { // 鍏煎 Chrome, Safari 鍜� Opera
+ elem.webkitRequestFullscreen()
+ } else if (elem.msRequestFullscreen) { // 鍏煎 IE/Edge
+ elem.msRequestFullscreen()
+ }
+}
+function cancelFullscreen() {
+ if (document.exitFullscreen) {
+ document.exitFullscreen();
+ } else if (document.msExitFullscreen) {
+ document.msExitFullscreen();
+ } else if (document.mozCancelFullScreen) {
+ document.mozCancelFullScreen();
+ } else if (document.webkitExitFullscreen) {
+ document.webkitExitFullscreen();
+ }
+}
+
</script>
<template>
<div class="main_app">
@@ -203,14 +249,14 @@
</div>
<div class="qrcode_wrap">
<div class="qrcode">
- <canvas id="qrcode" width="220" height="220"></canvas>
+ <canvas id="qrcode" width="210" height="210"></canvas>
</div>
<div class="title">璇锋壂鐮佺鍒�</div>
</div>
</div>
</div>
<div class="main_footer">
- <img src="@/assets/images/call/ic_news@2x.png" class="icon" alt="">
+ <img @click="handleFull" src="@/assets/images/call/ic_news@2x.png" class="icon" alt="">
<div class="title">璇锋牴鎹槦鍒楁彁绀轰俊鎭紝渚濇绛夊�欒繘鍦�</div>
<div class="icon"></div>
</div>
@@ -218,9 +264,10 @@
</template>
<style lang="scss" scoped>
-div{
+div {
box-sizing: border-box;
}
+
.main_app {
color: #fff;
position: fixed;
@@ -231,10 +278,10 @@
overflow: hidden;
background-color: #092030;
position: relative;
- z-index: -2;
display: flex;
flex-direction: column;
justify-content: space-between;
+
.main_header {
width: 100%;
height: 112px;
@@ -243,7 +290,7 @@
align-items: center;
justify-content: space-between;
padding: 0 50px;
-
+ z-index: 11;
.title {
font-weight: 800;
font-size: 48px;
@@ -288,15 +335,18 @@
display: flex;
padding: 30px 20px;
position: relative;
+
.list {
flex: 5;
margin-right: 20px;
display: flex;
flex-direction: column;
+
.line {
display: flex;
align-items: center;
- flex: 1;
+ height: 11.1%;
+
&:nth-of-type(2n) {
background: rgba(255, 255, 255, 0);
}
@@ -311,13 +361,15 @@
align-items: center;
flex-direction: column;
font-weight: 500;
- font-size: 36px;
+ font-size: 30px;
flex: 10;
height: 100%;
- .time_place{
+
+ .time_place {
font-weight: 500;
- font-size: 24px;
+ font-size: 22px;
}
+
.status {
/* padding: 0 28px; */
width: 170px;
@@ -348,8 +400,10 @@
}
.header {
- font-size: bold;
- font-size: 40px;
+ .item {
+ font-size: bold;
+ font-size: 36px;
+ }
background: linear-gradient(180deg, #00B5D1 0%, #003C57 100%) !important;
}
}
@@ -359,13 +413,14 @@
flex: 2;
display: flex;
flex-direction: column;
- border: 1px solid red;
+
.tip_wrap {
margin-bottom: 20px;
width: 100%;
position: relative;
/* flex-shrink: 0; */
flex: 1;
+
.current_plat {
display: flex;
flex-direction: column;
@@ -373,14 +428,14 @@
justify-content: center;
padding: 30px 40px;
color: #FFA000;
-
+ height: 100%;
.id_card {
- font-weight: bold;
+ font-weight: 500;
font-size: 68px;
}
.no {
- margin: 10px 0;
+ margin: 8px 0;
font-weight: 500;
font-size: 52px;
}
@@ -392,24 +447,27 @@
.plat {
color: #fff;
- margin: 0 10px;
+ margin: 0 6px;
}
}
.empty {
- padding: 30px 40px;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
font-weight: 500;
- font-size: 30px;
-
+ font-size: 26px;
+ height: 100%;
.title {
text-align: center;
font-weight: bold;
- font-size: 36px;
- margin-bottom: 20px;
+ font-size: 32px;
+ margin-bottom: 16px;
}
.line {
- margin-bottom: 10px;
+ margin-bottom: 8px;
+ padding-left: 32px;
}
}
@@ -446,9 +504,9 @@
}
.title {
- margin-top: 20px;
+ margin-top: 16px;
font-weight: bold;
- font-size: 34px;
+ font-size: 28px;
color: #111111;
}
}
diff --git a/screen/vite.config.js b/screen/vite.config.js
index ed0cd2f..fe6a483 100644
--- a/screen/vite.config.js
+++ b/screen/vite.config.js
@@ -16,6 +16,9 @@
'@': fileURLToPath(new URL('./src', import.meta.url))
}
},
+ build: {
+ outDir: 'platform_screen'
+ },
server: {
proxy: {
"/gateway_interface": {
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
index 18b274a..ab48930 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -317,6 +317,35 @@
}
}
+
+ /**
+ * 鑾峰彇X鏈堜唤涔嬪墠鐨勬湀浠芥暟
+ * @param currentDate
+ * @param month
+ * @return
+ */
+ public static List<String> getBeforMonth(Date currentDate , Integer month) {
+ SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");
+ SimpleDateFormat sdfMonth = new SimpleDateFormat("MM");
+ int currentYear = Integer.parseInt(sdfYear.format(currentDate));
+ int currentMonth = Integer.parseInt(sdfMonth.format(currentDate));
+ List<String> list = new ArrayList<>();
+
+ System.out.println("杩�12涓湀浠斤細");
+ for (int i = 0; i < month; i++) {
+ int tempYear = currentYear;
+ int tempMonth = currentMonth - i;
+
+ if (tempMonth <= 0) {
+ tempYear--;
+ tempMonth += 12;
+ }
+ list.add(tempYear +"-" + StringUtils.leftPad(Integer.toString(tempMonth),2,"0"));
+ }
+ return list;
+ }
+
+
/**
* Descrption:鍙栧緱褰撳墠鏃ユ湡鏃堕棿,鏍煎紡涓�:YYYYMMDDHHMISS
*
@@ -2775,16 +2804,18 @@
// System.out.println(DateUtil.afterMinutesDate(-5));
- Date startTime = DateUtil.StringToDate("2024-05-01 08:00:00" ,"yyyy-MM-dd HH:mm:ss");
- Date endTime = DateUtil.StringToDate("2024-05-01 17:00:00" ,"yyyy-MM-dd HH:mm:ss");
- Long intervalTime = 35L;
+ DateUtil.getBeforMonth(new Date(),12);
-
- DateUtil.checkDateInterval( startTime.toInstant()
- .atZone(ZoneId.systemDefault())
- .toLocalDateTime(), endTime.toInstant()
- .atZone(ZoneId.systemDefault())
- .toLocalDateTime(),intervalTime);
+// Date startTime = DateUtil.StringToDate("2024-05-01 08:00:00" ,"yyyy-MM-dd HH:mm:ss");
+// Date endTime = DateUtil.StringToDate("2024-05-01 17:00:00" ,"yyyy-MM-dd HH:mm:ss");
+// Long intervalTime = 35L;
+//
+//
+// DateUtil.checkDateInterval( startTime.toInstant()
+// .atZone(ZoneId.systemDefault())
+// .toLocalDateTime(), endTime.toInstant()
+// .atZone(ZoneId.systemDefault())
+// .toLocalDateTime(),intervalTime);
} catch (Exception ex) {
ex.printStackTrace();
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java b/server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java
index 4a0b2ab..e1af26d 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java
@@ -19,31 +19,32 @@
public class SmsConstants {
- public interface SmsObjectType{
- String inventCode = "0"; //楠岃瘉鐮�
- String visit= "1"; //璁垮鐢宠
- String visitReport = "2"; //璁垮鎶ュ
- String hiddenDanger ="3";//闅愭偅闅忔墜鎷�
- String carUse ="4";//鐢ㄨ溅鐢宠
- String meeting ="5";//浼氳棰勭害
- String platformBook ="6";//鐗╂祦杞﹂绾�
- String platformJob ="7";//鏈堝彴浣滀笟
- }
+
+
+ public static final String inventCode ="inventCode" ;
+ public static final String visit ="visit" ;
+ public static final String visitReport ="visitReport" ;
+ public static final String hiddenDanger ="hiddenDanger" ;
+ public static final String carUse ="carUse" ;
+ public static final String meeting ="meeting" ;
+ public static final String platformBook ="platformBook" ;
+ public static final String platformJob ="platformJob" ;
+
/**
* 璁垮鐢宠
*/
public interface visitContent{
//璁垮鐢宠-閫氱煡锛堢粰瀹℃壒浜猴級
- String visitNotice = "鎮ㄦ湁涓�鏉°�恵璁垮鐢宠}銆戦渶瑕佸鐞嗭紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪嬨��";
+ String visitNotice = "visitNotice";
//璁垮鐢宠-瀹℃壒閫氳繃閫氱煡锛堢粰鐢宠浜猴級锛氥��
- String visitAuditSuccess = "鎮ㄧ殑銆恵璁垮鐢宠}銆戝凡缁忓鎵归�氳繃锛岃浜巤棰勭害鍏ュ洯寮�濮嬫椂闂磢鍓嶅線闂ㄥ崼瀹よ瀹㈡満绛惧埌鍏ュ洯锛屽鏈夌枒闂紝璇疯仈绯昏璁夸汉";
+ String visitAuditSuccess = "visitAuditSuccess";
//璁垮鐢宠-瀹℃壒椹冲洖閫氱煡锛堢粰鐢宠浜猴級锛氥��
- String visitAuditFail = "鎮ㄧ殑銆恵璁垮鐢宠}銆戝凡琚┏鍥烇紝椹冲洖鍘熷洜涓猴細{椹冲洖鍘熷洜}銆傚鏈夌枒闂紝璇疯仈绯昏璁夸汉銆�";
+ String visitAuditFail = "visitAuditFail";
//璁垮鐢宠-瓒呮椂鏈绂�-閫氱煡锛堢粰鐢宠浜猴級锛�
- String visitTimeOutSignOut = "鎮ㄧ殑銆愯瀹㈢敵璇枫�戝凡浜巤鍒版湡鏃堕棿}鍒版湡锛岃鍙婃椂绂诲満骞跺墠寰�闂ㄥ崼瀹よ瀹㈡満绛剧锛屽鏈夌枒闂紝璇疯仈绯昏璁夸汉";
+ String visitTimeOutSignOut = "visitTimeOutSignOut";
//璁垮鐢宠-瓒呮椂鏈绂�-閫氱煡锛堢粰鎸囧畾鎺ユ敹浜猴級
- String visitTimeOutSignOutNum = "浠婃棩杩樻湁{鏈绂绘暟閲弣涓瀹㈡湭绛剧锛岃鍓嶅線PC绔煡鐪嬭缁嗕俊鎭��";
+ String visitTimeOutSignOutNum = "visitTimeOutSignOutNum";
}
@@ -53,15 +54,15 @@
*/
public interface visitReportingContent{
//璁垮鎶ュ-閫氱煡锛堢粰瀹℃壒浜猴級
- String visitReportingNotice = "鎮ㄦ湁涓�鏉°�恵璁垮鎶ュ}銆戦渶瑕佸鐞嗭紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪嬨��";
+ String visitReportingNotice = "visitReportingNotice";
//璁垮鎶ュ-瀹℃壒閫氳繃閫氱煡锛堢粰鐢宠浜猴級锛氥��
- String visitReportingAuditSuccess = "鎮ㄧ殑銆恵璁垮鎶ュ}銆戝凡缁忓鎵归�氳繃锛岃閫氱煡璁垮浜巤棰勭害鍏ュ洯寮�濮嬫椂闂磢鍚庝箻鍧恵杞︾墝鍙穧鍏ュ洯锛屽鏈夌枒闂紝璇疯仈绯昏璁夸汉銆�";
+ String visitReportingAuditSuccess = "visitReportingAuditSuccess";
//璁垮鎶ュ-瀹℃壒椹冲洖閫氱煡锛堢粰鐢宠浜猴級锛氥��
- String visitReportingAuditFail = "鎮ㄧ殑銆恵璁垮鎶ュ}銆戝凡琚┏鍥烇紝椹冲洖鍘熷洜涓猴細{椹冲洖鍘熷洜}銆傚鏈夌枒闂紝璇疯仈绯诲鎵逛汉銆�";
+ String visitReportingAuditFail = "visitReportingAuditFail";
//璁垮鎶ュ-瓒呮椂鏈鍦�-閫氱煡锛堢粰鐢宠浜猴級锛�
- String visitReportingTimeOutSignOut = "鎮ㄧ殑銆愯瀹㈡姤澶囥�戝凡浜巤棰勭害鍏ュ洯缁撴潫鏃堕棿}鍒版湡锛岃鍙婃椂绂诲満锛屽鏈夌枒闂紝璇疯仈绯昏璁夸汉";
+ String visitReportingTimeOutSignOut = "visitReportingTimeOutSignOut";
//璁垮鎶ュ-瓒呮椂鏈鍦�-閫氱煡锛堢粰鎸囧畾鎺ユ敹浜猴級
- String visitReporting_time_out_sign_out_num = "浠婃棩杩樻湁{鏈绂绘暟閲弣涓瀹㈡姤澶囪溅杈嗘湭绂诲満锛岃鍓嶅線PC绔煡鐪嬭缁嗕俊鎭��";
+ String visitReportingTimeOutSignOutNum = "visitReportingTimeOutSignOutNum";
}
@@ -70,9 +71,9 @@
*/
public interface hiddenDangerContent{
//闅愭偅闅忔墜鎷�-閫氱煡锛堢粰澶勭悊浜猴級
- String hiddenDanger_deal_user = "鎮ㄦ湁涓�鏉°�恵闅愭偅闅忔墜鎷�-娑堥槻闅愭偅}銆戦渶瑕佸鐞嗭紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪�";
+ String hiddenDangerDealUser = "hiddenDangerDealUser";
//闅愭偅闅忔墜鎷�-澶勭悊瀹屾垚锛堢粰鐢宠浜猴級锛氥��
- String hiddenDanger_deal_over = "鎮ㄦ彁浜ょ殑銆恵闅愭偅闅忔墜鎷�-娑堥槻闅愭偅}銆戝凡缁忓鐞嗗畬姣曪紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪嬨��";
+ String hiddenDangerDealOver = "hiddenDangerDealOver";
}
@@ -81,13 +82,13 @@
*/
public interface carUseBookContent{
//鐭俊閫氱煡妯℃澘锛堢粰澶勭悊浜猴級
- String carUseBook_wait_audit = "鎮ㄦ湁涓�鏉°�恵鐢ㄨ溅鐢宠}銆戦渶瑕佸鐞嗭紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪嬨��";
+ String carUseBookWaitAudit = "carUseBookWaitAudit";
//鐢ㄨ溅鐢宠-瀹℃壒閫氳繃閫氱煡锛堢粰鐢宠浜猴級锛氥��
- String carUseBook_audit_success = "鎮ㄧ殑銆恵鐢ㄨ溅鐢宠}銆戝凡缁忓鎵归�氳繃锛屽嚭鍙戞椂闂翠负{鎻愪氦鐨勫嚭鍙戞椂闂磢锛岃鎸夋椂鐢ㄨ溅銆傚鐢ㄨ溅璁″垝鏈夊彉锛岃鍙婃椂鑱旂郴娲捐溅鍛樸��";
+ String carUseBookAuditSuccess = "carUseBookAuditSuccess";
//鐢ㄨ溅鐢宠-瀹℃壒椹冲洖閫氱煡锛堢粰鐢宠浜猴級锛氥��
- String carUseBook_audit_fail = "鎮ㄧ殑銆恵鐢ㄨ溅鐢宠}銆戝凡琚┏鍥烇紝椹冲洖鍘熷洜涓猴細{椹冲洖鍘熷洜}銆傚鏈夌枒闂紝璇疯仈绯绘淳杞﹀憳銆�";
+ String carUseBookAuditFail = "carUseBookAuditFail";
//鐢ㄨ溅鐢宠-瀹℃壒椹冲洖閫氱煡锛堢粰鐢宠浜猴級锛氥��
- String carUseBook_cancel = "鎮ㄧ殑銆恵鐢ㄨ溅鐢宠}銆戝凡琚彇娑堬紝鍙栨秷鍘熷洜涓猴細{鍙栨秷鍘熷洜}銆傚鏈夌枒闂紝璇疯仈绯绘淳杞﹀憳銆�";
+ String carUseBookCancel = "carUseBookCancel";
}
@@ -96,13 +97,13 @@
*/
public interface platformBookContent{
//鐭俊閫氱煡妯℃澘锛堢粰澶勭悊浜猴級
- String platformBook_wait_audit = "鎮ㄦ湁涓�鏉°�愯溅杈嗗叆鍥敵璇枫�戦渶瑕佸鐞嗭紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪嬨��";
+ String platformBookWaitAudit = "platformBookContent";
//鐗╂祦杞﹂绾�-瀹℃壒閫氳繃閫氱煡锛堢粰鐢宠浜猴級锛氥��
- String platformBook_audit_success = "鎮ㄧ殑銆愯溅杈嗗叆鍥敵璇枫�戝凡缁忓鎵归�氳繃锛屽叆鍥椂闂翠负2024-7-19 09:00锛岃鎻愬墠30鍒嗛挓鍓嶅線鐜板満绛惧埌銆傚璁″垝鏈夊彉锛岃鍙婃椂鑱旂郴瀹℃牳浜哄憳銆�";
+ String platformBookAuditSuccess = "platformBookAuditSuccess";
//鐗╂祦杞﹂绾�-瀹℃壒椹冲洖鐭俊閫氱煡妯℃澘锛堢粰鐢宠浜猴級
- String platformBook_audit_fail = "鎮ㄧ殑銆愯溅杈嗗叆鍥敵璇枫�戝凡琚┏鍥烇紝椹冲洖鍘熷洜涓猴細{椹冲洖鍘熷洜}銆傚鏈夌枒闂紝璇疯仈绯诲鏍镐汉鍛樸��";
+ String platformBookAuditFail = "platformBookAuditFail";
//鐗╂祦杞﹂绾�-鍏ュ洯棰勭害鍙栨秷鐭俊閫氱煡妯℃澘锛堢粰鐢宠浜猴級
- String carUseBook_cancel = "鎮ㄧ殑銆愯溅杈嗗叆鍥敵璇枫�戝凡琚彇娑堬紝鍙栨秷鍘熷洜涓猴細{鍙栨秷鍘熷洜}銆傚鏈夌枒闂紝璇疯仈绯诲鏍镐汉鍛樸��";
+ String carUseBookCancel = "carUseBookCancel";
}
@@ -111,25 +112,25 @@
*/
public interface platformJobContent{
// 杩愯緭浠诲姟涓嬭揪 锛堢粰鍙告満锛�
- String platformJob_new_job = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄦ湁涓�涓柊鐨勮繍杈撲换鍔★紝璇︾粏淇℃伅璇峰墠寰�寰俊鍏紬鍙锋煡鐪嬨��";
+ String platformJobNewJob = "platformJobNewJob";
//鐗╂祦杞︿綔涓�-杩愯緭浠诲姟涓鎻愰啋锛堢粰鍙告満锛夛細銆�
- String platformJob_stop_job = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄧ殑杩愯緭浠诲姟宸茶鍙栨秷锛岃缁嗕俊鎭鍓嶅線寰俊鍏紬鍙锋煡鐪嬨��";
+ String platformJobStopJob = "platformJobStopJob";
//鐗╂祦杞﹂绾�-鍙彿鍏ュ洯绛夊緟锛堢粰鍙告満锛�
- String platformBook_call_in = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝璇峰湪10鍒嗛挓鍐咃紝鍓嶅線鍥尯绛夊緟鍖虹瓑寰呭彨鍙蜂綔涓氥��";
+ String platformBookCallIn = "platformBookCallIn";
//鐗╂祦杞﹂绾�-鏈堝彴鍙彿锛堢粰鍙告満锛�
- String platformBook_sing_in = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝璇峰湪10鍒嗛挓鍐咃紝鍓嶅線{鏈堝彴鍚嶇О}杩涜浣滀笟銆�";
+ String platformBookSingIn = "platformBookSingIn";
//鐗╂祦杞﹂绾�-鏈堝彴鍙彿杩囧彿锛堢粰鍙告満锛�
- String platformBook_over_num = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄧ殑浠诲姟宸茶繃鍙凤紝璇烽噸鏂扮鍒版帓闃熺瓑寰呫��";
+ String platformBookOverNum = "platformBookOverNum";
//鐗╂祦杞﹂绾�-浣滀笟寮�濮嬶紙缁欏徃鏈猴級
- String platformBook_working = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄧ殑杞﹁締宸插湪{鏈堝彴鍚嶇О}寮�濮嬩綔涓氾紝璇烽殢鏃跺叧娉ㄤ綔涓氭儏鍐点��";
+ String platformBookWorking = "platformBookWorking";
//鐗╂祦杞﹂绾�-浣滀笟瀹屾垚锛堢粰鍙告満锛�
- String platformBook_finish = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄧ殑杞﹁締宸插湪{鏈堝彴鍚嶇О}瀹屾垚浣滀笟锛岃鍙婃椂椹剁鏈堝彴銆�";
+ String platformBookFinish = "platformBookFinish";
//鐗╂祦杞﹂绾�-浣滀笟寮傚父鎸傝捣锛堢粰鍙告満锛�
- String platformBook_error = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄥ湪{鏈堝彴鍚嶇О}鐨勪綔涓氫换鍔″凡缁忚寮傚父鎸傝捣锛岃鍙婃椂鍏虫敞鍏蜂綋鎯呭喌";
+ String platformBookError = "platformBookError";
//鐗╂祦杞﹂绾�-鏈堝彴杞Щ锛堢粰鍙告満锛�
- String platformBook_move = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄥ湪{鏈堝彴鍚嶇О}鐨勪綔涓氫换鍔″凡缁忓凡琚浆绉昏嚦{杞Щ鍚庢湀鍙板悕绉皚锛岃鍙婃椂鍏虫敞鍙彿鎯呭喌銆�";
+ String platformBookMove = "platformBookMove";
//鐗╂祦杞﹂绾�-鏈堝彴鍋滈潬瓒呮椂锛堢粰鍙告満锛�
- String platformBook_time_out = "銆愯溅鐗屽彿銆戣溅涓绘偍濂斤紝鎮ㄥ湪{鏈堝彴鍚嶇О}宸插仠闈犺秴鏃讹紝璇峰敖蹇┒绂讳互鍏嶅奖鍝嶅悗缁綔涓氥��";
+ String platformBookTimeOut = "platformBookTimeOut";
}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/HkOpenApiController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/HkOpenApiController.java
index f1f9590..b9135cf 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/HkOpenApiController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/HkOpenApiController.java
@@ -123,10 +123,27 @@
@LoginNoRequired
@PreventRepeat
+ @ApiOperation("銆愮敤姘撮噺銆戣繎12涓湀鐢ㄦ按閲忎俊鎭垪琛�")
+ @PostMapping("/water/lastMonthsDataList")
+ public ApiResponse<List<PlatformLastMonthListResponse>> lastMonthsWaterList() {
+ return ApiResponse.success(platformWaterGasService.getPlatformLastMonthListResponse(Constants.ZERO));
+ }
+
+ @LoginNoRequired
+ @PreventRepeat
@ApiOperation("銆愮敤姘旈噺銆戞湰鏈堛�佷笂鏈堝拰鍘诲勾鍚屾湀")
@PostMapping("/gas/dataByMonth")
public ApiResponse<GasByMonthResponse> gasDataByMonth(@RequestBody GasByMonthRequest param) {
return ApiResponse.success(platformWaterGasService.gasDataByMonth(param));
+ }
+
+
+ @LoginNoRequired
+ @PreventRepeat
+ @ApiOperation("銆愮敤姘旈噺銆戣繎12涓湀鐢ㄦ皵閲忎俊鎭垪琛�")
+ @PostMapping("/gas/lastMonthsDataList")
+ public ApiResponse<List<PlatformLastMonthListResponse>> lastMonthsGasList () {
+ return ApiResponse.success(platformWaterGasService.getPlatformLastMonthListResponse(Constants.ONE));
}
@LoginNoRequired
@@ -151,7 +168,7 @@
@PreventRepeat
@ApiOperation("銆愭湀鍙般�戞湀鍙板綋鍓嶄綔涓氫俊鎭垪琛�")
@PostMapping("/platform/workingDataList")
- public ApiResponse<List<PlatformDataListResponse>> platformWorkingDataList(@RequestBody PlatformDataListRequest param) {
+ public ApiResponse<List<PlatformDataListResponse>> workingDataList(@RequestBody PlatformDataListRequest param) {
return ApiResponse.success(platformJobService.platformWorkingDataList(param));
}
@@ -159,7 +176,7 @@
@PreventRepeat
@ApiOperation("銆愭湀鍙般�戞湀鍙颁綔涓氳鎯呬俊鎭�")
@PostMapping("/platform/workDataInfo")
- public ApiResponse<PlatformDataInfoResponse> platformWorkingDataList(@RequestBody PlatformDataInfoRequest param) {
+ public ApiResponse<PlatformDataInfoResponse> workDataInfo(@RequestBody PlatformDataInfoRequest param) {
return ApiResponse.success(platformJobService.platformWorkingDataList(param));
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformWarnEventListResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformWarnEventListResponse.java
index 035da66..e86a4e8 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformWarnEventListResponse.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformWarnEventListResponse.java
@@ -19,6 +19,8 @@
private String title;
@ApiModelProperty(value = "鏃堕棿")
private Date createDate;
+ @ApiModelProperty(value = "杞︾墝鍙�")
+ private String carCode;
@ApiModelProperty(value = "浜嬩欢鍐呭璇存槑")
private String content;
@ApiModelProperty(value = "鏈堝彴鍚嶇О")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWaterGasService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWaterGasService.java
index 100767b..2aa2929 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWaterGasService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWaterGasService.java
@@ -8,6 +8,7 @@
import com.doumee.dao.openapi.request.GasByMonthRequest;
import com.doumee.dao.openapi.request.WaterByMonthRequest;
import com.doumee.dao.openapi.response.GasByMonthResponse;
+import com.doumee.dao.openapi.response.PlatformLastMonthListResponse;
import com.doumee.dao.openapi.response.WaterByMonthResponse;
import java.util.List;
@@ -107,4 +108,6 @@
WaterByMonthResponse waterDataByMonth(WaterByMonthRequest param);
GasByMonthResponse gasDataByMonth(GasByMonthRequest param);
+
+ List<PlatformLastMonthListResponse> getPlatformLastMonthListResponse(Integer type);
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
index 9f7d3e3..a5e7686 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -98,6 +98,8 @@
private PlatformLogMapper platformLogMapper;
@Autowired
private PlatformReasonMapper platformReasonMapper;
+ @Autowired
+ private PlatformGroupMapper platformGroupMapper;
@Autowired
@@ -1513,12 +1515,25 @@
platformBooks.setEditDate(new Date());
platformBooks.setEditor(approveDTO.getLoginUserInfo().getMemberId());
PlatformReason platformReason = platformReasonMapper.selectById(platformBooks.getReasonId());
+ if(Objects.isNull(platformReason)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍏ュ洯鍘熷洜鏁版嵁");
+ }
+ PlatformGroup platformGroup = platformGroupMapper.selectById(platformReason.getGroupId());
+ if(Objects.isNull(platformGroup)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍏ュ洯鍘熷洜閰嶇疆鏈堝彴缁勬暟鎹�");
+ }
//鐢熸垚浠诲姟璁板綍
PlatformJob platformJob = platformBooks.toPlatformJob();
platformJob.setId(null);
platformJob.setPlatformGroupId(platformReason.getGroupId().intValue());
- platformJob.setType(Constants.platformJobType.sgscxh);
+ if(Constants.equalsInteger(platformGroup.getType(),Constants.ZERO)){
+ platformJob.setType(Constants.platformJobType.wxcxh);
+ }else if(Constants.equalsInteger(platformGroup.getType(),Constants.ONE)){
+ platformJob.setType(Constants.platformJobType.wxczh);
+ }else{
+ platformJob.setType(Constants.platformJobType.sgscxh);
+ }
platformJob.setStatus(Constants.PlatformJobStatus.WART_SIGN_IN.getKey());
platformJobMapper.insert(platformJob);
platformBooks.setJobId(platformJob.getId());
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
index 6b1dbb8..9b704bc 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -1570,9 +1570,12 @@
);
platformDataListResponse.setWorkStatus(Constants.ONE);
//鏌ヨ浣滀笟鏃堕暱
+// Long workTime = this.getWorkTime(platformJob);
+ Long min = (System.currentTimeMillis() - platformJob.getNewStartDate().getTime())/1000/60;
platformDataListResponse.setWorkTime(
- this.getWorkTime(platformJob)
+ min
);
+
//璁$畻宸蹭綔涓氭椂闀� 鏍规嵁鏈堝彴宸ヤ綔鏁堢巼 璁$畻浠诲姟閲忛渶瑕佹椂闂�
if (Objects.isNull(platformJob.getWorkNum()) || Objects.isNull(platformJob.getWorkRate())) {
platformDataListResponse.setFinishTime(null);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java
index c098f52..51c4937 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java
@@ -120,6 +120,7 @@
platformWarnEventListResponse.setContent(event.getEventContent());
platformWarnEventListResponse.setTitle(event.getTitle());
platformWarnEventListResponse.setPlatfromHkId(event.getPlatfromHkId());
+ platformWarnEventListResponse.setCarCode(event.getCarCode());
list.add(platformWarnEventListResponse);
}
}
@@ -201,6 +202,7 @@
platformWarnEvent.setCreateDate(new Date());
platformWarnEvent.setIsdeleted(Constants.ZERO);
platformWarnEvent.setPlatformId(savePlatformWarnEventDTO.getPlatformId());
+ platformWarnEvent.setCarCode(savePlatformWarnEventDTO.getCarCode());
Constants.PlatformWarnEvent cPl = Constants.PlatformWarnEvent.STOP_TIMEOUT;
if(Constants.equalsInteger(savePlatformWarnEventDTO.getEventType(),Constants.ZERO)){
if(Objects.isNull(savePlatformWarnEventDTO.getPlatformJobId())){
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java
index a3e2a31..55c4e3a 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java
@@ -15,6 +15,7 @@
import com.doumee.dao.openapi.request.GasByMonthRequest;
import com.doumee.dao.openapi.request.WaterByMonthRequest;
import com.doumee.dao.openapi.response.GasByMonthResponse;
+import com.doumee.dao.openapi.response.PlatformLastMonthListResponse;
import com.doumee.dao.openapi.response.WaterByMonthResponse;
import com.doumee.service.business.PlatformWaterGasService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -29,10 +30,7 @@
import org.springframework.web.bind.annotation.RequestBody;
import java.math.BigDecimal;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
/**
* 鏈堝彴_鐢ㄦ按鐢ㄦ皵淇℃伅璁板綍琛⊿ervice瀹炵幇
@@ -244,7 +242,7 @@
list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda()
.eq(PlatformWaterGas::getIsdeleted,Constants.ZERO)
.eq(PlatformWaterGas::getType,Constants.ZERO)
- .like(PlatformWaterGas::getTimeInfo,beforMonth)
+ .like(PlatformWaterGas::getTimeInfo,DateUtil.getDate(beforMonth,"yyyy-MM"))
);
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){
waterByMonthResponse.setLastMonth(list.stream().map(m->m.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add));
@@ -253,7 +251,7 @@
list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda()
.eq(PlatformWaterGas::getIsdeleted,Constants.ZERO)
.eq(PlatformWaterGas::getType,Constants.ZERO)
- .like(PlatformWaterGas::getTimeInfo,beforYearMonth)
+ .like(PlatformWaterGas::getTimeInfo,DateUtil.getDate(beforYearMonth,"yyyy-MM"))
);
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){
waterByMonthResponse.setLastYearMonth(list.stream().map(m->m.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add));
@@ -287,7 +285,7 @@
list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda()
.eq(PlatformWaterGas::getIsdeleted,Constants.ZERO)
.eq(PlatformWaterGas::getType,Constants.ONE)
- .like(PlatformWaterGas::getTimeInfo,beforMonth)
+ .like(PlatformWaterGas::getTimeInfo,DateUtil.getDate(beforMonth,"yyyy-MM"))
);
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){
response.setLastMonth(list.stream().map(m->m.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add));
@@ -296,7 +294,7 @@
list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda()
.eq(PlatformWaterGas::getIsdeleted,Constants.ZERO)
.eq(PlatformWaterGas::getType,Constants.ONE)
- .like(PlatformWaterGas::getTimeInfo,beforYearMonth)
+ .like(PlatformWaterGas::getTimeInfo,DateUtil.getDate(beforYearMonth,"yyyy-MM"))
);
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){
response.setLastYearMonth(list.stream().map(m->m.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add));
@@ -304,4 +302,31 @@
return response;
}
+
+ /**
+ *
+ * @param type 0鐢ㄦ按 1鐢ㄦ皵
+ * @return
+ */
+ @Override
+ public List<PlatformLastMonthListResponse> getPlatformLastMonthListResponse(Integer type){
+ List<PlatformLastMonthListResponse> lastMonthListResponses = new ArrayList<>();
+
+ List<PlatformWaterGas> platformWaterGasList = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda()
+ .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO)
+ .eq(PlatformWaterGas::getType,type)
+ );
+ List<String> monthList = DateUtil.getBeforMonth(new Date(),12);
+ for (String str:monthList) {
+ PlatformLastMonthListResponse platformLastMonthListResponse = new PlatformLastMonthListResponse();
+ platformLastMonthListResponse.setNum(platformWaterGasList.stream().filter(i->DateUtil.dateToString(i.getTimeInfo(),"yyyy-MM").equals(str)).map(i->i.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add));
+ platformLastMonthListResponse.setTimeInfo(str);
+ lastMonthListResponses.add(platformLastMonthListResponse);
+ }
+ return lastMonthListResponses;
+ }
+
+
+
+
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
index 66cc56e..f87b04b 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
@@ -251,9 +251,14 @@
}
- public static void sendBusiness(EmayService emayService ,SmsEmailMapper smsEmailMapper ,List<String> phoneList,String objType,String content,Integer objId){
- //TODO 鏄惁鍙戦�佺煭淇�
+
+
+
+
+
+
+ public static void sendBusiness(EmayService emayService ,SmsEmailMapper smsEmailMapper ,List<String> phoneList,String objType,String content,Integer objId){
for (String phone:phoneList) {
boolean result= emayService.sendSingleSms(phone,content);
if(!result){
--
Gitblit v1.9.3