menchuang před 1 rokem
rodič
revize
3ab113db4a

+ 35 - 1
api/common.js

@@ -1,11 +1,45 @@
 import request from '@/utils/request'
 
+
+
+// 获取基建工程历史
+export function getInfrastructureList(id, type) {
+	return request({
+		'url': '/zdsz/engineeringInfrastructure/' + id + '/' + type,
+		'method': 'get',
+	})
+}
+
+//基建工程新增
+export function SubmitInfrastructure(param) {
+	return request({
+		'url': '/zdsz/engineeringInfrastructure/AddApp',
+		'method': 'post',
+		'data': param
+	})
+}
+//查询基建工程详情
+export function getInfrastructureDetails(id) {
+	return request({
+		'url': '/zdsz/engineeringInfrastructure/' + id,
+		'method': 'get',
+	})
+}
+//基建工程查询工程名称
+export function getInfrastructureNameList() {
+	return request({
+		'url': '/zdsz/engineeringInfrastructure/select',
+		'method': 'get',
+
+	})
+}
 //危险作业工程修改详情
 export function updateDangerousWorkProject(param) {
 	return request({
 		'url': '/zdsz/engineeringDangerous',
 		'method': 'put',
-})}
+	})
+}
 
 // 获取顶管工程历史
 export function getTopPipeHistoryList(id, type) {

+ 5 - 0
config.js

@@ -1,9 +1,14 @@
 // 应用全局配置
 module.exports = {
   
+
   baseUrl: 'http://192.168.4.11:8080',
   // baseUrl: 'http://192.168.4.20:8080',
   // baseUrl: 'http://192.168.4.6:8080',
+  // baseUrl: 'http://192.168.4.11:8080',
+  //baseUrl: 'http://192.168.4.20:8080',
+   // baseUrl: 'http://192.168.4.6:8080',
+
    // baseUrl: 'http://192.168.4.14:8089',
   // 应用信息
   appInfo: {

+ 3 - 69
pages.json

@@ -20,57 +20,8 @@
 			"style": {
 				"navigationBarTitleText": "工作台"
 			}
-		}, {
-			"path": "pages/mine/index",
-			"style": {
-				"navigationBarTitleText": "我的"
-			}
-		}, {
-			"path": "pages/mine/avatar/index",
-			"style": {
-				"navigationBarTitleText": "修改头像"
-			}
-		}, {
-			"path": "pages/mine/info/index",
-			"style": {
-				"navigationBarTitleText": "个人信息"
-			}
-		}, {
-			"path": "pages/mine/info/edit",
-			"style": {
-				"navigationBarTitleText": "编辑资料"
-			}
-		}, {
-			"path": "pages/mine/pwd/index",
-			"style": {
-				"navigationBarTitleText": "修改密码"
-			}
-		}, {
-			"path": "pages/mine/setting/index",
-			"style": {
-				"navigationBarTitleText": "应用设置"
-			}
-		}, {
-			"path": "pages/mine/help/index",
-			"style": {
-				"navigationBarTitleText": "常见问题"
-			}
-		}, {
-			"path": "pages/mine/about/index",
-			"style": {
-				"navigationBarTitleText": "关于我们"
-			}
-		}, {
-			"path": "pages/common/webview/index",
-			"style": {
-				"navigationBarTitleText": "浏览网页"
-			}
-		}, {
-			"path": "pages/common/textview/index",
-			"style": {
-				"navigationBarTitleText": "浏览文本"
-			}
-		},
+		},   
+		
 		{
 			"path": "pages/oldrenovation/indoor/indoor",
 			"style": {
@@ -90,24 +41,7 @@
 			}
 		},
 
-		{
-			"path": "pages/newbuilt/newIndoor",
-			"style": {
-				"navigationBarTitleText": "室内"
-			}
-		},
-		{
-			"path": "pages/newbuilt/newCourtyard",
-			"style": {
-				"navigationBarTitleText": "庭院"
-			}
-		},
-		{
-			"path": "pages/newbuilt/newOverhead",
-			"style": {
-				"navigationBarTitleText": "架空"
-			}
-		}, {
+		 {
 			"path": "pages/statistics/statistics",
 			"style": {
 				"navigationBarTitleText": ""

+ 8 - 1
pages/TopPipeWork/TopPipeWork.vue

@@ -260,6 +260,7 @@
 				headers: {
 					Authorization: "Bearer " + getToken()
 				},
+				loading: false,
 				time: '', //施工时间
 				open: false,
 				objValue: '', //上一页面传过来的值  新增接口用
@@ -705,7 +706,13 @@
 					this.$modal.msg("请输入数量")
 					return
 				}
-
+				if (this.imgArr.length <= 0) {
+					this.$modal.msg('请上传照片或视频')
+					return
+				}
+				if (this.loading == false) {
+					this.$modal.msg('照片或视频未上传完毕,无法提交!')
+				}
 				let param = {
 					id: this.id,
 					enginId: this.enginId,

+ 0 - 43
pages/common/textview/index.vue

@@ -1,43 +0,0 @@
-<template>
-  <view>
-    <uni-card class="view-title" :title="title">
-      <text class="uni-body view-content">{{ content }}</text>
-    </uni-card>
-  </view>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        title: '',
-        content: ''
-      }
-    },
-    onLoad(options) {
-      this.title = options.title
-      this.content = options.content
-      uni.setNavigationBarTitle({
-        title: options.title
-      })
-    }
-  }
-</script>
-
-<style scoped>
-  page {
-    background-color: #ffffff;
-  }
-
-  .view-title {
-    font-weight: bold;
-  }
-
-  .view-content {
-    font-size: 26rpx;
-    padding: 12px 5px 0;
-    color: #333;
-    line-height: 24px;
-    font-weight: normal;
-  }
-</style>

+ 0 - 34
pages/common/webview/index.vue

@@ -1,34 +0,0 @@
-<template>
-  <view v-if="params.url">
-    <web-view :webview-styles="webviewStyles" :src="`${params.url}`"></web-view>
-  </view>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        params: {},
-        webviewStyles: {
-          progress: {
-            color: "#FF3333"
-          }
-        }
-      }
-    },
-    props: {
-      src: {
-        type: [String],
-        default: null
-      }
-    },
-    onLoad(event) {
-      this.params = event
-      if (event.title) {
-        uni.setNavigationBarTitle({
-          title: event.title
-        })
-      }
-    }
-  }
-</script>

+ 846 - 34
pages/infrastructure/infrastructure.vue

@@ -1,44 +1,804 @@
 <template>
 	<!-- 基建工程 -->
 	<view>
-		<view class="view-bg">
-			<view class="uni-common-mt" style="width: 100%;">
-				<text class="uni-title uni-common-pl">工程名称</text>
-				<view style="width: 100%;padding-right: 20rpx;box-sizing: border-box;">
-					<textarea class="textarea" placeholder="请输入建设单位" maxlength="100"
-						placeholder-style="padding: 10rpx;"
-						style="width: 100%;height: 100%;border: 1rpx solid #cccccc; border-radius: 15rpx;padding: 10rpx;line-height:normal;"
-						auto-height v-model="projectName"></textarea>
+		<view class="background">
+
+			<view class="uni-list">
+				<view class="container">
+					<view>
+						工程名称
+					</view>
+					<view v-if="this.isEmpty(this.projectName.id)" style="margin-top: 10;"
+						@click="pickerShow('gcmc',0)">
+						<span style="color: darkgray;">请选择工程名称</span>
+					</view>
+					<view v-else class="uni-list-cell-db" style="margin-top: 10;" @click="pickerShow('gcmc',0)">
+						<span style="color: black;">{{projectName.name}}</span>
+					</view>
+				</view>
+
+			</view>
+			<view class="uni-list">
+				<view class="container">
+
+					<text>工程地址</text>
+					<input class="uni-input" type="text" v-model="gcdzValue" disabled="true"
+						style="margin-left: 10px;text-align: right;"></input>
+				</view>
+			</view>
+			<view class="uni-list">
+				<view class="container">
+
+					<text>建设单位</text>
+					<input class="uni-input" type="text" v-model="jsdwValue" disabled="true"
+						style="margin-left: 10px;text-align: right;"></input>
+				</view>
+			</view>
+			<view class="uni-list">
+				<view class="container">
+
+					<text>开工时间</text>
+					<input class="uni-input" type="text" v-model="kgsjValue" disabled="true"
+						style="margin-left: 10px;text-align: right;"></input>
+				</view>
+			</view>
+			<view class="uni-list">
+				<view class="container">
+
+					<text>计划工期</text>
+					<input class="uni-input" type="text" v-model="jhgqValue" disabled="true"
+						style="margin-left: 10px;text-align: right;"></input>
+				</view>
+			</view>
+			<view class="uni-list">
+				<view class="container">
+
+					<text>竣工时间</text>
+					<input class="uni-input" type="text" v-model="jgsjValue" disabled="true"
+						style="margin-left: 10px;text-align: right;"></input>
+				</view>
+			</view>
+			<view class="container">
+				<view class="uni-common-mt" style="width: 100%;">
+					<text class="uni-title uni-common-pl">工程内容</text>
+					<view style="width: 100%;padding-right: 20rpx;box-sizing: border-box;">
+						<textarea class="textarea" v-model="gcnrValue" disabled="true"
+							placeholder-style="padding: 10rpx;"
+							style="width: 100%;height: 100%;border: 1rpx solid #cccccc; border-radius: 15rpx;padding: 10rpx;line-height:normal;"
+							auto-height></textarea>
+					</view>
 				</view>
 			</view>
