From 19754e8f95a24d3b3b0cd023badd245fea8f6cd5 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期四, 28 十一月 2024 15:08:11 +0800
Subject: [PATCH] h5
---
h5/pages/polling/detail.vue | 204 ++++
h5/pages/workOrder/edit.vue | 258 +++++
h5/static/home/ic_fangkebaobei@2x.png | 0
h5/static/side/ic_dabiao.png | 0
h5/static/side/phoneed.png | 0
h5/pages/operation/device.vue | 376 +++++++
h5/static/side/ic_saoma@2x.png | 0
h5/static/side/ic_shuiyu@2x.png | 0
h5/pages/operation/detail.vue | 92 +
h5/pages/index.vue | 135 ++
h5/pages/login.vue | 225 ++++
h5/static/side/xunjian.png | 0
h5/pages/polling/task.vue | 213 ++++
h5/static/home/ic_renwuzhongxin@2x.png | 0
h5/static/radioed.png | 0
h5/pages/workOrder/detail.vue | 480 ++++++++++
h5/pages/polling/point.vue | 378 +++++++
h5/static/check.png | 0
h5/static/side/workorder.png | 0
h5/.hbuilderx/launch.json | 9
h5/static/home/ic_search@2x.png | 0
h5/static/home/ic_wodehuiyi@2x.png | 0
h5/static/side/workordered.png | 0
h5/static/side/xunjianed.png | 0
h5/manifest.json | 1
h5/uni.scss | 3
h5/pages.json | 74 +
h5/static/home/home_bg.jpg | 0
h5/static/checked.png | 0
h5/static/login_ic_password@2x.png | 0
h5/static/home/ic_fangkebaobe@2x.png | 0
h5/pages/workOrder/list.vue | 188 +++
/dev/null | 52 -
h5/static/home/ic_fangkeba.png | 0
h5/static/side/ic_dabiaoed.png | 0
h5/pages/operation/record.vue | 134 ++
h5/static/login_ic_phone@2x.png | 0
h5/static/side/scan.png | 0
h5/App.vue | 16
39 files changed, 2,778 insertions(+), 60 deletions(-)
diff --git a/h5/.hbuilderx/launch.json b/h5/.hbuilderx/launch.json
new file mode 100644
index 0000000..f5c1c0b
--- /dev/null
+++ b/h5/.hbuilderx/launch.json
@@ -0,0 +1,9 @@
+{
+ "version" : "1.0",
+ "configurations" : [
+ {
+ "openVueDevtools" : false,
+ "type" : "uni-app:h5"
+ }
+ ]
+}
diff --git a/h5/App.vue b/h5/App.vue
index 8f99e4c..878bfe5 100644
--- a/h5/App.vue
+++ b/h5/App.vue
@@ -15,13 +15,21 @@
<style lang="scss">
/*姣忎釜椤甸潰鍏叡css */
@import "uview-ui/index.scss";
-
+body{
+ font-size: 28rpx;
+}
.flex-cb {
display: flex;
justify-content: space-between;
align-items: center;
}
-
+.bg{
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+}
.container {
height: 100%;
width: 100%;
@@ -110,7 +118,9 @@
padding: 16rpx;
position: relative;
}
-
+.red{
+ color: red;
+}
.card::after {
content: "";
display: block;
diff --git a/h5/manifest.json b/h5/manifest.json
index cd8f8b1..2e78cce 100644
--- a/h5/manifest.json
+++ b/h5/manifest.json
@@ -121,6 +121,7 @@
},
// "base" : "/h5/"
"devServer" : {
+ "open": false,
"port" : 8090,
"historyApiFallback" : true,
"disableHostCheck" : true,
diff --git a/h5/pages.json b/h5/pages.json
index dcfd2f8..c288dfa 100644
--- a/h5/pages.json
+++ b/h5/pages.json
@@ -2,13 +2,79 @@
"easycom": {
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
},
- "pages": [
- {
- "path": "pages/index/index",
+ "pages": [{
+ "path": "pages/index",
"style": {
- "navigationBarTitleText": "璁垮涓績",
+ "navigationBarTitleText": "棣栭〉",
"enablePullDownRefresh": false
}
+ },
+ {
+ "path": "pages/login",
+ "style": {
+ "navigationBarTitleText": "鐧诲綍"
+ }
+ },
+ {
+ "path": "pages/workOrder/list",
+ "style": {
+ "navigationBarTitleText": "宸ュ崟鍒楄〃"
+ }
+ },
+ {
+ "path": "pages/workOrder/detail",
+ "style": {
+ "navigationBarTitleText": "宸ュ崟璇︽儏"
+ }
+ },
+ {
+ "path" : "pages/workOrder/edit",
+ "style" :
+ {
+ "navigationBarTitleText" : "鏂板宸ュ崟"
+ }
+ },
+ {
+ "path" : "pages/operation/record",
+ "style" :
+ {
+ "navigationBarTitleText" : "杩愮淮璁板綍"
+ }
+ },
+ {
+ "path" : "pages/operation/detail",
+ "style" :
+ {
+ "navigationBarTitleText" : "杩愮淮璇︽儏"
+ }
+ },
+ {
+ "path" : "pages/operation/device",
+ "style" :
+ {
+ "navigationBarTitleText" : "璁惧杩愮淮"
+ }
+ },
+ {
+ "path" : "pages/polling/task",
+ "style" :
+ {
+ "navigationBarTitleText" : "宸℃浠诲姟"
+ }
+ },
+ {
+ "path" : "pages/polling/detail",
+ "style" :
+ {
+ "navigationBarTitleText" : "杩愮淮璇︽儏"
+ }
+ },
+ {
+ "path" : "pages/polling/point",
+ "style" :
+ {
+ "navigationBarTitleText" : "宸℃鐐�"
+ }
}
],
"globalStyle": {
diff --git a/h5/pages/index.vue b/h5/pages/index.vue
new file mode 100644
index 0000000..3970282
--- /dev/null
+++ b/h5/pages/index.vue
@@ -0,0 +1,135 @@
+<template>
+ <view class="main_app">
+ <view class="hone_name title">{{ userInfo.name }}锛屾杩庣櫥褰�</view>
+ <view class="home_con">
+ <image class="bg" src="@/static/home/home_bg.jpg" mode=""></image>
+ <view class="h1">闃滃畞鏂囦綋涓績</view>
+ <view class="h2">娆㈣繋浣�</view>
+ </view>
+ <view class="title">涓氬姟鍔炵悊</view>
+ <view class="list">
+ <view v-for="item in list1" class="item" @click="itemClick(item)">
+ <image :src="item.img"></image>
+ <view class="name">{{item.name}}</view>
+ </view>
+ </view>
+ <view class="title">涓氬姟鏌ヨ</view>
+ <view class="list">
+ <view v-for="item in list2" class="item" @click="itemClick(item)">
+ <image :src="item.img"></image>
+ <view class="name">{{item.name}}</view>
+ </view>
+ </view>
+ </view>
+
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ userInfo: uni.getStorageSync('userInfo') || {},
+ list1: [{
+ name: '鎵爜宸℃',
+ url: '',
+ img: require('@/static/home/ic_fangkebaobei@2x.png'),
+ auth: 'weixin:menu:visitcar'
+ },
+ {
+ name: '宸ュ崟鏈嶅姟',
+ url: '/pages/workOrder/list',
+ img: require('@/static/home/ic_fangkeba.png'),
+ auth: 'weixin:menu:visitcar'
+ },
+ {
+ name: '璁惧杩愮淮',
+ url: '/pages/operation/device',
+ img: require('@/static/home/ic_fangkebaobe@2x.png'),
+ auth: 'weixin:menu:visitcar'
+ },
+ ],
+ list2: [{
+ name: '宸℃浠诲姟',
+ url: '/pages/polling/task',
+ img: require('@/static/home/ic_renwuzhongxin@2x.png'),
+ auth: 'weixin:menu:visitcar'
+ },
+ {
+ name: '杩愮淮璁板綍',
+ url: '/pages/operation/record',
+ img: require('@/static/home/ic_wodehuiyi@2x.png'),
+ auth: 'weixin:menu:visitcar'
+ },
+ ]
+ }
+ },
+ onLoad() {
+
+ },
+ methods: {
+ itemClick(item) {
+ uni.navigateTo({
+ url: item.url
+ })
+ },
+
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .main_app {
+ padding: 0 30rpx;
+
+ .hone_name {
+
+ height: 90rpx;
+ display: flex;
+ align-items: center;
+ }
+
+ .home_con {
+ width: 690rpx;
+ height: 270rpx;
+ border-radius: 8rpx;
+ margin-bottom: 40rpx;
+ padding: 36rpx 40rpx;
+ position: relative;
+ color: #fff;
+
+ .h1 {
+ font-weight: bold;
+ font-size: 44rpx;
+ margin-bottom: 14rpx;
+ }
+ }
+
+ .title {
+ font-weight: 500;
+ font-size: 34rpx;
+ }
+
+ .list {
+ margin-top: 30rpx;
+ margin-bottom: 80rpx;
+ display: flex;
+
+ .item {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: 25%;
+
+ image {
+ width: 88rpx;
+ height: 88rpx;
+ margin-bottom: 20rpx;
+ }
+
+ .name {
+ font-size: 26rpx;
+ }
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/h5/pages/index/index.vue b/h5/pages/index/index.vue
deleted file mode 100644
index 4ca2b92..0000000
--- a/h5/pages/index/index.vue
+++ /dev/null
@@ -1,52 +0,0 @@
-<template>
- <view class="content">
- <image class="logo" src="/static/logo.png"></image>
- <view class="text-area">
- <text class="title">{{title}}</text>
- </view>
- </view>
-</template>
-
-<script>
- export default {
- data() {
- return {
- title: 'Hello'
- }
- },
- onLoad() {
-
- },
- methods: {
-
- }
- }
-</script>
-
-<style>
- .content {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- }
-
- .logo {
- height: 200rpx;
- width: 200rpx;
- margin-top: 200rpx;
- margin-left: auto;
- margin-right: auto;
- margin-bottom: 50rpx;
- }
-
- .text-area {
- display: flex;
- justify-content: center;
- }
-
- .title {
- font-size: 36rpx;
- color: #8f8f94;
- }
-</style>
diff --git a/h5/pages/login.vue b/h5/pages/login.vue
new file mode 100644
index 0000000..0b3b772
--- /dev/null
+++ b/h5/pages/login.vue
@@ -0,0 +1,225 @@
+<template>
+ <view class="login">
+ <view class="login_title">娆㈣繋鐧诲綍</view>
+ <view class="login_title login_title2">闃滃畞鏂囦綋涓績</view>
+ <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="璇疯緭鍏ユ墜鏈哄彿" />
+ </view>
+<!-- <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">
+ <image src="@/static/login_ic_password@2x.png" mode="widthFix"></image>
+ <input v-model="form.code" placeholder="璇疯緭鍏ラ獙璇佺爜" type="text" />
+ <view class="btn">鑾峰彇楠岃瘉鐮�</view>
+ </view>
+ </view>
+ <view class="login_btn">
+ <view class="login_btn_n" @click="onLogin">鐧诲綍</view>
+ </view>
+ </view>
+</template>
+
+<script>
+import { loginPost, loginCaptcha, getUserInfo, getSystemDictData } from '@/api'
+import { mapState, mapMutations } from 'vuex'
+export default {
+ name: 'login',
+
+ data() {
+ return {
+ form: {
+ // username: '18056814089',
+ username: '',
+ password: '',
+ code: ''
+ },
+ isShowProtocol: false,
+ ProtocolFlag: false,
+ captcha: {},
+ htmlText: ''
+ }
+ },
+
+ onLoad() {
+ this.initCaptcha()
+ },
+ onBackPress(options) {
+ uni.redirectTo({
+ url: '/pages/login/login'
+ })
+ return true
+ },
+ 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
+ })
+ },
+
+ 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: '瀵嗙爜涓嶈兘涓虹┖',
+ icon: 'none'
+ })
+ if (!form.code) return uni.showToast({
+ title: '楠岃瘉鐮佷笉鑳戒负绌�',
+ icon: 'none'
+ })
+ loginPost({
+ ...form,
+ uuid: this.captcha.uuid,
+ openId: this.$store.state.openId
+ }).then(res => {
+ if (res.code === 200) {
+ this.setToken(res.data)
+ getUserInfo().then(ress => {
+ this.setUserInfo(ress.data)
+ uni.redirectTo({
+ url: "/pages/staff/index"
+ })
+ })
+ }
+ })
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+.login {
+ width: 100%;
+ height: 100vh;
+ display: flex;
+ padding-top: 130rpx;
+ box-sizing: border-box;
+ align-items: center;
+ flex-direction: column;
+ background: linear-gradient( 180deg, #C5DDFF 0%, #FFFFFF 100%);
+ .login_title {
+ font-weight: 500;
+ font-size: 52rpx;
+ color: #222222;
+ margin-top: 180rpx;
+ width: 100%;
+ padding-left: 60rpx;
+ }
+ .login_title2{
+ margin-top: 10rpx;
+ margin-bottom: 80rpx;
+ }
+ .login_list {
+ width: 100%;
+ padding: 0 60rpx;
+ box-sizing: border-box;
+ .login_list_item {
+ width: 100%;
+ border-radius: 50rpx;
+ height: 98rpx;
+ padding: 0 40rpx;
+ box-sizing: border-box;
+ background: #ffffff;
+ margin-bottom: 40rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ &:last-child {
+ margin-bottom: 0 !important;
+ }
+ image {
+ flex-shrink: 0;
+ width: 40rpx;
+ height: 40rpx;
+ }
+ .btn{
+ width: 145rpx;
+ color: $primaryColor;
+ }
+ input {
+ flex: 1;
+ height: 100%;
+ color: #666666;
+ margin-left: 24rpx;
+ border: none;
+ }
+ }
+ }
+ .login_btn {
+ width: 100%;
+ padding: 0 60rpx;
+ box-sizing: border-box;
+ margin-top: 60rpx;
+ .for_psd {
+ color: $uni-color-primary;
+ width: 140rpx;
+ text-align: center;
+ margin: 40rpx auto;
+ }
+ .login_btn_n {
+ width: 100%;
+ height: 98rpx;
+ background: $uni-color-primary;
+ box-shadow: 0rpx 12rpx 24rpx 0rpx rgba(39, 155, 170, 0.2);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: #ffffff;
+ border-radius: 50rpx;
+ font-weight: 500;
+ font-size: 32rpx;
+ }
+ }
+ .deal_wrap {
+ position: absolute;
+ width: 100%;
+ left: 0;
+ text-align: center;
+ bottom: 88rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ .deal {
+ color: $uni-color-primary;
+ }
+ .checked {
+ width: 48rpx;
+ margin-right: 12rpx;
+ }
+ }
+}
+.modal {
+ width: 690rpx;
+ min-height: 920rpx;
+ max-height: 720px;
+ border-radius: 24rpx;
+ padding: 32rpx;
+}
+</style>
diff --git a/h5/pages/operation/detail.vue b/h5/pages/operation/detail.vue
new file mode 100644
index 0000000..ab1ce29
--- /dev/null
+++ b/h5/pages/operation/detail.vue
@@ -0,0 +1,92 @@
+<template>
+ <view>
+ <view class="content">
+ <view class="name_wrap">
+ <view class="name">xx璁惧</view>
+ <view class="status red">姝e父</view>
+ </view>
+ <view class="line">杩愮淮浜猴細xxx</view>
+ <view class="line">杩愮淮鏃堕棿锛�121212</view>
+ </view>
+ <!-- -->
+ <view class="remark">
+ <view class="title">杩愮淮澶囨敞</view>
+ <view class="file_list">
+ <view class="file">
+
+ </view>
+ </view>
+ <view class="desc">remark</view>
+ </view>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+
+ };
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .content {
+ flex: 1;
+ color: #666666;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ height: 260rpx;
+ padding: 30rpx;
+ border-bottom: 20rpx solid #f7f7f7;
+ .name_wrap {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ .name{
+ font-weight: 600;
+ font-size: 34rpx;
+ color: #222222;
+ }
+
+ .status {
+ color: $primaryColor;
+ }
+ }
+ }
+ .remark{
+ padding: 0 30rpx;
+ .title{
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ height: 104rpx;
+ display: flex;
+ align-items: center;
+ }
+ .file_list{
+ display: flex;
+ flex-wrap: wrap;
+
+ .file{
+ width: 156rpx;
+ height: 156rpx;
+ border-radius: 12rpx;
+ margin-right: 22rpx;
+ margin-bottom: 22rpx;
+ &:nth-of-type(4n){
+ margin-right: 0;
+ }
+ }
+ }
+ .desc{
+ margin-top: 8rpx;
+ padding: 24rpx 30rpx;
+ background: #F7F7F7;
+ border-radius: 12rpx;
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/h5/pages/operation/device.vue b/h5/pages/operation/device.vue
new file mode 100644
index 0000000..125001a
--- /dev/null
+++ b/h5/pages/operation/device.vue
@@ -0,0 +1,376 @@
+<template>
+ <view class="main_app">
+ <view class="list">
+ <view class="item">
+ <view class="la"><text class="red">*</text>閫夋嫨璁惧</view>
+ <view class="line">
+ <view class="sel_wrap" @click="showModal = true">
+ <view class="left" :class="param.name ? '' : 'placeholder9'">{{ param.name ? param.name : '璇烽�夋嫨璁惧' }}</view>
+ <u-icon name="arrow-right" color="#999999" size="17"></u-icon>
+ </view>
+ <image class="icon" src="@/static/side/scan.png" mode=""></image>
+ </view>
+ </view>
+ <view class="item">
+ <view class="la">璁惧鐘舵��</view>
+ <view class="line">
+ <view class="radio_wrap">
+ <view class="ite" :class="{active: param.status == 0}" @click="statusChange(0)">姝e父</view>
+ <view class="ite" :class="{active: param.status == 1}" @click="statusChange(1)">鎹熷潖</view>
+ <view class="ite" :class="{active: param.status == 2}" @click="statusChange(2)">鎶ュ簾</view>
+ </view>
+ </view>
+ </view>
+ <view class="item">
+ <view class="la">涓婁紶瑙嗛/鍥剧墖</view>
+ <view class="upload_wrap">
+ <view class="upload_file" @click="showUpload = true">
+ <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">
+ <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 class="item">
+ <view class="la">杩愮淮澶囨敞</view>
+ <view class="line">
+ <textarea v-model="param.checkInfo" placeholder="璇疯緭鍏�" placeholder-class="placeholder9" />
+ </view>
+ </view>
+ </view>
+ <view class="sub_btn">
+ 鎻愪氦
+ </view>
+ <!-- -->
+ <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
+ <view class="sel_upload_wrap">
+ <view class="btn" @click="uploadImage">閫夋嫨鍥剧墖</view>
+ <view class="btn" @click="uploadVideo">閫夋嫨瑙嗛</view>
+ </view>
+ </u-popup>
+ <!-- -->
+ <u-popup :show="showModal" @close="showModal = false" :safeAreaInsetBottom="true" :round="10" closeable closeOnClickOverlay>
+ <view class="appr_modal">
+ <view class="title">璇烽�夋嫨璁惧</view>
+ <view class="search_wrap">
+ <image class="mr12 search" src="@/static/home/ic_search@2x.png" mode="widthFix"></image>
+ <input v-model="searchValue" @confirm="getDevice()" type="text" placeholder="鎼滅储璁惧鍚嶇О/缂栧彿" placeholder-class="placeholder9" />
+ </view>
+ <view class="modal_list">
+ <view class="item">
+ <view class="name">璁惧name</view>
+ <image src="@/static/radioed.png" mode=""></image>
+ </view>
+ </view>
+ <view class="sub_btn">
+ 纭畾閫夋嫨
+ </view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+ import {
+ uploadUrl
+ } from '@/api'
+ import dayjs from 'dayjs';
+ export default {
+ data() {
+ return {
+ param: {status: 0},
+ showUpload: false,
+ showModal: false,
+ dealFileList: [],
+
+ searchValue: '',
+ deviceList: [],
+ activeDevice: {}
+ };
+ },
+ methods: {
+ getDevice(){
+
+ },
+ statusChange(val){
+ this.param.status = val
+ },
+ fileDel(str, i) {
+ this[str].splice(i, 1);
+ },
+ 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()
+ // }
+ }
+ });
+ }
+ });
+ },
+ 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();
+ }
+ });
+ }
+ });
+ }
+ }
+ }
+</script>
+
+<style lang="scss">
+ .list {
+
+ .item {
+ .la {
+ margin-top: 30rpx;
+ }
+
+ .line {
+ display: flex;
+ align-items: center;
+ .icon{
+ width: 52rpx;
+ height: 52rpx;
+ margin-left: 40rpx;
+ }
+ textarea {
+ box-sizing: border-box;
+ width: 690rpx;
+ min-height: 160rpx;
+ background-color: #f7f7f7;
+ font-size: 28rpx;
+ color: #333333;
+ padding: 24rpx;
+ border-radius: 8rpx;
+ margin-bottom: 30rpx;
+ margin-top: 20rpx;
+ }
+ }
+
+ .sel_wrap {
+ flex: 1;
+ height: 90rpx;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ border-bottom: 1rpx solid #E5E5E5;
+ }
+ .radio_wrap{
+ margin-top: 20rpx;
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ .ite{
+ width: 216rpx;
+ height: 68rpx;
+ background: #F7F7F7;
+ border-radius: 36rpx;
+ font-size: 30rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ .active{
+ color: $primaryColor;
+ border-color: $primaryColor;
+ background: rgba(0,104,255,0.1);
+ }
+ }
+ .upload_wrap {
+ display: flex;
+ flex-wrap: wrap;
+ margin-bottom: 30rpx;
+ }
+
+ .upload_file {
+ margin-top: 24rpx;
+ width: 156rpx;
+ height: 156rpx;
+ margin-right: 20rpx;
+ border: 2rpx solid #e5e5e5;
+ background: #f7f7f7;
+ color: #666666;
+ font-size: 22rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+
+ &:nth-of-type(4n) {
+ margin-right: 0;
+ }
+
+ .close {
+ position: absolute;
+ right: -20rpx;
+ top: -20rpx;
+ z-index: 9999;
+ }
+
+ image {
+ width: 100%;
+ height: 100%;
+ }
+
+ video {
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ }
+ }
+ .sel_upload_wrap {
+ width: 100%;
+ border-top: 1px solid #333333;
+ box-shadow: 0 1 1 #333333;
+
+ .btn {
+ height: 90rpx;
+ line-height: 90rpx;
+ text-align: center;
+ }
+ }
+ .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;
+ }
+ .appr_modal {
+ padding: 36rpx 30rpx 0;
+ height: calc( 100vh - 120rpx );
+ .title {
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ margin-bottom: 40rpx;
+ text-align: center;
+ }
+
+ .search_wrap {
+ display: flex;
+ align-items: center;
+ width: 100%;
+ height: 76rpx;
+ background: #f2f2f2;
+ border-radius: 38rpx;
+ padding-left: 30rpx;
+ input{
+ flex: 1;
+ }
+ .search {
+ width: 28rpx;
+ height: 28rpx;
+ }
+ }
+ .modal_list{
+ height: calc( 100% - 360rpx );
+ .item{
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ height: 100rpx;
+ font-size: 30rpx;
+ border-bottom: 1px solid #E5E5E5;
+ image{
+ width: 40rpx;
+ height: 40rpx;
+ }
+ }
+ .active{
+ color: $primaryColor;
+ }
+ }
+
+ }
+</style>
\ No newline at end of file
diff --git a/h5/pages/operation/record.vue b/h5/pages/operation/record.vue
new file mode 100644
index 0000000..818efb9
--- /dev/null
+++ b/h5/pages/operation/record.vue
@@ -0,0 +1,134 @@
+<template>
+ <view class="main_app">
+ <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" />
+ </view>
+ <view class="name_wrap" @click="showModal = true">
+ <view class="name">杩愮淮浜�</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)">
+ <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>
+ </view>
+ <view class="status red">姝e父</view>
+ </view>
+ <view class="line">杩愮淮浜猴細xxx</view>
+ <view class="line">杩愮淮鏃堕棿锛�121212</view>
+ </view>
+
+ </view>
+ </view>
+ <!-- -->
+ <u-picker :show="showModal" keyName="name" @cancel="showModal = false" @confirm='confirm'
+ :columns="columns"></u-picker>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ param: {},
+ columns: [],
+ showModal: false
+ };
+ },
+ methods: {
+ getList() {},
+ confirm() {
+ this.showModal = false
+ },
+ itemClick() {
+ uni.navigateTo({
+ url: '/pages/operation/detail'
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .main_app{
+ padding: 0 30rpx;
+ }
+ .head_wrap {
+ display: flex;
+ align-items: center;
+
+ .search_wrap {
+ display: flex;
+ align-items: center;
+ width: 540rpx;
+ height: 76rpx;
+ background: #F7F7F7;
+ border-radius: 38rpx;
+ padding-left: 30rpx;
+ input{
+ flex: 1;
+ }
+ .search {
+ width: 28rpx;
+ height: 28rpx;
+ }
+ }
+
+ .name_wrap {
+ display: flex;
+ align-items: center;
+ margin-left: 12rpx;
+ justify-content: flex-end;
+ flex: 1;
+ }
+ }
+
+ .list {
+ .item {
+ display: flex;
+ height: 228rpx;
+ padding: 30rpx 0;
+ border-bottom: 2rpx solid #E5E5E5;
+ .icon {
+ width: 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;
+ }
+ }
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/h5/pages/polling/detail.vue b/h5/pages/polling/detail.vue
new file mode 100644
index 0000000..e2415e9
--- /dev/null
+++ b/h5/pages/polling/detail.vue
@@ -0,0 +1,204 @@
+<template>
+ <view class="main_app">
+ <view class="head_bg"></view>
+ <view class="info">
+ <image v-if="true" class="icon" src="@/static/side/ic_dabiaoed.png" mode=""></image>
+ <image v-else class="icon" src="@/static/side/ic_dabiao.png" mode=""></image>
+ <view class="head">
+ <view class="name">宸℃璁″垝</view>
+ <view class="status">寰呭紑濮�</view>
+ </view>
+ <view class="line">
+ <view class="la">浠诲姟鏃ユ湡锛�</view>
+ <view class="val">2023-23-23</view>
+ </view>
+ <view class="line">
+ <view class="la">鎵ц鏃堕棿锛�</view>
+ <view class="val">2023-23-23</view>
+ </view>
+ <view class="line">
+ <view class="la">瀹屾垚鎯呭喌锛�</view>
+ <view class="val">2023-23-23</view>
+ </view>
+ </view>
+ <view class="title">宸℃鐐瑰垪琛�(1)</view>
+ <view class="list">
+ <view class="item" v-for="i in 10" @click="itemClick()">
+ <view class="icon"></view>
+ <view class="content">
+ <view class="head">
+ <view>宸℃鐐�10</view>
+ <view class="status">寰呭贰妫�</view>
+ </view>
+ <view class="desc">宸℃鍐呭鏈�澶氬睍绀轰袱琛岋紝澶氱殑鐪佺暐宸℃鍐呭鏈�澶氬睍绀轰袱琛岋紝澶氱殑鐪佺暐宸℃鍐呭鏈�澶氬睍绀轰袱琛岋紝澶氱殑鐪佺暐宸℃鍐呭鏈�澶氬睍绀轰袱琛岋紝澶氱殑鐪佺暐宸℃鍐呭鏈�澶氬睍绀轰袱琛岋紝澶氱殑鐪佺暐宸℃鍐呭鏈�澶氬睍绀轰袱琛岋紝澶氱殑鐪佺暐
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="footer">
+ <view class="sub_btn">鎵爜宸℃</view>
+ </view>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+
+ };
+ },
+ methods: {
+ itemClick() {
+ uni.navigateTo({
+ url: '/pages/polling/point'
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss">
+ page {
+ background: #F7F7F7;
+ }
+
+ .main_app {
+ padding: 30rpx;
+
+ .head_bg {
+ background: linear-gradient(180deg, #008BFF 0%, rgba(247, 247, 247, 0) 100%);
+ height: 240rpx;
+ width: 750rpx;
+ position: absolute;
+ top: 0;
+ left: 0;
+ }
+
+ .info {
+ width: 690rpx;
+ box-shadow: 0rpx 4rpx 16rpx 0rpx #E5E5E5;
+ border-radius: 20rpx;
+ opacity: 0.95;
+ padding: 30rpx 30rpx 10rpx;
+ margin-bottom: 40rpx;
+ background: linear-gradient(#FFFFFF 0%, #FFFFFF 48%, #F0F5FF 100%);
+ position: relative;
+ .icon{
+ position: absolute;
+ right: 30rpx;
+ bottom: 30rpx;
+ width: 160rpx;
+ height: 122rpx;
+ }
+ .head {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 30rpx;
+
+ .name {
+ font-weight: 600;
+ font-size: 34rpx;
+ }
+
+ .status {
+ color: $primaryColor;
+ }
+ }
+
+ .line {
+ display: flex;
+ margin-bottom: 20rpx;
+
+ .la {
+ color: #666666;
+ }
+ }
+ }
+
+ .title {
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ margin-bottom: 30rpx;
+ }
+
+ .list {
+ height: calc( 100vh - 720rpx ) ;
+ overflow: auto;
+ .item {
+ width: 690rpx;
+ height: 188rpx;
+ background: linear-gradient(#FFFFFF 0%, #FFFFFF 48%, #F0F5FF 100%);
+ box-shadow: 0rpx 4rpx 12rpx 0rpx #E5E5E5;
+ border-radius: 12rpx;
+ opacity: 0.95;
+ display: flex;
+ padding: 20rpx 30rpx 0 16rpx;
+ margin-bottom: 20rpx;
+
+ .icon {
+ width: 10rpx;
+ height: 148rpx;
+ background: $primaryColor;
+ border-radius: 6rpx;
+ margin-right: 24rpx;
+ }
+
+ .content {
+ flex: 1;
+
+ .head {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ font-weight: 500;
+ font-size: 32rpx;
+ margin-bottom: 16rpx;
+
+ .status {
+ offset-anchor: 28rpx;
+ color: $primaryColor;
+ font-weight: 400;
+ }
+ }
+
+ .desc {
+ font-size: 26rpx;
+ color: #666666;
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ width: 100%;
+ }
+ }
+ }
+ }
+ .footer{
+ position: fixed;
+ bottom: 0rpx;
+ left: 0rpx;
+ width: 750rpx;
+ height: 172rpx;
+ background-color: #fff;
+ padding: 20rpx 40rpx;
+ .sub_btn {
+
+ 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;
+ }
+ }
+
+ }
+</style>
\ No newline at end of file
diff --git a/h5/pages/polling/point.vue b/h5/pages/polling/point.vue
new file mode 100644
index 0000000..6a97c8a
--- /dev/null
+++ b/h5/pages/polling/point.vue
@@ -0,0 +1,378 @@
+<template>
+ <view class="main_app">
+ <view class="info">
+ <view class="head">
+ <view class="">宸℃鐐�</view>
+ <view class="status">宸插贰妫�</view>
+ </view>
+ <template v-if="false">
+ <view class="line">
+ <div class="la">宸℃缁撴灉锛�</div>
+ <div class="val">姝e父</div>
+ </view>
+ <view class="line">
+ <div class="la">宸℃鏃堕棿锛�</div>
+ <div class="val">2022</div>
+ </view>
+ </template>
+ <template v-else>
+ <view class="desc">
+ 宸℃鍐呭
+ </view>
+ </template>
+ </view>
+ <!-- -->
+ <view v-if="false" class="content">
+ <view class="title">宸℃璁板綍</view>
+ <view class="desc">宸茬粡鏇存崲鐏场</view>
+ <view class="line line_s">
+ <view class="la">宸℃浜猴細</view>
+ <view class="val">xxx</view>
+ </view>
+ <view class="line line_s">
+ <view class="la">宸℃鏃堕棿锛�</view>
+ <view class="val">xxx</view>
+ </view>
+ </view>
+ <view v-else class="content">
+ <view class="title">宸℃澶勭悊</view>
+ <view class="appr_modal">
+ <view class="df_sb">
+ <view>澶勭悊鏃堕棿</view>
+ <view class="df_ac" @click="isShowHandleDate = true" v-if="handleParam.dealTime">
+ {{ handleParam.dealTime }}
+ <u-icon name="arrow-right"></u-icon>
+ </view>
+ <view @click="isShowHandleDate = true" v-else class="placeholder9 df_ac">
+ 璇烽�夋嫨
+ <u-icon name="arrow-right"></u-icon>
+ </view>
+ </view>
+
+ <view class="label">
+ <text>*</text>
+ 涓婁紶鍥剧墖/瑙嗛
+ </view>
+ <view class="upload_wrap">
+ <view class="adduser_list_item_ipt1_upload" @click="showUpload = true">
+ <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon>
+ <view class="mt6">鍥剧墖/瑙嗛</view>
+ </view>
+ <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in dealFileList" :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 class="label">澶勭悊璇存槑</view>
+ <textarea v-model="handleParam.checkInfo" placeholder="璇峰~鍐欏鐞嗚鏄�" placeholder-class="placeholder9" />
+ </view>
+ </view>
+ <view class="sub_btn">纭宸℃</view>
+ <!-- -->
+ <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
+ <view class="sel_upload_wrap">
+ <view class="btn" @click="uploadImage">閫夋嫨鍥剧墖</view>
+ <view class="btn" @click="uploadVideo">閫夋嫨瑙嗛</view>
+ </view>
+ </u-popup>
+ <!-- -->
+ <u-datetime-picker :minDate="new Date().getTime()" :show="isShowHandleDate" @confirm="confirmHandleDate"
+ @cancel="isShowHandleDate = false" mode="datetime"></u-datetime-picker>
+ </view>
+</template>
+
+<script>
+ import {
+ uploadUrl
+ } from '@/api'
+ import dayjs from 'dayjs';
+ export default {
+ data() {
+ return {
+ showUpload: false,
+ isShowHandle: false,
+ isShowHandleDate: false,
+ handleParam: {},
+ dealFileList: []
+ };
+ },
+ methods: {
+ onSubmit() {
+
+ },
+ callPhone() {
+ uni.makePhoneCall({
+ phoneNumber: '114' //浠呬负绀轰緥
+ });
+ },
+ confirmHandleDate(e) {
+ this.$set(this.handleParam, 'dealTime', dayjs(e.value).format('YYYY-MM-DD HH:mm:ss'));
+ this.isShowHandleDate = false;
+ },
+ fileDel(str, i) {
+ this[str].splice(i, 1);
+ },
+ 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()
+ // }
+ }
+ });
+ }
+ });
+ },
+ 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();
+ }
+ });
+ }
+ });
+ }
+ }
+ }
+</script>
+
+<style lang="scss">
+ .main_app {
+ .info {
+ margin: 0 -30rpx;
+ border-bottom: 14rpx solid #f7f7f7;
+ padding: 30rpx;
+
+ .head {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ font-weight: 600;
+ font-size: 34rpx;
+ margin-bottom: 30rpx;
+
+ .status {
+ font-weight: 400;
+ font-size: 28rpx;
+ color: #999999;
+ }
+ }
+ }
+
+ .line {
+ display: flex;
+ margin-top: 20rpx;
+
+ .la {
+ color: #666666;
+
+ }
+ }
+
+ .desc {
+ padding: 24rpx 30rpx;
+ width: 690rpx;
+ background: #F7F7F7;
+ border-radius: 12rpx;
+ }
+
+ .line_s {
+ justify-content: space-between;
+ }
+
+ .title {
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ margin: 30rpx 0;
+ }
+ }
+
+ .sel_upload_wrap {
+ width: 100%;
+ border-top: 1px solid #333333;
+ box-shadow: 0 1 1 #333333;
+
+ .btn {
+ height: 90rpx;
+ line-height: 90rpx;
+ text-align: center;
+ }
+ }
+ .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;
+ }
+ .appr_modal {
+ .label {
+ text {
+ color: #ed4545;
+ }
+ }
+
+ .df_sb {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: 90rpx;
+ border-bottom: 1rpx solid #e4e4e4;
+ margin-bottom: 30rpx;
+ }
+
+ .back_footer {
+ display: flex;
+
+ .btn {
+ flex: 1;
+ height: 88rpx;
+ line-height: 88rpx;
+ background: #ffffff;
+ border-radius: 44rpx;
+ border: 1rpx solid #999999;
+ font-size: 32rpx;
+ text-align: center;
+ margin: 16rpx 8rpx;
+ }
+
+ .agree {
+ background: $uni-color-primary;
+ color: #fff;
+ border: 1rpx solid $uni-color-primary;
+ }
+ }
+
+ textarea {
+ box-sizing: border-box;
+ width: 690rpx;
+ min-height: 200rpx;
+ background-color: #f7f7f7;
+ font-size: 28rpx;
+ color: #333333;
+ padding: 24rpx;
+ border-radius: 8rpx;
+ margin-bottom: 30rpx;
+ }
+
+ .upload_wrap {
+ display: flex;
+ flex-wrap: wrap;
+ margin-bottom: 30rpx;
+ }
+
+ .adduser_list_item_ipt1_upload {
+ margin-top: 24rpx;
+ width: 156rpx;
+ height: 156rpx;
+ margin-right: 24rpx;
+ border: 2rpx solid #e5e5e5;
+ background: #f7f7f7;
+ color: #666666;
+ font-size: 22rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+
+ .close {
+ position: absolute;
+ right: -20rpx;
+ top: -20rpx;
+ z-index: 9999;
+ }
+
+ image {
+ width: 100%;
+ height: 100%;
+ }
+
+ video {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/h5/pages/polling/task.vue b/h5/pages/polling/task.vue
new file mode 100644
index 0000000..17f1208
--- /dev/null
+++ b/h5/pages/polling/task.vue
@@ -0,0 +1,213 @@
+<template>
+ <view class="main_app">
+<!-- <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" />
+ </view>
+ </view> -->
+ <!-- -->
+ <view class="tabs">
+ <view class="tab" :class="{active: activeTab == 0}" @click="tabsClick(0)">
+ <text>寰呭鐞�</text>
+ <text class="border"></text>
+ </view>
+ <view class="tab" :class="{active: activeTab == 1}" @click="tabsClick(1)">
+ <text>宸插鐞�</text>
+ <text class="border"></text>
+ </view>
+ <view class="tab" @click="allClick">
+ <view class="name">
+ <image v-if="selectAll" class="icon" src="@/static/checked.png" mode=""></image>
+ <image v-else class="icon" src="@/static/check.png" mode=""></image>
+ <text>鏌ョ湅鍏ㄩ儴</text>
+ </view>
+ <text class="border"></text>
+ </view>
+ </view>
+ <!-- -->
+ <view class="list">
+ <view class="item" v-for="item in 10" @click="itemClick(item)">
+ <image v-if="item.stats == 1" src="@/static/side/xunjianed.png" class="icon"></image>
+ <image v-else src="@/static/side/xunjian.png" class="icon"></image>
+ <view class="content">
+ <view class="name_wrap line">
+ <view class="name">宸℃閰掑晩</view>
+ <view class="status">寰呭紑濮�</view>
+ </view>
+ <view class="line">浠诲姟鏃ユ湡锛歺xx</view>
+ <view class="line">鎵ц鏃堕棿锛�121212</view>
+ <view class="line">
+ <view>瀹屾垚鎯呭喌锛�121212</view>
+ <view class="btn">
+ <image src="@/static/side/ic_saoma@2x.png" class="saoma" mode=""></image>
+ <view>鎵爜宸℃</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <!-- -->
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ param: {},
+ activeTab: 0,
+ selectAll: false
+ };
+ },
+ methods: {
+ tabsClick(val) {
+ this.activeTab = val
+ },
+ allClick() {
+ this.selectAll = !this.selectAll
+ },
+ itemClick() {
+ uni.navigateTo({
+ url: '/pages/polling/detail'
+ })
+ },
+ getList() {
+ console.log('---');
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .main_app{
+ padding: 0 30rpx;
+ }
+ .tabs{
+ display: flex;
+ width: 750rpx;
+ margin: 12rpx -30rpx 0;
+ border-bottom: 1rpx solid #E5E5E5;
+ .tab{
+ font-size: 30rpx;
+ color: #666666;
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: flex-end;
+ height: 88rpx;
+ .name{
+ display: flex;
+ align-items: center;
+ }
+ .icon{
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 10rpx;
+ }
+ .border{
+ width: 54rpx;
+ height: 6rpx;
+ background-color: #fff;
+ border-radius: 3rpx;
+ margin-top: 24rpx;
+ }
+ }
+ .active{
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ .border{
+ background-color: $primaryColor;
+ }
+
+ }
+
+ }
+ .head_wrap {
+ display: flex;
+ align-items: center;
+
+ .search_wrap {
+ display: flex;
+ align-items: center;
+ width: 100%;
+ height: 76rpx;
+ background: #F7F7F7;
+ border-radius: 38rpx;
+ padding-left: 30rpx;
+ input{
+ flex: 1;
+ }
+ .search {
+ width: 28rpx;
+ height: 28rpx;
+ }
+ }
+
+ }
+
+ .list {
+ .item {
+ display: flex;
+ // height: 290rpx;
+ padding: 30rpx 0;
+ border-bottom: 2rpx solid #E5E5E5;
+ .icon {
+ width: 80rpx;
+ height: 80rpx;
+ margin-right: 24rpx;
+ }
+
+ .content {
+ flex: 1;
+ color: #666666;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ .line{
+ margin-bottom: 20rpx;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ .btn{
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 180rpx;
+ height: 60rpx;
+ background: $primaryColor;
+ color: #fff;
+ font-size: 26rpx;
+ box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(0,104,255,0.3);
+ border-radius: 30rpx;
+ .saoma{
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 8rpx;
+ }
+ }
+ &:nth-last-child(1){
+ margin-bottom: 0;
+ }
+ }
+ .name_wrap{
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ .name{
+ display: flex;
+ align-items: flex-end;
+ font-weight: 600;
+ font-size: 34rpx;
+ color: #222222;
+ }
+ .status{
+ color: $primaryColor;
+ }
+ }
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/h5/pages/workOrder/detail.vue b/h5/pages/workOrder/detail.vue
new file mode 100644
index 0000000..1b763a0
--- /dev/null
+++ b/h5/pages/workOrder/detail.vue
@@ -0,0 +1,480 @@
+<template>
+ <view>
+ <view class="main_info">
+ <view class="title">
+ <text>闃滃畞鏂囦綋涓績/A搴�/401</text>
+ <text class="status">寰呭鐞�</text>
+ </view>
+ <view class="desc">瑗胯竟璧板粖鐨勪竴涓《鐏潖浜嗭紝涓嶄寒闇�瑕佺淮淇タ杈�</view>
+ <view class="file_list">
+ <view class="file">
+
+ </view>
+ </view>
+ <view class="content">
+ <view class="line">
+ <view class="la">宸ュ崟绫诲瀷锛�</view>
+ <view class="val">1111</view>
+ </view>
+ <view class="line">
+ <view class="la">涓婃姤浜猴細</view>
+ <view class="val">1111</view>
+ </view>
+ <view class="line">
+ <view class="la">鑱旂郴鐢佃瘽锛�</view>
+ <view class="val">1111</view>
+ </view>
+ <view class="line">
+ <view class="la">涓婃姤鏃堕棿锛�</view>
+ <view class="val">1111</view>
+ </view>
+ <view class="line">
+ <view class="la">涓婇棬鏃堕棿锛�</view>
+ <view class="val">1111</view>
+ </view>
+ </view>
+ <view class="result_wrap">
+ <div class="title">澶勭悊缁撴灉</div>
+ <view class="file_list">
+ <view class="file">
+
+ </view>
+ </view>
+ <view class="content">
+ 宸叉洿鎹㈢伅娉″拰鐏僵宸叉洿鎹㈢伅娉″拰鐏僵宸叉洿鎹㈢伅
+ </view>
+ <view class="line">
+ <view class="la">澶勭悊浜猴細</view>
+ <view class="val">{{ 1111 }}</view>
+ </view>
+ <view class="line">
+ <view class="la">澶勭悊鏃堕棿锛�</view>
+ <view class="val">{{ 1111 }}</view>
+ </view>
+ </view>
+ </view>
+ <!-- -->
+ <view class="btns">
+ <view class="btn">
+ <image src="@/static/side/phoneed.png" class="icon"></image>
+ <text>涓婃姤浜�</text>
+ </view>
+ <view class="btn active" @click="isShowHandle = true">鍘诲鐞�</view>
+ </view>
+ <!-- -->
+ <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
+ <view class="sel_upload_wrap">
+ <view class="btn" @click="uploadImage">閫夋嫨鍥剧墖</view>
+ <view class="btn" @click="uploadVideo">閫夋嫨瑙嗛</view>
+ </view>
+ </u-popup>
+ <!-- -->
+ <!-- 宸ュ崟澶勭悊 -->
+ <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 class="df_ac" @click="isShowHandleDate = true" v-if="handleParam.dealTime">
+ {{ handleParam.dealTime }}
+ <u-icon name="arrow-right"></u-icon>
+ </view>
+ <view @click="isShowHandleDate = true" v-else class="placeholder9 df_ac">
+ 璇烽�夋嫨
+ <u-icon name="arrow-right"></u-icon>
+ </view>
+ </view>
+
+ <view class="label">
+ <text>*</text>
+ 涓婁紶鍥剧墖/瑙嗛
+ </view>
+ <view class="upload_wrap">
+ <view class="adduser_list_item_ipt1_upload" @click="showUpload = true">
+ <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon>
+ <view class="mt6">鍥剧墖/瑙嗛</view>
+ </view>
+ <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in dealFileList" :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 class="label">澶勭悊璇存槑</view>
+ <textarea v-model="handleParam.checkInfo" placeholder="璇峰~鍐欏鐞嗚鏄�" placeholder-class="placeholder9" />
+ <view class="back_footer">
+ <view class="btn" @click="isShowHandle = false">鍙栨秷</view>
+ <view class="btn agree" @click="onSubmit">鎻愪氦</view>
+ </view>
+ </view>
+ </u-popup>
+ <!-- -->
+ <u-datetime-picker :minDate="new Date().getTime()" :show="isShowHandleDate" @confirm="confirmHandleDate"
+ @cancel="isShowHandleDate = false" mode="datetime"></u-datetime-picker>
+ <!-- -->
+ </view>
+</template>
+
+<script>
+ import {
+ uploadUrl
+ } from '@/api'
+ import dayjs from 'dayjs';
+ export default {
+ data() {
+ return {
+ showUpload: false,
+ isShowHandle: false,
+ isShowHandleDate: false,
+ handleParam: {},
+ dealFileList: []
+ };
+ },
+ methods: {
+ onSubmit() {
+
+ },
+ callPhone() {
+ uni.makePhoneCall({
+ phoneNumber: '114' //浠呬负绀轰緥
+ });
+ },
+ confirmHandleDate(e) {
+ this.$set(this.handleParam, 'dealTime', dayjs(e.value).format('YYYY-MM-DD HH:mm:ss'));
+ this.isShowHandleDate = false;
+ },
+ fileDel(str, i) {
+ this[str].splice(i, 1);
+ },
+ 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()
+ // }
+ }
+ });
+ }
+ });
+ },
+ 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();
+ }
+ });
+ }
+ });
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ page {
+ ::v-deep .u-toolbar {
+ border-top: 1rpx solid #cccccc;
+ }
+ }
+
+ .main_info {
+ padding: 0 30rpx;
+
+ .title {
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ height: 90rpx;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ .status {
+ font-weight: 400;
+ font-size: 28rpx;
+ color: $primaryColor;
+ }
+ }
+
+ .file_list {
+ display: flex;
+ flex-wrap: wrap;
+
+ .file {
+ width: 156rpx;
+ height: 156rpx;
+ border-radius: 12rpx;
+ margin-right: 22rpx;
+ margin-bottom: 22rpx;
+
+ &:nth-of-type(4n) {
+ margin-right: 0;
+ }
+ }
+ }
+
+ .desc {
+ margin: 0rpx 0 30rpx;
+ }
+
+ .content {
+ margin-top: 8rpx;
+ padding: 24rpx 30rpx;
+ background: #F7F7F7;
+ border-radius: 12rpx;
+
+ .line {
+ display: flex;
+ margin-bottom: 20rpx;
+ color: #333333;
+
+ &:nth-last-child(1) {
+ margin-bottom: 0;
+ }
+
+ .la {
+ color: #666666;
+ width: 140rpx;
+ }
+ }
+ }
+
+ .result_wrap {
+ border-top: 20rpx solid #f7f7f7;
+ margin: 20rpx -30rpx 0;
+ padding: 0 30rpx;
+
+ .line {
+ margin-top: 30rpx;
+ height: 42rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .la {
+ color: #666666;
+ }
+ }
+ }
+ }
+
+ .btns {
+ position: fixed;
+ bottom: 68rpx;
+ left: 0;
+ width: 750rpx;
+ padding: 0 40rpx;
+ display: flex;
+ justify-content: space-between;
+
+ .btn {
+ width: 224rpx;
+ height: 88rpx;
+ background: #FFFFFF;
+ box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0, 104, 255, 0.3);
+ border-radius: 44rpx;
+ border: 2rpx solid $primaryColor;
+ color: $primaryColor;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: 500;
+ font-size: 32rpx;
+
+ .icon {
+ width: 32rpx;
+ height: 32rpx;
+ margin-right: 6rpx;
+ }
+ }
+
+ .active {
+ flex: 1;
+ margin-left: 20rpx;
+ color: #fff;
+ background-color: $primaryColor;
+ }
+ }
+
+ .sel_upload_wrap {
+ width: 100%;
+ border-top: 1px solid #333333;
+ box-shadow: 0 1 1 #333333;
+
+ .btn {
+ height: 90rpx;
+ line-height: 90rpx;
+ text-align: center;
+ }
+ }
+
+ .appr_modal {
+ padding: 36rpx 30rpx 0;
+
+ .title {
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ margin-bottom: 40rpx;
+ text-align: center;
+ }
+
+ .label {
+ text {
+ color: #ed4545;
+ }
+ }
+
+ .df_sb {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: 90rpx;
+ border-bottom: 1rpx solid #e4e4e4;
+ margin-bottom: 30rpx;
+ }
+
+ .back_footer {
+ display: flex;
+
+ .btn {
+ flex: 1;
+ height: 88rpx;
+ line-height: 88rpx;
+ background: #ffffff;
+ border-radius: 44rpx;
+ border: 1rpx solid #999999;
+ font-size: 32rpx;
+ text-align: center;
+ margin: 16rpx 8rpx;
+ }
+
+ .agree {
+ background: $uni-color-primary;
+ color: #fff;
+ border: 1rpx solid $uni-color-primary;
+ }
+ }
+
+ textarea {
+ box-sizing: border-box;
+ width: 690rpx;
+ min-height: 200rpx;
+ background-color: #f7f7f7;
+ font-size: 28rpx;
+ color: #333333;
+ padding: 24rpx;
+ border-radius: 8rpx;
+ margin-bottom: 30rpx;
+ }
+
+ .upload_wrap {
+ display: flex;
+ flex-wrap: wrap;
+ margin-bottom: 30rpx;
+ }
+
+ .adduser_list_item_ipt1_upload {
+ margin-top: 24rpx;
+ width: 156rpx;
+ height: 156rpx;
+ margin-right: 24rpx;
+ border: 2rpx solid #e5e5e5;
+ background: #f7f7f7;
+ color: #666666;
+ font-size: 22rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+
+ .close {
+ position: absolute;
+ right: -20rpx;
+ top: -20rpx;
+ z-index: 9999;
+ }
+
+ image {
+ width: 100%;
+ height: 100%;
+ }
+
+ video {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/h5/pages/workOrder/edit.vue b/h5/pages/workOrder/edit.vue
new file mode 100644
index 0000000..2116212
--- /dev/null
+++ b/h5/pages/workOrder/edit.vue
@@ -0,0 +1,258 @@
+<template>
+ <view class="main_app">
+ <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>
+ <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>
+ <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>
+ <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" />
+ </view>
+ </view>
+ <view class="item">
+ <view class="la">鐜板満鐓х墖</view>
+ <view class="upload_wrap">
+ <view class="upload_file" @click="showUpload = true">
+ <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">
+ <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>
+ <!-- -->
+ <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
+ <view class="sel_upload_wrap">
+ <view class="btn" @click="uploadImage">閫夋嫨鍥剧墖</view>
+ <view class="btn" @click="uploadVideo">閫夋嫨瑙嗛</view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+ import {
+ uploadUrl
+ } from '@/api'
+ import dayjs from 'dayjs';
+ export default {
+ data() {
+ return {
+ param: {},
+ showUpload: false,
+ dealFileList: [],
+ };
+ },
+ methods: {
+ fileDel(str, i) {
+ this[str].splice(i, 1);
+ },
+ 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()
+ // }
+ }
+ });
+ }
+ });
+ },
+ 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();
+ }
+ });
+ }
+ });
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .list {
+
+ .item {
+ .la {
+ margin-top: 30rpx;
+ }
+
+ .line {
+
+ textarea {
+ box-sizing: border-box;
+ width: 690rpx;
+ min-height: 160rpx;
+ background-color: #f7f7f7;
+ font-size: 28rpx;
+ color: #333333;
+ padding: 24rpx;
+ border-radius: 8rpx;
+ margin-bottom: 30rpx;
+ margin-top: 20rpx;
+ }
+ }
+
+ .sel_wrap {
+ height: 90rpx;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ border-bottom: 1rpx solid #E5E5E5;
+ }
+
+ .upload_wrap {
+ display: flex;
+ flex-wrap: wrap;
+ margin-bottom: 30rpx;
+ }
+
+ .upload_file {
+ margin-top: 24rpx;
+ width: 156rpx;
+ height: 156rpx;
+ margin-right: 20rpx;
+ border: 2rpx solid #e5e5e5;
+ background: #f7f7f7;
+ color: #666666;
+ font-size: 22rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+ &:nth-of-type(4n){
+ margin-right: 0;
+ }
+ .close {
+ position: absolute;
+ right: -20rpx;
+ top: -20rpx;
+ z-index: 9999;
+ }
+
+ image {
+ width: 100%;
+ height: 100%;
+ }
+
+ video {
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ }
+ }
+ .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;
+ }
+</style>
\ No newline at end of file
diff --git a/h5/pages/workOrder/list.vue b/h5/pages/workOrder/list.vue
new file mode 100644
index 0000000..0ea131f
--- /dev/null
+++ b/h5/pages/workOrder/list.vue
@@ -0,0 +1,188 @@
+<template>
+ <view class="main_app">
+ <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" />
+ </view>
+ </view>
+ <!-- -->
+ <view class="tabs">
+ <view class="tab" :class="{active: activeTab == 0}" @click="tabsClick(0)">
+ <text>寰呭鐞�</text>
+ <text class="border"></text>
+ </view>
+ <view class="tab" :class="{active: activeTab == 1}" @click="tabsClick(1)">
+ <text>宸插鐞�</text>
+ <text class="border"></text>
+ </view>
+ <view class="tab" @click="allClick">
+ <view class="name">
+ <image v-if="selectAll" class="icon" src="@/static/checked.png" mode=""></image>
+ <image v-else class="icon" src="@/static/check.png" mode=""></image>
+ <text>鏌ョ湅鍏ㄩ儴</text>
+ </view>
+ <text class="border"></text>
+ </view>
+ </view>
+ <!-- -->
+ <view class="list">
+ <view class="item" v-for="item in 10" @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>
+ <view class="line">宸ュ崟绫诲瀷锛歺xx</view>
+ <view class="line">鎶ヤ慨鐗╁搧锛�121212</view>
+ <view class="line">涓婃姤鏃堕棿锛�121212</view>
+ <view class="line">涓婇棬鏃堕棿锛�121212</view>
+ </view>
+ </view>
+ </view>
+ <!-- -->
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ param: {},
+ activeTab: 0,
+ selectAll: false
+ };
+ },
+ methods: {
+ tabsClick(val) {
+ this.activeTab = val
+ },
+ allClick() {
+ this.selectAll = !this.selectAll
+ },
+ itemClick() {
+ uni.navigateTo({
+ url: '/pages/workOrder/detail'
+ })
+ },
+ getList() {
+ console.log('---');
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .main_app{
+ padding: 0 30rpx;
+ }
+ .tabs{
+ display: flex;
+ width: 750rpx;
+ margin: 12rpx -30rpx 0;
+ border-bottom: 1rpx solid #E5E5E5;
+ .tab{
+ font-size: 30rpx;
+ color: #666666;
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: flex-end;
+ height: 88rpx;
+ .name{
+ display: flex;
+ align-items: center;
+ }
+ .icon{
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 10rpx;
+ }
+ .border{
+ width: 54rpx;
+ height: 6rpx;
+ background-color: #fff;
+ border-radius: 3rpx;
+ margin-top: 24rpx;
+ }
+ }
+ .active{
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ .border{
+ background-color: $primaryColor;
+ }
+
+ }
+
+ }
+ .head_wrap {
+ display: flex;
+ align-items: center;
+
+ .search_wrap {
+ display: flex;
+ align-items: center;
+ width: 100%;
+ height: 76rpx;
+ background: #F7F7F7;
+ border-radius: 38rpx;
+ padding-left: 30rpx;
+ input{
+ flex: 1;
+ }
+ .search {
+ width: 28rpx;
+ height: 28rpx;
+ }
+ }
+
+ }
+
+ .list {
+ .item {
+ display: flex;
+ // height: 290rpx;
+ padding: 30rpx 0;
+ border-bottom: 2rpx solid #E5E5E5;
+ .icon {
+ width: 80rpx;
+ height: 80rpx;
+ margin-right: 24rpx;
+ }
+
+ .content {
+ flex: 1;
+ color: #666666;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ .line{
+ margin-bottom: 20rpx;
+ &:nth-last-child(1){
+ margin-bottom: 0;
+ }
+ }
+ .name_wrap{
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ .name{
+ display: flex;
+ align-items: flex-end;
+ font-weight: 600;
+ font-size: 34rpx;
+ color: #222222;
+ }
+ .status{
+ color: $primaryColor;
+ }
+ }
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/h5/static/check.png b/h5/static/check.png
new file mode 100644
index 0000000..e2c908d
--- /dev/null
+++ b/h5/static/check.png
Binary files differ
diff --git a/h5/static/checked.png b/h5/static/checked.png
new file mode 100644
index 0000000..d161c61
--- /dev/null
+++ b/h5/static/checked.png
Binary files differ
diff --git a/h5/static/home/home_bg.jpg b/h5/static/home/home_bg.jpg
new file mode 100644
index 0000000..b2d9297
--- /dev/null
+++ b/h5/static/home/home_bg.jpg
Binary files differ
diff --git a/h5/static/home/ic_fangkeba.png b/h5/static/home/ic_fangkeba.png
new file mode 100644
index 0000000..9c1f1f2
--- /dev/null
+++ b/h5/static/home/ic_fangkeba.png
Binary files differ
diff --git a/h5/static/home/ic_fangkebaobe@2x.png b/h5/static/home/ic_fangkebaobe@2x.png
new file mode 100644
index 0000000..b61db6c
--- /dev/null
+++ b/h5/static/home/ic_fangkebaobe@2x.png
Binary files differ
diff --git a/h5/static/home/ic_fangkebaobei@2x.png b/h5/static/home/ic_fangkebaobei@2x.png
new file mode 100644
index 0000000..2dad112
--- /dev/null
+++ b/h5/static/home/ic_fangkebaobei@2x.png
Binary files differ
diff --git a/h5/static/home/ic_renwuzhongxin@2x.png b/h5/static/home/ic_renwuzhongxin@2x.png
new file mode 100644
index 0000000..eba7ade
--- /dev/null
+++ b/h5/static/home/ic_renwuzhongxin@2x.png
Binary files differ
diff --git a/h5/static/home/ic_search@2x.png b/h5/static/home/ic_search@2x.png
new file mode 100644
index 0000000..4d7c22b
--- /dev/null
+++ b/h5/static/home/ic_search@2x.png
Binary files differ
diff --git a/h5/static/home/ic_wodehuiyi@2x.png b/h5/static/home/ic_wodehuiyi@2x.png
new file mode 100644
index 0000000..b5488a2
--- /dev/null
+++ b/h5/static/home/ic_wodehuiyi@2x.png
Binary files differ
diff --git a/h5/static/login_ic_password@2x.png b/h5/static/login_ic_password@2x.png
new file mode 100644
index 0000000..ea41beb
--- /dev/null
+++ b/h5/static/login_ic_password@2x.png
Binary files differ
diff --git a/h5/static/login_ic_phone@2x.png b/h5/static/login_ic_phone@2x.png
new file mode 100644
index 0000000..b89a086
--- /dev/null
+++ b/h5/static/login_ic_phone@2x.png
Binary files differ
diff --git a/h5/static/radioed.png b/h5/static/radioed.png
new file mode 100644
index 0000000..e5ccfbe
--- /dev/null
+++ b/h5/static/radioed.png
Binary files differ
diff --git a/h5/static/side/ic_dabiao.png b/h5/static/side/ic_dabiao.png
new file mode 100644
index 0000000..5205505
--- /dev/null
+++ b/h5/static/side/ic_dabiao.png
Binary files differ
diff --git a/h5/static/side/ic_dabiaoed.png b/h5/static/side/ic_dabiaoed.png
new file mode 100644
index 0000000..037d7d8
--- /dev/null
+++ b/h5/static/side/ic_dabiaoed.png
Binary files differ
diff --git a/h5/static/side/ic_saoma@2x.png b/h5/static/side/ic_saoma@2x.png
new file mode 100644
index 0000000..a81cc12
--- /dev/null
+++ b/h5/static/side/ic_saoma@2x.png
Binary files differ
diff --git a/h5/static/side/ic_shuiyu@2x.png b/h5/static/side/ic_shuiyu@2x.png
new file mode 100644
index 0000000..b3faf39
--- /dev/null
+++ b/h5/static/side/ic_shuiyu@2x.png
Binary files differ
diff --git a/h5/static/side/phoneed.png b/h5/static/side/phoneed.png
new file mode 100644
index 0000000..bffe72f
--- /dev/null
+++ b/h5/static/side/phoneed.png
Binary files differ
diff --git a/h5/static/side/scan.png b/h5/static/side/scan.png
new file mode 100644
index 0000000..50f54fc
--- /dev/null
+++ b/h5/static/side/scan.png
Binary files differ
diff --git a/h5/static/side/workorder.png b/h5/static/side/workorder.png
new file mode 100644
index 0000000..25d11ee
--- /dev/null
+++ b/h5/static/side/workorder.png
Binary files differ
diff --git a/h5/static/side/workordered.png b/h5/static/side/workordered.png
new file mode 100644
index 0000000..c59ed1b
--- /dev/null
+++ b/h5/static/side/workordered.png
Binary files differ
diff --git a/h5/static/side/xunjian.png b/h5/static/side/xunjian.png
new file mode 100644
index 0000000..86961b5
--- /dev/null
+++ b/h5/static/side/xunjian.png
Binary files differ
diff --git a/h5/static/side/xunjianed.png b/h5/static/side/xunjianed.png
new file mode 100644
index 0000000..b00224b
--- /dev/null
+++ b/h5/static/side/xunjianed.png
Binary files differ
diff --git a/h5/uni.scss b/h5/uni.scss
index 24dfcb8..e83a7b2 100644
--- a/h5/uni.scss
+++ b/h5/uni.scss
@@ -15,7 +15,8 @@
/* 棰滆壊鍙橀噺 */
/* 琛屼负鐩稿叧棰滆壊 */
-$uni-color-primary: #279baa;
+$uni-color-primary: #2b66f6;
+$primaryColor: #2b66f6;
$uni-color-success: #4cd964;
$uni-color-warning: #f0ad4e;
$uni-color-error: #dd524d;
--
Gitblit v1.9.3