From b850badcf800eff5819e0789d1b81e5e27fcd037 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期五, 29 十一月 2024 17:21:34 +0800
Subject: [PATCH] ll
---
h5/pages.json | 22
h5/api/index.js | 9
h5/static/empty.png | 0
h5/pages/workOrder/edit.vue | 396 ++++++++++-----
h5/pages/common/memberSel.vue | 256 ++++++++++
h5/pages/operation/detail.vue | 37 +
h5/utils/service.js | 2
h5/pages/index.vue | 41 +
h5/pages/login.vue | 82 +-
admin/src/views/workorder/components/detail.vue | 2
h5/pages/workOrder/list.vue | 56 +
h5/api/yw.js | 73 ++
h5/pages/workOrder/detail.vue | 108 ++-
h5/pages/operation/record.vue | 154 ++++-
h5/api/staff.js | 211 --------
h5/manifest.json | 4
h5/static/home/ic_xinzenggongdan@2x.png | 0
admin/src/views/workorder/components/OperaYwWorkorderWindow.vue | 2
18 files changed, 945 insertions(+), 510 deletions(-)
diff --git a/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
index 8542213..85d8bee 100644
--- a/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
+++ b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
@@ -49,7 +49,7 @@
<i class="el-icon-plus avatar-uploader-icon"></i>
<div>鍥剧墖/瑙嗛</div>
</div>
- </el-upload>
+ </el-upload>
<div v-for="(item, i) in fileList" :key="i" class="item">
<i @click="handleDelImg(i)" class="el-icon-error close"></i>
<el-image :src="item.fileurlFull" :preview-src-list="[item.fileurlFull]" v-if="item.type == 0"
diff --git a/admin/src/views/workorder/components/detail.vue b/admin/src/views/workorder/components/detail.vue
index 9722c08..9f020e9 100644
--- a/admin/src/views/workorder/components/detail.vue
+++ b/admin/src/views/workorder/components/detail.vue
@@ -178,7 +178,7 @@
uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch',
dealFileList: [],
uploadData: {
- folder: 'HIDDEN_DANGER_FILE'
+ folder: 'YW_WORKORDER_FILE'
},
}
},
diff --git a/h5/api/index.js b/h5/api/index.js
index 9a7edfe..c931054 100644
--- a/h5/api/index.js
+++ b/h5/api/index.js
@@ -1,6 +1,7 @@
import { http } from '@/utils/service.js'
export * from '@/utils/config.js'
export * from './staff'
+export * from './yw'
@@ -16,14 +17,6 @@
return http({
url: 'visitsAdmin/cloudService/web/visitor/wxAuthorize',
method: 'get',
- data
- })
-}
-// 鍙戦�佺煭淇¢獙璇佺爜
-export const sendSms = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/smsEmail/sendSms',
- method: 'post',
data
})
}
\ No newline at end of file
diff --git a/h5/api/staff.js b/h5/api/staff.js
index ea64d24..b77655f 100644
--- a/h5/api/staff.js
+++ b/h5/api/staff.js
@@ -3,53 +3,29 @@
// login
export const loginPost = (data) => {
return http({
- url: 'loginH5',
+ url: 'loginByPhone',
method: 'post',
data
})
}
-export const loginCaptcha = () => {
+export const sendSMsPost = (data) => {
return http({
- url: 'captcha',
- method: 'get'
+ url: 'visitsAdmin/cloudService/business/smsEmail/sendSms',
+ method: 'post',
+ data
})
}
-// 鍒锋柊token
-export const refreshToken = () => {
+export const findInternalList = (data) => {
return http({
- url: 'refreshtoken',
- method: 'post'
+ url: 'visitsAdmin/cloudService/system/user/findInternalList',
+ method: 'post',
+ data
})
}
export const getUserInfo = () => {
return http({
url: 'getUserInfo',
method: 'get'
- })
-}
-// 鏌ヨ浜哄憳鐩稿叧淇℃伅0鍔冲姟璁垮 1鏅�氳瀹� 2鍐呴儴浜哄憳,绀轰緥鍊�(1)
-export const findTypeMemberInfo = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/member/findTypeMemberInfo',
- // url: 'visitsAdmin/cloudService/business/member/page',
- method: 'post',
- data
- })
-}
-// 閲嶇疆瀵嗙爜
-export const resetPassword = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/visits/resetPassword',
- method: 'post',
- data
- })
-}
-// 淇敼瀵嗙爜
-export const uploadPassword = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/member/updatePwd',
- method: 'post',
- data
})
}
// loginout
@@ -61,172 +37,3 @@
})
}
-// 闅愭偅闅忔墜鎷� 鍒涘缓
-export const DangerCreate = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/hiddenDanger/create',
- method: 'post',
- data
- })
-}
-// 闅愭偅鍖哄煙
-export const DangerArea = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/hiddenDanger/create',
- method: 'post',
- data
- })
-}
-// 闅愭偅 璇︽儏
-export const hiddenDangerDetail = (id) => {
- return http({
- url: `visitsAdmin/cloudService/business/hiddenDanger/${id}`,
- method: 'get'
- })
-}
-// 閮ㄩ棬鍒楄〃
-export const deptListPost = (data) => {
- return http({
- url: '/visitsAdmin/cloudService/business/company/list',
- method: 'post',
- data
- })
-}
-// 闅愭偅 绫诲瀷
-export const DangerConfigType = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/hiddenDangerParam/list',
- method: 'post',
- data
- })
-}
-// 闅愭偅 鏌ヨ鍖哄煙鍐呭畨鍏ㄥ憳
-export const findHiddenAreaMemberList = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/hiddenDangerParam/findHiddenAreaMemberList',
- method: 'post',
- data
- })
-}
-// 闅愭偅 澶勭悊
-export const dealHiddenDanger = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/hiddenDanger/dealHiddenDanger',
- method: 'post',
- data
- })
-}
-// 闅愭偅 杞氦
-export const transferHiddenDanger = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/hiddenDanger/transferHiddenDanger',
- method: 'post',
- data
- })
-}
-// 闅愭偅 娴佺▼鍒楄〃
-export const findListFlowDanger = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/hiddenDangerLog/findList',
- method: 'post',
- data
- })
-}
-// 杞﹁締 鍒楄〃
-export const getCarsList = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/cars/list',
- method: 'post',
- data
- })
-}
-// 鏌ヨ杞﹁締鍙绾︽椂娈�
-export const carCanReservationDate = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/carUseBook/carCanReservationDate',
- method: 'get',
- data
- })
-}
-// 鏌ヨ杞﹁締 棰勭害璁板綍
-export const carUseBookList = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/carUseBook/carUseBookList',
- method: 'post',
- data
- })
-}
-
-// 鐢ㄨ溅鐢宠鎻愪氦
-export const carUseBookCraete = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/carUseBook/create',
- method: 'post',
- data
- })
-}
-
-// 鏌ヨ杞﹁締 娲捐溅璁板綍
-export const carUseBookPaiche = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/carUseBook/page',
- method: 'post',
- data
- })
-}
-// 鏌ヨ杞﹁締 娲捐溅璁板綍 璇︽儏
-export const carUseBookDetail = (id) => {
- return http({
- url: 'visitsAdmin/cloudService/business/carUseBook/'+id,
- method: 'get'
- })
-}
-// 瀹℃壒
-export const carUseBookAppr = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/approve/approved',
- method: 'post',
- data
- })
-}
-// 鏌ヨ杞﹁締 娲捐溅璁板綍 鎾ら攢鐢宠
-export const carUseBookBack = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/carUseBook/revoke',
- method: 'get',
- data
- })
-}
-// 鏌ヨ杞﹁締 鍙告満鍒楄〃
-export const driveListPost = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/member/driveList',
- method: 'post',
- data
- })
-}
-
-// 浠诲姟涓績 澶撮儴鏁版嵁
-export const stagingHead = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/staging/taskCenterHead',
- method: 'get',
- data
- })
-}
-// 浠诲姟涓績 鍒嗛〉鏁版嵁
-export const stagingTaskPage = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/staging/taskPage',
- method: 'post',
- data
- })
-}
-// 浠诲姟涓績 鏍囪宸茶
-export const signReadTask = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/business/staging/signRead',
- method: 'get',
- data
- })
-}
diff --git a/h5/api/yw.js b/h5/api/yw.js
new file mode 100644
index 0000000..ff980d2
--- /dev/null
+++ b/h5/api/yw.js
@@ -0,0 +1,73 @@
+import { http } from '@/utils/service.js'
+
+// 宸ュ崟鍒楄〃
+export const ywWorkorder = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/ywWorkorder/page',
+ data
+ })
+}
+// 宸ュ崟璇︽儏
+export const ywWorkorderD = (id) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/ywWorkorder/' + id,
+ method: 'get'
+ })
+}
+// 宸ュ崟澶勭悊
+export const ywWorkorderDeal = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/ywWorkorder/dealOrder',
+ data
+ })
+}
+// 鍒涘缓宸ュ崟
+export const ywWorkorderCreate = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/ywWorkorder/create',
+ data
+ })
+}
+// 椤圭洰鍒楄〃
+export const ywProjectPost = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/ywProject/list',
+ data
+ })
+}
+// 妤煎畤鍒楄〃
+export const ywBuildingPost = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/ywBuilding/list',
+ data
+ })
+}
+// 妤煎眰鍒楄〃
+export const ywFloorPost = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/ywFloor/list',
+ data
+ })
+}
+// 鎴挎簮鍒楄〃
+export const ywRoomPost = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/ywRoom/list',
+ data
+ })
+}
+
+// 杩愮淮璁板綍
+export const ywDeviceRecord = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/ywDeviceRecord/page',
+ data
+ })
+}
+// 杩愮淮璁板綍璇︽儏
+export const ywDeviceDetail = (id) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/ywDeviceRecord/' + id,
+ method: 'get'
+ })
+}
\ No newline at end of file
diff --git a/h5/manifest.json b/h5/manifest.json
index 2e78cce..952b225 100644
--- a/h5/manifest.json
+++ b/h5/manifest.json
@@ -129,9 +129,9 @@
"/gateway_interface" : {
// 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃
// "target" : "http://172.20.10.7:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
- // "target" : "http://192.168.0.100:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+ "target" : "http://192.168.0.108:10030", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
// "target" : "http://10.50.250.253:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
- "target" : "http://192.168.0.173/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+ // "target" : "http://192.168.0.173/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
"changeOrigin" : true, // 鍏佽璺ㄥ煙
"pathRewrite" : {
"^/gateway_interface" : ""
diff --git a/h5/pages.json b/h5/pages.json
index c288dfa..af9ee5b 100644
--- a/h5/pages.json
+++ b/h5/pages.json
@@ -2,17 +2,18 @@
"easycom": {
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
},
- "pages": [{
+ "pages": [
+ {
+ "path": "pages/login",
+ "style": {
+ "navigationBarTitleText": "鐧诲綍"
+ }
+ },
+ {
"path": "pages/index",
"style": {
"navigationBarTitleText": "棣栭〉",
"enablePullDownRefresh": false
- }
- },
- {
- "path": "pages/login",
- "style": {
- "navigationBarTitleText": "鐧诲綍"
}
},
{
@@ -75,6 +76,13 @@
{
"navigationBarTitleText" : "宸℃鐐�"
}
+ },
+ {
+ "path" : "pages/common/memberSel",
+ "style" :
+ {
+ "navigationBarTitleText" : "閫夋嫨浜哄憳"
+ }
}
],
"globalStyle": {
diff --git a/h5/pages/common/memberSel.vue b/h5/pages/common/memberSel.vue
new file mode 100644
index 0000000..ee80a52
--- /dev/null
+++ b/h5/pages/common/memberSel.vue
@@ -0,0 +1,256 @@
+<template>
+ <view class="main_app">
+ <view class="search_inp df_ac">
+ <image class="mr12 search" src="@/static/home/ic_search@2x.png" mode="widthFix"></image>
+ <input v-model="param.name" @blur="initData()" type="text" placeholder="璇疯緭鍏ュ鍚嶈繘琛屾悳绱�"
+ placeholder-style="color: #999999;" />
+ </view>
+ <view class="member_list">
+ <view v-for="item in memberList" @click="onSubmit(item)" :key="item.id" class="line">
+ <image v-if="item.faceImgFull" :src="item.faceImgFull" class="avatar"></image>
+ <span v-else class="img_name">{{item.realname && item.realname.slice(0,1)}}</span>
+ <view class="content">
+ <view class="info">
+ <text class="name">{{ item.realname }}</text>
+ <!-- <text class="tag">tag</text> -->
+ </view>
+ <view class="depart">{{ item.companyName }}</view>
+ </view>
+ <text></text>
+ </view>
+ <view v-if="memberList.length == 0" class="empty_wrap">
+ <image src="@/static/empty.png"></image>
+ <text>鏆傛棤鏁版嵁</text>
+ </view>
+ </view>
+ <!-- -->
+ </view>
+</template>
+
+<script>
+ import {
+ findInternalList
+ } from '@/api'
+ export default {
+ data() {
+ return {
+ memberList: [],
+ selList: [],
+ param: {},
+
+ isShowSelMem: false
+ }
+ },
+ onLoad() {
+ this.initData()
+ },
+ methods: {
+ onSubmit(item) {
+ this.$eventBus.$emit('memberSel', { realname: item.realname, id: item.id })
+ uni.navigateBack()
+ },
+ changeMem(e) {
+ console.log(e.detail.value[0]);
+ const id = Number(e.detail.value[0])
+ const item = this.memberList.find(i => i.id === id)
+ this.$eventBus.$emit('snapshotSel', item)
+ uni.navigateBack()
+ },
+ initData() {
+ const {
+ param
+ } = this
+ findInternalList({
+ realname: param.name,
+ id: param.id
+ }).then(res => {
+ this.memberList = res.data || []
+ })
+ }
+ }
+ };
+</script>
+
+<style lang="scss">
+ .modal {
+ padding: 40rpx 30rpx;
+
+ .modal_header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ .status {
+ font-weight: 600;
+ }
+
+ .btn {
+ color: $uni-color-primary;
+ }
+ }
+
+ .modal_mem_list {
+ .line {
+ display: flex;
+ align-items: center;
+ border-bottom: 1rpx solid #e5e5e5;
+ padding: 30rpx 0;
+
+ .avatar {
+ width: 64rpx;
+ height: 64rpx;
+ border-radius: 50%;
+ overflow: hidden;
+ margin-right: 20rpx;
+ }
+
+ .content {
+ flex: 1;
+
+ .depart {
+ font-size: 24rpx;
+ color: #666666;
+ }
+
+ .info {
+ display: flex;
+ margin-bottom: 16rpx;
+
+ .name {
+ font-size: 30rpx;
+ }
+ }
+ }
+
+ .btn {
+ width: 80rpx;
+ height: 48rpx;
+ line-height: 48rpx;
+ text-align: center;
+ font-size: 24rpx;
+ color: #333333;
+ border-radius: 4rpx;
+ border: 1rpx solid #999999;
+ }
+ }
+ }
+ }
+
+ .sub_wrap {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ box-shadow: 0rpx 0rpx 6rpx 0rpx #b2b2b2;
+ padding: 30rpx 30rpx 64rpx;
+
+ .sel_mem {
+ display: flex;
+ align-items: center;
+
+ .members {
+ width: 500rpx;
+ color: $uni-color-primary;
+ white-space: nowrap;
+ overflow: hidden; //鏂囨湰瓒呭嚭闅愯棌
+ text-overflow: ellipsis;
+ margin-right: 20rpx;
+ }
+
+ .open_icon {
+ width: 44rpx;
+ height: 44rpx;
+ }
+ }
+
+ .btn {
+ width: 690rpx;
+ height: 88rpx;
+ line-height: 88rpx;
+ background: $uni-color-primary;
+ border-radius: 44rpx;
+ color: #fff;
+ text-align: center;
+ margin-top: 22rpx;
+ }
+ }
+
+ .member_list {
+ .line {
+ display: flex;
+ align-items: center;
+ border-bottom: 1rpx solid #e5e5e5;
+ padding: 30rpx 0;
+
+ .avatar {
+ width: 64rpx;
+ height: 64rpx;
+ border-radius: 50%;
+ overflow: hidden;
+ margin-right: 20rpx;
+ }
+
+ .img_name {
+ width: 64rpx;
+ height: 64rpx;
+ line-height: 64rpx;
+ text-align: center;
+ border-radius: 50%;
+ overflow: hidden;
+ margin-right: 20rpx;
+ background: $uni-color-primary;
+ color: #fff;
+ border: 1rpx solid $uni-color-primary;
+ }
+
+ .content {
+ flex: 1;
+
+ .depart {
+ font-size: 24rpx;
+ color: #666666;
+ }
+
+ .info {
+ display: flex;
+ margin-bottom: 16rpx;
+
+ .name {
+ font-size: 30rpx;
+ }
+
+ .tag {
+ font-size: 24rpx;
+ border-radius: 4rpx;
+ border: 1rpx solid #f62710;
+ color: #f62710;
+ padding: 0rpx 6rpx;
+ margin-left: 8rpx;
+ }
+ }
+ }
+ }
+
+ .empty {
+ width: 100%;
+ height: 280rpx;
+ }
+ }
+
+ .search_inp {
+ height: 72rpx;
+ background: #f7f7f7;
+ border-radius: 4rpx;
+ padding-left: 16rpx;
+
+ .search {
+ width: 28rpx;
+ }
+
+ input {
+ flex: 1;
+ font-size: 28rpx;
+ color: #333333;
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/h5/pages/index.vue b/h5/pages/index.vue
index 3970282..8232d81 100644
--- a/h5/pages/index.vue
+++ b/h5/pages/index.vue
@@ -1,6 +1,6 @@
<template>
<view class="main_app">
- <view class="hone_name title">{{ userInfo.name }}锛屾杩庣櫥褰�</view>
+ <view class="hone_name title">{{ userInfo.realname }}锛屾杩庣櫥褰�</view>
<view class="home_con">
<image class="bg" src="@/static/home/home_bg.jpg" mode=""></image>
<view class="h1">闃滃畞鏂囦綋涓績</view>
@@ -20,19 +20,21 @@
<view class="name">{{item.name}}</view>
</view>
</view>
+ <view class="loginout" @click="loginOut">閫�鍑虹櫥闄�</view>
</view>
-
</template>
-<script>
+<script>
+ import { logoutPost } from '@/api'
export default {
data() {
return {
userInfo: uni.getStorageSync('userInfo') || {},
- list1: [{
- name: '鎵爜宸℃',
- url: '',
- img: require('@/static/home/ic_fangkebaobei@2x.png'),
+ list1: [
+ {
+ name: '鏂板宸ュ崟',
+ url: '/pages/workOrder/edit',
+ img: require('@/static/home/ic_xinzenggongdan@2x.png'),
auth: 'weixin:menu:visitcar'
},
{
@@ -72,7 +74,14 @@
url: item.url
})
},
-
+ loginOut() {
+ this.$store.commit('empty')
+ logoutPost()
+ uni.redirectTo({
+ url: '/pages/login'
+ })
+ },
+
}
}
</script>
@@ -131,5 +140,21 @@
}
}
}
+
+ .loginout {
+ position: fixed;
+ bottom: 88rpx;
+ left: 50%;
+ transform: translate(-50%, 0);
+ width: 152rpx;
+ height: 60rpx;
+ border-radius: 30rpx;
+ border: 1rpx solid $primaryColor;
+ color: $primaryColor;
+ font-size: 26rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
}
</style>
\ No newline at end of file
diff --git a/h5/pages/login.vue b/h5/pages/login.vue
index 0b3b772..666d529 100644
--- a/h5/pages/login.vue
+++ b/h5/pages/login.vue
@@ -5,16 +5,17 @@
<view class="login_list">
<view class="login_list_item">
<image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
- <input v-model="form.username" maxlength="18" placeholder="璇疯緭鍏ユ墜鏈哄彿" />
+ <input v-model="form.phone" maxlength="18" placeholder="璇疯緭鍏ユ墜鏈哄彿" />
</view>
-<!-- <view class="login_list_item">
+<!-- <view class="login_list_item">
<image src="@/static/login_ic_password@2x.png" mode="widthFix" />
<input v-model="form.password" type="password" placeholder="瀵嗙爜" />
</view> -->
- <view class="login_list_item">
+ <view class="login_list_item">
<image src="@/static/login_ic_password@2x.png" mode="widthFix"></image>
<input v-model="form.code" placeholder="璇疯緭鍏ラ獙璇佺爜" type="text" />
- <view class="btn">鑾峰彇楠岃瘉鐮�</view>
+ <view v-if="downTime == 0" class="btn" @click="sendSms">鑾峰彇楠岃瘉鐮�</view>
+ <view v-else class="btn gray">{{ downTime }}</view>
</view>
</view>
<view class="login_btn">
@@ -24,7 +25,7 @@
</template>
<script>
-import { loginPost, loginCaptcha, getUserInfo, getSystemDictData } from '@/api'
+import { loginPost, getUserInfo, sendSMsPost } from '@/api'
import { mapState, mapMutations } from 'vuex'
export default {
name: 'login',
@@ -32,20 +33,14 @@
data() {
return {
form: {
- // username: '18056814089',
- username: '',
- password: '',
- code: ''
+ phone: '17878787878',
+ code: '1'
},
- isShowProtocol: false,
- ProtocolFlag: false,
- captcha: {},
- htmlText: ''
+ downTime: 0
}
},
onLoad() {
- this.initCaptcha()
},
onBackPress(options) {
uni.redirectTo({
@@ -55,39 +50,28 @@
},
methods: {
...mapMutations(["setToken", "setUserInfo"]),
- changeFalg() {
- this.ProtocolFlag = !this.ProtocolFlag
- },
- getContent() {
- getSystemDictData({
- dictCode: 'SYSTEM',
- label: 'USER_PROTOCOL'
- }).then(res => {
- this.htmlText = res.data.code
- this.isShowProtocol = true
- })
- },
- showContent() {
- this.getContent()
- },
- initCaptcha() {
- loginCaptcha().then(res => {
- this.captcha = res.data
- })
- },
-
+ sendSms() {
+ this.downTime = 60
+ let timer = setInterval(() => {
+ if(this.downTime == 0) return clearInterval(timer)
+ this.downTime = this.downTime - 1
+ }, 1000)
+ const { form } = this
+ sendSMsPost({
+ phone: form.phone,
+ type: 0
+ }).then(res => {
+ this.showToast('鐭俊鍙戦�佹垚鍔�')
+ })
+ },
onLogin() {
const { form, ProtocolFlag } = this
- if (!ProtocolFlag) return uni.showToast({
- title: '璇峰厛闃呰骞跺悓鎰忕敤鎴峰崗璁�',
- icon: 'none'
- })
- if (!form.username) return uni.showToast({
- title: '璐﹀彿涓嶈兘涓虹┖',
- icon: 'none'
- })
- if (!form.password) return uni.showToast({
- title: '瀵嗙爜涓嶈兘涓虹┖',
+ // if (!ProtocolFlag) return uni.showToast({
+ // title: '璇峰厛闃呰骞跺悓鎰忕敤鎴峰崗璁�',
+ // icon: 'none'
+ // })
+ if (!form.phone) return uni.showToast({
+ title: '鎵嬫満鍙蜂笉鑳戒负绌�',
icon: 'none'
})
if (!form.code) return uni.showToast({
@@ -96,15 +80,15 @@
})
loginPost({
...form,
- uuid: this.captcha.uuid,
openId: this.$store.state.openId
}).then(res => {
if (res.code === 200) {
this.setToken(res.data)
+ this.showToast('鐧诲綍鎴愬姛')
getUserInfo().then(ress => {
this.setUserInfo(ress.data)
uni.redirectTo({
- url: "/pages/staff/index"
+ url: "/pages/index"
})
})
}
@@ -162,7 +146,11 @@
.btn{
width: 145rpx;
color: $primaryColor;
+ text-align: center;
}
+ .gray{
+ color: #999999;
+ }
input {
flex: 1;
height: 100%;
diff --git a/h5/pages/operation/detail.vue b/h5/pages/operation/detail.vue
index ab1ce29..0420d6b 100644
--- a/h5/pages/operation/detail.vue
+++ b/h5/pages/operation/detail.vue
@@ -2,31 +2,47 @@
<view>
<view class="content">
<view class="name_wrap">
- <view class="name">xx璁惧</view>
- <view class="status red">姝e父</view>
+ <view class="name">{{info.deviceName}}</view>
+ <view class="status" v-if="info.status == 0">姝e父</view>
+ <view class="status red" v-if="info.status == 1">鎹熷潖</view>
+ <view class="status red" v-if="info.status == 2">鎶ュ簾</view>
</view>
- <view class="line">杩愮淮浜猴細xxx</view>
- <view class="line">杩愮淮鏃堕棿锛�121212</view>
+ <view class="line">杩愮淮浜猴細{{info.realName}}</view>
+ <view class="line">杩愮淮鏃堕棿锛歿{info.createDate}}</view>
</view>
<!-- -->
<view class="remark">
<view class="title">杩愮淮澶囨敞</view>
<view class="file_list">
- <view class="file">
-
+ <view class="file" v-for="item in info.multifileList">
+ <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
+ <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
</view>
</view>
- <view class="desc">remark</view>
+ <view class="desc">{{info.content}}</view>
</view>
</view>
</template>
-<script>
+<script>
+ import { ywDeviceDetail } from '@/api'
export default {
data() {
return {
-
+ id: '',
+ info: {}
};
+ },
+ onLoad(option) {
+ this.id = option.id
+ this.getDetail()
+ },
+ methods: {
+ getDetail() {
+ ywDeviceDetail(this.id).then(res => {
+ this.info = res.data
+ })
+ }
}
}
</script>
@@ -81,6 +97,9 @@
margin-right: 0;
}
}
+ image,video{
+ width: 156rpx;
+ }
}
.desc{
margin-top: 8rpx;
diff --git a/h5/pages/operation/record.vue b/h5/pages/operation/record.vue
index 818efb9..aaa32ae 100644
--- a/h5/pages/operation/record.vue
+++ b/h5/pages/operation/record.vue
@@ -3,64 +3,113 @@
<view class="head_wrap">
<view class="search_wrap">
<image class="mr12 search" src="@/static/home/ic_search@2x.png" mode="widthFix"></image>
- <input v-model="param.keyword" @confirm="getList()" type="text" placeholder="鎼滅储璁惧鍚嶇О/缂栧彿" placeholder-class="placeholder9" />
+ <input v-model="param.keyword" @confirm="getList()" type="text" placeholder="鎼滅储璁惧鍚嶇О/缂栧彿"
+ placeholder-class="placeholder9" />
</view>
- <view class="name_wrap" @click="showModal = true">
- <view class="name">杩愮淮浜�</view>
+ <view class="name_wrap" @click="handleMem">
+ <view class="name">{{ param.realname ? param.realname : '杩愮淮浜�' }}</view>
<u-icon :name="showModal ? 'arrow-right' : 'arrow-down'" color="#999999" size="12"></u-icon>
</view>
</view>
<!-- -->
<view class="list">
- <view class="item" v-for="item in 10" @click="itemClick(item)">
+ <view class="item" v-for="item in list" @click="itemClick(item)">
<image src="@/static/side/ic_shuiyu@2x.png" class="icon"></image>
<view class="content">
<view class="name_wrap">
<view class="name">
- <text class="device">xx璁惧</text>
- <text>D20231</text>
+ <text class="device">{{item.deviceName}}</text>
+ <text>{{item.deviceCode}}</text>
</view>
- <view class="status red">姝e父</view>
+ <view class="status" v-if="item.status == 0">姝e父</view>
+ <view class="status red" v-if="item.status == 1">鎹熷潖</view>
+ <view class="status red" v-if="item.status == 2">鎶ュ簾</view>
</view>
- <view class="line">杩愮淮浜猴細xxx</view>
- <view class="line">杩愮淮鏃堕棿锛�121212</view>
+ <view class="line">杩愮淮浜猴細{{item.realName}}</view>
+ <view class="line">杩愮淮鏃堕棿锛歿{item.dealDate}}</view>
</view>
</view>
</view>
<!-- -->
- <u-picker :show="showModal" keyName="name" @cancel="showModal = false" @confirm='confirm'
+ <u-picker :show="showModal" keyName="realname" @cancel="showModal = false" @confirm='confirm'
:columns="columns"></u-picker>
</view>
</template>
<script>
+ import {
+ ywDeviceRecord,
+ findInternalList
+ } from '@/api'
export default {
data() {
return {
param: {},
columns: [],
- showModal: false
+ showModal: false,
+ list: [],
+ total: 0,
+ page: 1,
};
},
- methods: {
- getList() {},
+ onLoad() {
+ this.getpeo()
+ this.getList()
+
+ },
+ mounted() {
+ this.$eventBus.$on('memberSel', (option) => {
+ this.$set(this.param, 'realname', option.realname)
+ this.$set(this.param, 'memberId', option.id)
+ this.getList()
+ })
+
+ },
+ methods: {
+ getList() {
+ const {
+ page,
+ total,
+ list,
+ param
+ } = this
+ ywDeviceRecord({
+ page,
+ capacity: 10,
+ model: param
+ }).then(res => {
+ this.list = res.data.records || []
+ this.total = res.data.total
+ })
+ },
+ handleMem() {
+ uni.navigateTo({
+ url: '/pages/common/memberSel'
+ })
+ },
+ getpeo() {
+ findInternalList().then(res => {
+ this.columns = [res.data]
+ })
+ },
confirm() {
this.showModal = false
- },
- itemClick() {
- uni.navigateTo({
- url: '/pages/operation/detail'
- })
+ },
+ itemClick(item) {
+ uni.navigateTo({
+ url: '/pages/operation/detail?id='+ item.id
+ })
}
}
}
</script>
-<style lang="scss" scoped>
- .main_app{
- padding: 0 30rpx;
+<style lang="scss" scoped>
+ .main_app {
+ padding: 0 30rpx;
}
+
.head_wrap {
display: flex;
align-items: center;
@@ -73,9 +122,11 @@
background: #F7F7F7;
border-radius: 38rpx;
padding-left: 30rpx;
- input{
- flex: 1;
+
+ input {
+ flex: 1;
}
+
.search {
width: 28rpx;
height: 28rpx;
@@ -94,39 +145,44 @@
.list {
.item {
display: flex;
- height: 228rpx;
- padding: 30rpx 0;
+ height: 228rpx;
+ padding: 30rpx 0;
border-bottom: 2rpx solid #E5E5E5;
+
.icon {
width: 80rpx;
- height: 80rpx;
+ height: 80rpx;
margin-right: 24rpx;
}
.content {
- flex: 1;
- color: #666666;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- .name_wrap{
- display: flex;
- justify-content: space-between;
- align-items: center;
- .name{
- display: flex;
- align-items: flex-end;
- font-size: 26rpx;
- .device{
- font-weight: 600;
- font-size: 34rpx;
- color: #222222;
- margin-right: 6rpx;
- }
- }
- .status{
- color: $primaryColor;
- }
+ flex: 1;
+ color: #666666;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+
+ .name_wrap {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ .name {
+ display: flex;
+ align-items: flex-end;
+ font-size: 26rpx;
+
+ .device {
+ font-weight: 600;
+ font-size: 34rpx;
+ color: #222222;
+ margin-right: 6rpx;
+ }
+ }
+
+ .status {
+ color: $primaryColor;
+ }
}
}
}
diff --git a/h5/pages/workOrder/detail.vue b/h5/pages/workOrder/detail.vue
index 1b763a0..a3bf40d 100644
--- a/h5/pages/workOrder/detail.vue
+++ b/h5/pages/workOrder/detail.vue
@@ -2,59 +2,63 @@
<view>
<view class="main_info">
<view class="title">
- <text>闃滃畞鏂囦綋涓績/A搴�/401</text>
- <text class="status">寰呭鐞�</text>
+ <text>{{ info.projectName }}/{{ info.buildingName }}/{{info.roomNum || info.floorName}}</text>
+ <text class="status" v-if="info.dealStatus == 0">寰呭鐞�</text>
+ <text class="status" v-if="info.dealStatus == 1">宸叉寚娲�</text>
+ <text class="status gray" v-if="info.dealStatus == 2">宸插鐞�</text>
</view>
- <view class="desc">瑗胯竟璧板粖鐨勪竴涓《鐏潖浜嗭紝涓嶄寒闇�瑕佺淮淇タ杈�</view>
+ <view class="desc">{{ info.content }}</view>
<view class="file_list">
- <view class="file">
-
+ <view class="file" v-for="(item,index) in info.fileList">
+ <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
+ <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
</view>
</view>
<view class="content">
- <view class="line">
+ <view class="line" v-if="info.categoryName">
<view class="la">宸ュ崟绫诲瀷锛�</view>
- <view class="val">1111</view>
+ <view class="val">{{info.categoryName}}</view>
</view>
<view class="line">
<view class="la">涓婃姤浜猴細</view>
- <view class="val">1111</view>
+ <view class="val">{{ info.creatorName }}{{info.creatorCompany ? '-' + info.creatorCompany : ''}}</view>
</view>
- <view class="line">
+ <view class="line" v-if="info.creatorPhone">
<view class="la">鑱旂郴鐢佃瘽锛�</view>
- <view class="val">1111</view>
+ <view class="val">{{ info.creatorPhone }}</view>
</view>
<view class="line">
<view class="la">涓婃姤鏃堕棿锛�</view>
- <view class="val">1111</view>
+ <view class="val">{{ info.createDate }}</view>
</view>
- <view class="line">
+ <view class="line" v-if="info.getDate">
<view class="la">涓婇棬鏃堕棿锛�</view>
- <view class="val">1111</view>
+ <view class="val">{{ info.getDate }}</view>
</view>
</view>
- <view class="result_wrap">
+ <view class="result_wrap" v-if="info.dealStatus == 2">
<div class="title">澶勭悊缁撴灉</div>
- <view class="file_list">
- <view class="file">
-
+ <view v-if="info.dealFileList && info.dealFileList.length > 0" class="file_list">
+ <view class="file" v-for="item in info.dealFileList">
+ <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
+ <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
</view>
</view>
- <view class="content">
- 宸叉洿鎹㈢伅娉″拰鐏僵宸叉洿鎹㈢伅娉″拰鐏僵宸叉洿鎹㈢伅
+ <view v-if="info.dealInfo" class="content">
+ {{info.dealInfo}}
</view>
<view class="line">
<view class="la">澶勭悊浜猴細</view>
- <view class="val">{{ 1111 }}</view>
+ <view class="val">{{ info.dealUserName }}</view>
</view>
<view class="line">
<view class="la">澶勭悊鏃堕棿锛�</view>
- <view class="val">{{ 1111 }}</view>
+ <view class="val">{{ info.dealDate }}</view>
</view>
</view>
</view>
<!-- -->
- <view class="btns">
+ <view class="btns" v-if="info.dealStatus == 0">
<view class="btn">
<image src="@/static/side/phoneed.png" class="icon"></image>
<text>涓婃姤浜�</text>
@@ -62,7 +66,7 @@
<view class="btn active" @click="isShowHandle = true">鍘诲鐞�</view>
</view>
<!-- -->
- <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
+ <u-popup :show="showUpload" @close="showUpload = false" zIndex="10076" closeOnClickOverlay>
<view class="sel_upload_wrap">
<view class="btn" @click="uploadImage">閫夋嫨鍥剧墖</view>
<view class="btn" @click="uploadVideo">閫夋嫨瑙嗛</view>
@@ -70,11 +74,12 @@
</u-popup>
<!-- -->
<!-- 宸ュ崟澶勭悊 -->
- <u-popup :show="isShowHandle" :round="10" :safeAreaInsetBottom="true" mode="bottom" closeable @close="isShowHandle = false">
+ <u-popup :show="isShowHandle" :round="10" :safeAreaInsetBottom="true" mode="bottom" closeable
+ @close="isShowHandle = false">
<view class="appr_modal">
<view class="title">宸ュ崟澶勭悊</view>
<view class="df_sb">
- <view>澶勭悊鏃堕棿</view>
+ <view><text class="red">*</text>澶勭悊鏃堕棿</view>
<view class="df_ac" @click="isShowHandleDate = true" v-if="handleParam.dealTime">
{{ handleParam.dealTime }}
<u-icon name="arrow-right"></u-icon>
@@ -86,7 +91,6 @@
</view>
<view class="label">
- <text>*</text>
涓婁紶鍥剧墖/瑙嗛
</view>
<view class="upload_wrap">
@@ -119,12 +123,16 @@
<script>
import {
- uploadUrl
+ uploadUrl,
+ ywWorkorderD,
+ ywWorkorderDeal
} from '@/api'
import dayjs from 'dayjs';
export default {
data() {
return {
+ id: '',
+ info: {},
showUpload: false,
isShowHandle: false,
isShowHandleDate: false,
@@ -132,9 +140,30 @@
dealFileList: []
};
},
+ onLoad(option) {
+ console.log(option);
+ this.id = option.id
+ this.getDetail()
+ },
methods: {
- onSubmit() {
-
+ onSubmit() {
+ const { handleParam, dealFileList, id } = this
+ if (!handleParam.dealTime) return this.showToast('澶勭悊鏃堕棿涓嶈兘涓虹┖')
+ ywWorkorderDeal({
+ ...handleParam,
+ id,
+ dealFileList
+ }).then(res => {
+ if(res.code == 200){
+ this.showToast('鎿嶄綔鎴愬姛')
+ uni.navigateBack()
+ }
+ })
+ },
+ getDetail() {
+ ywWorkorderD(this.id).then(res => {
+ this.info = res.data
+ })
},
callPhone() {
uni.makePhoneCall({
@@ -152,7 +181,7 @@
this.showUpload = false;
let token = uni.getStorageSync('token') || '';
uni.chooseImage({
- count: 4,
+ count: 6,
success: chooseImageRes => {
uni.showLoading({
title: '涓婁紶涓�',
@@ -170,7 +199,7 @@
files: imgs,
name: 'file',
formData: {
- folder: 'HIDDEN_DANGER_FILE'
+ folder: 'YW_WORKORDER_FILE'
},
header: {
Dm_user_token: token
@@ -182,7 +211,7 @@
i.type = 0;
i.fileurl = i.imgaddr;
i.fileurlFull = i.url;
- this.submitFileList.push(i);
+ this.dealFileList.push(i);
});
}
},
@@ -216,7 +245,7 @@
},
name: 'file',
formData: {
- folder: 'HIDDEN_DANGER_FILE'
+ folder: 'YW_WORKORDER_FILE'
},
success: uploadFileRes => {
let res = JSON.parse(uploadFileRes.data);
@@ -225,7 +254,7 @@
i.type = 1;
i.fileurl = i.imgaddr;
i.fileurlFull = i.url;
- this.submitFileList.push(i);
+ this.dealFileList.push(i);
});
}
},
@@ -264,6 +293,10 @@
font-size: 28rpx;
color: $primaryColor;
}
+
+ .gray {
+ color: #999999;
+ }
}
.file_list {
@@ -279,6 +312,11 @@
&:nth-of-type(4n) {
margin-right: 0;
+ }
+
+ image,
+ video {
+ width: 156rpx;
}
}
}
@@ -368,7 +406,7 @@
.sel_upload_wrap {
width: 100%;
- border-top: 1px solid #333333;
+ border-top: 1px solid #666666;
box-shadow: 0 1 1 #333333;
.btn {
diff --git a/h5/pages/workOrder/edit.vue b/h5/pages/workOrder/edit.vue
index 2116212..add269c 100644
--- a/h5/pages/workOrder/edit.vue
+++ b/h5/pages/workOrder/edit.vue
@@ -3,29 +3,30 @@
<view class="list">
<view class="item">
<view class="la"><text class="red">*</text>浣嶇疆绫诲瀷</view>
- <view class="line sel_wrap">
- <view class="left" :class="param.name ? '' : 'placeholder9'">{{ param.name ? param.name : '璇烽�夋嫨' }}</view>
+ <view class="line sel_wrap" @click="showModal0 = true">
+ <view class="left" :class="param.areaName ? '' : 'placeholder9'">{{ param.areaName ? param.areaName : '璇烽�夋嫨' }}
+ </view>
<u-icon name="arrow-right" color="#999999" size="15"></u-icon>
</view>
</view>
<view class="item">
<view class="la"><text class="red">*</text>閫夋嫨鍖哄煙</view>
- <view class="line sel_wrap">
- <view class="left" :class="param.name ? '' : 'placeholder9'">{{ param.name ? param.name : '璇烽�夋嫨' }}</view>
+ <view class="line sel_wrap" @click="showModal1 = true">
+ <view class="left" :class="param.projectName ? '' : 'placeholder9'">{{ param.projectName ? `${param.projectName} ${param.buildingName || ''} ${param.areaType == 0 ? param.roomName || '' : param.floorName || ''}` : '璇烽�夋嫨' }}</view>
<u-icon name="arrow-right" color="#999999" size="15"></u-icon>
</view>
</view>
<view class="item">
<view class="la">涓婇棬鏃堕棿</view>
- <view class="line sel_wrap">
- <view class="left" :class="param.name ? '' : 'placeholder9'">{{ param.name ? param.name : '璇烽�夋嫨' }}</view>
+ <view class="line sel_wrap" @click="showTime = true">
+ <view class="left" :class="param.getDate ? '' : 'placeholder9'">{{ param.getDate ? param.getDate : '璇烽�夋嫨' }}</view>
<u-icon name="arrow-right" color="#999999" size="15"></u-icon>
</view>
</view>
<view class="item">
<view class="la">鎻忚堪</view>
<view class="line">
- <textarea v-model="param.checkInfo" placeholder="璇疯緭鍏�" placeholder-class="placeholder9" />
+ <textarea v-model="param.content" placeholder="璇疯緭鍏�" placeholder-class="placeholder9" />
</view>
</view>
<view class="item">
@@ -35,16 +36,16 @@
<u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon>
<view class="mt6">鍥剧墖/瑙嗛</view>
</view>
- <view class="upload_file" v-for="(item, i) in dealFileList" :key="i">
+ <view class="upload_file" v-for="(item, i) in fileList" :key="i">
<u-icon class="close" size="20" name="close-circle-fill" color="red"
@click="fileDel('dealBeforeFileList', i)"></u-icon>
<image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
<video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
</view>
</view>
- </view>
- </view>
- <view class="sub_btn">鎻愪氦</view>
+ </view>
+ </view>
+ <view class="sub_btn" @click="onSubmit">鎻愪氦</view>
<!-- -->
<u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
<view class="sel_upload_wrap">
@@ -52,121 +53,252 @@
<view class="btn" @click="uploadVideo">閫夋嫨瑙嗛</view>
</view>
</u-popup>
+ <!-- -->
+ <u-picker :show="showModal0" keyName="name" @cancel="showModal0 = false" @confirm='confirm0'
+ :columns="areaType"></u-picker>
+ <!-- -->
+ <u-picker :show="showModal1" keyName="name" @cancel="showModal1 = false" @confirm='confirm1'
+ :columns="projectList"></u-picker>
+ <u-picker :show="showModal2" keyName="name" @cancel="showModal2 = false" @confirm='confirm2'
+ :columns="buildingList"></u-picker>
+ <u-picker :show="showModal3" keyName="name" @cancel="showModal3 = false" @confirm='confirm3'
+ :columns="floorList"></u-picker>
+ <u-picker :show="showModal4" keyName="name" @cancel="showModal4 = false" @confirm='confirm4'
+ :columns="roomList"></u-picker>
+ <!-- -->
+ <u-datetime-picker :minDate="new Date().getTime()" :show="showTime" @confirm="confirmDate"
+ @cancel="showTime = false" mode="datetime"></u-datetime-picker>
</view>
</template>
-<script>
- import {
- uploadUrl
- } from '@/api'
+<script>
+ import {
+ uploadUrl,
+ ywProjectPost,
+ ywBuildingPost,
+ ywFloorPost,
+ ywRoomPost,
+ ywWorkorderCreate
+ } from '@/api'
import dayjs from 'dayjs';
export default {
data() {
return {
param: {},
showUpload: false,
- dealFileList: [],
+ fileList: [],
+
+ showModal0: false,
+ showModal1: false,
+ showModal2: false,
+ showModal3: false,
+ showModal4: false,
+ showTime: false,
+ areaType: [
+ [{
+ name: '瀹ゅ唴瑁呬慨',
+ id: 0
+ },
+ {
+ name: '鍏叡缁翠慨',
+ id: 1
+ }
+ ]
+ ],
+ projectList: [],
+ buildingList: [],
+ floorList: [],
+ roomList: [],
};
- },
+ },
+ onLoad() {
+ this.getProject()
+ },
methods: {
- fileDel(str, i) {
- this[str].splice(i, 1);
+ onSubmit() {
+ const { param, fileList } = this
+ ywWorkorderCreate({
+ ...param,
+ // roomId: '',
+ fileList
+ }).then(res => {
+ this.showToast('鎻愪氦鎴愬姛')
+ uni.redirectTo({
+ url: '/pages/workOrder/list'
+ })
+ })
+ },
+ confirm0(e) {
+ const item = e.value[0]
+ this.$set(this.param, 'areaType', item.id)
+ this.$set(this.param, 'areaName', item.name)
+ this.showModal0 = false
+ this.param = {
+ areaType: item.id,
+ areaName: item.name,
+ }
+ },
+ confirm1(e) {
+ const item = e.value[0]
+ this.showModal1 = false
+ this.$set(this.param, 'projectName', item.name)
+ this.$set(this.param, 'projectId', item.id)
+ this.getBuilding(item.id)
+ this.showModal2 = true
+ },
+ confirm2(e) {
+ const item = e.value[0]
+ this.showModal2 = false
+ this.$set(this.param, 'buildingName', item.name)
+ this.$set(this.param, 'buildingId', item.id)
+ if (this.areaType == 0) {
+ this.getRoom(item.id)
+ this.showModal4 = true
+ } else {
+ this.getFloor(item.id)
+ this.showModal3 = true
+ }
},
- uploadImage() {
- this.showUpload = false;
- let token = uni.getStorageSync('token') || '';
- uni.chooseImage({
- count: 4,
- success: chooseImageRes => {
- uni.showLoading({
- title: '涓婁紶涓�',
- mask: true
- });
- const tempFilePaths = chooseImageRes.tempFilePaths;
- let imgs = tempFilePaths.map((value, index) => {
- return {
- name: 'file',
- uri: value
- };
- });
- uni.uploadFile({
- url: `${uploadUrl}`,
- files: imgs,
- name: 'file',
- formData: {
- folder: 'HIDDEN_DANGER_FILE'
- },
- header: {
- Dm_user_token: token
- },
- success: uploadFileRes => {
- let res = JSON.parse(uploadFileRes.data);
- if (res.data && res.data.length > 0) {
- res.data.forEach(i => {
- i.type = 0;
- i.fileurl = i.imgaddr;
- i.fileurlFull = i.url;
- this.submitFileList.push(i);
- });
- }
- },
- fail(err) {
- console.log('err', err);
- },
- complete() {
- uni.hideLoading();
- // if (i === chooseImageRes.tempFilePaths.length - 1) {
- // uni.hideLoading()
- // }
- }
- });
- }
- });
+ confirm3(e) {
+ const item = e.value[0]
+ this.showModal3 = false
+ this.$set(this.param, 'floorName', item.name)
+ this.$set(this.param, 'floorId', item.id)
},
- uploadVideo() {
- this.showUpload = false;
- let token = uni.getStorageSync('token') || '';
- uni.chooseVideo({
- success: chooseImageRes => {
- uni.showLoading({
- title: '涓婁紶涓�',
- mask: true
- });
- uni.uploadFile({
- url: `${uploadUrl}`,
- filePath: chooseImageRes.tempFilePath,
- header: {
- Dm_user_token: token
- },
- name: 'file',
- formData: {
- folder: 'HIDDEN_DANGER_FILE'
- },
- success: uploadFileRes => {
- let res = JSON.parse(uploadFileRes.data);
- if (res.data && res.data.length > 0) {
- res.data.forEach(i => {
- i.type = 1;
- i.fileurl = i.imgaddr;
- i.fileurlFull = i.url;
- this.submitFileList.push(i);
- });
- }
- },
- complete() {
- uni.hideLoading();
- }
- });
- }
- });
- }
+ confirm4(e) {
+ const item = e.value[0]
+ this.showModal4 = false
+ this.$set(this.param, 'roomName', item.name)
+ this.$set(this.param, 'roomId', item.id)
+ },
+ confirmDate(e) {
+ this.$set(this.param, 'getDate', dayjs(e.value).format('YYYY-MM-DD HH:mm:ss'));
+ this.showTime = false
+ },
+ getProject() {
+ ywProjectPost().then(res => {
+ this.projectList = [res.data || []]
+ })
+ },
+ getBuilding(projectId) {
+ ywBuildingPost({
+ projectId
+ }).then(res => {
+ this.buildingList = [res.data || []]
+ })
+ },
+ getFloor(buildingId) {
+ ywFloorPost({
+ buildingId
+ }).then(res => {
+ this.floorList = [res.data || []]
+ })
+ },
+ getRoom(buildingId) {
+ ywRoomPost({
+ buildingId
+ }).then(res => {
+ this.roomList = [res.data || []]
+ })
+ },
+ fileDel(str, i) {
+ this[str].splice(i, 1);
+ },
+ uploadImage() {
+ this.showUpload = false;
+ let token = uni.getStorageSync('token') || '';
+ uni.chooseImage({
+ count: 6,
+ success: chooseImageRes => {
+ uni.showLoading({
+ title: '涓婁紶涓�',
+ mask: true
+ });
+ const tempFilePaths = chooseImageRes.tempFilePaths;
+ let imgs = tempFilePaths.map((value, index) => {
+ return {
+ name: 'file',
+ uri: value
+ };
+ });
+ uni.uploadFile({
+ url: `${uploadUrl}`,
+ files: imgs,
+ name: 'file',
+ formData: {
+ folder: 'YW_WORKORDER_FILE'
+ },
+ header: {
+ Dm_user_token: token
+ },
+ success: uploadFileRes => {
+ let res = JSON.parse(uploadFileRes.data);
+ if (res.data && res.data.length > 0) {
+ res.data.forEach(i => {
+ i.type = 0;
+ i.fileurl = i.imgaddr;
+ i.fileurlFull = i.url;
+ this.fileList.push(i);
+ });
+ }
+ },
+ fail(err) {
+ console.log('err', err);
+ },
+ complete() {
+ uni.hideLoading();
+ // if (i === chooseImageRes.tempFilePaths.length - 1) {
+ // uni.hideLoading()
+ // }
+ }
+ });
+ }
+ });
+ },
+ uploadVideo() {
+ this.showUpload = false;
+ let token = uni.getStorageSync('token') || '';
+ uni.chooseVideo({
+ success: chooseImageRes => {
+ uni.showLoading({
+ title: '涓婁紶涓�',
+ mask: true
+ });
+ uni.uploadFile({
+ url: `${uploadUrl}`,
+ filePath: chooseImageRes.tempFilePath,
+ header: {
+ Dm_user_token: token
+ },
+ name: 'file',
+ formData: {
+ folder: 'YW_WORKORDER_FILE'
+ },
+ success: uploadFileRes => {
+ let res = JSON.parse(uploadFileRes.data);
+ if (res.data && res.data.length > 0) {
+ res.data.forEach(i => {
+ i.type = 1;
+ i.fileurl = i.imgaddr;
+ i.fileurlFull = i.url;
+ this.fileList.push(i);
+ });
+ }
+ },
+ complete() {
+ uni.hideLoading();
+ }
+ });
+ }
+ });
+ }
}
}
</script>
<style lang="scss" scoped>
- .list {
-
+ .list {
+
.item {
.la {
margin-top: 30rpx;
@@ -216,9 +348,11 @@
align-items: center;
justify-content: center;
position: relative;
- &:nth-of-type(4n){
- margin-right: 0;
+
+ &:nth-of-type(4n) {
+ margin-right: 0;
}
+
.close {
position: absolute;
right: -20rpx;
@@ -238,21 +372,33 @@
}
}
+ }
+
+ .sub_btn {
+ position: fixed;
+ bottom: 68rpx;
+ left: 40rpx;
+ width: 670rpx;
+ height: 88rpx;
+ background: $primaryColor;
+ box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0, 104, 255, 0.3);
+ border-radius: 44rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #FFFFFF;
}
- .sub_btn{
- position: fixed;
- bottom: 68rpx;
- left: 40rpx;
- width: 670rpx;
- height: 88rpx;
- background: $primaryColor;
- box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0,104,255,0.3);
- border-radius: 44rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- font-weight: 500;
- font-size: 32rpx;
- color: #FFFFFF;
+ .sel_upload_wrap {
+ width: 100%;
+ border-top: 1px solid #666666;
+ box-shadow: 0 1 1 #333333;
+
+ .btn {
+ height: 90rpx;
+ line-height: 90rpx;
+ text-align: center;
+ }
}
</style>
\ No newline at end of file
diff --git a/h5/pages/workOrder/list.vue b/h5/pages/workOrder/list.vue
index 0ea131f..6a87955 100644
--- a/h5/pages/workOrder/list.vue
+++ b/h5/pages/workOrder/list.vue
@@ -8,11 +8,11 @@
</view>
<!-- -->
<view class="tabs">
- <view class="tab" :class="{active: activeTab == 0}" @click="tabsClick(0)">
+ <view class="tab" :class="{active: activeTab == -1}" @click="tabsClick(-1)">
<text>寰呭鐞�</text>
<text class="border"></text>
</view>
- <view class="tab" :class="{active: activeTab == 1}" @click="tabsClick(1)">
+ <view class="tab" :class="{active: activeTab == 2}" @click="tabsClick(2)">
<text>宸插鐞�</text>
<text class="border"></text>
</view>
@@ -27,18 +27,20 @@
</view>
<!-- -->
<view class="list">
- <view class="item" v-for="item in 10" @click="itemClick(item)">
+ <view class="item" v-for="item in list" @click="itemClick(item)">
<image v-if="item.stats == 1" src="@/static/side/workordered.png" class="icon"></image>
<image v-else src="@/static/side/workorder.png" class="icon"></image>
<view class="content">
<view class="name_wrap line">
- <view class="name">A搴�/401</view>
- <view class="status">宸插鐞�</view>
+ <view class="name">{{item.buildingName}}/{{item.roomNum}}</view>
+ <view class="status gray" v-if="item.dealStatus == 2">宸插鐞�</view>
+ <view class="status" v-if="item.dealStatus == 0">寰呭鐞�</view>
+ <view class="status" v-if="item.dealStatus == 1">寰呭鐞�</view>
</view>
- <view class="line">宸ュ崟绫诲瀷锛歺xx</view>
- <view class="line">鎶ヤ慨鐗╁搧锛�121212</view>
- <view class="line">涓婃姤鏃堕棿锛�121212</view>
- <view class="line">涓婇棬鏃堕棿锛�121212</view>
+ <view class="line">浣嶇疆绫诲瀷锛歿{item.areaType == '0' ? '瀹ゅ唴瑁呬慨' : '鍏叡鍖哄煙'}}</view>
+ <view class="line">宸ュ崟鍒嗙被锛歿{item.categoryName}}</view>
+ <view class="line">涓婃姤鏃堕棿锛歿{item.createDate}}</view>
+ <view class="line">涓婇棬鏃堕棿锛歿{item.getDate}}</view>
</view>
</view>
</view>
@@ -46,29 +48,50 @@
</view>
</template>
-<script>
+<script>
+ import { ywWorkorder } from '@/api'
export default {
data() {
return {
param: {},
- activeTab: 0,
- selectAll: false
+ activeTab: -1,
+ selectAll: false,
+
+ list: [],
+ total: 0,
+ page: 1,
};
+ },
+ onShow() {
+ this.getList()
+ },
+ onReachBottom() {
+
},
methods: {
tabsClick(val) {
this.activeTab = val
+ this.list = []
+ this.page = 1
+ this,getList()
},
allClick() {
this.selectAll = !this.selectAll
},
- itemClick() {
+ itemClick(item) {
uni.navigateTo({
- url: '/pages/workOrder/detail'
+ url: `/pages/workOrder/detail?id=${item.id}`
})
},
getList() {
- console.log('---');
+ const { page, total, list, activeTab } = this
+ ywWorkorder({
+ page,
+ capacity: 10,
+ model: { }
+ }).then(res => {
+ this.list = res.data.records || []
+ })
}
}
}
@@ -181,6 +204,9 @@
.status{
color: $primaryColor;
}
+ .gray{
+ color: #999999;
+ }
}
}
}
diff --git a/h5/static/empty.png b/h5/static/empty.png
new file mode 100644
index 0000000..953c40f
--- /dev/null
+++ b/h5/static/empty.png
Binary files differ
diff --git a/h5/static/home/ic_xinzenggongdan@2x.png b/h5/static/home/ic_xinzenggongdan@2x.png
new file mode 100644
index 0000000..0324d69
--- /dev/null
+++ b/h5/static/home/ic_xinzenggongdan@2x.png
Binary files differ
diff --git a/h5/utils/service.js b/h5/utils/service.js
index 70e1617..0a05213 100644
--- a/h5/utils/service.js
+++ b/h5/utils/service.js
@@ -15,7 +15,7 @@
uni.request({
url: baseUrl + options.url,
data: options.data || {},
- method: options.method || 'GET',
+ method: options.method || 'POST',
header: options.header || {
// 鏍规嵁瀹為檯鎺ュ彛璁捐 key 鍙� token 鎴栬�� authorization
dm_user_token: token,
--
Gitblit v1.9.3