-			
-				 
+
+
+			<view class="uni-list">
+				<view class="align-items" style="margin-bottom: 20px;">
+					<!-- 	<view class="container" style="color: gainsboro;">*请上传文件</view> -->
+					<view class="" style="display: flex; flex-wrap: wrap;margin-top: 10px; margin-left: 10px;">
+						<!-- <image src="/static/images/chooseimg.png" mode=""
+									style="width: 100rpx; height: 100rpx; margin: 0 12rpx;; " @click="chooseFile()"></image> -->
+						<view v-for="(item,index) in fileArr" :key="index" style="position: relative;">
+							<view style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"
+								@click="chooseModel(item.picUrl,item.fileName)">
+								{{item.fileName}}
+								<!-- <image :src="item" mode="" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;">
+										</image> -->
+
+							</view>
+
+							<!-- <view @click="removeFile(index)"
+										style="position: absolute; top: 0; right: 14rpx; border-radius: 50%;">
+										<uni-icons type="close" color="darkgray" size="18"></uni-icons>
+									</view> -->
+						</view>
+					</view>
+				</view>
+			</view>
+
+
+
+
+			<SelectPicker :list="selectList" @change="changeSelect" v-if="open" @close="close" titleKey="name"
+				subtitleKey="id" v-model="name"></SelectPicker>
+
+
+			<SelectPicker :list="dictOptions" @change="changeSelectDict" v-if="openDict" @close="closeDict"
+				titleKey="dictLabel" subtitleKey="dictValue" v-model="dictLabel"></SelectPicker>
 		</view>
-	
-		<view class="view-bg">
-			
+
+		<view class="background">
+			<view>
+				<view class="uni-list">
+					<view style="font-size: 16px;margin-left: 10px;margin-top: 10px;">
+						{{objValue.value}}
+
+						<span
+							style="color: blue;font-size: 14px;  display: flex;justify-content:flex-end; margin-right: 15px;"
+							@click="history">历史</span>
+					</view>
+					<view class="container">
+
+						<view>
+							施工时间
+						</view>
+						<view style="margin-top: 10;" @click="openDatetimePicker()">
+							<span style="color: black;">{{time}}</span>
+						</view>
+					</view>
+
+					<span
+						style="color: blue;font-size: 14px;  display: flex;justify-content:flex-end; margin-right: 15px;"
+						@click="change">切换</span>
+					<view class="uni-list">
+						<view class="container">
+
+							<view>
+								材 质
+							</view>
+							<view v-if="isNew==false">
+								<view v-if="this.isEmpty(this.materialValue.id)" style="margin-top: 10;"
+									@click="pickerShow('cz')">
+									<span style="color: darkgray;">请选择材质</span>
+								</view>
+								<view v-else class="uni-list-cell-db" style="margin-top: 10;" @click="pickerShow('cz')">
+									<span style="color: black;">{{materialValue.name}}</span>
+								</view>
+							</view>
+							<view v-else-if="isNew==true">
+
+								<input class="uni-input" type="text" v-model="materialNewValue" placeholder="请输入材质"
+									style="margin-left: 10px;text-align: right;"></input>
+							</view>
+						</view>
+					</view>
+					<view class="uni-list">
+						<view class="container">
+
+							<view>
+								规 格
+							</view>
+							<view v-if="isNew==false">
+								<view v-if="this.isEmpty(this.specificationValue.id)" style="margin-top: 10;"
+									@click="pickerShow('gg')">
+									<span style="color: darkgray;">请选择规格</span>
+								</view>
+								<view v-else class="uni-list-cell-db" style="margin-top: 10;" @click="pickerShow('gg')">
+									<span style="color: black;">{{specificationValue.name}}</span>
+								</view>
+							</view>
+							<view v-else-if="isNew==true">
+
+								<input class="uni-input" type="text" v-model="specificationNewValue" placeholder="请输入规格"
+									style="margin-left: 10px;text-align: right;"></input>
+							</view>
+						</view>
+					</view>
+					<view class="uni-list">
+						<view class="container">
+
+							<text>数 量</text>
+							<input class="uni-input" type="number" v-model="inputNumberValue" placeholder="请填写数量"
+								maxlength="11" style="margin-left: 10px;text-align: right;"></input>
+						</view>
+					</view>
+				</view>
+			</view>
+
+			<view class="align-items" style="margin-top: 20px;margin-bottom: 20px;">
+				<view class="container" style="color: gainsboro;">*请上传照片</view>
+				<view class="" style="display: flex; flex-wrap: wrap;margin-top: 10px; margin-left: 10px;">
+					<image src="/static/images/chooseimg.png" mode=""
+						style="width: 100rpx; height: 100rpx; margin: 0 12rpx;; " @click="choose()"></image>
+					<view v-for="(item,index) in imgArr" :key="index" style="position: relative;">
+						<view
+							v-if="item.substring(item.length - 3) == 'png' || item.substring(item.length - 3) == 'jpg' ">
+							<image :src="item" mode="" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"
+								@click="showPhoto(index)">
+							</image>
+						</view>
+						<view v-else>
+							<video :src="item" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"></video>
+						</view>
+						<view @click="remove(index)"
+							style="position: absolute; top: 0; right: 14rpx; border-radius: 50%;">
+							<uni-icons type="close" color="darkgray" size="18"></uni-icons>
+						</view>
+					</view>
+				</view>
+			</view>
 		</view>
+		<view class="action-btn">
+			<button @click="submit" class="btn cu-btn block bg-blue lg round">确认上传</button>
+		</view>
+
+		<bottom-sheet ref="refShare" :data="historyList" :TitleType="objValue.value"></bottom-sheet>
+		<yt-dateTimePicker ref="myPicker" @submit="handleSubmit" :start-year="2024" :end-year="2099"
+			:time-hide="[true, true, true, true, true, true]" :time-label="['年', '月', '日', '时', '分', '秒']" />
+		<!-- 下载提示页面 -->
+		<mypopup :show="show_loding" :popupText="popupText" :titleText="titleText" :cancelText="cancelText"
+			:confirmText="confirmText" @close="cancel_loding" @confirm="confirm_loding">
+		</mypopup>
+
 	</view>
 </template>
 
 <script>
