This commit is contained in:
cxc
2022-09-13 18:23:31 +08:00
commit 3fd5da59a9
63 changed files with 17259 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
uni_modules/

16
.hbuilderx/launch.json Normal file
View File

@ -0,0 +1,16 @@
{ // launch.json 配置了启动调试时相关设置configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
// launchtype项可配置值为local或remote, local代表前端连本地云函数remote代表前端连云端云函数
"version": "0.0",
"configurations": [{
"app-plus" :
{
"launchtype" : "local"
},
"default" :
{
"launchtype" : "local"
},
"type" : "uniCloud"
}
]
}

19
App.vue Normal file
View File

@ -0,0 +1,19 @@
<script>
export default {
onLaunch: function() {
console.log('App Launch')
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
</script>
<style lang="scss">
/*每个页面公共css */
/* 注意要写在第一行同时给style标签加入lang="scss"属性 */
@import "@/uni_modules/uview-ui/index.scss";
</style>

20
index.html Normal file
View File

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<script>
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
CSS.supports('top: constant(a)'))
document.write(
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
</script>
<title></title>
<!--preload-links-->
<!--app-context-->
</head>
<body>
<div id="app"><!--app-html--></div>
<script type="module" src="/main.js"></script>
</body>
</html>

31
main.js Normal file
View File

@ -0,0 +1,31 @@
import App from './App'
// #ifndef VUE3
import Vue from 'vue'
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()
// #endif
// main.js
import uView from '@/uni_modules/uview-ui'
Vue.use(uView)
// #ifdef VUE3
import {
createSSRApp
} from 'vue'
export function createApp() {
const app = createSSRApp(App)
return {
app
}
}
// #endif

72
manifest.json Normal file
View File

@ -0,0 +1,72 @@
{
"name" : "construction_site_supervision",
"appid" : "",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
"transformPx" : false,
/* 5+App */
"app-plus" : {
"usingComponents" : true,
"nvueStyleCompiler" : "uni-app",
"compilerVersion" : 3,
"splashscreen" : {
"alwaysShowBeforeRender" : true,
"waiting" : true,
"autoclose" : true,
"delay" : 0
},
/* */
"modules" : {},
/* */
"distribute" : {
/* android */
"android" : {
"permissions" : [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},
/* ios */
"ios" : {},
/* SDK */
"sdkConfigs" : {}
}
},
/* */
"quickapp" : {},
/* */
"mp-weixin" : {
"appid" : "",
"setting" : {
"urlCheck" : false
},
"usingComponents" : true
},
"mp-alipay" : {
"usingComponents" : true
},
"mp-baidu" : {
"usingComponents" : true
},
"mp-toutiao" : {
"usingComponents" : true
},
"uniStatistics" : {
"enable" : false
},
"vueVersion" : "2"
}

123
pages.json Normal file
View File

@ -0,0 +1,123 @@
{
// 如果您是通过uni_modules形式引入uView可以忽略此配置
// "easycom": {
// "^u-(.*)": "@/uni_modules/uview-ui/components/u-$1/u-$1.vue"
// },
"pages": [ //pages数组中第一项表示应用启动页参考https://uniapp.dcloud.io/collocation/pages
// {
// "path": "pages/index/index",
// "style": {
// "navigationBarTitleText": "uni-app"
// }
// },
{
"path": "pages/monitor/monitor",
"style": {
"navigationBarTitleText": "视频监控",
"enablePullDownRefresh": false
}
},
{
"path": "pages/attendance/attendance",
"style": {
"navigationBarTitleText": "考勤管理",
"enablePullDownRefresh": false
}
}, {
"path": "pages/personal/personal",
"style": {
"navigationBarTitleText": "个人中心",
"enablePullDownRefresh": false
}
}, {
"path": "pages/mobile_inspection/mobile_inspection",
"style": {
"navigationBarTitleText": "移动巡检",
"enablePullDownRefresh": false
}
}, {
"path": "pages/mobile_inspection/quality_inspection/quality_inspection",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}, {
"path": "pages/mobile_inspection/security_inspection/security_inspection",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}, {
"path": "pages/project_supervision/project_supervision",
"style": {
"navigationStyle": "custom", // 隐藏系统导航栏
"navigationBarTextStyle": "white", // 状态栏字体为白色,只能为 white-白色black-黑色 二选一
"backgroundColor": "#f6f6f6",
// "navigationBarTitleText": "项目监管",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/project_supervision/project_detail/project_detail",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}
],
"globalStyle": {
// "rpxCalcMaxDeviceWidth": 960,
// "rpxCalcBaseDeviceWidth": 375,
// "rpxCalcIncludeWidth": 375,
"navigationBarTextStyle": "white",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#3a87ee",
"backgroundColor": "#F8F8F8"
},
"uniIdRouter": {},
"tabBar": {
"color": "#9a9a9a",
"selectedColor": "#0f40f5",
"borderStyle": "black",
"backgroundColor": "#ffffff",
"list": [{
"iconPath": "static/tab/monitor.png",
"selectedIconPath": "static/tab/monitor_actived.png",
"text": "视频监控",
"pagePath": "pages/monitor/monitor"
},
{
"text": "考勤管理",
"pagePath": "pages/attendance/attendance",
"iconPath": "static/tab/attendance.png",
"selectedIconPath": "static/tab/attendance_actived.png"
},
{
"text": "项目监管",
"pagePath": "pages/project_supervision/project_supervision",
"iconPath": "static/tab/project_supervision.png",
"selectedIconPath": "static/tab/project_supervision_actived.png"
}, {
"text": "移动巡检",
"pagePath": "pages/mobile_inspection/mobile_inspection",
"iconPath": "static/tab/mobile_inspection.png",
"selectedIconPath": "static/tab/mobile_inspection_actived.png"
},
{
"text": "个人中心",
"pagePath": "pages/personal/personal",
"iconPath": "static/tab/personal.png",
"selectedIconPath": "static/tab/personal_active.png"
}
]
}
}

View File

@ -0,0 +1,22 @@
<template>
<view>
<h1>考勤管理</h1>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
</style>

52
pages/index/index.vue Normal file
View File

@ -0,0 +1,52 @@
<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>

View File

@ -0,0 +1,55 @@
<template>
<view>
<u-tabs class="tabs" :list="tabList" @change="handleTabClick"></u-tabs>
<!-- <scroll-view scroll-y="true"> -->
<!-- <view> -->
<QualityInspection v-if="activeIndex==0"></QualityInspection>
<SecurityInspection v-else-if="activeIndex==1"></SecurityInspection>
<!-- </view> -->
<!-- </scroll-view> -->
</view>
</template>
<script>
import QualityInspection from './quality_inspection/quality_inspection.vue'
import SecurityInspection from './security_inspection/security_inspection.vue'
export default {
name: 'MobileInspection',
components: {
QualityInspection,
SecurityInspection
},
data() {
return {
activeIndex: 0,
tabList: [{
name: '质量巡检',
}, {
name: '安全巡检',
}, ]
}
},
methods: {
handleTabClick(item) {
console.log(item);
this.activeIndex = item.index;
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .u-tabs__wrapper__nav {
justify-content: space-between;
.u-tabs__wrapper__nav__item {
width: 320rpx;
}
}
.test {
width: 370rpx;
height: 100rpx;
background-color: indianred;
}
</style>

View File

@ -0,0 +1,175 @@
<template>
<view>
<view class="filter-bar">
</view>
<view class="task-item" v-for="(item,index) in taskList" :key="index">
<view class="task-status" :style="`background-color:${item.status==1?'#60a7e9':'#c85449'}`">
<text>
{{item.status==1?'正常':'异常'}}
</text>
</view>
<view class="task-title">
{{item.name}}
</view>
<view class="task-content">
<image src="@/static/inspector/inspector_example.png" mode=""></image>
<view class="desc-list">
<view class="desc-item">
<text class="desc-key">检查部位: </text>
<text class="desc-value">{{item.part}}</text>
</view>
<view class="desc-item">
<text class="desc-key">巡检单位: </text>
<text class="desc-value">{{item.unit}}</text>
</view>
<view class="desc-item">
<text class="desc-key">检查情况: </text>
<text class="desc-value">{{item.situation}}</text>
</view>
<view class="desc-item">
<text class="desc-key">巡检人员: </text>
<text class="desc-value">{{item.staff}}</text>
</view>
<view class="desc-item">
<text class="desc-key">纠正预防措施: </text>
<text class="desc-value">{{item.measure}}</text>
</view>
<view class="desc-item">
<text class="desc-key">巡检日期: </text>
<text class="desc-value">{{item.date}}</text>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
// 质量巡检任务列表
taskList: [{
name: '巡检任务1',
part: '南侧立柱',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, {
name: '巡检任务1',
part: '南侧立柱',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 0
}, {
name: '巡检任务1',
part: '南侧立柱',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, {
name: '巡检任务1',
part: '南侧立柱',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, {
name: '巡检任务1',
part: '南侧立柱',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, ]
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.task-item {
margin: 0 16rpx 0;
border-radius: 20rpx;
position: relative;
padding: 22rpx 34rpx 34rpx;
box-shadow: 0 4rpx 12rpx 0 rgba(0, 0, 0, 0.4);
.task-status {
position: absolute;
top: 0;
right: 0;
width: 88px;
height: 31px;
border-radius: 0px 10px 1px 26px;
box-shadow: 0 4rpx 12rpx 0 rgba(0, 0, 0, 0.4);
background-color: #60a7e9;
display: flex;
justify-content: center;
align-items: center;
text {
color: #EFEFEF;
font-size: 28rpx;
}
}
.task-title {
font-size: 32rpx;
margin-left: 14rpx;
}
.task-content {
margin-top: 16rpx;
display: flex;
image {
height: 182rpx;
width: 132rpx;
}
.desc-list {
display: flex;
flex-wrap: wrap;
margin-left: 8rpx;
width: 510rpx;
.desc-item {
width: 50%;
.desc-key {
color: #9a9a9a;
font-size: 12rpx;
}
.desc-value {
color: #101010;
font-size: 13rpx;
font-weight: 700;
}
}
}
}
}
.task-item:not(:last-child) {
margin-bottom: 34rpx;
}
</style>

View File

@ -0,0 +1,175 @@
<template>
<view>
<view class="filter-bar">
</view>
<view class="task-item" v-for="(item,index) in taskList" :key="index">
<view class="task-status" :style="`background-color:${item.status==1?'#50c2b0':'#c85449'}`">
<text>
{{item.status==1?'已整改':'未整改'}}
</text>
</view>
<view class="task-title">
{{item.name}}
</view>
<view class="task-content">
<image src="@/static/inspector/inspector_example.png" mode=""></image>
<view class="desc-list">
<view class="desc-item">
<text class="desc-key">检查内容: </text>
<text class="desc-value">{{item.content}}</text>
</view>
<view class="desc-item">
<text class="desc-key">巡检单位: </text>
<text class="desc-value">{{item.unit}}</text>
</view>
<view class="desc-item">
<text class="desc-key">检查情况: </text>
<text class="desc-value">{{item.situation}}</text>
</view>
<view class="desc-item">
<text class="desc-key">巡检人员: </text>
<text class="desc-value">{{item.staff}}</text>
</view>
<view class="desc-item">
<text class="desc-key">纠正预防措施: </text>
<text class="desc-value">{{item.measure}}</text>
</view>
<view class="desc-item">
<text class="desc-key">巡检日期: </text>
<text class="desc-value">{{item.date}}</text>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
// 质量巡检任务列表
taskList: [{
name: '巡检任务1',
content: '头盔佩戴',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, {
name: '巡检任务1',
content: '头盔佩戴',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 0
}, {
name: '巡检任务1',
content: '头盔佩戴',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, {
name: '巡检任务1',
content: '头盔佩戴',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, {
name: '巡检任务1',
content: '头盔佩戴',
unit: '遵宜科技',
situation: '正常',
staff: '金一南',
measure: '无',
date: '2020-06-13',
status: 1
}, ]
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.task-item {
margin: 0 16rpx 0;
border-radius: 20rpx;
position: relative;
padding: 22rpx 34rpx 34rpx;
box-shadow: 0 4rpx 12rpx 0 rgba(0, 0, 0, 0.4);
.task-status {
position: absolute;
top: 0;
right: 0;
width: 88px;
height: 31px;
border-radius: 0px 10px 1px 26px;
box-shadow: 0 4rpx 12rpx 0 rgba(0, 0, 0, 0.4);
background-color: #60a7e9;
display: flex;
justify-content: center;
align-items: center;
text {
color: #EFEFEF;
font-size: 28rpx;
}
}
.task-title {
font-size: 32rpx;
margin-left: 14rpx;
}
.task-content {
margin-top: 16rpx;
display: flex;
image {
height: 182rpx;
width: 132rpx;
}
.desc-list {
display: flex;
flex-wrap: wrap;
margin-left: 8rpx;
width: 510rpx;
.desc-item {
width: 50%;
.desc-key {
color: #9a9a9a;
font-size: 12rpx;
}
.desc-value {
color: #101010;
font-size: 13rpx;
font-weight: 700;
}
}
}
}
}
.task-item:not(:last-child) {
margin-bottom: 34rpx;
}
</style>

210
pages/monitor/monitor.vue Normal file
View File

@ -0,0 +1,210 @@
<template>
<view>
<view class="search-bar">
<input type="text">
</view>
<view class="site-list">
<view class="site-item" v-for="item in siteList" :key="item.id">
<view class="site-title">
<text>{{item.name}}</text>
</view>
<view class="camera-list">
<view class="camera-item" v-for="(cameraItem,index) in item.camera_list" :key="index">
<image class="camera-image" src="../../static/camera_example.png" mode=""></image>
<view class="camera-title">
{{cameraItem.name}}
</view>
</view>
</view>
<view class="site-time">
<text>{{item.time}}</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
siteList: [{
id: 1,
name: '项目场地1',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
},
{
id: 2,
name: '项目场地2',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
}, {
id: 3,
name: '项目场地2',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
}, {
id: 4,
name: '项目场地2',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
}, {
id: 5,
name: '项目场地2',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
}, {
id: 6,
name: '项目场地2',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
}, {
id: 7,
name: '项目场地2',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
}, {
id: 8,
name: '项目场地2',
time: '2022-09-12 12:12:12',
camera_list: [{
name: 'camera1'
},
{
name: 'camera1'
},
{
name: 'camera1'
}
]
}
]
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.site-list {
.site-item {
box-shadow: 0 6rpx 0 rgba(0, 0, 0, 0.4);
margin-left: 16rpx;
margin-right: 16rpx;
margin-bottom: 40rpx;
border-radius: 20rpx;
.site-title {
background-color: rgb(153, 153, 153);
width: 92px;
height: 30px;
line-height: 20px;
border-radius: 20rpx 0rpx 18rpx 0rpx;
uni-text {
font-family: YSBiaoTiHei-regular;
color: white;
font-size: 20px;
}
}
.camera-list {
margin-top: 12rpx;
white-space: nowrap;
width: 100%;
display: flex;
justify-content: space-between;
.camera-item {
background-color: aquamarine;
// margin-right: 20rpx;
.camera-image {
width: 200rpx;
height: 140rpx;
}
.camera-title {
font-size: 20rpx;
text-align: center;
}
}
}
.site-time {
margin-top: 26rpx;
text-align: right;
height: 30rpx;
font-size: 28rpx;
color: #fff;
background-color: #d7d7d7;
}
}
}
</style>

126
pages/personal/personal.vue Normal file
View File

@ -0,0 +1,126 @@
<template>
<view>
<view class="avatar_name">
<view class="avatar">
<image src="../../static/personal/avatar_sample.png" mode=""></image>
</view>
<text class="username">
张三
</text>
</view>
<view class="user-info">
<view class="user-info-item">
<text class="key">
性别:&nbsp;
</text>
<text class="value">
{{userInfo.gender}}
</text>
</view>
<view class="user-info-item">
<text class="key">
年龄:&nbsp;
</text>
<text class="value">
{{userInfo.age}}
</text>
</view>
<view class="user-info-item">
<text class="key">
所属单位:&nbsp;
</text>
<text class="value">
{{userInfo.unit}}
</text>
</view>
<view class="user-info-item">
<text class="key">
部门:&nbsp;
</text>
<text class="value">
{{userInfo.department}}
</text>
</view>
<view class="user-info-item">
<text class="key">
岗位:&nbsp;
</text>
<text class="value">
{{userInfo.post}}
</text>
</view>
<view class="user-info-item">
<text class="key">
负责项目:&nbsp;
</text>
<text class="value">
{{userInfo.project}}
</text>
</view>
<view class="user-info-item">
<text class="key">
项目角色:&nbsp;
</text>
<text class="value">
{{userInfo.role}}
</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
userInfo: {
name: '张三',
gender: '男',
age: 26,
unit: '航天科工六院',
department: '**部',
post: '**经理',
project: '负责项目',
role: '**项目经理'
}
}
},
methods: {
}
}
</script>
<style lang="scss">
.avatar_name {
border: 1px solid rgb(186, 186, 186);
display: flex;
align-items: center;
height: 180rpx;
padding-left: 38rpx;
.avatar {
display: flex;
align-items: center;
uni-image {
width: 114rpx;
height: 114rpx;
}
}
.username {
margin-left: 100rpx;
font-size: 28px;
}
}
.user-info {
.user-info-item {
display: flex;
height: 120rpx;
align-items: center;
border: 1px solid #bbb;
}
}
</style>

View File

@ -0,0 +1,36 @@
<template>
<view>
<u-tabs :list="tabList"></u-tabs>
</view>
</template>
<script>
export default {
data() {
return {
tabList: [{
text: '主页'
}, {
text: '进度管理'
},
{
text: '质量管理'
},
{
text: '安全管理'
},
{
text: '材料管理'
}
]
}
},
methods: {
}
}
</script>
<style>
</style>

View File

@ -0,0 +1,359 @@
<template>
<view>
<view class="page-top" style="background-color: aqua">
<u-navbar title="个人中心" placeholder bgColor="transparent" :leftIcon="null" titleStyle="color:white">
</u-navbar>
<view class="search-bar">
<u--input placeholder="请输入项目名称" prefixIcon="search" prefixIconStyle="font-size: 32px;color: #909399">
</u--input>
</view>
<u-tabs :list="tabList" itemStyle="width:18%;height:80rpx" activeStyle="color:white"
inactiveStyle="color:white"></u-tabs>
</view>
<view class="filter-bar">
<view class="filter-item">
<text>时间</text>
<u-icon name="arrow-down-fill" color="#8F959E" size="14"></u-icon>
</view>
<view class="filter-item">
<text>金额</text>
<u-icon name="arrow-down-fill" color="#8F959E" size="14"></u-icon>
</view>
<view class="filter-item">
<text>级别</text>
<u-icon name="arrow-down-fill" color="#8F959E" size="14"></u-icon>
</view>
<view class="filter-item">
<text>筛选</text>
<u-icon name="arrow-down-fill" color="#8F959E" size="14"></u-icon>
</view>
</view>
<view class="scroll-y">
<u-swipe-action class="swiper-item" v-for="item in projectList" :key="item.id">
<u-swipe-action-item :options="options">
<!-- <navigator url='pages/project_supervision/project_detail/project_detail'> -->
<view class="project-item" @tap="goDetail">
<view class="project-status"
:style="`background-image: linear-gradient(219deg, ${statusDict[item.status].color1} 0%, ${statusDict[item.status].color2} 99%)`">
<text>{{statusDict[item.status].name}}</text>
</view>
<text>{{item.name}}</text>
<view class="project-desc">
<view class="project-desc-item">
<text class="project-desc-key">
建设性质
</text>
<text class="project-desc-value">
{{item.type}}
</text>
</view>
<view class="project-desc-item" style="text-align: end;">
<text class="project-desc-key">
施工单位
</text>
<text class="project-desc-value">
{{item.unit}}
</text>
</view>
<view class="project-desc-item">
<text class="project-desc-key">
监理单位
</text>
<text class="project-desc-value">
{{item.supervisorUnit}}
</text>
</view>
<view class="project-desc-item" style="text-align: end;">
<text class="project-desc-key">
总面积
</text>
<text class="project-desc-value">
{{item.area}}平方
</text>
</view>
<view class="project-desc-item">
<text class="project-desc-key">
总投资
</text>
<text class="project-desc-value">
{{item.invest}}万元
</text>
</view>
<view class="project-desc-item" style="text-align: end;">
<text class="project-desc-key">
建设性质
</text>
<text class="project-desc-value">
{{item.responsible}}
</text>
</view>
<view class="divider"></view>
<!-- <divider></divider> -->
<view class="project-desc-item">
<text class="project-desc-key">
项目编号
</text>
<text class="project-desc-value">
{{item.id}}
</text>
</view>
<view class="project-desc-item" style="text-align: end;">
<text class="project-desc-key">
立项时间
</text>
<text class="project-desc-value">
{{item.createTime}}
</text>
</view>
</view>
</view>
<!-- </navigator> -->
</u-swipe-action-item>
</u-swipe-action>
</view>
</view>
</template>
<script>
export default {
data() {
return {
statusDict: {
0: {
name: '已立项',
color1: '#39DAAA',
color2: '#02C489'
},
1: {
name: '进行中',
color1: '#FD934E',
color2: '#FF7442'
},
2: {
name: '已完成',
color1: '#39DAAA',
color2: '#02C489'
}
},
options: [{
text: '编辑',
style: {
backgroundColor: '#e99d42'
}
},
{
text: '删除',
style: {
backgroundColor: '#f56c6c'
}
}
],
tabList: [{
name: '全部'
},
{
name: '已立项'
},
{
name: '进行中'
},
{
name: '已验收'
},
],
projectList: [{
name: '六院信息化项目',
type: '商用',
unit: '内蒙航天建工集团',
supervisorUnit: '建华监理单位',
area: 1500,
invest: 200,
status: 0, //0:已立项, 1:进行中, 2:已完成
responsible: '郝昊',
id: "0e13werwr313",
createTime: '2022-02-32'
},
{
name: '工棚改造项目',
type: '商用',
unit: '内蒙航天建工集团',
supervisorUnit: '建华监理单位',
area: 1500,
invest: 200,
status: 0, //0:已立项, 1:进行中, 2:已完成
responsible: '郝昊',
id: "0e1rwerw748313",
createTime: '2022-02-32'
},
{
name: '工棚改造项目',
type: '商用',
unit: '内蒙航天建工集团',
supervisorUnit: '建华监理单位',
area: 1500,
invest: 200,
status: 0, //0:已立项, 1:进行中, 2:已完成
responsible: '郝昊',
id: "0e13wrw77587err",
createTime: '2022-02-32'
},
{
name: '工棚改造项目',
type: '商用',
unit: '内蒙航天建工集团',
supervisorUnit: '建华监理单位',
area: 1500,
invest: 200,
status: 0, //0:已立项, 1:进行中, 2:已完成
responsible: '郝昊',
id: "0e13wrw643542err",
createTime: '2022-02-32'
},
{
name: '工棚改造项目',
type: '商用',
unit: '内蒙航天建工集团',
supervisorUnit: '建华监理单位',
area: 1500,
invest: 200,
status: 0, //0:已立项, 1:进行中, 2:已完成
responsible: '郝昊',
id: "0e1335626wrwerr",
createTime: '2022-02-32'
},
{
name: '工棚改造项目',
type: '商用',
unit: '内蒙航天建工集团',
supervisorUnit: '建华监理单位',
area: 1500,
invest: 200,
status: 0, //0:已立项, 1:进行中, 2:已完成
responsible: '郝昊',
id: "0e312313wrwerr",
createTime: '2022-02-32'
}
]
}
},
methods: {
goDetail() {
console.log('跳转')
uni.navigateTo({
url: '/pages/project_supervision/project_detail/project_detail',
})
}
}
}
</script>
<style>
page {
background-color: #f6f6f6;
}
</style>
<style lang="scss" scoped>
.page-top {
background: linear-gradient(to top right, #496df6, #2e9ee8);
}
.search-bar {
margin: 0 32rpx 0;
.u-input {
height: 48rpx;
background-color: white;
}
}
.filter-bar {
height: 80rpx;
padding: 0 40rpx 0;
display: flex;
justify-content: space-between;
align-items: center;
.filter-item {
display: flex;
text {
color: #8F959E;
// margin-right: 8rpx;
}
}
}
.scroll-y {
height: 100%;
overflow-y: scroll;
}
.swiper-item {
margin: 0rpx 16rpx 0rpx;
}
.swiper-item:not(:last-child) {
margin-bottom: 20rpx;
}
.project-item {
position: relative;
background-color: white;
padding: 28rpx 20rpx 28rpx;
border-radius: 8rpx;
.project-status {
position: absolute;
top: 0;
right: 0;
display: flex;
justify-content: center;
align-items: center;
width: 112rpx;
height: 48rpx;
background-image: linear-gradient(219deg, #FD934E 0%, #FF7442 99%);
border-radius: 0 8rpx 0 32rpx;
text {
font-size: 12rpx;
color: #fff;
}
}
.project-desc {
display: flex;
flex-wrap: wrap;
.project-desc-item {
width: 50%;
.project-desc-key {
color: #8F959E;
font-size: 24rpx;
}
.project-desc-value {
margin-left: 8rpx;
color: #333;
font-size: 24rpx;
}
}
.divider {
margin: 15rpx 0 15rpx;
width: 100%;
height: 3rpx;
background-color: #f2f2f2;
}
}
}
</style>

BIN
static/camera_example.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
static/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
static/tab/attendance.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
static/tab/monitor.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

BIN
static/tab/personal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

80
uni.scss Normal file
View File

@ -0,0 +1,80 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
$uni-color-primary: #007aff;
$uni-color-success: #4cd964;
$uni-color-warning: #f0ad4e;
$uni-color-error: #dd524d;
/* 文字基本颜色 */
$uni-text-color:#333;//基本色
$uni-text-color-inverse:#fff;//反色
$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
$uni-text-color-placeholder: #808080;
$uni-text-color-disable:#c0c0c0;
/* 背景颜色 */
$uni-bg-color:#ffffff;
$uni-bg-color-grey:#f8f8f8;
$uni-bg-color-hover:#f1f1f1;//点击状态颜色
$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
/* 边框颜色 */
$uni-border-color:#c8c7cc;
/* 尺寸变量 */
/* 文字尺寸 */
$uni-font-size-sm:12px;
$uni-font-size-base:14px;
$uni-font-size-lg:16;
/* 图片尺寸 */
$uni-img-size-sm:20px;
$uni-img-size-base:26px;
$uni-img-size-lg:40px;
/* Border Radius */
$uni-border-radius-sm: 2px;
$uni-border-radius-base: 3px;
$uni-border-radius-lg: 6px;
$uni-border-radius-circle: 50%;
/* 水平间距 */
$uni-spacing-row-sm: 5px;
$uni-spacing-row-base: 10px;
$uni-spacing-row-lg: 15px;
/* 垂直间距 */
$uni-spacing-col-sm: 4px;
$uni-spacing-col-base: 8px;
$uni-spacing-col-lg: 12px;
/* 透明度 */
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
/* 文章场景相关 */
$uni-color-title: #2C405A; // 文章标题颜色
$uni-font-size-title:20px;
$uni-color-subtitle: #555555; // 二级标题颜色
$uni-font-size-subtitle:26px;
$uni-color-paragraph: #3F536E; // 文章段落颜色
$uni-font-size-paragraph:15px;
/* uni.scss */
@import '@/uni_modules/uview-ui/theme.scss';

View File

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<script>
var __UniViewStartTime__ = Date.now();
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
CSS.supports('top: constant(a)'))
document.write(
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
</script>
<title>View</title>
<link rel="stylesheet" href="view.css" />
</head>
<body>
<div id="app"></div>
<script src="__uniappes6.js"></script>
<script src="view.umd.min.js"></script>
<script src="app-view.js"></script>
</body>
</html>

View File

@ -0,0 +1,8 @@
var isReady=false;var onReadyCallbacks=[];
var isServiceReady=false;var onServiceReadyCallbacks=[];
var __uniConfig = {"pages":["pages/monitor/monitor","pages/attendance/attendance","pages/personal/personal","pages/mobile_inspection/mobile_inspection","pages/mobile_inspection/quality_inspection/quality_inspection","pages/mobile_inspection/security_inspection/security_inspection","pages/project_supervision/project_supervision","pages/project_supervision/project_detail/project_detail"],"window":{"navigationBarTextStyle":"white","navigationBarTitleText":"uni-app","navigationBarBackgroundColor":"#3a87ee","backgroundColor":"#F8F8F8"},"tabBar":{"color":"#9a9a9a","selectedColor":"#0f40f5","borderStyle":"black","backgroundColor":"#ffffff","list":[{"iconPath":"static/tab/monitor.png","selectedIconPath":"static/tab/monitor_actived.png","text":"视频监控","pagePath":"pages/monitor/monitor"},{"text":"考勤管理","pagePath":"pages/attendance/attendance","iconPath":"static/tab/attendance.png","selectedIconPath":"static/tab/attendance_actived.png"},{"text":"项目监管","pagePath":"pages/project_supervision/project_supervision","iconPath":"static/tab/project_supervision.png","selectedIconPath":"static/tab/project_supervision_actived.png"},{"text":"移动巡检","pagePath":"pages/mobile_inspection/mobile_inspection","iconPath":"static/tab/mobile_inspection.png","selectedIconPath":"static/tab/mobile_inspection_actived.png"},{"text":"个人中心","pagePath":"pages/personal/personal","iconPath":"static/tab/personal.png","selectedIconPath":"static/tab/personal_active.png"}]},"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"construction_site_supervision","compilerVersion":"3.5.3","entryPagePath":"pages/monitor/monitor","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
var __uniRoutes = [{"path":"/pages/monitor/monitor","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"视频监控","enablePullDownRefresh":false}},{"path":"/pages/attendance/attendance","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"考勤管理","enablePullDownRefresh":false}},{"path":"/pages/personal/personal","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"个人中心","enablePullDownRefresh":false}},{"path":"/pages/mobile_inspection/mobile_inspection","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"移动巡检","enablePullDownRefresh":false}},{"path":"/pages/mobile_inspection/quality_inspection/quality_inspection","meta":{},"window":{"navigationBarTitleText":"","enablePullDownRefresh":false}},{"path":"/pages/mobile_inspection/security_inspection/security_inspection","meta":{},"window":{"navigationBarTitleText":"","enablePullDownRefresh":false}},{"path":"/pages/project_supervision/project_supervision","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationStyle":"custom","navigationBarTextStyle":"white","backgroundColor":"#f6f6f6","enablePullDownRefresh":false}},{"path":"/pages/project_supervision/project_detail/project_detail","meta":{},"window":{"navigationBarTitleText":"","enablePullDownRefresh":false}}];
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});

View File

@ -0,0 +1,154 @@
/******/ (function(modules) { // webpackBootstrap
/******/ // install a JSONP callback for chunk loading
/******/ function webpackJsonpCallback(data) {
/******/ var chunkIds = data[0];
/******/ var moreModules = data[1];
/******/ var executeModules = data[2];
/******/
/******/ // add "moreModules" to the modules object,
/******/ // then flag all "chunkIds" as loaded and fire callback
/******/ var moduleId, chunkId, i = 0, resolves = [];
/******/ for(;i < chunkIds.length; i++) {
/******/ chunkId = chunkIds[i];
/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/ resolves.push(installedChunks[chunkId][0]);
/******/ }
/******/ installedChunks[chunkId] = 0;
/******/ }
/******/ for(moduleId in moreModules) {
/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
/******/ modules[moduleId] = moreModules[moduleId];
/******/ }
/******/ }
/******/ if(parentJsonpFunction) parentJsonpFunction(data);
/******/
/******/ while(resolves.length) {
/******/ resolves.shift()();
/******/ }
/******/
/******/ // add entry modules from loaded chunk to deferred list
/******/ deferredModules.push.apply(deferredModules, executeModules || []);
/******/
/******/ // run deferred modules when all chunks ready
/******/ return checkDeferredModules();
/******/ };
/******/ function checkDeferredModules() {
/******/ var result;
/******/ for(var i = 0; i < deferredModules.length; i++) {
/******/ var deferredModule = deferredModules[i];
/******/ var fulfilled = true;
/******/ for(var j = 1; j < deferredModule.length; j++) {
/******/ var depId = deferredModule[j];
/******/ if(installedChunks[depId] !== 0) fulfilled = false;
/******/ }
/******/ if(fulfilled) {
/******/ deferredModules.splice(i--, 1);
/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
/******/ }
/******/ }
/******/
/******/ return result;
/******/ }
/******/
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // object to store loaded and loading chunks
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ // Promise = chunk loading, 0 = chunk loaded
/******/ var installedChunks = {
/******/ "app-config": 0
/******/ };
/******/
/******/ var deferredModules = [];
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/";
/******/
/******/ var jsonpArray = this["webpackJsonp"] = this["webpackJsonp"] || [];
/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
/******/ jsonpArray.push = webpackJsonpCallback;
/******/ jsonpArray = jsonpArray.slice();
/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
/******/ var parentJsonpFunction = oldJsonpFunction;
/******/
/******/
/******/ // run deferred modules from other chunks
/******/ checkDeferredModules();
/******/ })
/************************************************************************/
/******/ ([]);

9067
unpackage/dist/dev/app-plus/app-service.js vendored Normal file

File diff suppressed because one or more lines are too long

6411
unpackage/dist/dev/app-plus/app-view.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"@platforms":["android","iPhone","iPad"],"id":"","name":"construction_site_supervision","version":{"name":"1.0.0","code":"100"},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"light","background":"#3a87ee"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"]},"apple":{},"plugins":{"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"uniStatistics":{"enable":false},"allowsInlineMediaPlayback":true,"safearea":{"background":"#ffffff","bottom":{"offset":"auto"}},"uni-app":{"compilerVersion":"3.5.3","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#9a9a9a","selectedColor":"#0f40f5","borderStyle":"rgba(0,0,0,0.4)","backgroundColor":"#ffffff","list":[{"iconPath":"static/tab/monitor.png","selectedIconPath":"static/tab/monitor_actived.png","text":"视频监控","pagePath":"pages/monitor/monitor"},{"text":"考勤管理","pagePath":"pages/attendance/attendance","iconPath":"static/tab/attendance.png","selectedIconPath":"static/tab/attendance_actived.png"},{"text":"项目监管","pagePath":"pages/project_supervision/project_supervision","iconPath":"static/tab/project_supervision.png","selectedIconPath":"static/tab/project_supervision_actived.png"},{"text":"移动巡检","pagePath":"pages/mobile_inspection/mobile_inspection","iconPath":"static/tab/mobile_inspection.png","selectedIconPath":"static/tab/mobile_inspection_actived.png"},{"text":"个人中心","pagePath":"pages/personal/personal","iconPath":"static/tab/personal.png","selectedIconPath":"static/tab/personal_active.png"}],"height":"50px","child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html"}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

1
unpackage/dist/dev/app-plus/view.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long