Przeglądaj źródła

接口对接,bug修复

Ming 4 lat temu
rodzic
commit
20bd63086a

+ 51 - 0
components/evan-radio-group/evan-radio-group.vue

@@ -0,0 +1,51 @@
+<template>
+	<view class="evan-radio-group">
+		<slot></slot>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'EvanRadioGroup',
+		props: {
+			value: {
+				type: [String, Number, Boolean],
+				default: null
+			},
+			disabled: {
+				type: Boolean,
+				default: false
+			}
+		},
+		watch: {
+			value: {
+				handler(value) {
+					this.deepSetValue(this.$children)
+				}
+			}
+		},
+		methods: {
+			onRadioChange(label) {
+				this.$emit('input', label)
+				this.$emit('change', label)
+			},
+			deepSetValue(array) {
+				if (Array.isArray(array)) {
+					array.forEach((child) => {
+						let childName = child.$options.name
+						if (childName === 'EvanRadio') {
+							if (typeof child.setValue === 'function') {
+								child.setValue(this.value)
+							}
+						} else if (child.$children) {
+							this.deepSetValue(child.$children)
+						}
+					})
+				}
+			}
+		}
+	}
+</script>
+
+<style>
+</style>

+ 213 - 0
components/evan-radio-popup/evan-radio-popup.vue