+	import SelectPicker from '../../components/selectPicker/select_picker.vue'
+	import bottomSheet from '../../components/bottomSheet/bottomSheetMore.vue'
+	import mypopup from '../../components/mypopup/mypopup.vue'
+	import uniIcons from '../../uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+
+	import {
+		getDicts
+	} from "@/api/system/dict/data";
+	import {
+		getToken
+	} from '../../utils/auth';
+	import {
+
+		getEnginMaterialQualityList,
+		getEnginSpecificationsList,
+		getInfrastructureNameList,
+		getInfrastructureDetails,
+		SubmitInfrastructure,
+		getInfrastructureList
+
+	} from '@/api/common'
 	export default {
+		components: {
+			SelectPicker,
+			uniIcons,
+			bottomSheet,
+			mypopup
+		},
 		data() {
 			return {
-				projectId:"",
-				projectName:"",
-				buildUnit:"",
+
+				historyList: {}, //历史数据
+				show_loding: false,
+				popupText: '', //对话框内容
+				titleText: '',
+				cancelText: '',
+				confirmText: '',
+				objValue: '', //上一页面传过来的值  新增接口用
+				headers: {
+					Authorization: "Bearer " + getToken()
+				},
+				time: '', //施工时间
+				open: false,
+				objValue: '', //上一页面传过来的值  新增接口用
+				openDict: false,
+				selectList: [],
+				dictOptions: [],
+				imgArr: [],
+				fileArr: [],
+				loading: false,
+				specificationValue: {}, //规格
+				materialValue: {}, //材质
+				inputNumberValue: '',
+				projectName: '', //工程名称
+				gcdzValue: '', //工程地址
+				jsdwValue: '', //建设单位
+
+				kgsjValue: '', //开工时间
+				jhgqValue: '', //计划工期
+
+				jgsjValue: '', //竣工时间
+				gcnrValue: '', //工程内容
+				id: '', //工程id
+				fileUrl: '', //点击的文件地址
+				fileName: '', //点击的文件名称
+				zEngineeringMaterialBo: [], //给后台传的值  用料列表
+				isNew: false, //是否新增
+				specificationNewValue: '', //规格新增内容
+				materialNewValue: '', //材质新增内容
+
 			}
 		},
+		created() {
+			this.time = this.traversalTime(new Date().getTime()) //在data里定义变量-nowTime
+			console.log(this.time)
+		},
+		onLoad(options) {
+			if ('params' in options) {
+				this.objValue = JSON.parse(decodeURIComponent(options.params));
+			}
+
+
+		},
 		methods: {
-			
+			//判断是否选择
+
+			isEmpty(str) {
+
+				return (!str || 0 === str.length);
+
+			},
+
+			change() {
+				this.isNew = !this.isNew;
+			},
+			handleSubmit(e) {
+
+				this.time = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}:${e.second}`;
+
+			},
+
+			//获取当前时间
+			traversalTime(timestamp) {
+				//timestamp(时间戳)是整数,否则要parseInt转换
+				let time = new Date(timestamp);
+				let y = time.getFullYear();
+				let m = time.getMonth() + 1;
+				let d = time.getDate();
+				let h = time.getHours();
+				let mm = time.getMinutes();
+				let s = time.getSeconds();
+				return y + '-' + this.addTimes(m) + '-' + this.addTimes(d) + ' ' + this.addTimes(h) + ':' + this
+					.addTimes(
+						mm) + ':' + this.addTimes(s);
+
+
+			},
+			addTimes(m) {
+				return m < 10 ? '0' + m : m
+			},
+			// 打开picker
+			openDatetimePicker() {
+				this.$refs.myPicker.show();
+			},
+
+			// 关闭picker
+			closeDatetimePicker() {
+				this.$refs.myPicker.hide();
+			},
+			showPhoto(index) {
+				uni.previewImage({
+					current: index,
+					urls: this.imgArr,
+				})
+
+			},
+			remove(index) {
+				uni.showModal({
+					title: '提示',
+					content: '是否删除该图片或视频?',
+					success: (res) => {
+						if (res.confirm) {
+							this.imgArr.splice(index, 1)
+							console.log('this.imgarr', this.imgArr)
+							if (this.imgArr.length <= 0) {
+								this.photo = true;
+							}
+						}
+					}
+				})
+			},
+			choose() {
+				let _this = this;
+				uni.showActionSheet({
+					title: '上传',
+					itemList: ['图片', '视频'],
+					success: (res) => {
+						console.log(res)
+						if (res.tapIndex == 0) {
+							this.chooseimage()
+						} else {
+							this.choosevideo()
+						}
+					}
+				})
+			},
+			chooseimage() {
+
+				let _this = this;
+				console.log('图片', _this.headers)
+				uni.chooseImage({
+					sizeType: ['album', 'camera'],
+					success(resp) {
+						resp.tempFiles.forEach((item, index) => {
+							const task = uni.uploadFile({
+								url: _this.$HTTP + `/obs`,
+								filePath: item.path,
+								name: 'file',
+								formData: {},
+								header: _this.headers,
+
+								success: res => {
+									// 判断是否json字符串,将其转为json格式
+									console.log("结果", res)
+									// let data = _this.$u.test.jsonString(res
+									// 	.data) ? JSON.parse(res.data) : res.data;
+									let data = JSON.parse(res.data);
+									if (![200].includes(data.code)) {
+										// this.uploadError(index, data);
+										_this.$modal.msg(data.msg)
+									} else {
+										if (_this.progress === 100) {
+											console.log('_this.progress', _this.progress)
+											//console.log('data----', data)data
+											console.log('res--', res)
+											_this.imgArr.push(data.data.url)
+											console.log('imgArr', _this.imgArr)
+											_this.$modal.msg('上传成功!')
+											_this.photo = false;
+										}
+									}
+								},
+								fail: e => {
+									console.log(e)
+									_this.$modal.msg('上传失败!')
+									//_this.uploadError(index, e);
+								},
+								complete: res => {
+									uni.hideLoading();
+									_this.uploading = false;
+
+								}
+							});
+							task.onProgressUpdate(res => {
+								_this.progress = res.progress;
+								console.log('onProgressUpdate', res)
+								console.log('task.onProgressUpdate', _this.progress)
+								uni.showLoading({
+									title: '上传中'
+								})
+								if (_this.progress != 100) {
+									_this.loading = false
+									console.log('_this.loading false', _this.loading)
+								} else {
+									_this.loading = true
+									console.log('_this.loading true', _this.loading)
+								}
+							});
+
+						})
+
+					},
+				})
+			},
+
+			choosevideo() {
+				let _this = this;
+				console.log('视频')
+				uni.chooseVideo({
+					sourceType: ['album', 'camera'],
+					maxDuration: 30,
+					success(resp) {
+						const task = uni.uploadFile({
+							url: _this.$HTTP + `/obs`,
+							filePath: resp.tempFilePath,
+							name: 'file',
+							formData: {},
+							header: _this.headers,
+							success: res => {
+								// 判断是否json字符串,将其转为json格式
+								let data = JSON.parse(res.data);
+								if (![200].includes(res.statusCode)) {
+									this.uploadError(index, data);
+								} else {
+									//上传成功
+									if (_this.progress === 100) {
+										console.log('_this.progress', _this.progress)
+										_this.imgArr.push(data.data.url)
+										console.log('imgArr', _this.imgArr)
+										_this.$modal.msg('上传成功!')
+										_this.photo = false;
+									}
+								}
+							},
+							fail: e => {
+								_this.$modal.msg('上传失败!')
+								this.uploadError(index, e);
+							},
+							complete: res => {
+								uni.hideLoading();
+								_this.uploading = false;
+							}
+						});
+						task.onProgressUpdate(res => {
+							_this.progress = res.progress;
+							console.log('onProgressUpdate', res)
+							uni.showLoading({
+								title: '上传中'
+							})
+							if (_this.progress != 100) {
+								_this.loading = false
+								console.log('_this.loading false', _this.loading)
+							} else {
+								_this.loading = true
+								console.log('_this.loading true', _this.loading)
+							}
+						});
+
+					},
+				})
+			},
+			chooseModel(url, name) {
+				this.cancelText = '复制';
+				this.confirmText = "下载";
+				this.titleText = "温馨提示"
+				this.popupText = "下载或者复制链接";
+				this.show_loding = true;
+				this.fileName = name;
+				this.fileUrl = url; //文件名称和下载地址赋值
+
+			},
+			//取消按钮
+			cancel_loding() {
+				let _this = this;
+				_this.show_loding = false;
+				console.log("复制")
+				if (!_this.isEmpty(_this.fileUrl)) {
+					console.log(_this.fileUrl)
+					console.log(_this.fileName)
+					uni.setClipboardData({
+						data: _this.fileUrl,
+						success() {
+							uni.showToast({
+								title: '已复制' + _this.fileName + '地址成功 请在浏览器打开',
+								icon: 'none'
+							});
+						},
+						fail(e) {
+							console.log("失败", e)
+							uni.showToast({
+								title: '复制失败',
+								icon: 'none'
+							});
+						}
+					});
+
+				}
+			},
+			//确定按钮
+			confirm_loding() {
+				this.show_loding = false;
+				console.log("下载")
+				this.download(this.fileUrl, this.fileName);
+
+
+			},
+
+			getDownLoadFilePath() {
+				let cachePath = `${uni.env.USER_DATA_PATH}/downloads`
+				let fm = uni.getFileSystemManager()
+				try {
+					// 访问成功则存在
+					fm.accessSync(cachePath)
+				} catch (error) {
+					// 不存在则新建
+					fm.mkdirSync(cachePath, true)
+				}
+				return cachePath
+			},
+			download(url, name) {
+
+				let savePath = this.getDownLoadFilePath();
+				console.log('点击下载', url);
+				console.log('点击下载333', savePath);
+				//var savePath = uni.env.USER_DATA_PATH + '/savePath'
+
+				uni.downloadFile({
+					url: url,
+					success: response => {
+						if (response.statusCode === 200) {
+							console.log("数据", response)
+							uni.getFileSystemManager().saveFile({
+								tempFilePath: response.tempFilePath,
+								filePath: `${savePath}/${name}`,
+								success: (resData) => {
+									console.log('保存路径', resData.savedFilePath)
+									console.log("dd", resData)
+									uni.showToast({
+										title: '下载成功'
+									})
+								},
+								fail: error => {
+									console.log('error: ', error)
+								}
+							})
+						}
+					},
+					fail: error => {
+						debugger
+						console.log("ddd", error)
+					}
+
+				})
+
+
+
+			},
+			pickerShow(e) {
+				this.type = e; //赋值类型
+				if (e == 'gcmc') {
+					this.open = true;
+					getInfrastructureNameList().then(response => {
+						this.selectList = response.data;
+					});
+
+				} else if (e == 'cz') { //材质
+					this.open = true;
+					getEnginMaterialQualityList("基建工程").then(response => {
+						this.selectList = response.data;
+					});
+
+				} else if (e == 'gg') { //规格
+					if (this.isEmpty(this.materialValue.id)) {
+						this.$modal.msg('请选择材质')
+
+					} else {
+						this.open = true;
+						this.selectList = this.materialList;
+
+					}
+
+				}
+
+			},
+			changeSelect(item, index) {
+				// this.index = index;
+				// this.address = item.communityName;
+				this.open = false;
+
+				if (this.type == 'gcmc') {
+					this.projectName = item;
+					uni.showLoading({
+						title: '加载中'
+					})
+					getInfrastructureDetails(item.id).then(res => {
+						uni.hideLoading();
+						this.projectName.name = res.data.enginName;
+						this.gcdzValue = res.data.enginAddre; //工程地址
+						this.jsdwValue = res.data.constructUnit; //建设单位
+
+						this.kgsjValue = res.data.startTime; //开工时间
+						this.jhgqValue = res.data.plannedDuration; //计划工期
+
+						this.jgsjValue = res.data.completedTime; //竣工时间
+						this.gcnrValue = res.data.enginContent; //工程内容
+						this.fileArr = res.data.pics;
+						this.id = res.data.id;
+
+
+
+
+
+
+
+					})
+
+				} else if (this.type == 'cz') {
+					this.materialValue = item;
+					this.specificationValue = ''; //重置规格
+					//根据材质ID 获取规格数据
+					getEnginSpecificationsList(item.id).then(res => {
+						this.materialList = res.data
+					})
+				} else if (this.type == 'gg') {
+					this.specificationValue = item;
+
+				}
+
+			},
+			//关闭弹窗
+			close(e) {
+				this.open = false
+			},
+
+			history() {
+				if (this.isEmpty(this.projectName.id)) {
+					this.$modal.msg('请选择工程名称')
+					return
+				}
+
+				getInfrastructureList(this.id, this.objValue.value).then(response => {
+
+					this.historyList = response.data
+					if (response.data.zEngineeringNodeBo.zEngineeringInfoBoList != null) {
+						this.$refs.refShare.handleShowShare();
+					} else {
+						this.$modal.msg("暂无历史信息")
+					}
+
+				});
+			},
+			submit() {
+				//提交
+
+				if (this.isEmpty(this.projectName.id)) {
+					this.$modal.msg('请选择工程名称')
+					return
+				}
+				if (this.isNew) {
+					if (this.isEmpty(this.materialNewValue)) {
+						this.$modal.msg("请输入材质")
+						return
+					}
+					if (this.isEmpty(this.specificationNewValue)) {
+						this.$modal.msg("请输入规格")
+						return
+					}
+				} else {
+					if (this.isEmpty(this.materialValue.id)) {
+						this.$modal.msg("请选择材质")
+						return
+					}
+					if (this.isEmpty(this.specificationValue.id)) {
+						this.$modal.msg("请选择规格")
+						return
+					}
+				}
+				if (this.isEmpty(this.inputNumberValue)) {
+					this.$modal.msg("请输入数量")
+					return
+				}
+				if (this.imgArr.length <= 0) {
+					this.$modal.msg('请上传照片或视频')
+					return
+				}
+				if (this.loading == false) {
+					this.$modal.msg('照片或视频未上传完毕,无法提交!')
+					return
+				}
+				if (this.isNew) {
+					//新增
+					this.zEngineeringMaterialBo.push({
+						specifications: this.specificationNewValue,
+						materialQuality: this.materialNewValue,
+						number: this.inputNumberValue,
+					})
+				} else {
+					//选择的
+					this.zEngineeringMaterialBo.push({
+						materialQuality: this.materialValue.id, //材质
+						specifications: this.specificationValue.id, //规格
+						number: this.inputNumberValue //数量
+					})
+				}
+				let param = {
+
+					enginName: this.projectName.name,
+					enginAddre: this.gcdzValue, //工程地址
+					constructUnit: this.jsdwValue, //建设单位
+					startTime: this.kgsjValue, //开工时间
+					plannedDuration: this.jhgqValue, //计划工期
+					completedTime: this.jgsjValue, //竣工时间
+					enginContent: this.gcnrValue, //工程内容 长度100
+					files: this.fileArr, // 文件信息 数组
+					id: this.id, // 基建工程id
+					zEngineeringNodeBo: {
+						type: this.objValue.value,
+						zEngineeringInfoBo: {
+							constructTime: this.time,
+							zEngiineeringPhotoBoList: this.imgArr,
+							zEngineeringMaterialBo: this.zEngineeringMaterialBo
+						}
+					}
+				}
+
+				SubmitInfrastructure(param).then(res => {
+					if (res.code == '200') {
+						uni.showToast({
+							title: res.msg,
+							icon: 'none',
+							//显示持续时间为 3秒
+							duration: 1000
+						});
+						setTimeout(function() {
+							uni.navigateBack();
+						}, 1000)
+
+					}
+				})
+			},
 		}
 	}
 </script>
 
 <style>
-
-.container {
+	.container {
 		display: flex;
 		margin-left: 10px;
 		margin-top: 10px;
@@ -87,28 +847,80 @@
 		line-height: 20px;
 	}
 
-	.uni-list-cell-db,
-	.uni-list-cell {
-		position: relative;
+	page {
+		background: #f2f2f2;
+	}
+
+	.flex-x {
 		display: flex;
-		flex-direction: row;
-		justify-content: space-between;
 		align-items: center;
 	}
 
-	.uni-list-cell-left {
-		white-space: nowrap;
+	.template_title,
+	.template_title1,
+	.template_title_list {
+		height: 90rpx;
+		background: #fff;
+		justify-content: space-between;
+		padding: 0 30rpx;
+		box-sizing: border-box;
+	}
+
+	.template_title1 {
+		background: none;
+	}
+
+	.template_title_list {
+		margin-bottom: 4rpx;
+	}
+
+	.template_title>view,
+	.template_title1>view {
+		font-size: 32rpx;
+		color: #8f8f8f;
+		flex-shrink: 0;
+		margin-right: 20rpx;
+	}
+
+	.template_title>input {
 		font-size: 28rpx;
+		color: #808080;
+		text-align: right;
+		flex-grow: 1;
 	}
 
+	/* 添加内容 */
 
-	.view-bg {
-		margin-left: 8px;
-		margin-right: 8px;
-		margin-top: 8px;
-		padding: 10px;
-		background-color: #fff;
-		border-radius: 5px;
+	.add_con>text {
+		font-size: 40rpx;
+		color: #f16765;
+		display: block;
+		margin-right: 20rpx;
+		margin-left: 10rpx;
+		line-height: 44rpx;
+	}
+
+	.add_con>view {
+		font-size: 32rpx;
+		color: #7885cb;
 	}
 
-</style>
+	/* 删除内容 */
+
+	.del {
+		font-size: 32rpx;
+		color: #f16765;
+		margin-right: 14rpx;
+		padding: 20rpx;
+	}
+
+	input {
+		flex-grow: 1;
+		font-size: 28rpx;
+		color: #808080;
+	}
+
+	.btn {
+		margin-top: 100rpx;
+	}
+</style>

+ 11 - 11
pages/login.vue

@@ -1,7 +1,7 @@
 <template>
   <view class="normal-login-container">
     <view class="logo-content align-center justify-center flex">
-      <image style="width: 100rpx;height: 100rpx;" :src="globalConfig.appInfo.logo" mode="widthFix">
+      <image style="width: 100rpx;height: 100rpx;"  mode="widthFix">
       </image>
       <text class="title">若依移动端登录</text>
     </view>
@@ -66,16 +66,16 @@
       handleUserRegister() {
         this.$tab.redirectTo(`/pages/register`)
       },
-      // 隐私协议
-      handlePrivacy() {
-        let site = this.globalConfig.appInfo.agreements[0]
-        this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
-      },
-      // 用户协议
-      handleUserAgrement() {
-        let site = this.globalConfig.appInfo.agreements[1]
-        this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
-      },
+      // // 隐私协议
+      // handlePrivacy() {
+      //   let site = this.globalConfig.appInfo.agreements[0]
+      //   this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
+      // },
+      // // 用户协议
+      // handleUserAgrement() {
+      //   let site = this.globalConfig.appInfo.agreements[1]
+      //   this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
+      // },
       // 获取图形验证码
       getCode() {
         getCodeImg().then(res => {

+ 0 - 75
pages/mine/about/index.vue

@@ -1,75 +0,0 @@
-<template>
-  <view class="about-container">
-    <view class="header-section text-center">
-      <image style="width: 150rpx;height: 150rpx;" src="/static/logo200.png" mode="widthFix">
-      </image>
-      <uni-title type="h2" title="若依移动端"></uni-title>
-    </view>
-
-    <view class="content-section">
-      <view class="menu-list">
-        <view class="list-cell list-cell-arrow">
-          <view class="menu-item-box">
-            <view>版本信息</view>
-            <view class="text-right">v{{version}}</view>
-          </view>
-        </view>
-        <view class="list-cell list-cell-arrow">
-          <view class="menu-item-box">
-            <view>官方邮箱</view>
-            <view class="text-right">ruoyi@xx.com</view>
-          </view>
-        </view>
-        <view class="list-cell list-cell-arrow">
-          <view class="menu-item-box">
-            <view>服务热线</view>
-            <view class="text-right">400-999-9999</view>
-          </view>
-        </view>
-        <view class="list-cell list-cell-arrow">
-          <view class="menu-item-box">
-            <view>公司网站</view>
-            <view class="text-right">
-              <uni-link :href="url" :text="url" showUnderLine="false"></uni-link>
-            </view>
-          </view>
-        </view>
-      </view>
-    </view>
-
-    <view class="copyright">
-      <view>Copyright &copy; 2022 ruoyi.vip All Rights Reserved.</view>
-    </view>
-  </view>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        url: getApp().globalData.config.appInfo.site_url,
-        version: getApp().globalData.config.appInfo.version
-      }
-    }
-  }
-</script>
-
-<style lang="scss">
-  page {
-    background-color: #f8f8f8;
-  }
-
-  .copyright {
-    margin-top: 50rpx;
-    text-align: center;
-    line-height: 60rpx;
-    color: #999;
-  }
-
-  .header-section {
-    display: flex;
-    padding: 30rpx 0 0;
-    flex-direction: column;
-    align-items: center;
-  }
-</style>

+ 0 - 631
pages/mine/avatar/index.vue

@@ -1,631 +0,0 @@
-<template>
-	<view class="container">
-		<view class="page-body uni-content-info">
-			<view class='cropper-content'>
-				<view v-if="isShowImg" class="uni-corpper" :style="'width:'+cropperInitW+'px;height:'+cropperInitH+'px;background:#000'">
-					<view class="uni-corpper-content" :style="'width:'+cropperW+'px;height:'+cropperH+'px;left:'+cropperL+'px;top:'+cropperT+'px'">
-						<image :src="imageSrc" :style="'width:'+cropperW+'px;height:'+cropperH+'px'"></image>
-						<view class="uni-corpper-crop-box" @touchstart.stop="contentStartMove" @touchmove.stop="contentMoveing" @touchend.stop="contentTouchEnd"
-						    :style="'left:'+cutL+'px;top:'+cutT+'px;right:'+cutR+'px;bottom:'+cutB+'px'">
-							<view class="uni-cropper-view-box">
-								<view class="uni-cropper-dashed-h"></view>
-								<view class="uni-cropper-dashed-v"></view>
-								<view class="uni-cropper-line-t" data-drag="top" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
-								<view class="uni-cropper-line-r" data-drag="right" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
-								<view class="uni-cropper-line-b" data-drag="bottom" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
-								<view class="uni-cropper-line-l" data-drag="left" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
-								<view class="uni-cropper-point point-t" data-drag="top" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
-								<view class="uni-cropper-point point-tr" data-drag="topTight"></view>
-								<view class="uni-cropper-point point-r" data-drag="right" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
-								<view class="uni-cropper-point point-rb" data-drag="rightBottom" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
-								<view class="uni-cropper-point point-b" data-drag="bottom" @touchstart.stop="dragStart" @touchmove.stop="dragMove" @touchend.stop="dragEnd"></view>
-								<view class="uni-cropper-point point-bl" data-drag="bottomLeft"></view>
-								<view class="uni-cropper-point point-l" data-drag="left" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
-								<view class="uni-cropper-point point-lt" data-drag="leftTop"></view>
-							</view>
-						</view>
-					</view>
-				</view>
-			</view>
-			<view class='cropper-config'>
-				<button type="primary reverse" @click="getImage" style='margin-top: 30rpx;'> 选择头像 </button>
-				<button type="warn" @click="getImageInfo" style='margin-top: 30rpx;'> 提交 </button>
-			</view>
-			<canvas canvas-id="myCanvas" :style="'position:absolute;border: 1px solid red; width:'+imageW+'px;height:'+imageH+'px;top:-9999px;left:-9999px;'"></canvas>
-		</view>
-	</view>
-</template>
-
-<script>
-  import config from '@/config'
-  import store from "@/store"
-  import { uploadAvatar } from "@/api/system/user"
-  
-  const baseUrl = config.baseUrl
-	let sysInfo = uni.getSystemInfoSync()
-	let SCREEN_WIDTH = sysInfo.screenWidth
-	let PAGE_X, // 手按下的x位置
-		PAGE_Y, // 手按下y的位置 
-		PR = sysInfo.pixelRatio, // dpi
-		T_PAGE_X, // 手移动的时候x的位置
-		T_PAGE_Y, // 手移动的时候Y的位置
-		CUT_L, // 初始化拖拽元素的left值
-		CUT_T, // 初始化拖拽元素的top值
-		CUT_R, // 初始化拖拽元素的
-		CUT_B, // 初始化拖拽元素的
-		CUT_W, // 初始化拖拽元素的宽度
-		CUT_H, //  初始化拖拽元素的高度
-		IMG_RATIO, // 图片比例
-		IMG_REAL_W, // 图片实际的宽度
-		IMG_REAL_H, // 图片实际的高度
-		DRAFG_MOVE_RATIO = 1, //移动时候的比例,
-		INIT_DRAG_POSITION = 100, // 初始化屏幕宽度和裁剪区域的宽度之差,用于设置初始化裁剪的宽度
-		DRAW_IMAGE_W = sysInfo.screenWidth // 设置生成的图片宽度
-
-	export default {
-		/**
-		 * 页面的初始数据
-		 */
-		data() {
-			return {
-				imageSrc: store.getters.avatar,
-				isShowImg: false,
-				// 初始化的宽高
-				cropperInitW: SCREEN_WIDTH,
-				cropperInitH: SCREEN_WIDTH,
-				// 动态的宽高
-				cropperW: SCREEN_WIDTH,
-				cropperH: SCREEN_WIDTH,
-				// 动态的left top值
-				cropperL: 0,
-				cropperT: 0,
-
-				transL: 0,
-				transT: 0,
-
-				// 图片缩放值
-				scaleP: 0,
-				imageW: 0,
-				imageH: 0,
-
-				// 裁剪框 宽高
-				cutL: 0,
-				cutT: 0,
-				cutB: SCREEN_WIDTH,
-				cutR: '100%',
-				qualityWidth: DRAW_IMAGE_W,
-				innerAspectRadio: DRAFG_MOVE_RATIO
-			}
-		},
-		/**
-		 * 生命周期函数--监听页面初次渲染完成
-		 */
-		onReady: function () {
-			this.loadImage()
-		},
-		methods: {
-			setData: function (obj) {
-				let that = this
-				Object.keys(obj).forEach(function (key) {
-					that.$set(that.$data, key, obj[key])
-				})
-			},
-			getImage: function () {
-				var _this = this
-				uni.chooseImage({
-					success: function (res) {
-						_this.setData({
-							imageSrc: res.tempFilePaths[0],
-						})
-						_this.loadImage()
-					},
-				})
-			},
-			loadImage: function () {
-				var _this = this
-
-				uni.getImageInfo({
-					src: _this.imageSrc,
-					success: function success(res) {
-						IMG_RATIO = 1 / 1
-						if (IMG_RATIO >= 1) {
-							IMG_REAL_W = SCREEN_WIDTH
-							IMG_REAL_H = SCREEN_WIDTH / IMG_RATIO
-						} else {
-							IMG_REAL_W = SCREEN_WIDTH * IMG_RATIO
-							IMG_REAL_H = SCREEN_WIDTH
-						}
-						let minRange = IMG_REAL_W > IMG_REAL_H ? IMG_REAL_W : IMG_REAL_H
-						INIT_DRAG_POSITION = minRange > INIT_DRAG_POSITION ? INIT_DRAG_POSITION : minRange
-						// 根据图片的宽高显示不同的效果   保证图片可以正常显示
-						if (IMG_RATIO >= 1) {
-							let cutT = Math.ceil((SCREEN_WIDTH / IMG_RATIO - (SCREEN_WIDTH / IMG_RATIO - INIT_DRAG_POSITION)) / 2)
-							let cutB = cutT
-							let cutL = Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH + INIT_DRAG_POSITION) / 2)
-							let cutR = cutL
-							_this.setData({
-								cropperW: SCREEN_WIDTH,
-								cropperH: SCREEN_WIDTH / IMG_RATIO,
-								// 初始化left right
-								cropperL: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH) / 2),
-								cropperT: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH / IMG_RATIO) / 2),
-								cutL: cutL,
-								cutT: cutT,
-								cutR: cutR,
-								cutB: cutB,
-								// 图片缩放值
-								imageW: IMG_REAL_W,
-								imageH: IMG_REAL_H,
-								scaleP: IMG_REAL_W / SCREEN_WIDTH,
-								qualityWidth: DRAW_IMAGE_W,
-								innerAspectRadio: IMG_RATIO
-							})
-						} else {
-							let cutL = Math.ceil((SCREEN_WIDTH * IMG_RATIO - (SCREEN_WIDTH * IMG_RATIO)) / 2)
-							let cutR = cutL
-							let cutT = Math.ceil((SCREEN_WIDTH - INIT_DRAG_POSITION) / 2)
-							let cutB = cutT
-							_this.setData({
-								cropperW: SCREEN_WIDTH * IMG_RATIO,
-								cropperH: SCREEN_WIDTH,
-								// 初始化left right
-								cropperL: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH * IMG_RATIO) / 2),
-								cropperT: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH) / 2),
-
-								cutL: cutL,
-								cutT: cutT,
-								cutR: cutR,
-								cutB: cutB,
-								// 图片缩放值
-								imageW: IMG_REAL_W,
-								imageH: IMG_REAL_H,
-								scaleP: IMG_REAL_W / SCREEN_WIDTH,
-								qualityWidth: DRAW_IMAGE_W,
-								innerAspectRadio: IMG_RATIO
-							})
-						}
-						_this.setData({
-							isShowImg: true
-						})
-						uni.hideLoading()
-					}
-				})
-			},
-			// 拖动时候触发的touchStart事件
-			contentStartMove(e) {
-				PAGE_X = e.touches[0].pageX
-				PAGE_Y = e.touches[0].pageY
-			},
-
-			// 拖动时候触发的touchMove事件
-			contentMoveing(e) {
-				var _this = this
-				var dragLengthX = (PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO
-				var dragLengthY = (PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO
-				// 左移
-				if (dragLengthX > 0) {
-					if (this.cutL - dragLengthX < 0) dragLengthX = this.cutL
-				} else {
-					if (this.cutR + dragLengthX < 0) dragLengthX = -this.cutR
-				}
-
-				if (dragLengthY > 0) {
-					if (this.cutT - dragLengthY < 0) dragLengthY = this.cutT
-				} else {
-					if (this.cutB + dragLengthY < 0) dragLengthY = -this.cutB
-				}
-				this.setData({
-					cutL: this.cutL - dragLengthX,
-					cutT: this.cutT - dragLengthY,
-					cutR: this.cutR + dragLengthX,
-					cutB: this.cutB + dragLengthY
-				})
-
-				PAGE_X = e.touches[0].pageX
-				PAGE_Y = e.touches[0].pageY
-			},
-
-			contentTouchEnd() {
-
-			},
-
-			// 获取图片
-			getImageInfo() {
-				var _this = this
-				uni.showLoading({
-					title: '图片生成中...',
-				})
-				// 将图片写入画布
-				const ctx = uni.createCanvasContext('myCanvas')
-				ctx.drawImage(_this.imageSrc, 0, 0, IMG_REAL_W, IMG_REAL_H)
-				ctx.draw(true, () => {
-					// 获取画布要裁剪的位置和宽度   均为百分比 * 画布中图片的宽度    保证了在微信小程序中裁剪的图片模糊  位置不对的问题 canvasT = (_this.cutT / _this.cropperH) * (_this.imageH / pixelRatio)
-					var canvasW = ((_this.cropperW - _this.cutL - _this.cutR) / _this.cropperW) * IMG_REAL_W
-					var canvasH = ((_this.cropperH - _this.cutT - _this.cutB) / _this.cropperH) * IMG_REAL_H
-					var canvasL = (_this.cutL / _this.cropperW) * IMG_REAL_W
-					var canvasT = (_this.cutT / _this.cropperH) * IMG_REAL_H
-					uni.canvasToTempFilePath({
-						x: canvasL,
-						y: canvasT,
-						width: canvasW,
-						height: canvasH,
-						destWidth: canvasW,
-						destHeight: canvasH,
-						quality: 0.5,
-						canvasId: 'myCanvas',
-						success: function (res) {
-							uni.hideLoading()
-							let data = {name: 'avatarfile', filePath: res.tempFilePath}
-							uploadAvatar(data).then(response => {
-								store.commit('SET_AVATAR', baseUrl + response.imgUrl)
-								uni.showToast({ title: "修改成功", icon: 'success' })
-								uni.navigateBack()
-							})
-						}
-					})
-				})
-			},
-			// 设置大小的时候触发的touchStart事件
-			dragStart(e) {
-				T_PAGE_X = e.touches[0].pageX
-				T_PAGE_Y = e.touches[0].pageY
-				CUT_L = this.cutL
-				CUT_R = this.cutR
-				CUT_B = this.cutB
-				CUT_T = this.cutT
-			},
-
-			// 设置大小的时候触发的touchMove事件
-			dragMove(e) {
-				var _this = this
-				var dragType = e.target.dataset.drag
-				switch (dragType) {
-					case 'right':
-						var dragLength = (T_PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO
-						if (CUT_R + dragLength < 0) dragLength = -CUT_R
-						this.setData({
-							cutR: CUT_R + dragLength
-						})
-						break
-					case 'left':
-						var dragLength = (T_PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO
-						if (CUT_L - dragLength < 0) dragLength = CUT_L
-						if ((CUT_L - dragLength) > (this.cropperW - this.cutR)) dragLength = CUT_L - (this.cropperW - this.cutR)
-						this.setData({
-							cutL: CUT_L - dragLength
-						})
-						break
-					case 'top':
-						var dragLength = (T_PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO
-						if (CUT_T - dragLength < 0) dragLength = CUT_T
-						if ((CUT_T - dragLength) > (this.cropperH - this.cutB)) dragLength = CUT_T - (this.cropperH - this.cutB)
-						this.setData({
-							cutT: CUT_T - dragLength
-						})
-						break
-					case 'bottom':
-						var dragLength = (T_PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO
-						if (CUT_B + dragLength < 0) dragLength = -CUT_B
-						this.setData({
-							cutB: CUT_B + dragLength
-						})
-						break
-					case 'rightBottom':
-						var dragLengthX = (T_PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO
-						var dragLengthY = (T_PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO
-
-						if (CUT_B + dragLengthY < 0) dragLengthY = -CUT_B
-						if (CUT_R + dragLengthX < 0) dragLengthX = -CUT_R
-						let cutB = CUT_B + dragLengthY
-						let cutR = CUT_R + dragLengthX
-
-						this.setData({
-							cutB: cutB,
-							cutR: cutR
-						})
-						break
-					default:
-						break
-				}
-			}
-		}
-	}
-</script>
-
-<style>
-	/* pages/uni-cropper/index.wxss */
-
-	.uni-content-info {
-		/* position: fixed;
-		top: 0;
-		left: 0;
-		right: 0;
-		bottom: 0;
-		display: block;
-		align-items: center;
-		flex-direction: column; */
-	}
-
-	.cropper-config {
-		padding: 20rpx 40rpx;
-	}
-
-	.cropper-content {
-		min-height: 750rpx;
-		width: 100%;
-	}
-
-	.uni-corpper {
-		position: relative;
-		overflow: hidden;
-		-webkit-user-select: none;
-		-moz-user-select: none;
-		-ms-user-select: none;
-		user-select: none;
-		-webkit-tap-highlight-color: transparent;
-		-webkit-touch-callout: none;
-		box-sizing: border-box;
-	}
-
-	.uni-corpper-content {
-		position: relative;
-	}
-
-	.uni-corpper-content image {
-		display: block;
-		width: 100%;
-		min-width: 0 !important;
-		max-width: none !important;
-		height: 100%;
-		min-height: 0 !important;
-		max-height: none !important;
-		image-orientation: 0deg !important;
-		margin: 0 auto;
-	}
-	/* 移动图片效果 */
-
-	.uni-cropper-drag-box {
-		position: absolute;
-		top: 0;
-		right: 0;
-		bottom: 0;
-		left: 0;
-		cursor: move;
-		background: rgba(0, 0, 0, 0.6);
-		z-index: 1;
-	}
-	/* 内部的信息 */
-
-	.uni-corpper-crop-box {
-		position: absolute;
-		background: rgba(255, 255, 255, 0.3);
-		z-index: 2;
-	}
-
-	.uni-corpper-crop-box .uni-cropper-view-box {
-		position: relative;
-		display: block;
-		width: 100%;
-		height: 100%;
-		overflow: visible;
-		outline: 1rpx solid #69f;
-		outline-color: rgba(102, 153, 255, .75)
-	}
-	/* 横向虚线 */
-
-	.uni-cropper-dashed-h {
-		position: absolute;
-		top: 33.33333333%;
-		left: 0;
-		width: 100%;
-		height: 33.33333333%;
-		border-top: 1rpx dashed rgba(255, 255, 255, 0.5);
-		border-bottom: 1rpx dashed rgba(255, 255, 255, 0.5);
-	}
-	/* 纵向虚线 */
-
-	.uni-cropper-dashed-v {
-		position: absolute;
-		left: 33.33333333%;
-		top: 0;
-		width: 33.33333333%;
-		height: 100%;
-		border-left: 1rpx dashed rgba(255, 255, 255, 0.5);
-		border-right: 1rpx dashed rgba(255, 255, 255, 0.5);
-	}
-	/* 四个方向的线  为了之后的拖动事件*/
-
-	.uni-cropper-line-t {
-		position: absolute;
-		display: block;
-		width: 100%;
-		background-color: #69f;
-		top: 0;
-		left: 0;
-		height: 1rpx;
-		opacity: 0.1;
-		cursor: n-resize;
-	}
-
-	.uni-cropper-line-t::before {
-		content: '';
-		position: absolute;
-		top: 50%;
-		right: 0rpx;
-		width: 100%;
-		-webkit-transform: translate3d(0, -50%, 0);
-		transform: translate3d(0, -50%, 0);
-		bottom: 0;
-		height: 41rpx;
-		background: transparent;
-		z-index: 11;
-	}
-
-	.uni-cropper-line-r {
-		position: absolute;
-		display: block;
-		background-color: #69f;
-		top: 0;
-		right: 0rpx;
-		width: 1rpx;
-		opacity: 0.1;
-		height: 100%;
-		cursor: e-resize;
-	}
-
-	.uni-cropper-line-r::before {
-		content: '';
-		position: absolute;
-		top: 0;
-		left: 50%;
-		width: 41rpx;
-		-webkit-transform: translate3d(-50%, 0, 0);
-		transform: translate3d(-50%, 0, 0);
-		bottom: 0;
-		height: 100%;
-		background: transparent;
-		z-index: 11;
-	}
-
-	.uni-cropper-line-b {
-		position: absolute;
-		display: block;
-		width: 100%;
-		background-color: #69f;
-		bottom: 0;
-		left: 0;
-		height: 1rpx;
-		opacity: 0.1;
-		cursor: s-resize;
-	}
-
-	.uni-cropper-line-b::before {
-		content: '';
-		position: absolute;
-		top: 50%;
-		right: 0rpx;
-		width: 100%;
-		-webkit-transform: translate3d(0, -50%, 0);
-		transform: translate3d(0, -50%, 0);
-		bottom: 0;
-		height: 41rpx;
-		background: transparent;
-		z-index: 11;
-	}
-
-	.uni-cropper-line-l {
-		position: absolute;
-		display: block;
-		background-color: #69f;
-		top: 0;
-		left: 0;
-		width: 1rpx;
-		opacity: 0.1;
-		height: 100%;
-		cursor: w-resize;
-	}
-
-	.uni-cropper-line-l::before {
-		content: '';
-		position: absolute;
-		top: 0;
-		left: 50%;
-		width: 41rpx;
-		-webkit-transform: translate3d(-50%, 0, 0);
-		transform: translate3d(-50%, 0, 0);
-		bottom: 0;
-		height: 100%;
-		background: transparent;
-		z-index: 11;
-	}
-
-	.uni-cropper-point {
-		width: 5rpx;
-		height: 5rpx;
-		background-color: #69f;
-		opacity: .75;
-		position: absolute;
-		z-index: 3;
-	}
-
-	.point-t {
-		top: -3rpx;
-		left: 50%;
-		margin-left: -3rpx;
-		cursor: n-resize;
-	}
-
-	.point-tr {
-		top: -3rpx;
-		left: 100%;
-		margin-left: -3rpx;
-		cursor: n-resize;
-	}
-
-	.point-r {
-		top: 50%;
-		left: 100%;
-		margin-left: -3rpx;
-		margin-top: -3rpx;
-		cursor: n-resize;
-	}
-
-	.point-rb {
-		left: 100%;
-		top: 100%;
-		-webkit-transform: translate3d(-50%, -50%, 0);
-		transform: translate3d(-50%, -50%, 0);
-		cursor: n-resize;
-		width: 36rpx;
-		height: 36rpx;
-		background-color: #69f;
-		position: absolute;
-		z-index: 1112;
-		opacity: 1;
-	}
-
-	.point-b {
-		left: 50%;
-		top: 100%;
-		margin-left: -3rpx;
-		margin-top: -3rpx;
-		cursor: n-resize;
-	}
-
-	.point-bl {
-		left: 0%;
-		top: 100%;
-		margin-left: -3rpx;
-		margin-top: -3rpx;
-		cursor: n-resize;
-	}
-
-	.point-l {
-		left: 0%;
-		top: 50%;
-		margin-left: -3rpx;
-		margin-top: -3rpx;
-		cursor: n-resize;
-	}
-
-	.point-lt {
-		left: 0%;
-		top: 0%;
-		margin-left: -3rpx;
-		margin-top: -3rpx;
-		cursor: n-resize;
-	}
-	/* 裁剪框预览内容 */
-
-	.uni-cropper-viewer {
-		position: relative;
-		width: 100%;
-		height: 100%;
-		overflow: hidden;
-	}
-
-	.uni-cropper-viewer image {
-		position: absolute;
-		z-index: 2;
-	}
-</style>

+ 0 - 112
pages/mine/help/index.vue

@@ -1,112 +0,0 @@
-<template>
-  <view class="help-container">
-    <view v-for="(item, findex) in list" :key="findex" :title="item.title" class="list-title">
-      <view class="text-title">
-        <view :class="item.icon"></view>{{ item.title }}
-      </view>
-      <view class="childList">
-        <view v-for="(child, zindex) in item.childList" :key="zindex" class="question" hover-class="hover"
-          @click="handleText(child)">
-          <view class="text-item">{{ child.title }}</view>
-          <view class="line" v-if="zindex !== item.childList.length - 1"></view>
-        </view>
-      </view>
-    </view>
-  </view>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        list: [{
-            icon: 'iconfont icon-github',
-            title: '若依问题',
-            childList: [{
-              title: '若依开源吗?',
-              content: '开源'
-            }, {
-              title: '若依可以商用吗?',
-              content: '可以'
-            }, {
-              title: '若依官网地址多少?',
-              content: 'http://ruoyi.vip'
-            }, {
-              title: '若依文档地址多少?',
-              content: 'http://doc.ruoyi.vip'
-            }]
-          },
-          {
-            icon: 'iconfont icon-help',
-            title: '其他问题',
-            childList: [{
-              title: '如何退出登录?',
-              content: '请点击[我的] - [应用设置] - [退出登录]即可退出登录',
-            }, {
-              title: '如何修改用户头像?',
-              content: '请点击[我的] - [选择头像] - [点击提交]即可更换用户头像',
-            }, {
-              title: '如何修改登录密码?',
-              content: '请点击[我的] - [应用设置] - [修改密码]即可修改登录密码',
-            }]
-          }
-        ]
-      }
-    },
-    methods: {
-      handleText(item) {
-        this.$tab.navigateTo(`/pages/common/textview/index?title=${item.title}&content=${item.content}`)
-      }
-    }
-  }
-</script>
-
-<style lang="scss" scoped>
-  page {
-    background-color: #f8f8f8;
-  }
-
-  .help-container {
-    margin-bottom: 100rpx;
-    padding: 30rpx;
-  }
-
-  .list-title {
-    margin-bottom: 30rpx;
-  }
-
-  .childList {
-    background: #ffffff;
-    box-shadow: 0px 0px 10rpx rgba(193, 193, 193, 0.2);
-    border-radius: 16rpx;
-    margin-top: 10rpx;
-  }
-
-  .line {
-    width: 100%;
-    height: 1rpx;
-    background-color: #F5F5F5;
-  }
-
-  .text-title {
-    color: #303133;
-    font-size: 32rpx;
-    font-weight: bold;
-    margin-left: 10rpx;
-
-    .iconfont {
-      font-size: 16px;
-      margin-right: 10rpx;
-    }
-  }
-
-  .text-item {
-    font-size: 28rpx;
-    padding: 24rpx;
-  }
-
-  .question {
-    color: #606266;
-    font-size: 28rpx;
-  }
-</style>

+ 0 - 198
pages/mine/index.vue

@@ -1,198 +0,0 @@
-<template>
-  <view class="mine-container" :style="{height: `${windowHeight}px`}">
-    <!--顶部个人信息栏-->
-    <view class="header-section">
-      <view class="flex padding justify-between">
-        <view class="flex align-center">
-          <view v-if="!avatar" class="cu-avatar xl round bg-white">
-            <view class="iconfont icon-people text-gray icon"></view>
-          </view>
-          <image v-if="avatar" @click="handleToAvatar" :src="avatar" class="cu-avatar xl round" mode="widthFix">
-          </image>
-          <view v-if="!name" @click="handleToLogin" class="login-tip">
-            点击登录
-          </view>
-          <view v-if="name" @click="handleToInfo" class="user-info">
-            <view class="u_title">
-              用户名:{{ name }}
-            </view>
-          </view>
-        </view>
-        <view @click="handleToInfo" class="flex align-center">
-          <text>个人信息</text>
-          <view class="iconfont icon-right"></view>
-        </view>
-      </view>
-    </view>
-
-    <view class="content-section">
-      <view class="mine-actions grid col-4 text-center">
-        <view class="action-item" @click="handleJiaoLiuQun">
-          <view class="iconfont icon-friendfill text-pink icon"></view>
-          <text class="text">交流群</text>
-        </view>
-        <view class="action-item" @click="handleBuilding">
-          <view class="iconfont icon-service text-blue icon"></view>
-          <text class="text">在线客服</text>
-        </view>
-        <view class="action-item" @click="handleBuilding">
-          <view class="iconfont icon-community text-mauve icon"></view>
-          <text class="text">反馈社区</text>
-        </view>
-        <view class="action-item" @click="handleBuilding">
-          <view class="iconfont icon-dianzan text-green icon"></view>
-          <text class="text">点赞我们</text>
-        </view>
-      </view>
-
-      <view class="menu-list">
-        <view class="list-cell list-cell-arrow" @click="handleToEditInfo">
-          <view class="menu-item-box">
-            <view class="iconfont icon-user menu-icon"></view>
-            <view>编辑资料</view>
-          </view>
-        </view>
-        <view class="list-cell list-cell-arrow" @click="handleHelp">
-          <view class="menu-item-box">
-            <view class="iconfont icon-help menu-icon"></view>
-            <view>常见问题</view>
-          </view>
-        </view>
-        <view class="list-cell list-cell-arrow" @click="handleAbout">
-          <view class="menu-item-box">
-            <view class="iconfont icon-aixin menu-icon"></view>
-            <view>关于我们</view>
-          </view>
-        </view>
-        <view class="list-cell list-cell-arrow" @click="handleToSetting">
-          <view class="menu-item-box">
-            <view class="iconfont icon-setting menu-icon"></view>
-            <view>应用设置</view>
-          </view>
-        </view>
-      </view>
-
-    </view>
-  </view>
-</template>
-
-<script>
-  import storage from '@/utils/storage'
-  
-  export default {
-    data() {
-      return {
-        name: this.$store.state.user.name,
-        version: getApp().globalData.config.appInfo.version
-      }
-    },
-    computed: {
-      avatar() {
-        return this.$store.state.user.avatar
-      },
-      windowHeight() {
-        return uni.getSystemInfoSync().windowHeight - 50
-      }
-    },
-    methods: {
-      handleToInfo() {
-        this.$tab.navigateTo('/pages/mine/info/index')
-      },
-      handleToEditInfo() {
-        this.$tab.navigateTo('/pages/mine/info/edit')
-      },
-      handleToSetting() {
-        this.$tab.navigateTo('/pages/mine/setting/index')
-      },
-      handleToLogin() {
-        this.$tab.reLaunch('/pages/login')
-      },
-      handleToAvatar() {
-        this.$tab.navigateTo('/pages/mine/avatar/index')
-      },
-      handleLogout() {
-        this.$modal.confirm('确定注销并退出系统吗?').then(() => {
-          this.$store.dispatch('LogOut').then(() => {
-            this.$tab.reLaunch('/pages/index')
-          })
-        })
-      },
-      handleHelp() {
-        this.$tab.navigateTo('/pages/mine/help/index')
-      },
-      handleAbout() {
-        this.$tab.navigateTo('/pages/mine/about/index')
-      },
-      handleJiaoLiuQun() {
-        this.$modal.showToast('QQ群:①133713780、②146013835')
-      },
-      handleBuilding() {
-        this.$modal.showToast('模块建设中~')
-      }
-    }
-  }
-</script>
-
-<style lang="scss">
-  page {
-    background-color: #f5f6f7;
-  }
-
-  .mine-container {
-    width: 100%;
-    height: 100%;
-
-
-    .header-section {
-      padding: 15px 15px 45px 15px;
-      background-color: #3c96f3;
-      color: white;
-
-      .login-tip {
-        font-size: 18px;
-        margin-left: 10px;
-      }
-
-      .cu-avatar {
-        border: 2px solid #eaeaea;
-
-        .icon {
-          font-size: 40px;
-        }
-      }
-
-      .user-info {
-        margin-left: 15px;
-
-        .u_title {
-          font-size: 18px;
-          line-height: 30px;
-        }
-      }
-    }
-
-    .content-section {
-      position: relative;
-      top: -50px;
-
-      .mine-actions {
-        margin: 15px 15px;
-        padding: 20px 0px;
-        border-radius: 8px;
-        background-color: white;
-
-        .action-item {
-          .icon {
-            font-size: 28px;
-          }
-
-          .text {
-            display: block;
-            font-size: 13px;
-            margin: 8px 0px;
-          }
-        }
-      }
-    }
-  }
-</style>

+ 0 - 127
pages/mine/info/edit.vue

@@ -1,127 +0,0 @@
-<template>
-  <view class="container">
-    <view class="example">
-      <uni-forms ref="form" :model="user" labelWidth="80px">
-        <uni-forms-item label="用户昵称" name="nickName">
-          <uni-easyinput v-model="user.nickName" placeholder="请输入昵称" />
-        </uni-forms-item>
-        <uni-forms-item label="手机号码" name="phonenumber">
-          <uni-easyinput v-model="user.phonenumber" placeholder="请输入手机号码" />
-        </uni-forms-item>
-        <uni-forms-item label="邮箱" name="email">
-          <uni-easyinput v-model="user.email" placeholder="请输入邮箱" />
-        </uni-forms-item>
-        <uni-forms-item label="性别" name="sex" required>
-          <uni-data-checkbox v-model="user.sex" :localdata="sexs" />
-        </uni-forms-item>
-      </uni-forms>
-      <button type="primary" @click="submit">提交</button>
-    </view>
-  </view>
-</template>
-
-<script>
-  import { getUserProfile } from "@/api/system/user"
-  import { updateUserProfile } from "@/api/system/user"
-
-  export default {
-    data() {
-      return {
-        user: {
-          nickName: "",
-          phonenumber: "",
-          email: "",
-          sex: ""
-        },
-        sexs: [{
-          text: '男',
-          value: "0"
-        }, {
-          text: '女',
-          value: "1"
-        }],
-        rules: {
-          nickName: {
-            rules: [{
-              required: true,
-              errorMessage: '用户昵称不能为空'
-            }]
-          },
-          phonenumber: {
-            rules: [{
-              required: true,
-              errorMessage: '手机号码不能为空'
-            }, {
-              pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
-              errorMessage: '请输入正确的手机号码'
-            }]
-          },
-          email: {
-            rules: [{
-              required: true,
-              errorMessage: '邮箱地址不能为空'
-            }, {
-              format: 'email',
-              errorMessage: '请输入正确的邮箱地址'
-            }]
-          }
-        }
-      }
-    },
-    onLoad() {
-      this.getUser()
-    },
-    onReady() {
-      this.$refs.form.setRules(this.rules)
-    },
-    methods: {
-      getUser() {
-        getUserProfile().then(response => {
-          this.user = response.data
-        })
-      },
-      submit(ref) {
-        this.$refs.form.validate().then(res => {
-          updateUserProfile(this.user).then(response => {
-            this.$modal.msgSuccess("修改成功")
-          })
-        })
-      }
-    }
-  }
-</script>
-
-<style lang="scss">
-  page {
-    background-color: #ffffff;
-  }
-
-  .example {
-    padding: 15px;
-    background-color: #fff;
-  }
-
-  .segmented-control {
-    margin-bottom: 15px;
-  }
-
-  .button-group {
-    margin-top: 15px;
-    display: flex;
-    justify-content: space-around;
-  }
-
-  .form-item {
-    display: flex;
-    align-items: center;
-    flex: 1;
-  }
-
-  .button {
-    display: flex;
-    align-items: center;
-    height: 35px;
-    line-height: 35px;
-    margin-left: 10px;
-  }
-</style>

+ 0 - 44
pages/mine/info/index.vue

@@ -1,44 +0,0 @@
-<template>
-  <view class="container">
-    <uni-list>
-      <uni-list-item showExtraIcon="true" :extraIcon="{type: 'person-filled'}" title="昵称" :rightText="user.nickName" />
-      <uni-list-item showExtraIcon="true" :extraIcon="{type: 'phone-filled'}" title="手机号码" :rightText="user.phonenumber" />
-      <uni-list-item showExtraIcon="true" :extraIcon="{type: 'email-filled'}" title="邮箱" :rightText="user.email" />
-      <uni-list-item showExtraIcon="true" :extraIcon="{type: 'auth-filled'}" title="岗位" :rightText="postGroup" />
-      <uni-list-item showExtraIcon="true" :extraIcon="{type: 'staff-filled'}" title="角色" :rightText="roleGroup" />
-      <uni-list-item showExtraIcon="true" :extraIcon="{type: 'calendar-filled'}" title="创建日期" :rightText="user.createTime" />
-    </uni-list>
-  </view>
-</template>
-
-<script>
-  import { getUserProfile } from "@/api/system/user"
-
-  export default {
-    data() {
-      return {
-        user: {},
-        roleGroup: "",
-        postGroup: ""
-      }
-    },
-    onLoad() {
-      this.getUser()
-    },
-    methods: {
-      getUser() {
-        getUserProfile().then(response => {
-          this.user = response.data
-          this.roleGroup = response.roleGroup
-          this.postGroup = response.postGroup
-        })
-      }
-    }
-  }
-</script>
-
-<style lang="scss">
-  page {
-    background-color: #ffffff;
-  }
-</style>

+ 0 - 85
pages/mine/pwd/index.vue

@@ -1,85 +0,0 @@
-<template>
-  <view class="pwd-retrieve-container">
-    <uni-forms ref="form" :value="user" labelWidth="80px">
-      <uni-forms-item name="oldPassword" label="旧密码">
-        <uni-easyinput type="password" v-model="user.oldPassword" placeholder="请输入旧密码" />
-      </uni-forms-item>
-      <uni-forms-item name="newPassword" label="新密码">
-        <uni-easyinput type="password" v-model="user.newPassword" placeholder="请输入新密码" />
-      </uni-forms-item>
-      <uni-forms-item name="confirmPassword" label="确认密码">
-        <uni-easyinput type="password" v-model="user.confirmPassword" placeholder="请确认新密码" />
-      </uni-forms-item>
-      <button type="primary" @click="submit">提交</button>
-    </uni-forms>
-  </view>
-</template>
-
-<script>
-  import { updateUserPwd } from "@/api/system/user"
-
-  export default {
-    data() {
-      return {
-        user: {
-          oldPassword: undefined,
-          newPassword: undefined,
-          confirmPassword: undefined
-        },
-        rules: {
-          oldPassword: {
-            rules: [{
-              required: true,
-              errorMessage: '旧密码不能为空'
-            }]
-          },
-          newPassword: {
-            rules: [{
-                required: true,
-                errorMessage: '新密码不能为空',
-              },
-              {
-                minLength: 6,
-                maxLength: 20,
-                errorMessage: '长度在 6 到 20 个字符'
-              }
-            ]
-          },
-          confirmPassword: {
-            rules: [{
-                required: true,
-                errorMessage: '确认密码不能为空'
-              }, {
-                validateFunction: (rule, value, data) => data.newPassword === value,
-                errorMessage: '两次输入的密码不一致'
-              }
-            ]
-          }
-        }
-      }
-    },
-    onReady() {
-      this.$refs.form.setRules(this.rules)
-    },
-    methods: {
-      submit() {
-        this.$refs.form.validate().then(res => {
-          updateUserPwd(this.user.oldPassword, this.user.newPassword).then(response => {
-            this.$modal.msgSuccess("修改成功")
-          })
-        })
-      }
-    }
-  }
-</script>
-
-<style lang="scss">
-  page {
-    background-color: #ffffff;
-  }
-
-  .pwd-retrieve-container {
-    padding-top: 36rpx;
-    padding: 15px;
-  }
-</style>

+ 0 - 78
pages/mine/setting/index.vue

@@ -1,78 +0,0 @@
-<template>
-  <view class="setting-container" :style="{height: `${windowHeight}px`}">
-    <view class="menu-list">
-      <view class="list-cell list-cell-arrow" @click="handleToPwd">
-        <view class="menu-item-box">
-          <view class="iconfont icon-password menu-icon"></view>
-          <view>修改密码</view>
-        </view>
-      </view>
-      <view class="list-cell list-cell-arrow" @click="handleToUpgrade">
-        <view class="menu-item-box">
-          <view class="iconfont icon-refresh menu-icon"></view>
-          <view>检查更新</view>
-        </view>
-      </view>
-      <view class="list-cell list-cell-arrow" @click="handleCleanTmp">
-        <view class="menu-item-box">
-          <view class="iconfont icon-clean menu-icon"></view>
-          <view>清理缓存</view>
-        </view>
-      </view>
-    </view>
-    <view class="cu-list menu">
-      <view class="cu-item item-box">
-        <view class="content text-center" @click="handleLogout">
-          <text class="text-black">退出登录</text>
-        </view>
-      </view>
-    </view>
-  </view>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        windowHeight: uni.getSystemInfoSync().windowHeight
-      }
-    },
-    methods: {
-      handleToPwd() {
-        this.$tab.navigateTo('/pages/mine/pwd/index')
-      },
-      handleToUpgrade() {
-        this.$modal.showToast('模块建设中~')
-      },
-      handleCleanTmp() {
-        this.$modal.showToast('模块建设中~')
-      },
-      handleLogout() {
-        this.$modal.confirm('确定注销并退出系统吗?').then(() => {
-          this.$store.dispatch('LogOut').then(() => {
-            this.$tab.reLaunch('/pages/index')
-          })
-        })
-      }
-    }
-  }
-</script>
-
-<style lang="scss" scoped>
-  .page {
-    background-color: #f8f8f8;
-  }
-
-  .item-box {
-    background-color: #FFFFFF;
-    margin: 30rpx;
-    display: flex;
-    flex-direction: row;
-    justify-content: center;
-    align-items: center;
-    padding: 10rpx;
-    border-radius: 8rpx;
-    color: #303133;
-    font-size: 32rpx;
-  }
-</style>

+ 0 - 22
pages/newbuilt/newCourtyard.vue

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

+ 0 - 22
pages/newbuilt/newIndoor.vue

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

+ 0 - 22
pages/newbuilt/newOverhead.vue

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

+ 17 - 17
pages/work/index.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="work-container">
 		<!-- 轮播图 -->
-		<uni-swiper-dot class="uni-swiper-dot-box" :info="data" :current="current" field="content">
+		<!-- <uni-swiper-dot class="uni-swiper-dot-box" :info="data" :current="current" field="content">
 			<swiper class="swiper-box" :current="swiperDotIndex" @change="changeSwiper">
 				<swiper-item v-for="(item, index) in data" :key="index">
 					<view class="swiper-item" @click="clickBannerItem(item)">
@@ -9,7 +9,7 @@
 					</view>
 				</swiper-item>
 			</swiper>
-		</uni-swiper-dot>
+		</uni-swiper-dot> -->
 
 		<!-- 宫格组件 -->
 		<!-- <uni-section title="系统管理" type="line"></uni-section> -->
@@ -38,19 +38,19 @@
 				</uni-grid-item>
 				<uni-grid-item>
 					<view class="grid-item-box" @click="showDangerous">
-						<uni-icons type="settings-filled" size="30" ></uni-icons>
+						<uni-icons type="settings-filled" size="30"></uni-icons>
 						<text class="text">危险作业工程</text>
 					</view>
 				</uni-grid-item>
 				<uni-grid-item>
-					<view class="grid-item-box">
-						<uni-icons type="heart-filled" size="30" @click="showTopPipe"></uni-icons>
+					<view class="grid-item-box" @click="showTopPipe">
+						<uni-icons type="heart-filled" size="30"></uni-icons>
 						<text class="text">顶管工程</text>
 					</view>
 				</uni-grid-item>
 				<uni-grid-item>
-					<view class="grid-item-box">
-						<uni-icons type="bars" size="30" @click="showInfrastructureDialog"></uni-icons>
+					<view class="grid-item-box" @click="showInfrastructureDialog">
+						<uni-icons type="bars" size="30"></uni-icons>
 						<text class="text">基建工程</text>
 					</view>
 				</uni-grid-item>
@@ -131,16 +131,16 @@
 				enginClassValue: '', //二次节点  数据字典
 				current: 0,
 				swiperDotIndex: 0,
-				data: [{
-						image: '/static/images/banner/banner01.jpg'
-					},
-					{
-						image: '/static/images/banner/banner02.jpg'
-					},
-					{
-						image: '/static/images/banner/banner03.jpg'
-					}
-				]
+				// data: [{
+				// 		image: '/static/images/banner/banner01.jpg'
+				// 	},
+				// 	{
+				// 		image: '/static/images/banner/banner02.jpg'
+				// 	},
+				// 	{
+				// 		image: '/static/images/banner/banner03.jpg'
+				// 	}
+				// ]
 			}
 		},
 		methods: {

binární
static/favicon.ico


binární
static/images/banner/banner01.jpg


binární
static/images/banner/banner02.jpg


binární
static/images/banner/banner03.jpg


binární
static/images/loading.png


binární
static/images/profile.jpg


binární
static/logo.png


binární
static/logo200.png


+ 1 - 1
store/modules/user.js

@@ -61,7 +61,7 @@ const user = {
       return new Promise((resolve, reject) => {
         getInfo().then(res => {
           const user = res.data.user
-          const avatar = (user == null || user.avatar == "" || user.avatar == null) ? require("@/static/images/profile.jpg") : baseUrl + user.avatar
+          const avatar = baseUrl + user.avatar
           const username = (user == null || user.userName == "" || user.userName == null) ? "" : user.userName
           if (res.data.roles && res.data.roles.length > 0) {
             commit('SET_ROLES', res.data.roles)