@@ -0,0 +1,213 @@
+<template>
+	<view class="evan-radio-popup">
+		<view class="evan-radio-popup__trigger" @click="openPopup">
+			<slot name="trigger" :label="label"></slot>
+			<slot></slot>
+		</view>
+		<uni-popup @change="onPopupChange" ref="popup" type="bottom" :maskClick="maskClick">
+			<view class="evan-radio-popup__target">
+				<view class="evan-radio-popup__target__header">
+					<text @click="onCancel" class="evan-radio-popup__target__header__cancel">{{cancelText}}</text>
+					<text class="evan-radio-popup__target__header__title">{{title}}</text>
+					<text @click="onConfirm" class="evan-radio-popup__target__header__confirm" :style="{color:primaryColor}">{{confirmText}}</text>
+				</view>
+				<scroll-view scroll-y="true" class="evan-radio-popup__target__body">
+					<evan-radio-group v-model="currentValue">
+						<view @click="onRadioClick(index)" class="evan-radio-popup__target__body__listitem" v-for="(item,index) in options"
+						 :key="item[optionValue]">
+							<text class="evan-radio-popup__target__body__listitem__label" :style="{color:currentValue===item[optionValue]?primaryColor:'#333'}">{{item[optionLabel]}}</text>
+							<evan-radio :clearable="clearable" :primaryColor="primaryColor" ref="radio" :preventClick="true" :label="item[optionValue]">
+								<template slot="icon">
+									<view>
+										<uni-icons v-if="currentValue===item[optionValue]" type="checkmarkempty" size="25" :color="primaryColor"></uni-icons>
+									</view>
+								</template>
+							</evan-radio>
+						</view>
+					</evan-radio-group>
+				</scroll-view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+	import EvanRadio from '@/components/evan-radio/evan-radio.vue'
+	import EvanRadioGroup from '@/components/evan-radio-group/evan-radio-group.vue'
+	import uniPopup from '@/components/uni-popup/uni-popup.vue'
+	import uniIcons from '@/components/uni-icons/uni-icons.vue'
+	export default {
+		name: 'EvanRadioPopup',
+		components: {
+			EvanRadio,
+			EvanRadioGroup,
+			uniPopup,
+			uniIcons
+		},
+		props: {
+			options: {
+				type: Array,
+				default: () => []
+			},
+			value: {
+				type: [String, Number, Boolean],
+				default: null
+			},
+			primaryColor: {
+				type: String,
+				default: '#108ee9'
+			},
+			cancelText: {
+				type: String,
+				default: '取消'
+			},
+			confirmText: {
+				type: String,
+				default: '确定'
+			},
+			title: {
+				type: String,
+				default: '请选择'
+			},
+			optionLabel: {
+				type: String,
+				default: 'label'
+			},
+			optionValue: {
+				type: String,
+				default: 'value'
+			},
+			maskClick: {
+				type: Boolean,
+				default: true
+			},
+			clearable: {
+				type: Boolean,
+				default: false
+			}
+		},
+		computed: {
+			label() {
+				if (this.isTrueEmpty(this.value)) {
+					return ''
+				}
+				const selectedOption = this.options.find((op) => op[this.optionValue] === this.value)
+				if (selectedOption) {
+					return selectedOption[this.optionLabel]
+				}
+				return ''
+			}
+		},
+		data() {
+			return {
+				currentValue: null,
+				maskClose: true // 是否由点击遮罩层关闭
+			}
+		},
+		methods: {
+			openPopup() {
+				this.currentValue = this.value
+				this.$refs.popup.open()
+			},
+			closePopup() {
+				this.maskClose = false
+				this.$refs.popup.close()
+			},
+			onCancel() {
+				this.closePopup()
+				this.$emit('cancel', this.currentValue)
+			},
+			onConfirm() {
+				this.closePopup()
+				let obj = null
+				if (!this.isTrueEmpty(this.currentValue)) {
+					obj = this.options.find((op) => op[this.optionValue] === this.currentValue)
+				}
+				this.$emit('input', this.currentValue)
+				this.$emit('confirm', this.currentValue)
+				this.$emit('objConfirm', obj)
+			},
+			onRadioClick(index) {
+				this.$refs.radio[index].select()
+			},
+			onPopupChange(e) {
+				// 捕捉uniPopup点击遮罩层关闭事件
+				if (!e.show) {
+					if (this.maskClose) {
+						this.$emit('cancel', this.currentValue)
+					}
+					this.maskClose = true
+				}
+			},
+			isTrueEmpty(str) {
+				if (str || str === 0 || str === false) {
+					return false
+				}
+				return true
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.evan-radio-popup {}
+
+	.evan-radio-popup__target {}
+
+	.evan-radio-popup__target__header {
+		height: 54px;
+		background-color: #f7f7f7;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+		font-size: 16px;
+	}
+
+	.evan-radio-popup__target__header__cancel {
+		color: #999;
+		padding: 0 15px;
+	}
+
+	.evan-radio-popup__target__header__title {
+		color: #333;
+		flex: 1;
+		text-align: center;
+	}
+
+	.evan-radio-popup__target__header__confirm {
+		padding: 0 15px;
+	}
+
+	.evan-radio-popup__target__body {
+		background-color: #fff;
+		/* #ifndef APP-NVUE */
+		max-height: 350px;
+		/* #endif */
+		/* #ifdef APP-NVUE */
+		maxHeight: 350px;
+		/* #endif */
+	}
+
+	.evan-radio-popup__target__body__listitem {
+		align-items: center;
+		height: 50px;
+		padding: 0 15px;
+		border-bottom-width: 1px;
+		border-bottom-style: solid;
+		border-bottom-color: #eee;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		box-sizing: border-box;
+		/* #endif */
+		flex-direction: row;
+	}
+
+	.evan-radio-popup__target__body__listitem__label {
+		font-size: 16px;
+		color: #333;
+		flex: 1;
+		margin-right: 6px;
+	}
+</style>

+ 231 - 0
components/evan-radio/evan-radio.vue

@@ -0,0 +1,231 @@
+<template>
+	<view class="evan-radio" @click="onRadioClick">
+		<slot v-if="$slots.icon" name="icon"></slot>
+		<template v-else>
+			<uni-icons v-if="icon" :type="icon" :size="iconSize" :color="iconColor"></uni-icons>
+			<view v-else class="evan-radio__inner" :class="['evan-radio__inner--'+shape]" :style="{width:iconSize+4+'px',height:iconSize+4+'px',backgroundColor:innerBackgroundColor,borderColor:innerBorderColor}">
+				<uni-icons v-if="isChecked" type="checkmarkempty" :size="iconSize" :color="isDisabled?'#c8c9cc':'#fff'"></uni-icons>
+			</view>
+		</template>
+		<text v-if="$slots.default" class="evan-radio__label" :style="mTitleStlye">
+			<slot></slot>
+		</text>
+	</view>
+</template>
+
+<script>
+	import UniIcons from '@/components/uni-icons/uni-icons.vue'
+	export default {
+		name: 'EvanRadio',
+		components: {
+			UniIcons
+		},
+		props: {
+			shape: {
+				type: String,
+				default: 'round'
+			},
+			value: {
+				type: [String, Number, Boolean],
+				default: null
+			},
+			label: {
+				type: [String, Number, Boolean],
+				default: null
+			},
+			disabled: {
+				type: Boolean,
+				default: false
+			},
+			icon: {
+				type: String,
+				default: null
+			},
+			iconSize: {
+				type: Number,
+				default: 16
+			},
+			primaryColor: {
+				type: String,
+				default: '#108ee9'
+			},
+			titleStyle: {
+				type: Object,
+				default: () => {
+					return {}
+				}
+			},
+			preventClick: {
+				type: Boolean,
+				default: false
+			},
+			clearable: {
+				type: Boolean,
+				default: false
+			}
+		},
+		computed: {
+			isGroup() {
+				let parent = this.getParent()
+				if (parent) {
+					return true
+				}
+				return false
+			},
+			isDisabled() {
+				if (this.isGroup) {
+					return this.getParent().disabled || this.disabled
+				}
+				return this.disabled
+			},
+			mTitleStlye() {
+				let titleStyle = Object.assign({}, this.titleStyle || {})
+				let arr = Object.keys(titleStyle).map((key) => {
+					if (key === 'color' && this.disabled) {
+						return null
+					}
+					return `${key}:${titleStyle[key]}`
+				}).filter((v) => v)
+				return arr.join(';')
+			},
+			isChecked() {
+				let parent = this.getParent()
+				if ((this.isGroup && parent.value === this.label) || (!this.isGroup && this.currentValue === this.label)) {
+					return true
+				}
+				return false
+			},
+			innerBackgroundColor() {
+				if (this.isDisabled) {
+					return '#ebedf0'
+				}
+				let parent = this.getParent()
+				if (this.isChecked) {
+					return this.primaryColor
+				}
+				return '#fff'
+			},
+			innerBorderColor() {
+				if (this.isDisabled) {
+					return '#c8c9cc'
+				}
+				if (this.isChecked) {
+					return this.primaryColor
+				}
+				return '#c8c9cc'
+			},
+			iconColor() {
+				if (this.isDisabled) {
+					return '#ebedf0'
+				}
+				if (this.isChecked) {
+					return this.primaryColor
+				}
+				return '#c8c9cc'
+			}
+		},
+		watch: {
+			value: {
+				immediate: true,
+				handler(value) {
+					this.currentValue = value
+				}
+			}
+		},
+		data() {
+			return {
+				currentValue: null
+			}
+		},
+		methods: {
+			// 获取EvanRadioGroup组件
+			getParent() {
+				let parent = this.$parent
+				if (parent) {
+					let parentName = parent.$options.name
+					while (parentName !== 'EvanRadioGroup') {
+						parent = parent.$parent
+						if (parent) {
+							parentName = parent.$options.name
+						} else {
+							return null
+						}
+					}
+					return parent
+				}
+				return null
+			},
+			onRadioClick() {
+				if (!this.isDisabled && !this.preventClick) {
+					this.choose()
+				}
+			},
+			select() {
+				if (!this.isDisabled) {
+					this.choose()
+				}
+			},
+			choose() {
+				if (this.currentValue !== this.label) {
+					this.currentValue = this.label
+					this.$emit('input', this.currentValue)
+					this.$emit('change', this.currentValue)
+					if (this.isGroup) {
+						let parent = this.getParent()
+						parent.onRadioChange(this.label)
+					}
+				} else if (this.clearable) {
+					this.currentValue = null
+					this.$emit('input', this.currentValue)
+					this.$emit('change', this.currentValue)
+					if (this.isGroup) {
+						let parent = this.getParent()
+						parent.onRadioChange(null)
+					}
+				}
+			},
+			setValue(groupValue) {
+				this.currentValue = groupValue
+			}
+		},
+		created() {
+			let parent = this.getParent()
+			if (parent) {
+				this.setValue(parent.value)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.evan-radio {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.evan-radio__label {
+		font-size: 16px;
+		margin-left: 8px;
+		color: #333;
+	}
+
+	.evan-radio__inner {
+		border-width: 1px;
+		border-style: solid;
+		background-color: #fff;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		box-sizing: border-box;
+		/* #endif */
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+	}
+
+	.evan-radio__inner--round {
+		border-radius: 50%;
+	}
+</style>

+ 132 - 0
components/uni-icons/icons.js

@@ -0,0 +1,132 @@
+export default {
+	"pulldown": "\ue588",
+	"refreshempty": "\ue461",
+	"back": "\ue471",
+	"forward": "\ue470",
+	"more": "\ue507",
+	"more-filled": "\ue537",
+	"scan": "\ue612",
+	"qq": "\ue264",
+	"weibo": "\ue260",
+	"weixin": "\ue261",
+	"pengyouquan": "\ue262",
+	"loop": "\ue565",
+	"refresh": "\ue407",
+	"refresh-filled": "\ue437",
+	"arrowthindown": "\ue585",
+	"arrowthinleft": "\ue586",
+	"arrowthinright": "\ue587",
+	"arrowthinup": "\ue584",
+	"undo-filled": "\ue7d6",
+	"undo": "\ue406",
+	"redo": "\ue405",
+	"redo-filled": "\ue7d9",
+	"bars": "\ue563",
+	"chatboxes": "\ue203",
+	"camera": "\ue301",
+	"chatboxes-filled": "\ue233",
+	"camera-filled": "\ue7ef",
+	"cart-filled": "\ue7f4",
+	"cart": "\ue7f5",
+	"checkbox-filled": "\ue442",
+	"checkbox": "\ue7fa",
+	"arrowleft": "\ue582",
+	"arrowdown": "\ue581",
+	"arrowright": "\ue583",
+	"smallcircle-filled": "\ue801",
+	"arrowup": "\ue580",
+	"circle": "\ue411",
+	"eye-filled": "\ue568",
+	"eye-slash-filled": "\ue822",
+	"eye-slash": "\ue823",
+	"eye": "\ue824",
+	"flag-filled": "\ue825",
+	"flag": "\ue508",
+	"gear-filled": "\ue532",
+	"reload": "\ue462",
+	"gear": "\ue502",
+	"hand-thumbsdown-filled": "\ue83b",
+	"hand-thumbsdown": "\ue83c",
+	"hand-thumbsup-filled": "\ue83d",
+	"heart-filled": "\ue83e",
+	"hand-thumbsup": "\ue83f",
+	"heart": "\ue840",
+	"home": "\ue500",
+	"info": "\ue504",
+	"home-filled": "\ue530",
+	"info-filled": "\ue534",
+	"circle-filled": "\ue441",
+	"chat-filled": "\ue847",
+	"chat": "\ue263",
+	"mail-open-filled": "\ue84d",
+	"email-filled": "\ue231",
+	"mail-open": "\ue84e",
+	"email": "\ue201",
+	"checkmarkempty": "\ue472",
+	"list": "\ue562",
+	"locked-filled": "\ue856",
+	"locked": "\ue506",
+	"map-filled": "\ue85c",
+	"map-pin": "\ue85e",
+	"map-pin-ellipse": "\ue864",
+	"map": "\ue364",
+	"minus-filled": "\ue440",
+	"mic-filled": "\ue332",
+	"minus": "\ue410",
+	"micoff": "\ue360",
+	"mic": "\ue302",
+	"clear": "\ue434",
+	"smallcircle": "\ue868",
+	"close": "\ue404",
+	"closeempty": "\ue460",
+	"paperclip": "\ue567",
+	"paperplane": "\ue503",
+	"paperplane-filled": "\ue86e",
+	"person-filled": "\ue131",
+	"contact-filled": "\ue130",
+	"person": "\ue101",
+	"contact": "\ue100",
+	"images-filled": "\ue87a",
+	"phone": "\ue200",
+	"images": "\ue87b",
+	"image": "\ue363",
+	"image-filled": "\ue877",
+	"location-filled": "\ue333",
+	"location": "\ue303",
+	"plus-filled": "\ue439",
+	"plus": "\ue409",
+	"plusempty": "\ue468",
+	"help-filled": "\ue535",
+	"help": "\ue505",
+	"navigate-filled": "\ue884",
+	"navigate": "\ue501",
+	"mic-slash-filled": "\ue892",
+	"search": "\ue466",
+	"settings": "\ue560",
+	"sound": "\ue590",
+	"sound-filled": "\ue8a1",
+	"spinner-cycle": "\ue465",
+	"download-filled": "\ue8a4",
+	"personadd-filled": "\ue132",
+	"videocam-filled": "\ue8af",
+	"personadd": "\ue102",
+	"upload": "\ue402",
+	"upload-filled": "\ue8b1",
+	"starhalf": "\ue463",
+	"star-filled": "\ue438",
+	"star": "\ue408",
+	"trash": "\ue401",
+	"phone-filled": "\ue230",
+	"compose": "\ue400",
+	"videocam": "\ue300",
+	"trash-filled": "\ue8dc",
+	"download": "\ue403",
+	"chatbubble-filled": "\ue232",
+	"chatbubble": "\ue202",
+	"cloud-download": "\ue8e4",
+	"cloud-upload-filled": "\ue8e5",
+	"cloud-upload": "\ue8e6",
+	"cloud-download-filled": "\ue8e9",
+	"headphones":"\ue8bf",
+	"shop":"\ue609"
+}

Plik diff jest za duży
+ 10 - 0
components/uni-icons/uni-icons.vue


+ 29 - 0
components/uni-popup/message.js

@@ -0,0 +1,29 @@
+export default {
+	created() {
+		if (this.type === 'message') {
+			// 获取自组件对象
+			this.maskShow = false
+			this.children = null
+		}
+	},
+	created() {
+		if (this.type === 'message') {
+			// 不显示遮罩
+			this.maskShow = false 
+			// 获取子组件对象
+			this.childrenMsg = null
+		}
+	},
+	methods: {
+		customOpen() {
+			if (this.childrenMsg) {
+				this.childrenMsg.open()
+			}
+		},
+		customClose() {
+			if (this.childrenMsg) {
+				this.childrenMsg.close()
+			}
+		}
+	}
+}

+ 25 - 0
components/uni-popup/popup.js

@@ -0,0 +1,25 @@
+import message from './message.js';
+// 定义 type 类型:弹出类型:top/bottom/center
+const config = {
+	// 顶部弹出
+	top:'top',
+	// 底部弹出
+	bottom:'bottom',
+	// 居中弹出
+	center:'center',
+	// 消息提示
+	message:'top',
+	// 对话框
+	dialog:'center',
+	// 分享
+	share:'bottom',
+}
+
+export default {
+	data(){
+		return {
+			config:config
+		}
+	},
+	mixins: [message],
+}

+ 243 - 0
components/uni-popup/uni-popup-dialog.vue

@@ -0,0 +1,243 @@
+<template>
+	<view class="uni-popup-dialog">
+		<view class="uni-dialog-title">
+			<text class="uni-dialog-title-text" :class="['uni-popup__'+dialogType]">{{title}}</text>
+		</view>
+		<view class="uni-dialog-content">
+			<text class="uni-dialog-content-text" v-if="mode === 'base'">{{content}}</text>
+			<input v-else class="uni-dialog-input" v-model="val" type="text" :placeholder="placeholder" :focus="focus" >
+		</view>
+		<view class="uni-dialog-button-group">
+			<view class="uni-dialog-button" @click="close">
+				<text class="uni-dialog-button-text">取消</text>
+			</view>
+			<view class="uni-dialog-button uni-border-left" @click="onOk">
+				<text class="uni-dialog-button-text uni-button-color">确定</text>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	/**
+	 * PopUp 弹出层-对话框样式
+	 * @description 弹出层-对话框样式
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+	 * @property {String} value input 模式下的默认值
+	 * @property {String} placeholder input 模式下输入提示
+	 * @property {String} type = [success|warning|info|error] 主题样式
+	 *  @value success 成功
+	 * 	@value warning 提示
+	 * 	@value info 消息
+	 * 	@value error 错误
+	 * @property {String} mode = [base|input] 模式、
+	 * 	@value base 基础对话框
+	 * 	@value input 可输入对话框
+	 * @property {String} content 对话框内容
+	 * @property {Boolean} beforeClose 是否拦截取消事件
+	 * @event {Function} confirm 点击确认按钮触发
+	 * @event {Function} close 点击取消按钮触发
+	 */
+
+	export default {
+		name: "uniPopupDialog",
+		props: {
+			value: {
+				type: [String, Number],
+				default: ''
+			},
+			placeholder: {
+				type: [String, Number],
+				default: '请输入内容'
+			},
+			/**
+			 * 对话框主题 success/warning/info/error	  默认 success
+			 */
+			type: {
+				type: String,
+				default: 'error'
+			},
+			/**
+			 * 对话框模式 base/input
+			 */
+			mode: {
+				type: String,
+				default: 'base'
+			},
+			/**
+			 * 对话框标题
+			 */
+			title: {
+				type: String,
+				default: '提示'
+			},
+			/**
+			 * 对话框内容
+			 */
+			content: {
+				type: String,
+				default: ''
+			},
+			/**
+			 * 拦截取消事件 ,如果拦截取消事件,必须监听close事件,执行 done()
+			 */
+			beforeClose: {
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+				dialogType: 'error',
+				focus: false,
+				val: ""
+			}
+		},
+		inject: ['popup'],
+		watch: {
+			type(val) {
+				this.dialogType = val
+			},
+			mode(val) {
+				if (val === 'input') {
+					this.dialogType = 'info'
+				}
+			},
+			value(val) {
+				this.val = val
+			}
+		},
+		created() {
+			// 对话框遮罩不可点击
+			this.popup.mkclick = false
+			if (this.mode === 'input') {
+				this.dialogType = 'info'
+				this.val = this.value
+			} else {
+				this.dialogType = this.type
+			}
+		},
+		mounted() {
+			this.focus = true
+		},
+		methods: {
+			/**
+			 * 点击确认按钮
+			 */
+			onOk() {
+				this.$emit('confirm', () => {
+					this.popup.close()
+					if (this.mode === 'input') this.val = this.value
+				}, this.mode === 'input' ? this.val : '')
+			},
+			/**
+			 * 点击取消按钮
+			 */
+			close() {
+				if (this.beforeClose) {
+					this.$emit('close', () => {
+						this.popup.close()
+					})
+					return
+				}
+				this.popup.close()
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.uni-popup-dialog {
+		width: 300px;
+		border-radius: 15px;
+		background-color: #fff;
+	}
+
+	.uni-dialog-title {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding-top: 15px;
+		padding-bottom: 5px;
+	}
+
+	.uni-dialog-title-text {
+		font-size: 16px;
+		font-weight: 500;
+	}
+
+	.uni-dialog-content {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 5px 15px 15px 15px;
+	}
+
+	.uni-dialog-content-text {
+		font-size: 14px;
+		color: #6e6e6e;
+	}
+
+	.uni-dialog-button-group {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		border-top-color: #f5f5f5;
+		border-top-style: solid;
+		border-top-width: 1px;
+	}
+
+	.uni-dialog-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		height: 45px;
+	}
+
+	.uni-border-left {
+		border-left-color: #f0f0f0;
+		border-left-style: solid;
+		border-left-width: 1px;
+	}
+
+	.uni-dialog-button-text {
+		font-size: 14px;
+	}
+
+	.uni-button-color {
+		color: $uni-color-primary;
+	}
+
+	.uni-dialog-input {
+		flex: 1;
+		font-size: 14px;
+	}
+
+	.uni-popup__success {
+		color: $uni-color-success;
+	}
+
+	.uni-popup__warn {
+		color: $uni-color-warning;
+	}
+
+	.uni-popup__error {
+		color: $uni-color-error;
+	}
+
+	.uni-popup__info {
+		color: #909399;
+	}
+</style>

+ 116 - 0
components/uni-popup/uni-popup-message.vue

@@ -0,0 +1,116 @@
+<template>
+	<view class="uni-popup-message" :class="'uni-popup__'+[type]">
+		<text class="uni-popup-message-text" :class="'uni-popup__'+[type]+'-text'">{{message}}</text>
+	</view>
+</template>
+
+<script>
+	
+	/**
+	 * PopUp 弹出层-消息提示
+	 * @description 弹出层-消息提示
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+	 * @property {String} type = [success|warning|info|error] 主题样式
+	 *  @value success 成功
+	 * 	@value warning 提示
+	 * 	@value info 消息
+	 * 	@value error 错误
+	 * @property {String} message 消息提示文字
+	 * @property {String} duration 显示时间,设置为 0 则不会自动关闭
+	 */
+	
+	export default {
+		name: 'UniPopupMessage',
+		props: {
+			/**
+			 * 主题 success/warning/info/error	  默认 success
+			 */
+			type: {
+				type: String,
+				default: 'success'
+			},
+			/**
+			 * 消息文字
+			 */
+			message: {
+				type: String,
+				default: ''
+			},
+			/**
+			 * 显示时间,设置为 0 则不会自动关闭
+			 */
+			duration: {
+				type: Number,
+				default: 3000
+			}
+		},
+		inject: ['popup'],
+		data() {
+			return {}
+		},
+		created() {
+			this.popup.childrenMsg = this
+		},
+		methods: {
+			open() {
+				if (this.duration === 0) return
+				clearTimeout(this.popuptimer)
+				this.popuptimer = setTimeout(() => {
+					this.popup.close()
+				}, this.duration)
+			},
+			close() {
+				clearTimeout(this.popuptimer)
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.uni-popup-message {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		background-color: #e1f3d8;
+		padding: 10px 15px;
+		border-color: #eee;
+		border-style: solid;
+		border-width: 1px;
+	}
+	.uni-popup-message-text {
+		font-size: 14px;
+		padding: 0;
+	}
+
+	.uni-popup__success {
+		background-color: #e1f3d8;
+	}
+
+	.uni-popup__success-text {
+		color: #67C23A;
+	}
+
+	.uni-popup__warn {
+		background-color: #faecd8;
+	}
+
+	.uni-popup__warn-text {
+		color: #E6A23C;
+	}
+
+	.uni-popup__error {
+		background-color: #fde2e2;
+	}
+
+	.uni-popup__error-text {
+		color: #F56C6C;
+	}
+
+	.uni-popup__info {
+		background-color: #F2F6FC;
+	}
+
+	.uni-popup__info-text {
+		color: #909399;
+	}
+</style>

+ 165 - 0
components/uni-popup/uni-popup-share.vue

@@ -0,0 +1,165 @@
+<template>
+	<view class="uni-popup-share">
+		<view class="uni-share-title"><text class="uni-share-title-text">{{title}}</text></view>
+		<view class="uni-share-content">
+			<view class="uni-share-content-box">
+				<view class="uni-share-content-item" v-for="(item,index) in bottomData" :key="index" @click.stop="select(item,index)">
+					<image class="uni-share-image" :src="item.icon" mode="aspectFill"></image>
+					<text class="uni-share-text">{{item.text}}</text>
+				</view>
+
+			</view>
+		</view>
+		<view class="uni-share-button-box">
+			<button class="uni-share-button" @click="close">取消</button>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'UniPopupShare',
+		props: {
+			title: {
+				type: String,
+				default: '分享到'
+			}
+		},
+		inject: ['popup'],
+		data() {
+			return {
+				bottomData: [{
+						text: '微信',
+						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-2.png',
+						name: 'wx'
+					},
+					{
+						text: '支付宝',
+						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-8.png',
+						name: 'wx'
+					},
+					{
+						text: 'QQ',
+						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/gird-3.png',
+						name: 'qq'
+					},
+					{
+						text: '新浪',
+						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-1.png',
+						name: 'sina'
+					},
+					{
+						text: '百度',
+						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-7.png',
+						name: 'copy'
+					},
+					{
+						text: '其他',
+						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-5.png',
+						name: 'more'
+					}
+				]
+			}
+		},
+		created() {},
+		methods: {
+			/**
+			 * 选择内容
+			 */
+			select(item, index) {
+				this.$emit('select', {
+					item,
+					index
+				}, () => {
+					this.popup.close()
+				})
+			},
+			/**
+			 * 关闭窗口
+			 */
+			close() {
+				this.popup.close()
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.uni-popup-share {
+		background-color: #fff;
+	}
+	.uni-share-title {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+		justify-content: center;
+		height: 40px;
+	}
+	.uni-share-title-text {
+		font-size: 14px;
+		color: #666;
+	}
+	.uni-share-content {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding-top: 10px;
+	}
+	
+	.uni-share-content-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		flex-wrap: wrap;
+		width: 360px;
+	}
+	
+	.uni-share-content-item {
+		width: 90px;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		justify-content: center;
+		padding: 10px 0;
+		align-items: center;
+	}
+	
+	.uni-share-content-item:active {
+		background-color: #f5f5f5;
+	}
+	
+	.uni-share-image {
+		width: 30px;
+		height: 30px;
+	}
+	
+	.uni-share-text {
+		margin-top: 10px;
+		font-size: 14px;
+		color: #3B4144;
+	}
+	
+	.uni-share-button-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		padding: 10px 15px;
+	}
+	
+	.uni-share-button {
+		flex: 1;
+		border-radius: 50px;
+		color: #666;
+		font-size: 16px;
+	}
+	
+	.uni-share-button::after {
+		border-radius: 50px;
+	}
+</style>

+ 294 - 0
components/uni-popup/uni-popup.vue

@@ -0,0 +1,294 @@
+<template>
+	<view v-if="showPopup" class="uni-popup" :class="[popupstyle]" @touchmove.stop.prevent="clear">
+		<uni-transition v-if="maskShow" :mode-class="['fade']" :styles="maskClass" :duration="duration" :show="showTrans"
+		 @click="onTap" />
+		<uni-transition :mode-class="ani" :styles="transClass" :duration="duration" :show="showTrans" @click="onTap">
+			<view class="uni-popup__wrapper-box" @click.stop="clear">
+				<slot />
+			</view>
+		</uni-transition>
+	</view>
+</template>
+
+<script>
+	import uniTransition from '../uni-transition/uni-transition.vue'
+	import popup from './popup.js'
+	/**
+	 * PopUp 弹出层
+	 * @description 弹出层组件,为了解决遮罩弹层的问题
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+	 * @property {String} type = [top|center|bottom] 弹出方式
+	 * 	@value top 顶部弹出
+	 * 	@value center 中间弹出
+	 * 	@value bottom 底部弹出
+	 * 	@value message 消息提示
+	 * 	@value dialog 对话框
+	 * 	@value share 底部分享示例
+	 * @property {Boolean} animation = [ture|false] 是否开启动画
+	 * @property {Boolean} maskClick = [ture|false] 蒙版点击是否关闭弹窗
+	 * @event {Function} change 打开关闭弹窗触发,e={show: false}
+	 */
+
+	export default {
+		name: 'UniPopup',
+		components: {
+			uniTransition
+		},
+		props: {
+			// 开启动画
+			animation: {
+				type: Boolean,
+				default: true
+			},
+			// 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
+			// message: 消息提示 ; dialog : 对话框
+			type: {
+				type: String,
+				default: 'center'
+			},
+			// maskClick
+			maskClick: {
+				type: Boolean,
+				default: true
+			}
+		},
+		provide() {
+			return {
+				popup: this
+			}
+		},
+		mixins: [popup],
+		watch: {
+			/**
+			 * 监听type类型
+			 */
+			type: {
+				handler: function(newVal) {
+					this[this.config[newVal]]()
+				},
+				immediate: true
+			},
+			/**
+			 * 监听遮罩是否可点击
+			 * @param {Object} val
+			 */
+			maskClick(val) {
+				this.mkclick = val
+			}
+		},
+		data() {
+			return {
+				duration: 300,
+				ani: [],
+				showPopup: false,
+				showTrans: false,
+				maskClass: {
+					'position': 'fixed',
+					'bottom': 0,
+					'top': 0,
+					'left': 0,
+					'right': 0,
+					'backgroundColor': 'rgba(0, 0, 0, 0.4)'
+				},
+				transClass: {
+					'position': 'fixed',
+					'left': 0,
+					'right': 0,
+				},
+				maskShow: true,
+				mkclick: true,
+				popupstyle: 'top'
+			}
+		},
+		created() {
+			this.mkclick = this.maskClick
+			if (this.animation) {
+				this.duration = 300
+			} else {
+				this.duration = 0
+			}
+		},
+		methods: {
+			clear(e) {
+				// TODO nvue 取消冒泡
+				e.stopPropagation()
+			},
+			open() {
+				this.showPopup = true
+				this.$nextTick(() => {
+					new Promise(resolve => {
+						clearTimeout(this.timer)
+						this.timer = setTimeout(() => {
+							this.showTrans = true
+							// fixed by mehaotian 兼容 app 端
+							this.$nextTick(() => {
+								resolve();
+							})
+						}, 50);
+					}).then(res => {
+						// 自定义打开事件
+						clearTimeout(this.msgtimer)
+						this.msgtimer = setTimeout(() => {
+							this.customOpen && this.customOpen()
+						}, 100)
+						this.$emit('change', {
+							show: true,
+							type: this.type
+						})
+					})
+				})
+			},
+			close(type) {
+				this.showTrans = false
+				this.$nextTick(() => {
+					this.$emit('change', {
+						show: false,
+						type: this.type
+					})
+					clearTimeout(this.timer)
+					// 自定义关闭事件
+					this.customOpen && this.customClose()
+					this.timer = setTimeout(() => {
+						this.showPopup = false
+					}, 300)
+				})
+			},
+			onTap() {
+				if (!this.mkclick) return
+				this.close()
+			},
+			/**
+			 * 顶部弹出样式处理
+			 */
+			top() {
+				this.popupstyle = 'top'
+				this.ani = ['slide-top']
+				this.transClass = {
+					'position': 'fixed',
+					'left': 0,
+					'right': 0,
+				}
+			},
+			/**
+			 * 底部弹出样式处理
+			 */
+			bottom() {
+				this.popupstyle = 'bottom'
+				this.ani = ['slide-bottom']
+				this.transClass = {
+					'position': 'fixed',
+					'left': 0,
+					'right': 0,
+					'bottom': 0
+				}
+			},
+			/**
+			 * 中间弹出样式处理
+			 */
+			center() {
+				this.popupstyle = 'center'
+				this.ani = ['zoom-out', 'fade']
+				this.transClass = {
+					'position': 'fixed',
+					/* #ifndef APP-NVUE */
+					'display': 'flex',
+					'flexDirection': 'column',
+					/* #endif */
+					'bottom': 0,
+					'left': 0,
+					'right': 0,
+					'top': 0,
+					'justifyContent': 'center',
+					'alignItems': 'center'
+				}
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.uni-popup {
+		position: fixed;
+		/* #ifndef APP-NVUE */
+		z-index: 99;
+		/* #endif */
+	}
+
+	.uni-popup__mask {
+		position: absolute;
+		top: 0;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		background-color: $uni-bg-color-mask;
+		opacity: 0;
+	}
+
+	.mask-ani {
+		transition-property: opacity;
+		transition-duration: 0.2s;
+	}
+
+	.uni-top-mask {
+		opacity: 1;
+	}
+
+	.uni-bottom-mask {
+		opacity: 1;
+	}
+
+	.uni-center-mask {
+		opacity: 1;
+	}
+
+	.uni-popup__wrapper {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		position: absolute;
+	}
+
+	.top {
+		/* #ifdef H5 */
+		top: var(--window-top);
+		/* #endif */
+		/* #ifndef H5 */
+		top: 0;
+		/* #endif */
+	}
+
+	.bottom {
+		bottom: 0;
+	}
+
+	.uni-popup__wrapper-box {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		position: relative;
+		/* iphonex 等安全区设置,底部安全区适配 */
+		/* #ifndef APP-NVUE */
+		padding-bottom: constant(safe-area-inset-bottom);
+		padding-bottom: env(safe-area-inset-bottom);
+		/* #endif */
+	}
+
+	.content-ani {
+		// transition: transform 0.3s;
+		transition-property: transform, opacity;
+		transition-duration: 0.2s;
+	}
+
+
+	.uni-top-content {
+		transform: translateY(0);
+	}
+
+	.uni-bottom-content {
+		transform: translateY(0);
+	}
+
+	.uni-center-content {
+		transform: scale(1);
+		opacity: 1;
+	}
+</style>

+ 279 - 0
components/uni-transition/uni-transition.vue

@@ -0,0 +1,279 @@
+<template>
+	<view v-if="isShow" ref="ani" class="uni-transition" :class="[ani.in]" :style="'transform:' +transform+';'+stylesObject"
+	 @click="change">
+		 <slot></slot>
+	</view>
+</template>
+
+<script>
+	// #ifdef APP-NVUE
+	const animation = uni.requireNativePlugin('animation');
+	// #endif
+	/**
+	 * Transition 过渡动画
+	 * @description 简单过渡动画组件
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=985
+	 * @property {Boolean} show = [false|true] 控制组件显示或隐藏
+     * @property {Array} modeClass = [fade|slide-top|slide-right|slide-bottom|slide-left|zoom-in|zoom-out] 过渡动画类型
+     *  @value fade 渐隐渐出过渡
+     *  @value slide-top 由上至下过渡
+     *  @value slide-right 由右至左过渡
+     *  @value slide-bottom 由下至上过渡
+     *  @value slide-left 由左至右过渡
+     *  @value zoom-in 由小到大过渡
+     *  @value zoom-out 由大到小过渡
+	 * @property {Number} duration 过渡动画持续时间
+	 * @property {Object} styles 组件样式,同 css 样式,注意带’-‘连接符的属性需要使用小驼峰写法如:`backgroundColor:red`
+	 */
+	export default {
+		name: 'uniTransition',
+		props: {
+			show: {
+				type: Boolean,
+				default: false
+			},
+			modeClass: {
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			duration: {
+				type: Number,
+				default: 300
+			},
+			styles: {
+				type: Object,
+				default () {
+					return {}
+				}
+			}
+		},
+		data() {
+			return {
+				isShow: false,
+				transform: '',
+				ani: { in: '',
+					active: ''
+				}
+			};
+		},
+		watch: {
+			show: {
+				handler(newVal) {
+					if (newVal) {
+						this.open()
+					} else {
+						this.close()
+					}
+				},
+				immediate: true
+			}
+		},
+		computed: {
+			stylesObject() {
+				let styles = {
+					...this.styles,
+					'transition-duration': this.duration / 1000 + 's'
+				}
+				let transfrom = ''
+				for (let i in styles) {
+					let line = this.toLine(i)
+					transfrom += line + ':' + styles[i] + ';'
+				}
+				return transfrom
+			}
+		},
+		created() {
+			// this.timer = null
+			// this.nextTick = (time = 50) => new Promise(resolve => {
+			// 	clearTimeout(this.timer)
+			// 	this.timer = setTimeout(resolve, time)
+			// 	return this.timer
+			// });
+		},
+		methods: {
+			change() {
+				this.$emit('click', {
+					detail: this.isShow
+				})
+			},
+			open() {
+				clearTimeout(this.timer)
+				this.isShow = true
+				this.transform = ''
+				this.ani.in = ''
+				for (let i in this.getTranfrom(false)) {
+					if (i === 'opacity') {
+						this.ani.in = 'fade-in'
+					} else {
+						this.transform += `${this.getTranfrom(false)[i]} `
+					}
+				}
+				this.$nextTick(() => {
+					setTimeout(() => {
+						this._animation(true)
+					}, 50)
+				})
+
+			},
+			close(type) {
+				clearTimeout(this.timer)
+				this._animation(false)
+			},
+			_animation(type) {
+				let styles = this.getTranfrom(type)
+				// #ifdef APP-NVUE
+				if(!this.$refs['ani']) return
+				animation.transition(this.$refs['ani'].ref, {
+					styles,
+					duration: this.duration, //ms
+					timingFunction: 'ease',
+					needLayout: false,
+					delay: 0 //ms
+				}, () => {
+					if (!type) {
+						this.isShow = false
+					}
+					this.$emit('change', {
+						detail: this.isShow
+					})
+				})
+				// #endif
+				// #ifndef APP-NVUE
+				this.transform = ''
+				for (let i in styles) {
+					if (i === 'opacity') {
+						this.ani.in = `fade-${type?'out':'in'}`
+					} else {
+						this.transform += `${styles[i]} `
+					}
+				}
+				this.timer = setTimeout(() => {
+					if (!type) {
+						this.isShow = false
+					}
+					this.$emit('change', {
+						detail: this.isShow
+					})
+
+				}, this.duration)
+				// #endif
+
+			},
+			getTranfrom(type) {
+				let styles = {
+					transform: ''
+				}
+				this.modeClass.forEach((mode) => {
+					switch (mode) {
+						case 'fade':
+							styles.opacity = type ? 1 : 0
+							break;
+						case 'slide-top':
+							styles.transform += `translateY(${type?'0':'-100%'}) `
+							break;
+						case 'slide-right':
+							styles.transform += `translateX(${type?'0':'100%'}) `
+							break;
+						case 'slide-bottom':
+							styles.transform += `translateY(${type?'0':'100%'}) `
+							break;
+						case 'slide-left':
+							styles.transform += `translateX(${type?'0':'-100%'}) `
+							break;
+						case 'zoom-in':
+							styles.transform += `scale(${type?1:0.8}) `
+							break;
+						case 'zoom-out':
+							styles.transform += `scale(${type?1:1.2}) `
+							break;
+					}
+				})
+				return styles
+			},
+			_modeClassArr(type) {
+				let mode = this.modeClass
+				if (typeof(mode) !== "string") {
+					let modestr = ''
+					mode.forEach((item) => {
+						modestr += (item + '-' + type + ',')
+					})
+					return modestr.substr(0, modestr.length - 1)
+				} else {
+					return mode + '-' + type
+				}
+			},
+			// getEl(el) {
+			// 	console.log(el || el.ref || null);
+			// 	return el || el.ref || null
+			// },
+			toLine(name) {
+				return name.replace(/([A-Z])/g, "-$1").toLowerCase();
+			}
+		}
+	}
+</script>
+
+<style>
+	.uni-transition {
+		transition-timing-function: ease;
+		transition-duration: 0.3s;
+		transition-property: transform, opacity;
+	}
+
+	.fade-in {
+		opacity: 0;
+	}
+
+	.fade-active {
+		opacity: 1;
+	}
+
+	.slide-top-in {
+		/* transition-property: transform, opacity; */
+		transform: translateY(-100%);
+	}
+
+	.slide-top-active {
+		transform: translateY(0);
+		/* opacity: 1; */
+	}
+
+	.slide-right-in {
+		transform: translateX(100%);
+	}
+
+	.slide-right-active {
+		transform: translateX(0);
+	}
+
+	.slide-bottom-in {
+		transform: translateY(100%);
+	}
+
+	.slide-bottom-active {
+		transform: translateY(0);
+	}
+
+	.slide-left-in {
+		transform: translateX(-100%);
+	}
+
+	.slide-left-active {
+		transform: translateX(0);
+		opacity: 1;
+	}
+
+	.zoom-in-in {
+		transform: scale(0.8);
+	}
+
+	.zoom-out-active {
+		transform: scale(1);
+	}
+
+	.zoom-out-in {
+		transform: scale(1.2);
+	}
+</style>

+ 83 - 39
pages/eleControl/controlReport/controlReportAdd/controlReportAdd.vue

@@ -2,38 +2,50 @@
 	<view class="appWrapper">
 		<form action="">
 			<view style="height:30rpx"></view>
-			
+
 			<view class="form-item">
 				<view class="title">
 					<text class="necessary">*</text>
 					监察标题:
 				</view>
-				<select name="" id="" filterable clearable v-model="supervision_title">
+				<input type="text" v-model="supervision_title">
+				<!-- <select name="" id="" filterable clearable v-model="supervision_title">
 					<option value="">请选择</option>
 					<option :value=item.supervision_name v-for="item in titleListData">{{ item.supervision_name}}</option>
-				</select>
+				</select> -->
 			</view>
-			
+
 			<view class="form-item">
 				<view class="title"><text class="necessary">*</text>所属站点:</view>
 				<select name="" id="" filterable clearable v-model="site_id">
 					<option value="">请选择</option>
-					<option :value=item.site_name v-for="item in siteListData">{{ item.site_name}}</option>
+					<option :value=item.id v-for="item in siteListData">{{ item.site_name}}</option>
 				</select>
 			</view>
 
 			<view class="form-item">
 				<view class="title"><text class="necessary">*</text>监察内容:</view>
-				<textarea maxlength="-1"   width="250" v-model="supervision_content"></textarea>
+				<textarea maxlength="-1" width="250" v-model="supervision_content"></textarea>
 			</view>
-			
+
+	
 			<view class="form-item">
 				<view class="title"><text class="necessary">*</text>上传图片:</view>
 				<view style="width:500rpx">
+					
+					<!-- <uni-group title="只选择图片">
+						<uni-file-picker limit="1"></uni-file-picker>
+					</uni-group> -->
+					
+					
+					<view ref="input" class="input">
+					</view>
+
 					<view class="cu-form-group" style="padding:0">
 						<view class="grid col-4 grid-square flex-sub">
-							<view class="bg-img" v-for="(item,index) in imgList" :key="index" @tap="ViewImage" :data-url="imgList[index]">
-							 <image :src="imgList[index]" mode="aspectFill"></image>
+							<view class="bg-img" v-for="(item,index) in imgList" :key="index" @tap="ViewImage"
+								:data-url="imgList[index]">
+								<image :src="imgList[index]" mode="aspectFill"></image>
 								<view class="cu-tag bg-red" @tap.stop="DelImg" :data-index="index">
 									<text class='cuIcon-close'></text>
 								</view>
@@ -59,21 +71,54 @@
 		data() {
 			return {
 				imgList: [],
-				
-				supervision_title:'',
-				site_id:'',
-				supervision_content:'',
-				
-				titleListData:[],
-				siteListData:[]
+
+				supervision_title: '',
+				site_id: '',
+				supervision_content: '',
+				msg:'', 
+
+				titleListData: [],
+				siteListData: [],
 			}
 		},
 		onLoad: function(option) {
-			this.getTitleList();
-			this.getSiteList()
+			this.getSiteList();
+			
+			 
+		},
+		mounted(){
+			// 创建附件上传
+				var _self = this;
+				var input = document.createElement('input');//创建元素
+				input.type = 'file';//添加file类型
+				input.setAttribute("v-model", "msg");
+				// input.onchange = (event) => {
+				// 	_self.upFile(input, event)
+				// }
+				input.onchange = this.inputUpload;
+				this.$refs.input.$el.appendChild(input)
+			
 		},
 		methods: {
 			
+			// 处理文件上传
+			inputUpload(e) {
+			    let file = e.target.files[0];
+			    let formData = new FormData();
+			    formData.append('file', file);
+			    // 请求文件上传接口
+			    // data.upload(formData).then((res) => {
+			    //     console.log(res);
+			    // }).catch(() => {
+			    //     this.$message.error(data.message || '操作失败')
+			    // });
+			    // this.$forceUpdate();
+			},
+			
+	
+			
+			
+
 			//新增提交
 			async addSubmit() {
 				if (!this.supervision_title) {
@@ -97,21 +142,29 @@
 					});
 					return
 				}
-				if (!this.imgList.length>0) {
+				if (!this.imgList.length > 0) {
 					uni.showToast({
 						title: "请上传图片",
 						icon: "none"
 					});
 					return
 				}
+				// if (!this.msg ) {
+				// 	uni.showToast({
+				// 		title: "请上传图片",
+				// 		icon: "none"
+				// 	});
+				// 	return
+				// }
 				
 				let res = await this.addReport({
 					"supervision_title": this.supervision_title,
 					"site_id": this.site_id,
 					"supervision_content": this.supervision_content,
-					"img":'ss'
+					"img":this.imgList[0]
+					// "img":this.msg
 				})
-			
+
 				if (!res.data.flag) {
 					uni.showToast({
 						title: "添加失败",
@@ -124,10 +177,10 @@
 				}
 				setTimeout(() => {
 					uni.navigateTo({
-						url: '/pages/authManage/authManage',
+						url: '/pages/eleControl/controlReport/controlReport',
 					});
 				}, 1000);
-			
+
 			},
 			addReport(params = {}) {
 				return this.$myRequest({
@@ -135,19 +188,10 @@
 					data: params
 				})
 			},
+
+
 			
-			
-			//监察标题下拉数据请求
-			async getTitleList(params = {}) {
-				const res = await this.$myRequest({
-					url: 'Archives/getsupervisionBox',
-					showLoading: true,
-					data: params
-				})
-				
-				this.titleListData = res.data.data
-			},
-			
+
 			//站带下拉数据请求
 			async getSiteList(params = {}) {
 				const res = await this.$myRequest({
@@ -157,8 +201,8 @@
 				})
 				this.siteListData = res.data.data
 			},
-		
-			
+
+
 			ChooseImage() {
 				uni.chooseImage({
 					count: 4, //默认9
@@ -173,7 +217,7 @@
 					}
 				});
 			},
-			
+
 			ViewImage(e) {
 				uni.previewImage({
 					urls: this.imgList,
@@ -193,7 +237,7 @@
 					}
 				})
 			},
-			
+
 			submit() {
 				uni.navigateTo({
 					url: '/pages/accountManage/success/success',

+ 4 - 1
pages/eleControl/powerCut/calendar/calendar.vue

@@ -75,11 +75,14 @@
 		methods: {
 			// 选择日期
 			bindDateChange: function(e) {
-				this.start_date = e.target.value
+				this.start_date = e.target.value;
+				alert(this.start_date);
+				 this.$emit('func', this.start_date) // 子组件向发射事件, 
 			},
 			bindDateChange2: function(e) {
 				this.end_date = e.target.value;
 				this.other = this.end_date;
+				this.$emit('func2', this.end_date) // 子组件向发射事件, 
 			},
 			// 获取当前时间
 			// getDate(type) {

+ 80 - 12
pages/eleControl/powerCut/powerCutAdd/powerCutAdd.vue

@@ -2,7 +2,26 @@
 	<view class="appWrapper">
 		<form action="" v-if="!id">
 			<view style="height:30rpx"></view>
-			<calendar  :bindStartTime="formMess.start_time" :bindEndTime="formMess.end_time"></calendar>
+			<view class="form-item">
+				<view class="title">
+					<text class="necessary">*</text>
+					开始时间:
+				</view>
+				<view class="example-body">
+					<uni-datetime-picker v-model="start_time" />
+				</view>
+			</view>
+			<view class="form-item">
+				<view class="title">
+					<text class="necessary">*</text>
+					结束时间:
+				</view>
+				<view class="example-body">
+					<uni-datetime-picker v-model="end_time"  />
+				</view>
+			</view>
+			
+			<!-- <calendar   @func='getMsgFromxSon' @func2='getMsgFromxSon2' :bindStartTime="formMess.start_time" :bindEndTime="formMess.end_time"></calendar> -->
 			<view class="form-item">
 				<view class="title"><text class="necessary">*</text>所属站点:</view>
 				<select name="" id="" filterable clearable v-model="formMess.site_id">
@@ -29,7 +48,31 @@
 		<!-- 修改start -->
 		<form action="" v-else>
 			<view style="height:30rpx"></view>
-			<calendar  :bindStartTime="planDetailData.start_time" :bindEndTime="planDetailData.end_time" v-if="this.planDetailData.end_time" ></calendar>
+			<view class="form-item">
+				<view class="title">
+					<text class="necessary">*</text>
+					开始时间:
+				</view>
+				<view class="example-body" v-if="this.status_value==1">
+					<uni-datetime-picker  v-model="planDetailData.start_time" />
+				</view>
+				<view class="example-body" v-else>
+					<uni-datetime-picker  v-model="planDetailData.start_time" disabled/>
+				</view>
+			</view>
+			<view class="form-item">
+				<view class="title">
+					<text class="necessary">*</text>
+					结束时间:
+				</view>
+				<view class="example-body" >
+					<uni-datetime-picker v-model="planDetailData.end_time"  />
+				</view>
+			</view>
+			
+		
+			
+			<!-- <calendar   @func='getMsgFromxSon' @func2='getMsgFromxSon2' :bindStartTime="planDetailData.start_time" :bindEndTime="planDetailData.end_time" v-if="this.planDetailData.end_time" ></calendar> -->
 			<view class="form-item">
 				<view class="title"><text class="necessary">*</text>所属站点:</view>
 				<select name="" id="" filterable clearable v-model="planDetailData.site_id" disabled="disabled">
@@ -86,12 +129,13 @@
 					"plan_type": 0,
 					"start_time": "",
 					"end_time": "",
-					// "start_time": "2021-7-12 18:05:48",
-					// "end_time": "2021-7-12 18:05:48",
 				},
 				siteListData:[],
 				planTypeData:[],
-				planDetailData:{}
+				planDetailData:{},
+				
+				start_time: '',
+				end_time: '',
 			}
 		},
 		onLoad: function(option) {
@@ -116,21 +160,28 @@
 		methods: {
 			//新增验证并提交
 			addSubmit() {
-				alert( this.formMess.start_time)
-				if (!this.formMess.start_time) {
+				// alert( this.formMess.start_time)
+				if (!this.start_time) {
 					uni.showToast({
 						title: "请选择开始时间",
 						icon: "none"
 					});
 					return
 				}
-				if (!this.formMess.end_time) {
+				if (!this.end_time) {
 					uni.showToast({
 						title: "请选择结束时间",
 						icon: "none"
 					});
 					return
 				}
+				if (this.end_time<this.start_time) {
+					uni.showToast({
+						title: "结束时间不能小于开始时间,请重新选择",
+						icon: "none"
+					});
+					return
+				}
 				
 				if (!this.formMess.site_id) {
 					uni.showToast({
@@ -150,8 +201,8 @@
 				this.setAddDevice({
 					"site_id": this.formMess.site_id,
 					"plan_type": this.formMess.plan_type,
-					"start_time": this.formMess.start_time,
-					"end_time": this.formMess.end_time,
+					"start_time": this.start_time,
+					"end_time": this.end_time,
 				})
 			},
 			// 新增请求
@@ -192,7 +243,15 @@
 			},
 			
 			//编辑验证并提交
+			
 			editSubmit() {
+				if (this.planDetailData.end_time<this.planDetailData.start_time) {
+					uni.showToast({
+						title: "结束时间不能小于开始时间,请重新选择",
+						icon: "none"
+					});
+					return
+				}
 				this.updataPlan({
 					"site_id": this.planDetailData.site_id,
 					"plan_type": this.planDetailData.plan_type,
@@ -221,7 +280,7 @@
 				}
 				setTimeout(() => {
 					uni.navigateTo({
-						url: '/pages/siteManage/siteManage',
+						url: '/pages/eleControl/powerCut/powerCut'
 					});
 				}, 1000);
 			},
@@ -240,6 +299,15 @@
 </script>
 
 <style lang="scss">
-	
+	/deep/ .uni-calendar--fixed{
+		z-index:1111!important
+	}
+	.example-body{
+		width: 276px;
+		    font-size: 15px;
+			/deep/ uni-input, select, option{
+				border:none
+			}
+	}
 
 </style>

+ 18 - 3
pages/eleControl/powerCut/powerCutDetail/powerCutDetail.vue

@@ -2,7 +2,22 @@
 	<view class="appWrapper">
 		<form action="">
 			<view style="height:30rpx"></view>
-			<calendar :bindStartTime="detailData.start_time" :bindEndTime="detailData.end_time" v-if="this.detailData.start_time"></calendar>
+			<view class="form-item">
+				<view class="title">
+					<text class="necessary">*</text>
+					开始时间:
+				</view>
+				<input type="text" v-model="detailData.start_time" disabled=disabled/>
+	
+			</view>
+			<view class="form-item">
+				<view class="title">
+					<text class="necessary">*</text>
+					结束时间:
+				</view>
+				<input type="text" v-model="detailData.end_time" disabled=disabled/>
+			</view>
+			
 			
 			<view class="form-item">
 				<view class="title">所属站点:</view>
@@ -46,8 +61,7 @@
 			return {
 				isShow: false,
 				detailData:{},
-				start_time:'',
-				end_time:''
+				
 			}
 		},
 		onLoad: function(option) {
@@ -71,6 +85,7 @@
 </script>
 
 <style lang="scss">
+
 	
 
 </style>

+ 1 - 1
pages/setting/setting.vue

@@ -11,7 +11,7 @@
 			<view class="cu-item" @tap="goMessagePush()">
 				<view class="cu-avatar " style="background-image:url(../../static/setting-icon1.png)"></view>
 				<view class="content">
-					<view class="">消息推送</view>
+					<view class="">消息推送设置</view>
 				</view>
 				<view class="nav-right">
 					<view class="text-grey">

+ 109 - 154
pages/siteArchive/siteArchiveAdd/siteArchiveAdd.vue

@@ -19,7 +19,13 @@
 			</view>
 			<view class="form-item">
 				<view class="title"><text class="necessary">*</text>线路:</view>
-				<input name="input" v-model="formMess.route_id"></input>
+				<!-- <input name="input" v-model="formMess.route_id"></input> -->
+				<select name="" id="" filterable clearable v-model="formMess.route_id">
+					<option value="0">请选择</option>
+					<option :value=item.id v-for="item in routeListData">{{ item.route_name}}</option>
+				</select>
+				
+				
 			</view>
 			<view class="form-item">
 				<view class="title"><text class="necessary">*</text>站点名称:</view>
@@ -30,67 +36,42 @@
 			</view>
 			<view class="form-item">
 				<view class="title"><text class="necessary">*</text>监察:</view>
-				<input name="input" v-model="formMess.supervision_department_id"></input>
+				<select name="" id="" filterable clearable v-model="formMess.supervision_department_id">
+					<option value="0">请选择</option>
+					<option :value=item.id v-for="item in supervisionListData">{{ item.supervision_name}}</option>
+				</select>
 			</view>
 			
 			<view class="info-tit margin-left-xs">
-				<text class="cuIcon-titles margin-right-xs"></text>
+				<text class="cuIcon-titles "></text>
 				四防一通
 			</view>
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>电缆孔洞:</view>
-				<radio-group name="formMess.cable_hole"  v-model="formMess.cable_hole">
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.cable_hole" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.cable_hole" label="0">否</evan-radio>
+			
 			</view>
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>门窗、墙壁破损:</view>
-				<radio-group name="formMess.damage" @change="radioChange" >
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.damage" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.damage" label="0">否</evan-radio>
 			</view>
+			
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>屋顶墙壁渗漏水:</view>
-				<radio-group name="formMess.water_leakage" @change="radioChange">
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.water_leakage" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.water_leakage" label="0">否</evan-radio>
 			</view>
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>灭火器配置不足:</view>
-				<radio-group name="formMess.annihilator_insufficient_configuration">
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.annihilator_insufficient_configuration" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.annihilator_insufficient_configuration" label="0">否</evan-radio>
 			</view>
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>灭火器超期:</view>
-				<radio-group name="formMess.annihilator_overdue">
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.annihilator_overdue" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.annihilator_overdue" label="0">否</evan-radio>
 			</view>
 			
 			<view class="info-tit margin-left-xs">
@@ -99,48 +80,24 @@
 			</view>
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>堆放杂物:</view>
-				<radio-group name="formMess.pile_up_sundries">
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.pile_up_sundries" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.pile_up_sundries" label="0">否</evan-radio>
 			</view>
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>积灰严重:</view>
-				<radio-group name="formMess.serious_ash_deposition">
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.serious_ash_deposition" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.serious_ash_deposition" label="0">否</evan-radio>
 			</view>
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>配电房周围环境潮湿:</view>
-				<radio-group name="formMess.around_environment_humid">
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.around_environment_humid" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.around_environment_humid" label="0">否</evan-radio>
 			</view>
 			
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>配电房周围对方杂物:</view>
-				<radio-group name="formMess.around_pile_up_sundries">
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.around_pile_up_sundries" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.around_pile_up_sundries" label="0">否</evan-radio>
 			</view>
 			
 			<view class="info-tit margin-left-xs">
@@ -149,39 +106,20 @@
 			</view>
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>无电工:</view>
-				<radio-group name="formMess.no_electrician">
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.no_electrician" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.no_electrician" label="0">否</evan-radio>
 			</view>
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>电工人数配置不足:</view>
-				<radio-group name="formMess.electrician_lack">
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.electrician_lack" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.electrician_lack" label="0">否</evan-radio>
 			</view>
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>电工证超期:</view>
-				<radio-group name="formMess.overdue_electrician_certificate">
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.overdue_electrician_certificate" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.overdue_electrician_certificate" label="0">否</evan-radio>
 			</view>
 			
-			
 			<!-- 电试 -->
 			<view class="info-tit margin-left-xs">
 				<text class="cuIcon-titles margin-right-xs"></text>
@@ -189,14 +127,8 @@
 			</view>
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>电试超期:</view>
-				<radio-group name="formMess.electric_test_overdue">
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.electric_test_overdue" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.electric_test_overdue" label="0">否</evan-radio>
 			</view>
 			
 			<!-- 设备 -->
@@ -216,25 +148,13 @@
 			</view>
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>配置不足(绝缘体):</view>
-				<radio-group name="formMess.blanket_insufficient_configuration">
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.blanket_insufficient_configuration" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.blanket_insufficient_configuration" label="0">否</evan-radio>
 			</view>
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>接地线与存放位置编号:</view>
-				<radio-group name="formMess.ground_wire">
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.ground_wire" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.ground_wire" label="0">否</evan-radio>
 			</view>
 			
 			<!-- 安全工器具 -->
@@ -244,14 +164,8 @@
 			</view>
 			<view class="form-item extraDis">
 				<view class="title"><text class="necessary">*</text>模拟屏:</view>
-				<radio-group name="formMess.analog_screen">
-					<label class="margin-right-xl">
-						<radio value="1"/><text>是</text>
-					</label>
-					<label>
-						<radio value="0" checked /><text>否</text>
-					</label>
-				</radio-group>
+				<evan-radio v-model="formMess.analog_screen" label="1" class="margin-right-xl">是</evan-radio>
+				<evan-radio v-model="formMess.analog_screen" label="0">否</evan-radio>
 			</view>
 			<view class="form-item">
 				<view class="title">备注:</view>
@@ -271,40 +185,45 @@
 
 		data() {
 			return {
+				
+				baseValue: '1',
+				
+				supervisionListData: [],
+				routeListData:[],
 				siteListData:[],
 				radioOne: 1,
 				formMess: {
 					"account_number": "",
 					"rheological_change": "",
 					"power_capacity": "",
-					"route_id": "",
+					"route_id": 0,
 					"site_id": 0,
-					"supervision_department_id": "",
+					"supervision_department_id": 0,
 					
 					"cable_hole": "0",
-					"damage": "",
-					"water_leakage": "",
-					"annihilator_insufficient_configuration": "",
-					"annihilator_overdue": "",
+					"damage": "0",
+					"water_leakage": "0",
+					"annihilator_insufficient_configuration": "0",
+					"annihilator_overdue": "0",
 					
-					"pile_up_sundries": "",
-					"serious_ash_deposition": "",
-					"around_environment_humid": "",
-					"around_pile_up_sundries": "",
+					"pile_up_sundries": "0",
+					"serious_ash_deposition": "0",
+					"around_environment_humid": "0",
+					"around_pile_up_sundries": "0",
 					
-					"no_electrician": "",
-					"electrician_lack": "",
-					"overdue_electrician_certificate": "",
+					"no_electrician": "0",
+					"electrician_lack": "0",
+					"overdue_electrician_certificate": "0",
 					
-					"electric_test_overdue": "",
+					"electric_test_overdue": "0",
 					
 					"old_equipment": "",
 					
-					"blanket_insufficient_configuration": "",
-					"ground_wire": "",
+					"blanket_insufficient_configuration": "0",
+					"ground_wire": "0",
 					
 					
-					"analog_screen": "",
+					"analog_screen": "0",
 					"remarks": "",
 				},
 
@@ -312,12 +231,36 @@
 			}
 		},
 		onLoad: function(option) {
-			this.getDataList()
+			this.getDataList();
+			this.getTitleList();
+			this.getRoutrBox();
 			console.log('this.formMess.cable_hole')
 		console.log(this.formMess.cable_hole)
 
 		},
 		methods: {
+			
+			//线路名称下拉数据请求
+			async getRoutrBox(params = {}) {
+				const res = await this.$myRequest({
+					url: 'Archives/getRoutrBox',
+					showLoading: true,
+					data: params
+				})
+				this.routeListData = res.data.data;
+				console.log(this.routeListData)
+			},
+			
+			//监察下拉下拉数据请求
+			async getTitleList(params = {}) {
+				const res = await this.$myRequest({
+					url: 'Archives/getsupervisionBox',
+					showLoading: true,
+					data: params
+				})
+			
+				this.supervisionListData = res.data.data
+			},
 			//数据请求
 			async getDataList(params = {}) {
 				const res = await this.$myRequest({
@@ -391,10 +334,22 @@
 					"site_id": this.formMess.site_id,
 					"supervision_department_id": this.formMess.supervision_department_id,
 					"cable_hole":this.formMess.cable_hole,
-					// "damage":this.radioOne,
-					// "water_leakage":this.radioOne,
-					// "annihilator_insufficient_configuration":this.radioOne,
+					"damage":this.formMess.damage,
+					"water_leakage":this.formMess.water_leakage,
+					"annihilator_insufficient_configuration":this.formMess.annihilator_insufficient_configuration,
+					"annihilator_overdue":this.formMess.annihilator_overdue,
+					"pile_up_sundries":this.formMess.pile_up_sundries,
+					"serious_ash_deposition":this.formMess.serious_ash_deposition,
+					"around_environment_humid":this.formMess.around_environment_humid,
+					"around_pile_up_sundries":this.formMess.around_pile_up_sundries,
+					"no_electrician":this.formMess.no_electrician,
+					"electrician_lack":this.formMess.electrician_lack,
+					"overdue_electrician_certificate":this.formMess.overdue_electrician_certificate,
+					"electric_test_overdue":this.formMess.electric_test_overdue,
+					"blanket_insufficient_configuration":this.formMess.blanket_insufficient_configuration,
 					
+					"ground_wire":this.formMess.ground_wire,
+					"analog_screen":this.formMess.analog_screen,					
 					
 					"old_equipment": this.formMess.old_equipment,
 					"remarks": this.formMess.remarks,
@@ -414,7 +369,7 @@
 				}
 				setTimeout(() => {
 					uni.navigateTo({
-						url: '/pages/authManage/authManage',
+						url: '/pages/siteArchive/siteArchive',
 			
 					});
 				}, 1000);

+ 2 - 6
pages/siteManage/siteManage.vue

@@ -5,13 +5,9 @@
 		<view class="ding">
 			<view class="cu-bar search bg-gray filter-section" style="padding-top:10rpx">
 				<view class="search-form round bg-white">
-					<!-- <select name="" id="" style="width:100%">
-						<option value="">线路名称1</option>
-						<option value="">线路名称2</option>
-						<option value="">线路名称3</option>
-					</select> -->
+
 					
-					<select name="" id="" filterable clearable v-model="router_id">
+					<select name="" id="" filterable clearable v-model="router_id" style="padding-left:40rpx;background-size: 4.6%;">
 						<option value="0">请选择线路名称</option>
 						<option :value=item.route_name v-for="item in routeListData">{{ item.route_name}}</option>
 					</select>

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików