溯源详情等界面优化
This commit is contained in:
parent
4e2d0696ed
commit
64e71a2f25
22
App.vue
22
App.vue
|
@ -1,14 +1,12 @@
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
onLaunch: function() {
|
onLaunch: function() {
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
onShow: function() {
|
onShow: function() {
|
||||||
console.log('App Show')
|
console.log('App Show')
|
||||||
|
|
||||||
},
|
},
|
||||||
onHide: function() {
|
onHide: function() {
|
||||||
console.log('App Hide')
|
console.log('App Hide')
|
||||||
|
@ -19,11 +17,12 @@
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
@import "uview-plus/index.scss";
|
@import "uview-plus/index.scss";
|
||||||
|
|
||||||
|
|
||||||
.card {
|
.card {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 693.93rpx;
|
width: 693.93rpx;
|
||||||
|
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 20rpx 20rpx;
|
padding: 20rpx 20rpx;
|
||||||
|
@ -33,7 +32,7 @@
|
||||||
font-size: 29.79rpx;
|
font-size: 29.79rpx;
|
||||||
|
|
||||||
.card-li {
|
.card-li {
|
||||||
|
|
||||||
margin-bottom: 17rpx;
|
margin-bottom: 17rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,10 +48,11 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.u-action-sheet__item-wrap {
|
|
||||||
overflow: auto;
|
.u-action-sheet__item-wrap {
|
||||||
max-height: 30vh !important;
|
overflow: auto;
|
||||||
}
|
max-height: 30vh !important;
|
||||||
|
}
|
||||||
|
|
||||||
/*每个页面公共css */
|
/*每个页面公共css */
|
||||||
</style>
|
</style>
|
114
api/upload.js
114
api/upload.js
|
@ -1,69 +1,77 @@
|
||||||
// import base from "@/config/baseUrl";
|
// import base from "@/config/baseUrl";
|
||||||
// let baseUrl = 'https://ceshi.excellentkk.cn/api';
|
// let baseUrl = 'https://ceshi.excellentkk.cn/api';
|
||||||
// import store from '../store';
|
// import store from '../store';
|
||||||
import { config } from '@/config/app';
|
import {
|
||||||
|
config
|
||||||
|
} from '@/config/app';
|
||||||
import store from "@/store/index.js"
|
import store from "@/store/index.js"
|
||||||
let header = {};
|
let header = {};
|
||||||
|
|
||||||
|
|
||||||
if (store.state.userInfo){
|
|
||||||
header.token = store.state.userInfo.token;
|
|
||||||
}
|
|
||||||
|
|
||||||
function uploads(src, type) {
|
function uploads(src, type) {
|
||||||
return new Promise((resolve, reject) => {
|
if (store.state.userInfo) {
|
||||||
// //console.log('上传', type === 'img' ? '图片' : '视频', ':', src)
|
|
||||||
let a = uni.uploadFile({
|
header.TOKEN = store.state.userInfo.token
|
||||||
// url: base.baseUrl + '/upload?token=',
|
}
|
||||||
url: HTTP_REQUEST_URL_TWO + '/api' + '/upload?token=',
|
|
||||||
filePath: src,
|
return new Promise((resolve, reject) => {
|
||||||
name: 'file',
|
// //console.log('上传', type === 'img' ? '图片' : '视频', ':', src)
|
||||||
success: (res) => {
|
let a = uni.uploadFile({
|
||||||
let data = JSON.parse(res.data)
|
// url: base.baseUrl + '/upload?token=',
|
||||||
if (data.code != 1) {
|
url: HTTP_REQUEST_URL_TWO + '/api' + '/upload?token=',
|
||||||
uni.$u.toast(data.msg)
|
filePath: src,
|
||||||
return false
|
name: 'file',
|
||||||
} else {
|
success: (res) => {
|
||||||
resolve(data.data.url) // 返回线上地址
|
let data = JSON.parse(res.data)
|
||||||
}
|
if (data.code != 1) {
|
||||||
},
|
uni.$u.toast(data.msg)
|
||||||
fail: (err) => {
|
return false
|
||||||
reject(err)
|
} else {
|
||||||
//console.log('upload-上传失败', err)
|
resolve(data.data.url) // 返回线上地址
|
||||||
}
|
}
|
||||||
});
|
},
|
||||||
})
|
fail: (err) => {
|
||||||
|
reject(err)
|
||||||
|
//console.log('upload-上传失败', err)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function Uploads(src, type) {
|
function Uploads(src, type) {
|
||||||
return new Promise((resolve, reject) => {
|
if (store.state.userInfo) {
|
||||||
// //console.log('上传', type === 'img' ? '图片' : '视频', ':', src)
|
|
||||||
|
header.TOKEN = store.state.userInfo.token
|
||||||
|
}
|
||||||
|
|
||||||
let a = uni.uploadFile({
|
return new Promise((resolve, reject) => {
|
||||||
url:config.HTTP_REQUEST_URL + '/api/upload/image',
|
// //console.log('上传', type === 'img' ? '图片' : '视频', ':', src)
|
||||||
filePath: src,
|
|
||||||
name: 'file',
|
let a = uni.uploadFile({
|
||||||
header: header,
|
url: config.HTTP_REQUEST_URL + 'api/upload/image',
|
||||||
success: (res) => {
|
filePath: src,
|
||||||
|
name: 'file',
|
||||||
let data = JSON.parse(res.data)
|
header: header,
|
||||||
if (data.code == 1) {
|
success: (res) => {
|
||||||
resolve(data) // 返回线上地址
|
|
||||||
} else {
|
let data = JSON.parse(res.data)
|
||||||
uni.$u.toast(data.msg)
|
if (data.code == 1) {
|
||||||
return false
|
resolve(data) // 返回线上地址
|
||||||
}
|
} else {
|
||||||
},
|
uni.$u.toast(data.msg)
|
||||||
fail: (err) => {
|
return false
|
||||||
reject(err)
|
}
|
||||||
//console.log('upload-上传失败', err)
|
},
|
||||||
}
|
fail: (err) => {
|
||||||
});
|
reject(err)
|
||||||
})
|
//console.log('upload-上传失败', err)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export {
|
export {
|
||||||
uploads,
|
uploads,
|
||||||
Uploads
|
Uploads
|
||||||
}
|
}
|
|
@ -0,0 +1,167 @@
|
||||||
|
<template>
|
||||||
|
<uni-popup ref="showshare" type="bottom" @change="change">
|
||||||
|
<view class="uni-share">
|
||||||
|
<!-- <text class="uni-share-title">分享到</text> -->
|
||||||
|
<view class="uni-share-content">
|
||||||
|
<view v-for="(item, index) in bottomData" :key="index" @tap="shareItems(item.name)"
|
||||||
|
class="uni-share-content-box">
|
||||||
|
<view class="uni-share-content-image">
|
||||||
|
<image :src="item.icon" class="content-image" mode="widthFix" />
|
||||||
|
</view>
|
||||||
|
<text class="uni-share-content-text">{{ item.text }}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<text class="uni-share-btn" @click="cancel('share')">取消</text>
|
||||||
|
</view>
|
||||||
|
</uni-popup>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import uniPopup from '@/components/uni-popup/uni-popup.vue';
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
shareurl: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
uniPopup
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
bottomData: [{
|
||||||
|
text: '刷新',
|
||||||
|
icon: '/static/img/miniProgram.png',
|
||||||
|
name: 'miniProgram'
|
||||||
|
}
|
||||||
|
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// console.log(this.shareurl)
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
open() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs['showshare'].open()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
change(e) {
|
||||||
|
// console.log('是否打开:' + e.show)
|
||||||
|
},
|
||||||
|
shareItems(provider) {
|
||||||
|
|
||||||
|
|
||||||
|
switch (provider) {
|
||||||
|
|
||||||
|
case 'miniProgram':
|
||||||
|
|
||||||
|
uni.reLaunch({
|
||||||
|
url: this.shareurl,
|
||||||
|
success: (res) => {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs['showshare'].close
|
||||||
|
})
|
||||||
|
},
|
||||||
|
fail: (res) => {
|
||||||
|
console.log(res)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'more':
|
||||||
|
plus.share.sendWithSystem({
|
||||||
|
type: "web",
|
||||||
|
title: shareOPtions.shareTitle,
|
||||||
|
thumbs: [shareOPtions.shareImage],
|
||||||
|
href: shareOPtions.shareHref,
|
||||||
|
content: shareOPtions.summary,
|
||||||
|
})
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
cancel() {
|
||||||
|
this.$refs['showshare'].close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* 底部分享 */
|
||||||
|
.uni-share {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
/* #endif */
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-share-title {
|
||||||
|
line-height: 60rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
padding: 15rpx 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-share-content {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-share-content-box {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
width: 200rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-share-content-image {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 60rpx;
|
||||||
|
height: 60rpx;
|
||||||
|
overflow: hidden;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-image {
|
||||||
|
width: 60rpx;
|
||||||
|
height: 60rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-share-content-text {
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: #333;
|
||||||
|
padding-top: 5px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-share-btn {
|
||||||
|
height: 90rpx;
|
||||||
|
line-height: 90rpx;
|
||||||
|
font-size: 14px;
|
||||||
|
border-top-color: #f5f5f5;
|
||||||
|
border-top-width: 1px;
|
||||||
|
border-top-style: solid;
|
||||||
|
text-align: center;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,59 @@
|
||||||
|
### 使用方法
|
||||||
|
本组件依赖于 uni-popup 组件 跟 uni-transtion 组件
|
||||||
|
|
||||||
|
|
||||||
|
``` js
|
||||||
|
|
||||||
|
<own-share ref="share" :shareSummary="shareSummary" :shareImage="image"
|
||||||
|
:shareTitle="title" :shareHref="href"
|
||||||
|
:miniProgram="miniProgram" :webUrl="webUrl"
|
||||||
|
@shareSuccess="shareSuccess" @shareFail="shareFail"></own-share>
|
||||||
|
|
||||||
|
//先引入组件
|
||||||
|
import ownShare from '@/components/own-share/own-share.vue'
|
||||||
|
//然后使用
|
||||||
|
components:{
|
||||||
|
ownShare
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开分享
|
||||||
|
this.$nextTick(()=>{
|
||||||
|
this.$refs.share.open()
|
||||||
|
})
|
||||||
|
//关闭分享
|
||||||
|
this.$nextTick(()=>{
|
||||||
|
this.$refs.share.close()
|
||||||
|
})
|
||||||
|
//当然也可以用 easycom 直接使用
|
||||||
|
```
|
||||||
|
参数 <sub>分享只用于app</sub>
|
||||||
|
|
||||||
|
| 参数 | 类型 | 是否必填 |
|
||||||
|
| ---- | ---- | ---- |
|
||||||
|
| shareSummary | String | 只分享内容时必填 |
|
||||||
|
| shareImage | String | 只分享图片时必填 |
|
||||||
|
| shareTitle | String | 否 |
|
||||||
|
| shareHref | String | 分享图文时必填 |
|
||||||
|
| miniProgram | Object | 分享小程序必填 |
|
||||||
|
|
||||||
|
miniProgram参数 [详情](https://uniapp.dcloud.io/api/plugins/share?id=share)
|
||||||
|
|
||||||
|
| 参数 | 类型 | 是否必填 |
|
||||||
|
| ---- | ---- | ---- |
|
||||||
|
| id | String | 微信小程序原始id |
|
||||||
|
| path | String | 点击链接进入的页面 |
|
||||||
|
| type | Number | 微信小程序版本类型 |
|
||||||
|
| webUrl | String | 兼容低版本的网页链接 |
|
||||||
|
|
||||||
|
| 事件 | 说明 |
|
||||||
|
| ---- | ---- |
|
||||||
|
| shareSuccess | 成功回调 |
|
||||||
|
| shareFail | 失败回调 |
|
||||||
|
|
||||||
|
----
|
||||||
|
**图标链接写在组件里面请自行修改(请看示例项目)**
|
||||||
|
|
||||||
|
|
||||||
|
[了解更多uniapp分享,请参考官网](https://uniapp.dcloud.io/api/plugins/share)
|
||||||
|
|
||||||
|
|
|
@ -19,12 +19,13 @@
|
||||||
<!-- <view class="">
|
<!-- <view class="">
|
||||||
种植品牌: {{info.kind}}
|
种植品牌: {{info.kind}}
|
||||||
</view> -->
|
</view> -->
|
||||||
</view><view class="card-li">
|
</view>
|
||||||
|
<!-- <view class="card-li">
|
||||||
|
|
||||||
<view class="">
|
<view class="">
|
||||||
种植品种: {{info.kind}}
|
种植品种: {{info.kind}}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view> -->
|
||||||
<view class="card-li">
|
<view class="card-li">
|
||||||
<view class="">
|
<view class="">
|
||||||
土地面积: {{info.total_area}}亩
|
土地面积: {{info.total_area}}亩
|
||||||
|
@ -33,22 +34,20 @@
|
||||||
种子品牌: {{}}
|
种子品牌: {{}}
|
||||||
</view> -->
|
</view> -->
|
||||||
</view>
|
</view>
|
||||||
<view class="card-li">
|
|
||||||
<view class="">
|
|
||||||
<!-- 预计产量: {{}}亩 -->
|
|
||||||
</view>
|
|
||||||
<!-- <view class="">
|
|
||||||
已出售: ???
|
|
||||||
</view> -->
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="card-li">
|
<view class="card-li">
|
||||||
<view class="">
|
<view class="">
|
||||||
播种时间: {{info.create_time}}
|
土地负责人: {{info.master_name}}
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
|
<view class="card-li">
|
||||||
|
<view class="">
|
||||||
|
土地负责人: {{info.master_phone}}
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
@ -63,9 +62,9 @@
|
||||||
info: Object,
|
info: Object,
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const perviewFn = (url) => {
|
const perviewFn = (url) => {
|
||||||
|
|
||||||
uni.previewImage({
|
uni.previewImage({
|
||||||
urls: [url]
|
urls: [url]
|
||||||
})
|
})
|
||||||
|
|
|
@ -0,0 +1,134 @@
|
||||||
|
<template>
|
||||||
|
<view class="">
|
||||||
|
<view class="contentgb">
|
||||||
|
<view class="iconfont icon-xiangzuo" v-if="isshow" style="margin-top: 10rpx;color: #fff;margin-left: 30rpx;"
|
||||||
|
@click="close">
|
||||||
|
</view>
|
||||||
|
<view class="name" v-if="isshow">
|
||||||
|
{{name}}
|
||||||
|
</view>
|
||||||
|
<view class="return_top">
|
||||||
|
<view class="z-bootm-img1" @click="close()">
|
||||||
|
<image src="@/static/img/fb1.png" mode="aspectFit"></image>
|
||||||
|
</view>
|
||||||
|
<view class="z-bootm-l"></view>
|
||||||
|
<view class="z-bootm-img2" @click="returnbom()">
|
||||||
|
<image src="@/static/img/fb2.png" mode="aspectFit"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
<own-share ref="share" :shareurl="url"></own-share><strong></strong>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ownShare from '@/components/own-share/own-share.vue'
|
||||||
|
export default {
|
||||||
|
name: 'retuntop',
|
||||||
|
comments: {
|
||||||
|
ownShare
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
isshow: {
|
||||||
|
type: Boolean
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: String
|
||||||
|
},
|
||||||
|
url: {
|
||||||
|
type: String
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
close() {
|
||||||
|
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.share.open()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
returnbom() {
|
||||||
|
uni.sendHostEvent('closeApp', (ret) => {
|
||||||
|
//发送消息成功回调
|
||||||
|
//console.log('关闭应用' + JSON.stringify(ret));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.contentgb {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.name {
|
||||||
|
font-size: 35rpx;
|
||||||
|
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
margin-top: 5rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.return_top {
|
||||||
|
width: 166rpx;
|
||||||
|
height: 56rpx;
|
||||||
|
background: rgba(255, 255, 255, 0.6);
|
||||||
|
border-radius: 44rpx 44rpx;
|
||||||
|
margin-right: 30rpx;
|
||||||
|
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.z-bootm-img1 {
|
||||||
|
width: 41rpx;
|
||||||
|
height: 13rpx;
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
top: 5rpx;
|
||||||
|
left: 25rpx;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.z-bootm-l {
|
||||||
|
width: 1px;
|
||||||
|
height: 32rpx;
|
||||||
|
background: rgba(0, 0, 0, 0.2);
|
||||||
|
margin: auto 0;
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
top: 10rpx;
|
||||||
|
left: 85rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.z-bootm-img2 {
|
||||||
|
width: 38rpx;
|
||||||
|
height: 34rpx;
|
||||||
|
margin-top: -15rpx;
|
||||||
|
margin-left: -15rpx;
|
||||||
|
position: absolute;
|
||||||
|
right: 25rpx;
|
||||||
|
top: 25rpx;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,264 @@
|
||||||
|
<template>
|
||||||
|
<view v-if="showPopup" class="uni-popup" @touchmove.stop.prevent="clear">
|
||||||
|
<uni-transition :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'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PopUp 弹出层
|
||||||
|
* @description 弹出层组件,为了解决遮罩弹层的问题
|
||||||
|
* @tutorial https://ext.dcloud.net.cn/plugin?id=329
|
||||||
|
* @property {String} type = [top|center|bottom] 弹出方式
|
||||||
|
* @value top 顶部弹出
|
||||||
|
* @value center 中间弹出
|
||||||
|
* @value bottom 底部弹出
|
||||||
|
* @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:全屏弹出层
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
default: 'center'
|
||||||
|
},
|
||||||
|
// maskClick
|
||||||
|
maskClick: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
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,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
type: {
|
||||||
|
handler: function(newVal) {
|
||||||
|
switch (this.type) {
|
||||||
|
case 'top':
|
||||||
|
this.ani = ['slide-top']
|
||||||
|
this.transClass = {
|
||||||
|
'position': 'fixed',
|
||||||
|
'left': 0,
|
||||||
|
'right': 0,
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case 'bottom':
|
||||||
|
this.ani = ['slide-bottom']
|
||||||
|
this.transClass = {
|
||||||
|
'position': 'fixed',
|
||||||
|
'left': 0,
|
||||||
|
'right': 0,
|
||||||
|
'bottom': 0
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case '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'
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
},
|
||||||
|
immediate: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
if (this.animation) {
|
||||||
|
this.duration = 300
|
||||||
|
} else {
|
||||||
|
this.duration = 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
clear(e) {
|
||||||
|
// TODO nvue 取消冒泡
|
||||||
|
e.stopPropagation()
|
||||||
|
},
|
||||||
|
open() {
|
||||||
|
this.showPopup = true
|
||||||
|
this.$nextTick(() => {
|
||||||
|
clearTimeout(this.timer)
|
||||||
|
this.timer = setTimeout(() => {
|
||||||
|
this.showTrans = true
|
||||||
|
}, 50);
|
||||||
|
})
|
||||||
|
this.$emit('change', {
|
||||||
|
show: true
|
||||||
|
})
|
||||||
|
},
|
||||||
|
close(type) {
|
||||||
|
this.showTrans = false
|
||||||
|
this.$nextTick(() => {
|
||||||
|
clearTimeout(this.timer)
|
||||||
|
this.timer = setTimeout(() => {
|
||||||
|
this.$emit('change', {
|
||||||
|
show: false
|
||||||
|
})
|
||||||
|
this.showPopup = false
|
||||||
|
}, 300)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onTap() {
|
||||||
|
if (!this.maskClick) return
|
||||||
|
this.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
.uni-popup {
|
||||||
|
position: fixed;
|
||||||
|
/* #ifdef H5 */
|
||||||
|
top: var(--window-top);
|
||||||
|
/* #endif */
|
||||||
|
/* #ifndef H5 */
|
||||||
|
top: 0;
|
||||||
|
/* #endif */
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
z-index: 99;
|
||||||
|
/* #endif */
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup__mask {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
background-color: rgba(0, 0, 0, 0.4);
|
||||||
|
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 {
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
transform: translateY(-500px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom {
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
transform: translateY(500px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.center {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
/* #endif */
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
transform: scale(1.2);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup__wrapper-box {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: block;
|
||||||
|
/* #endif */
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.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>
|
|
@ -0,0 +1,278 @@
|
||||||
|
<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() {
|
||||||
|
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) {
|
||||||
|
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]} `
|
||||||
|
}
|
||||||
|
}
|
||||||
|
clearTimeout(this.timer)
|
||||||
|
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 scoped>
|
||||||
|
.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>
|
211
manifest.json
211
manifest.json
|
@ -1,101 +1,112 @@
|
||||||
{
|
{
|
||||||
"name" : "种植溯源",
|
"name": "种植溯源",
|
||||||
"appid" : "__UNI__D087881",
|
"appid": "__UNI__D087881",
|
||||||
"description" : "",
|
"description": "",
|
||||||
"versionName" : "1.0.1",
|
"versionName": "1.0.1",
|
||||||
"versionCode" : "100",
|
"versionCode": "100",
|
||||||
"transformPx" : false,
|
"transformPx": false,
|
||||||
/* 5+App特有相关 */
|
/* 5+App特有相关 */
|
||||||
"app-plus" : {
|
"app-plus": {
|
||||||
"usingComponents" : true,
|
"usingComponents": true,
|
||||||
"nvueStyleCompiler" : "uni-app",
|
"nvueStyleCompiler": "uni-app",
|
||||||
"compilerVersion" : 3,
|
"compilerVersion": 3,
|
||||||
"screenOrientation":["portrait-primary","portrait-secondary","landscape-primary","landscape-secondary"],
|
"screenOrientation": [
|
||||||
"splashscreen" : {
|
"portrait-primary",
|
||||||
"alwaysShowBeforeRender" : true,
|
"portrait-secondary",
|
||||||
"waiting" : true,
|
"landscape-primary",
|
||||||
"autoclose" : true,
|
"landscape-secondary"
|
||||||
"delay" : 0
|
],
|
||||||
},
|
"splashscreen": {
|
||||||
/* 模块配置 */
|
"alwaysShowBeforeRender": true,
|
||||||
"modules" : {
|
"waiting": true,
|
||||||
"Geolocation" : {},
|
"autoclose": true,
|
||||||
"Maps" : {},
|
"delay": 0
|
||||||
"LivePusher" : {},
|
},
|
||||||
"VideoPlayer" : {},
|
/* 模块配置 */
|
||||||
"Barcode" : {},
|
"modules": {
|
||||||
"Camera" : {}
|
"Geolocation": {},
|
||||||
},
|
"Maps": {},
|
||||||
/* 应用发布信息 */
|
"LivePusher": {},
|
||||||
"distribute" : {
|
"VideoPlayer": {},
|
||||||
/* android打包配置 */
|
"Barcode": {},
|
||||||
"android" : {
|
"Camera": {},
|
||||||
"permissions" : [
|
"UniMP": {
|
||||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
"description": "uni小程序"
|
||||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
}
|
||||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
},
|
||||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
/* 应用发布信息 */
|
||||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
"distribute": {
|
||||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
/* android打包配置 */
|
||||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
"android": {
|
||||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
"permissions": [
|
||||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
|
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||||
],
|
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||||
"minSdkVersion" : 21
|
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||||
},
|
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||||
/* ios打包配置 */
|
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||||
"ios" : {
|
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
|
||||||
"dSYMs" : false
|
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||||
},
|
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||||
/* SDK配置 */
|
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||||
"sdkConfigs" : {
|
],
|
||||||
"ad" : {},
|
"minSdkVersion": 21
|
||||||
"geolocation" : {
|
},
|
||||||
"amap" : {
|
/* ios打包配置 */
|
||||||
"name" : "amapC2GgorTaY",
|
"ios": {
|
||||||
"__platform__" : [ "android" ],
|
"dSYMs": false
|
||||||
"appkey_ios" : "b0c21bc6b220aa882bad8ffb6bce8829",
|
},
|
||||||
"appkey_android" : "b0c21bc6b220aa882bad8ffb6bce8829"
|
/* SDK配置 */
|
||||||
}
|
"sdkConfigs": {
|
||||||
},
|
"ad": {},
|
||||||
"maps" : {
|
"geolocation": {
|
||||||
"amap" : {
|
"amap": {
|
||||||
"name" : "amapC2GgorTaY",
|
"name": "amap_18982406440DFVLElaO",
|
||||||
"appkey_ios" : "b0c21bc6b220aa882bad8ffb6bce8829",
|
"__platform__": ["android"],
|
||||||
"appkey_android" : "b0c21bc6b220aa882bad8ffb6bce8829"
|
"appkey_ios": "4e6789b864fe1a2d76b98e38158f20f2",
|
||||||
}
|
"appkey_android": "a230d943475443eb29fc3871fbef8605"
|
||||||
}
|
},
|
||||||
}
|
"system": {
|
||||||
}
|
"__platform__": ["ios", "android"]
|
||||||
},
|
}
|
||||||
/* 快应用特有相关 */
|
},
|
||||||
"quickapp" : {},
|
"maps": {
|
||||||
/* 小程序特有相关 */
|
"amap": {
|
||||||
"mp-weixin" : {
|
"name": "4e6789b864fe1a2d76b98e38158f20f2",
|
||||||
"appid" : "",
|
"appkey_ios": "a230d943475443eb29fc3871fbef8605",
|
||||||
"setting" : {
|
"appkey_android": "a230d943475443eb29fc3871fbef8605"
|
||||||
"urlCheck" : false
|
}
|
||||||
},
|
}
|
||||||
"usingComponents" : true
|
}
|
||||||
},
|
}
|
||||||
"mp-alipay" : {
|
},
|
||||||
"usingComponents" : true
|
/* 快应用特有相关 */
|
||||||
},
|
"quickapp": {},
|
||||||
"mp-baidu" : {
|
/* 小程序特有相关 */
|
||||||
"usingComponents" : true
|
"mp-weixin": {
|
||||||
},
|
"appid": "",
|
||||||
"mp-toutiao" : {
|
"setting": {
|
||||||
"usingComponents" : true
|
"urlCheck": false
|
||||||
},
|
},
|
||||||
"uniStatistics" : {
|
"usingComponents": true
|
||||||
"enable" : false
|
},
|
||||||
},
|
"mp-alipay": {
|
||||||
"vueVersion" : "3"
|
"usingComponents": true
|
||||||
}
|
},
|
||||||
|
"mp-baidu": {
|
||||||
|
"usingComponents": true
|
||||||
|
},
|
||||||
|
"mp-toutiao": {
|
||||||
|
"usingComponents": true
|
||||||
|
},
|
||||||
|
"uniStatistics": {
|
||||||
|
"enable": false
|
||||||
|
},
|
||||||
|
"vueVersion": "3"
|
||||||
|
}
|
|
@ -1,6 +1,4 @@
|
||||||
<template>
|
<template>
|
||||||
|
|
||||||
|
|
||||||
<view class="box">
|
<view class="box">
|
||||||
<view class="content">
|
<view class="content">
|
||||||
<view class="tit">
|
<view class="tit">
|
||||||
|
@ -18,7 +16,7 @@
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="yanzm" v-if="num==0">
|
<view class="yanzm" v-if="num==0">
|
||||||
<u-input type="password" shape='circle'
|
<u-input type="number" shape='circle'
|
||||||
customStyle="background:#F5F5F5;height:80rpx;padding-left:40rpx;border:none;width:120rpx;"
|
customStyle="background:#F5F5F5;height:80rpx;padding-left:40rpx;border:none;width:120rpx;"
|
||||||
placeholder="请输入验证码" border="surround" v-model="formData.code"></u-input>
|
placeholder="请输入验证码" border="surround" v-model="formData.code"></u-input>
|
||||||
|
|
||||||
|
@ -27,9 +25,14 @@
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
<view class="" v-if="num==1">
|
<view class="" v-if="num==1">
|
||||||
<u-input type="password" shape='circle'
|
<u-input :password="!pwdShow" shape='circle'
|
||||||
customStyle="background:#F5F5F5;height:80rpx;;padding-left:40rpx;border:none"
|
customStyle="background:#F5F5F5;height:80rpx;;padding-left:40rpx;border:none"
|
||||||
placeholder="请输入密码" border="surround" v-model="formData.password"></u-input>
|
placeholder="请输入密码" border="surround" v-model="formData.password" >
|
||||||
|
<template #suffix>
|
||||||
|
<u-icon :name="pwdShow?'eye-off':'eye-fill'"
|
||||||
|
@click="pwdShow=!pwdShow" size="25"></u-icon>
|
||||||
|
</template>
|
||||||
|
</u-input>
|
||||||
</view>
|
</view>
|
||||||
<view class="resgiter" @click="resgiter">
|
<view class="resgiter" @click="resgiter">
|
||||||
用户注册
|
用户注册
|
||||||
|
@ -49,7 +52,6 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import {
|
import {
|
||||||
login,
|
login,
|
||||||
|
|
||||||
xinregister
|
xinregister
|
||||||
} from '@/api/api.js';
|
} from '@/api/api.js';
|
||||||
import {
|
import {
|
||||||
|
@ -65,6 +67,7 @@
|
||||||
|
|
||||||
const num = ref(0)
|
const num = ref(0)
|
||||||
const isshow = ref(false)
|
const isshow = ref(false)
|
||||||
|
const pwdShow = ref(false)
|
||||||
const tips = ref('获取验证码')
|
const tips = ref('获取验证码')
|
||||||
const countDown = ref(60); // 倒计时秒数
|
const countDown = ref(60); // 倒计时秒数
|
||||||
const formData = reactive({
|
const formData = reactive({
|
||||||
|
@ -89,26 +92,37 @@
|
||||||
|
|
||||||
//判断安卓 ios
|
//判断安卓 ios
|
||||||
const checkUserAgent = () => {
|
const checkUserAgent = () => {
|
||||||
|
|
||||||
uni.getSystemInfo({
|
uni.getSystemInfo({
|
||||||
success: function(res) {
|
success: (res) => {
|
||||||
const platform = res.platform.toLowerCase();
|
const platform = res.platform.toLowerCase();
|
||||||
if (platform === 'android') {
|
|
||||||
formData.terminal = 6
|
if (platform === 'ios') {
|
||||||
} else if (platform === 'ios') {
|
formData.terminal = 5;
|
||||||
formData.terminal = 5
|
} else if (platform === 'android') {
|
||||||
} else {
|
formData.terminal = 6;
|
||||||
formData.terminal = 6
|
} else if (platform === 'windows') {
|
||||||
console.log('当前设备不是 Android 也不是 iOS');
|
formData.terminal = 4;
|
||||||
|
} else if (platform === 'mac') {
|
||||||
|
formData.terminal = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
|
// #ifdef H5
|
||||||
|
formData.terminal = 3;
|
||||||
|
// #endif
|
||||||
|
// #ifdef MP-WEIXIN
|
||||||
|
formData.terminal = 1;
|
||||||
|
// #endif
|
||||||
|
|
||||||
};
|
};
|
||||||
//倒计时
|
//倒计时
|
||||||
const startCountDown = () => {
|
const startCountDown = () => {
|
||||||
const timer = setInterval(() => {
|
const timer = setInterval(() => {
|
||||||
countDown.value -= 1; // 更新倒计时秒数
|
countDown.value -= 1; // 更新倒计时秒数
|
||||||
isshow.value = true
|
|
||||||
if (countDown.value === 0) {
|
if (countDown.value === 0) {
|
||||||
clearInterval(timer); // 倒计时结束,清除定时器
|
clearInterval(timer); // 倒计时结束,清除定时器
|
||||||
isshow.value = false
|
isshow.value = false
|
||||||
|
@ -119,13 +133,15 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
const getCode = () => {
|
const getCode = () => {
|
||||||
|
|
||||||
let data = {
|
let data = {
|
||||||
phone: formData.account,
|
phone: formData.account,
|
||||||
scene: 101
|
scene: 101
|
||||||
}
|
}
|
||||||
xinregister(data).then((res) => {
|
xinregister(data).then((res) => {
|
||||||
console.log(res)
|
|
||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
|
isshow.value = true
|
||||||
uni.$u.toast('验证码已发送');
|
uni.$u.toast('验证码已发送');
|
||||||
// 通知验证码组件内部开始倒计时
|
// 通知验证码组件内部开始倒计时
|
||||||
startCountDown()
|
startCountDown()
|
||||||
|
@ -152,11 +168,13 @@
|
||||||
// console.log(formData)
|
// console.log(formData)
|
||||||
if (!formData.code && formData.scene == 2) return uni.$u.toast('验证码不能为空');
|
if (!formData.code && formData.scene == 2) return uni.$u.toast('验证码不能为空');
|
||||||
login(formData).then((res) => {
|
login(formData).then((res) => {
|
||||||
|
|
||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
|
uni.showLoading({
|
||||||
|
title: '登陆中'
|
||||||
|
})
|
||||||
store.commit('saveUserInfo', res.data)
|
store.commit('saveUserInfo', res.data)
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
uni.hideLoading()
|
||||||
uni.reLaunch({
|
uni.reLaunch({
|
||||||
url: '/pages/index/massif'
|
url: '/pages/index/massif'
|
||||||
})
|
})
|
||||||
|
@ -187,8 +205,6 @@
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
checkUserAgent()
|
checkUserAgent()
|
||||||
|
|
||||||
|
|
||||||
formData.scene = 2
|
formData.scene = 2
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
|
@ -19,14 +19,26 @@
|
||||||
|
|
||||||
|
|
||||||
<view class="" style="margin: 30rpx 0;">
|
<view class="" style="margin: 30rpx 0;">
|
||||||
<u-input type="password" shape='circle'
|
<u-input :password="!pwdShow" shape='circle'
|
||||||
customStyle="background:#F5F5F5;height:80rpx;;padding-left:40rpx;border:none"
|
customStyle="background:#F5F5F5;height:80rpx;;padding-left:40rpx;border:none"
|
||||||
placeholder="请输入密码" border="surround" v-model="formData.password"></u-input>
|
placeholder="请输入密码" border="surround" v-model="formData.password">
|
||||||
|
<template #suffix>
|
||||||
|
<u-icon :name="pwdShow?'eye-off':'eye-fill'" size="25"
|
||||||
|
@click="pwdShow=!pwdShow"></u-icon>
|
||||||
|
</template>
|
||||||
|
</u-input>
|
||||||
</view>
|
</view>
|
||||||
<view class="">
|
<view class="">
|
||||||
<u-input type="password" shape='circle'
|
<u-input :password="!pwdShow1" shape='circle'
|
||||||
customStyle="background:#F5F5F5;height:80rpx;;padding-left:40rpx;border:none"
|
customStyle="background:#F5F5F5;height:80rpx;;padding-left:40rpx;border:none"
|
||||||
placeholder="请确认密码" border="surround" v-model="formData.password_confirm"></u-input>
|
placeholder="请确认密码" border="surround" v-model="formData.password_confirm">
|
||||||
|
<template #suffix>
|
||||||
|
<u-icon :name="pwdShow1?'eye-off':'eye-fill'" size="25"
|
||||||
|
@click="pwdShow1=!pwdShow1"></u-icon>
|
||||||
|
</template>
|
||||||
|
</u-input>
|
||||||
|
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="sub-btn">
|
<view class="sub-btn">
|
||||||
|
@ -49,7 +61,8 @@
|
||||||
reactive,
|
reactive,
|
||||||
ref
|
ref
|
||||||
} from 'vue';
|
} from 'vue';
|
||||||
|
const pwdShow = ref(false)
|
||||||
|
const pwdShow1 = ref(false)
|
||||||
const formData = reactive({
|
const formData = reactive({
|
||||||
mobile: "",
|
mobile: "",
|
||||||
password: "",
|
password: "",
|
||||||
|
@ -64,8 +77,6 @@
|
||||||
|
|
||||||
const submitFn = () => {
|
const submitFn = () => {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!formData.mobile) return uni.$u.toast('账号不能为空');
|
if (!formData.mobile) return uni.$u.toast('账号不能为空');
|
||||||
if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(formData.mobile)) return uni.$u.toast(
|
if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(formData.mobile)) return uni.$u.toast(
|
||||||
'请输入正确的手机号码'
|
'请输入正确的手机号码'
|
||||||
|
@ -75,14 +86,14 @@
|
||||||
|
|
||||||
if (formData.password !== formData.password_confirm) return uni.$u.toast('密码与确认密码不一致');
|
if (formData.password !== formData.password_confirm) return uni.$u.toast('密码与确认密码不一致');
|
||||||
|
|
||||||
|
|
||||||
logregister(formData).then((res) => {
|
logregister(formData).then((res) => {
|
||||||
|
|
||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
uni.$u.toast('注册成功');
|
|
||||||
uni.navigateBack({
|
uni.navigateBack({
|
||||||
delta: 1
|
delta: 1
|
||||||
})
|
})
|
||||||
|
uni.$u.toast('注册成功');
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -7,35 +7,32 @@
|
||||||
<u-form-item label="简介" prop="intro"><u-input v-model="data.formData.intro" /></u-form-item> -->
|
<u-form-item label="简介" prop="intro"><u-input v-model="data.formData.intro" /></u-form-item> -->
|
||||||
|
|
||||||
<u-form-item label="土地名称" prop="title" borderBottom ref='item1' required>
|
<u-form-item label="土地名称" prop="title" borderBottom ref='item1' required>
|
||||||
<up-input placeholder="请输入土地名称" border="surround" v-model="data.formData.title" ></up-input>
|
<up-input placeholder="请输入土地名称" border="surround" v-model="data.formData.title"></up-input>
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
<u-form-item label="土地面积" prop="area" borderBottom required>
|
<u-form-item label="土地面积" prop="area" borderBottom required>
|
||||||
<up-input placeholder="请输入土地面积" border="surround" v-model="data.formData.area"></up-input>
|
<up-input placeholder="请输入土地面积" border="surround" v-model="data.formData.area"></up-input>
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
<u-form-item label="所在省份" prop="province_code" borderBottom required @click="isshow1">
|
<u-form-item label="所在省份" prop="province_code" borderBottom required @click="isshow1">
|
||||||
<up-input placeholder="请选择所在省份" border="surround" v-model="province_name" readonly
|
<up-input placeholder="请选择所在省份" border="surround" v-model="province_name" readonly
|
||||||
style="pointer-events: none;"></up-input>
|
style="pointer-events: none;"></up-input>
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
<u-form-item label="所在城市" prop="city_code" borderBottom required @click="isshow2">
|
<u-form-item label="所在城市" prop="city_code" borderBottom required @click="isshow2">
|
||||||
<up-input placeholder="请选择所在城市" border="surround" v-model="city_name"
|
<up-input placeholder="请选择所在城市" border="surround" v-model="city_name" readonly
|
||||||
readonly style="pointer-events: none;"></up-input>
|
style="pointer-events: none;"></up-input>
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
<u-form-item label="所在区县" prop="county_code" borderBottom required @click="isshow3">
|
<u-form-item label="所在区县" prop="county_code" borderBottom required @click="isshow3">
|
||||||
<up-input placeholder="请选择所在区县" border="surround" v-model="county_name"
|
<up-input placeholder="请选择所在区县" border="surround" v-model="county_name" readonly
|
||||||
readonly style="pointer-events: none;"></up-input>
|
style="pointer-events: none;"></up-input>
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
<u-form-item label="所在镇街" prop="town_code" borderBottom required @click="isshow4">
|
<u-form-item label="土地详细地址" prop="town_code" borderBottom required>
|
||||||
<up-input placeholder="请选择所在镇街" border="surround" v-model="town_name"
|
<u-input placeholder="请输入土地详细地址" border="surround" v-model="data.formData.address">
|
||||||
readonly style="pointer-events: none;"></up-input>
|
|
||||||
</u-form-item>
|
<template #suffix>
|
||||||
<u-form-item label="所在乡村" prop="village_code" borderBottom required @click="isshow5">
|
<u-icon name="map-fill" size="28" @click="location"></u-icon>
|
||||||
<up-input placeholder="请选择所在乡村" border="surround" v-model="village_name"
|
</template>
|
||||||
readonly style="pointer-events: none;"></up-input>
|
</u-input>
|
||||||
</u-form-item>
|
|
||||||
<u-form-item label="所在小队" prop="group_code" borderBottom required @click="isshow6">
|
|
||||||
<up-input placeholder="请选择所在小队" border="surround" v-model="group_name"
|
|
||||||
readonly style="pointer-events: none;"></up-input>
|
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
|
|
||||||
<u-form-item label="土地负责人" prop="master_name" borderBottom required>
|
<u-form-item label="土地负责人" prop="master_name" borderBottom required>
|
||||||
<up-input placeholder="请输入土地负责人名称" border="surround" v-model="data.formData.master_name"></up-input>
|
<up-input placeholder="请输入土地负责人名称" border="surround" v-model="data.formData.master_name"></up-input>
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
|
@ -132,9 +129,8 @@
|
||||||
province_code: '',
|
province_code: '',
|
||||||
city_code: '',
|
city_code: '',
|
||||||
county_code: '',
|
county_code: '',
|
||||||
town_code: '',
|
address: '',
|
||||||
village_code: '',
|
|
||||||
group_code: '',
|
|
||||||
master_name: '',
|
master_name: '',
|
||||||
master_phone: '',
|
master_phone: '',
|
||||||
pic: ['https://img0.baidu.com/it/u=1717510975,3258230326&fm=253&fmt=auto?w=120&h=80',
|
pic: ['https://img0.baidu.com/it/u=1717510975,3258230326&fm=253&fmt=auto?w=120&h=80',
|
||||||
|
@ -183,23 +179,11 @@
|
||||||
message: '请选择所在区县',
|
message: '请选择所在区县',
|
||||||
trigger: 'change'
|
trigger: 'change'
|
||||||
}],
|
}],
|
||||||
town_code: [{
|
address: [{
|
||||||
type: 'string',
|
type: 'string',
|
||||||
required: true,
|
required: true,
|
||||||
message: '请选择所在镇街',
|
message: '请输入土地详细地址',
|
||||||
trigger: 'change'
|
trigger: ['blur', 'change']
|
||||||
}],
|
|
||||||
village_code: [{
|
|
||||||
type: 'string',
|
|
||||||
required: true,
|
|
||||||
message: '请选择所在乡村',
|
|
||||||
trigger: 'change'
|
|
||||||
}],
|
|
||||||
group_code: [{
|
|
||||||
type: 'string',
|
|
||||||
required: true,
|
|
||||||
message: '请选择小队',
|
|
||||||
trigger: 'change'
|
|
||||||
}],
|
}],
|
||||||
master_name: [{
|
master_name: [{
|
||||||
type: 'string',
|
type: 'string',
|
||||||
|
@ -230,21 +214,15 @@
|
||||||
const province_name = ref(null)
|
const province_name = ref(null)
|
||||||
const city_name = ref(null)
|
const city_name = ref(null)
|
||||||
const county_name = ref(null)
|
const county_name = ref(null)
|
||||||
const town_name = ref(null)
|
|
||||||
const village_name = ref(null)
|
|
||||||
const group_name = ref(null)
|
|
||||||
const show = ref(false)
|
const show = ref(false)
|
||||||
const show1 = ref(false)
|
const show1 = ref(false)
|
||||||
const show2 = ref(false)
|
const show2 = ref(false)
|
||||||
const show3 = ref(false)
|
|
||||||
const show4 = ref(false)
|
|
||||||
const show5 = ref(false)
|
|
||||||
const columns = reactive([])
|
const columns = reactive([])
|
||||||
const columns1 = reactive([])
|
const columns1 = reactive([])
|
||||||
const columns2 = reactive([])
|
const columns2 = reactive([])
|
||||||
const columns3 = reactive([])
|
|
||||||
const columns4 = reactive([])
|
|
||||||
const columns5 = reactive([])
|
|
||||||
const provincen = () => {
|
const provincen = () => {
|
||||||
province().then((res) => {
|
province().then((res) => {
|
||||||
columns.splice(0, columns.length, ...res.data.map((step, index) => {
|
columns.splice(0, columns.length, ...res.data.map((step, index) => {
|
||||||
|
@ -258,7 +236,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
const cityn = (id) => {
|
const cityn = (id) => {
|
||||||
|
|
||||||
city({
|
city({
|
||||||
province_code: id
|
province_code: id
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
|
@ -292,20 +270,6 @@
|
||||||
pic.splice(i, 1);
|
pic.splice(i, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
const townsn = (id) => {
|
|
||||||
towns({
|
|
||||||
county_code: id
|
|
||||||
}).then((res) => {
|
|
||||||
columns3.splice(0, columns.length, ...res.data.map((step, index) => {
|
|
||||||
return {
|
|
||||||
name: step.town_name,
|
|
||||||
id: step.town_code,
|
|
||||||
|
|
||||||
};
|
|
||||||
}));
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//图片上传
|
//图片上传
|
||||||
const updateImgFn = async () => {
|
const updateImgFn = async () => {
|
||||||
|
|
||||||
|
@ -315,7 +279,7 @@
|
||||||
sourceType: ['album', 'camera'],
|
sourceType: ['album', 'camera'],
|
||||||
success: (res) => {
|
success: (res) => {
|
||||||
Uploads(res.tempFilePaths[0], 'img').then(res => {
|
Uploads(res.tempFilePaths[0], 'img').then(res => {
|
||||||
console.log(res)
|
// console.log(res)
|
||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
pic.push(res.data.url)
|
pic.push(res.data.url)
|
||||||
console.log(data.formData)
|
console.log(data.formData)
|
||||||
|
@ -340,32 +304,9 @@
|
||||||
// let res = await Uploads()
|
// let res = await Uploads()
|
||||||
// data.formData.pic = res.data.image
|
// data.formData.pic = res.data.image
|
||||||
}
|
}
|
||||||
const villagesn = (id) => {
|
|
||||||
villages({
|
|
||||||
town_code: id
|
|
||||||
}).then((res) => {
|
|
||||||
columns4.splice(0, columns.length, ...res.data.map((step, index) => {
|
|
||||||
return {
|
|
||||||
name: step.village_name,
|
|
||||||
id: step.village_code,
|
|
||||||
|
|
||||||
};
|
|
||||||
}));
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const groupsn = () => {
|
|
||||||
groups().then((res) => {
|
|
||||||
columns5.splice(0, columns.length, ...res.data.map((step, index) => {
|
|
||||||
return {
|
|
||||||
name: step.group_name,
|
|
||||||
id: step.group_code,
|
|
||||||
};
|
|
||||||
}));
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 地址 省 市 街道 乡村 小队
|
// 地址 省 市 街道 乡村 小队
|
||||||
|
|
||||||
const isshow1 = () => {
|
const isshow1 = () => {
|
||||||
|
@ -390,7 +331,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
const leavaType1 = (e) => {
|
const leavaType1 = (e) => {
|
||||||
|
|
||||||
province_name.value = e.name
|
province_name.value = e.name
|
||||||
data.formData.province_code = e.id
|
data.formData.province_code = e.id
|
||||||
cityn(e.id)
|
cityn(e.id)
|
||||||
|
@ -405,23 +346,36 @@
|
||||||
const leavaType3 = (e) => {
|
const leavaType3 = (e) => {
|
||||||
county_name.value = e.name
|
county_name.value = e.name
|
||||||
data.formData.county_code = e.id
|
data.formData.county_code = e.id
|
||||||
townsn(e.id)
|
|
||||||
}
|
|
||||||
const leavaType4 = (e) => {
|
|
||||||
town_name.value = e.name
|
|
||||||
data.formData.town_code = e.id
|
|
||||||
villagesn(e.id)
|
|
||||||
}
|
|
||||||
const leavaType5 = (e) => {
|
|
||||||
village_name.value = e.name
|
|
||||||
data.formData.village_code = e.id
|
|
||||||
|
|
||||||
}
|
}
|
||||||
const leavaType6 = (e) => {
|
const location = () => {
|
||||||
|
|
||||||
group_name.value = e.name
|
|
||||||
data.formData.group_code = e.id.toString()
|
|
||||||
|
|
||||||
|
//#ifdef APP
|
||||||
|
uni.showLoading({
|
||||||
|
title: '获取位置中'
|
||||||
|
})
|
||||||
|
uni.getLocation({
|
||||||
|
type: 'gcj02',
|
||||||
|
geocode: true,
|
||||||
|
isHighAccuracy: true,
|
||||||
|
success: async (res) => {
|
||||||
|
// console.log(res)
|
||||||
|
|
||||||
|
data.formData.address = res.address.city + res.address.district + res.address.street + res
|
||||||
|
.address.streetNum + res.address.poiName
|
||||||
|
|
||||||
|
uni.hideLoading();
|
||||||
|
},
|
||||||
|
fail: (err) => {
|
||||||
|
uni.hideLoading();
|
||||||
|
console.log(err)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
//#ifdef H5
|
||||||
|
uni.$u.toast('暂不支持')
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -438,15 +392,15 @@
|
||||||
try {
|
try {
|
||||||
const valid = await form1.value.validate();
|
const valid = await form1.value.validate();
|
||||||
if (valid) {
|
if (valid) {
|
||||||
console.log('表单通过');
|
console.log('表单通过', data.formData);
|
||||||
|
if (pic.length == 0) {
|
||||||
data.formData.pic = JSON.stringify(pic)
|
|
||||||
if (data.formData.pic.length == 0) {
|
|
||||||
|
|
||||||
uni.$u.toast('请上传图片')
|
uni.$u.toast('请上传图片')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
data.formData.pic = JSON.stringify(pic)
|
||||||
|
|
||||||
|
|
||||||
// 表单验证通过,执行提交操作
|
// 表单验证通过,执行提交操作
|
||||||
addland(data.formData).then((res) => {
|
addland(data.formData).then((res) => {
|
||||||
console.log(res)
|
console.log(res)
|
||||||
|
@ -471,7 +425,7 @@
|
||||||
onLoad((options) => {
|
onLoad((options) => {
|
||||||
|
|
||||||
provincen()
|
provincen()
|
||||||
groupsn()
|
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -6,28 +6,28 @@
|
||||||
<u-form-item label="灌溉方式" prop="type" borderBottom required @click="showggai">
|
<u-form-item label="灌溉方式" prop="type" borderBottom required @click="showggai">
|
||||||
<!-- <uni-data-select v-model="formData.type" :disabled="mode=='detail'"
|
<!-- <uni-data-select v-model="formData.type" :disabled="mode=='detail'"
|
||||||
:localdata="range"></uni-data-select> -->
|
:localdata="range"></uni-data-select> -->
|
||||||
<up-input placeholder="请选择灌溉方式" readonly border="surround"
|
<up-input placeholder="请选择灌溉方式" readonly border="surround" v-model="formDatatype"
|
||||||
v-model="formDatatype" style="pointer-events: none;"></up-input>
|
style="pointer-events: none;"></up-input>
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
|
|
||||||
<view class="" v-if="mode=='add'">
|
<view class="" v-if="mode=='add'">
|
||||||
<u-form-item label="开始日期" @click="openDate" prop="start_date" borderBottom required>
|
<u-form-item label="开始日期" @click="openDate" prop="start_date" borderBottom required>
|
||||||
<up-input placeholder="请选择日期" readonly border="surround"
|
<up-input placeholder="请选择日期" readonly border="surround" v-model="formData.start_date"
|
||||||
v-model="formData.start_date" style="pointer-events: none;"></up-input>
|
style="pointer-events: none;"></up-input>
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
<u-form-item label="结束日期" prop="end_date" @click="openDate1" borderBottom required>
|
<u-form-item label="结束日期" prop="end_date" @click="openDate1" borderBottom required>
|
||||||
<up-input placeholder="请选择日期" readonly border="surround"
|
<up-input placeholder="请选择日期" readonly border="surround" v-model="formData.end_date"
|
||||||
v-model="formData.end_date" style="pointer-events: none;"></up-input>
|
style="pointer-events: none;"></up-input>
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
</view>
|
</view>
|
||||||
<view class="" v-else>
|
<view class="" v-else>
|
||||||
<u-form-item label="开始日期" prop="start_date" borderBottom required>
|
<u-form-item label="开始日期" prop="start_date" borderBottom required>
|
||||||
<up-input placeholder="请选择日期" readonly border="surround"
|
<up-input placeholder="请选择日期" readonly border="surround" v-model="formData.start_date"
|
||||||
v-model="formData.start_date" style="pointer-events: none;"></up-input>
|
style="pointer-events: none;"></up-input>
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
<u-form-item label="结束日期" prop="end_date" borderBottom required>
|
<u-form-item label="结束日期" prop="end_date" borderBottom required>
|
||||||
<up-input placeholder="请选择日期" readonly border="surround"
|
<up-input placeholder="请选择日期" readonly border="surround" v-model="formData.end_date"
|
||||||
v-model="formData.end_date" style="pointer-events: none;"></up-input>
|
style="pointer-events: none;"></up-input>
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
</view>
|
</view>
|
||||||
<u-form-item label="灌溉面积" prop="area" borderBottom required>
|
<u-form-item label="灌溉面积" prop="area" borderBottom required>
|
||||||
|
@ -49,7 +49,8 @@
|
||||||
<view class="">
|
<view class="">
|
||||||
<u-icon name="close" size="15" style="margin-left:120.85rpx;" @click="delimg(i)"
|
<u-icon name="close" size="15" style="margin-left:120.85rpx;" @click="delimg(i)"
|
||||||
v-show="mode=='add'"></u-icon>
|
v-show="mode=='add'"></u-icon>
|
||||||
<u-image :src="item" width="150.85rpx" height="150.85rpx" @click="perviewFn(item)" ></u-image>
|
<u-image :src="item" width="150.85rpx" height="150.85rpx"
|
||||||
|
@click="perviewFn(item)"></u-image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<u-form-item label="备注" prop="remark" borderBottom required>
|
<u-form-item label="备注" borderBottom >
|
||||||
<u--textarea v-model="data.formData.remark" :disabled="mode=='detail'"
|
<u--textarea v-model="data.formData.remark" :disabled="mode=='detail'"
|
||||||
placeholder="请输入内容"></u--textarea>
|
placeholder="请输入内容"></u--textarea>
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
|
@ -142,13 +142,8 @@
|
||||||
required: true,
|
required: true,
|
||||||
message: '请填写开始日期',
|
message: '请填写开始日期',
|
||||||
trigger: ['blur', 'change']
|
trigger: ['blur', 'change']
|
||||||
}],
|
|
||||||
remark: [{
|
|
||||||
type: 'string',
|
|
||||||
required: true,
|
|
||||||
message: '请填写备注信息',
|
|
||||||
trigger: ['blur', 'change']
|
|
||||||
}]
|
}]
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -198,12 +193,12 @@
|
||||||
if (valid) {
|
if (valid) {
|
||||||
data.formData.land_id = task_id.value
|
data.formData.land_id = task_id.value
|
||||||
console.log('表单通过');
|
console.log('表单通过');
|
||||||
data.formData.pic = JSON.stringify(pic)
|
if (pic.length == 0) {
|
||||||
if (data.formData.pic.length == 0) {
|
|
||||||
|
|
||||||
uni.$u.toast('请上传图片')
|
uni.$u.toast('请上传图片')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
data.formData.pic = JSON.stringify(pic)
|
||||||
|
|
||||||
// 表单验证通过,执行提交操作
|
// 表单验证通过,执行提交操作
|
||||||
addplant(data.formData).then((res) => {
|
addplant(data.formData).then((res) => {
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,24 @@
|
||||||
<template>
|
<template>
|
||||||
<view class="">
|
<view class="">
|
||||||
|
|
||||||
<view class="content">
|
<view class="content">
|
||||||
|
|
||||||
<view class="serch">
|
<view class="serch">
|
||||||
|
<!-- #ifdef APP-PLUS -->
|
||||||
|
<view class="head-img" style="top: var(--status-bar-height);">
|
||||||
|
<Myindex url='/pages/index/index'/>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- #endif -->
|
||||||
<u-search bgColor="white" :show-action="false" margin='0 30rpx' placeholder="搜索你的土地信息"
|
<u-search bgColor="white" :show-action="false" margin='0 30rpx' placeholder="搜索你的土地信息"
|
||||||
v-model="fomData.keyword" shape="round"></u-search>
|
v-model="fomData.keyword" shape="round"></u-search>
|
||||||
<u-button class="custom-style" @click="search">搜索</u-button>
|
<u-button class="custom-style" @click="search">搜索</u-button>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
<view class="card" v-for="(item,index) in datalist" :key="index" @click="navgo(item)">
|
|
||||||
|
|
||||||
|
<view class="card" v-for="(item,index) in datalist" :key="index" @click="navgo(item)"
|
||||||
|
style="margin-top: calc(var(--status-bar-height) + 40rpx);">
|
||||||
<view class="tit card-li">
|
<view class="tit card-li">
|
||||||
<view class="">
|
<view class="">
|
||||||
{{item.title}}
|
{{item.title}}
|
||||||
|
@ -35,7 +45,7 @@
|
||||||
</view>
|
</view>
|
||||||
<view class="card-li tit">
|
<view class="card-li tit">
|
||||||
<view class="" style="font-weight: normal;">
|
<view class="" style="font-weight: normal;">
|
||||||
地址: {{item.town_name}}{{item.village_name}}{{item.group_name}}
|
地址: {{item.address}}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
@ -71,10 +81,20 @@
|
||||||
reactive,
|
reactive,
|
||||||
onMounted
|
onMounted
|
||||||
} from "vue"
|
} from "vue"
|
||||||
|
import Myindex from '@/components/return/index.vue';
|
||||||
|
import store from "@/store/index.js"
|
||||||
import {
|
import {
|
||||||
landlist
|
landlist
|
||||||
} from '@/api/api.js'
|
} from '@/api/api.js'
|
||||||
|
onLoad(()=>{
|
||||||
|
// console.log(store.state.userInfo)
|
||||||
|
if (!store.state.userInfo) {
|
||||||
|
uni.redirectTo({
|
||||||
|
url:'/pages/Login/login'
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
onShow(() => {
|
onShow(() => {
|
||||||
list()
|
list()
|
||||||
})
|
})
|
||||||
|
@ -111,17 +131,19 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
const list = () => {
|
const list = () => {
|
||||||
|
datalist.splice(0)
|
||||||
fomData.page_no = 1
|
fomData.page_no = 1
|
||||||
getlist()
|
getlist()
|
||||||
}
|
}
|
||||||
const getlist = () => {
|
const getlist = () => {
|
||||||
landlist(fomData).then((res) => {
|
landlist(fomData).then((res) => {
|
||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
datalist.splice(0, datalist.length, ...res.data);
|
datalist.push(...res.data)
|
||||||
fomData.page_no += fomData.page_no
|
fomData.page_no = fomData.page_no + 1
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -142,9 +164,10 @@
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" >
|
<style lang="scss">
|
||||||
page {
|
page {
|
||||||
background-color: #EAF2EF;
|
background-color: #EAF2EF;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
|
@ -154,6 +177,17 @@
|
||||||
|
|
||||||
padding-top: 180rpx;
|
padding-top: 180rpx;
|
||||||
|
|
||||||
|
.head-img {
|
||||||
|
position: absolute;
|
||||||
|
display: flex;
|
||||||
|
top: 0;
|
||||||
|
right: 10rpx;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
.land {
|
.land {
|
||||||
width: 100rpx;
|
width: 100rpx;
|
||||||
height: 100rpx;
|
height: 100rpx;
|
||||||
|
@ -176,9 +210,10 @@
|
||||||
position: fixed;
|
position: fixed;
|
||||||
display: flex;
|
display: flex;
|
||||||
top: 0;
|
top: 0;
|
||||||
padding-top: 70rpx;
|
padding-top: calc(70rpx + var(--status-bar-height) + 20rpx);
|
||||||
padding-right: 20rpx;
|
padding-right: 20rpx;
|
||||||
|
|
||||||
|
|
||||||
.custom-style {
|
.custom-style {
|
||||||
color: #606266;
|
color: #606266;
|
||||||
width: 140rpx;
|
width: 140rpx;
|
||||||
|
@ -214,7 +249,7 @@
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
margin: 300rpx auto;
|
margin: 300rpx auto;
|
||||||
|
|
||||||
image {
|
image {
|
||||||
|
|
|
@ -1,221 +1,240 @@
|
||||||
<template>
|
<template>
|
||||||
<view class="" style="position: relative;">
|
<view class="" style="position: relative;">
|
||||||
<view class="top">
|
<view class="top">
|
||||||
|
|
||||||
<view class="" style="height:var(--status-bar-height) ;">
|
<view class="" style="height:var(--status-bar-height) ;">
|
||||||
</view>
|
</view>
|
||||||
<view class="nav">
|
<!-- #ifdef APP-PLUS -->
|
||||||
<view class="">
|
<view class="nav-con" style="justify-content: space-between;">
|
||||||
<u-icon name="scan" @click="scanFn" color="white" :size="30"></u-icon>
|
<!-- #endif -->
|
||||||
</view>
|
<!-- #ifdef H5 -->
|
||||||
<view class="" style="margin-left: 20rpx;">
|
<view class="nav-con" style="justify-content: flex-end;">
|
||||||
<u-icon name="coupon-fill" color="white" @click="showModal=true" :size="28"></u-icon>
|
<!-- #endif -->
|
||||||
</view>
|
|
||||||
<view class="" style="margin-left: 20rpx;">
|
|
||||||
<u-icon name="plus-circle" color="white" @click="navto('/pages/addLand/addLand')"
|
|
||||||
:size="28"></u-icon>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="">
|
|
||||||
<view class="" style="height:var(--status-bar-height) ;">
|
|
||||||
</view>
|
|
||||||
<view class="nav">
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="content" v-if="true">
|
<view class="nav">
|
||||||
<!-- 土地信息 -->
|
|
||||||
<view class="">
|
|
||||||
<view class="card" v-if="Object.keys(dataobj).length>0">
|
<view class="">
|
||||||
<view class="" @click="navgo">
|
<u-icon name="scan" @click="scanFn" color="white" :size="30"></u-icon>
|
||||||
<view class="" style="margin: 10rpx 0;">
|
|
||||||
土地名称: {{dataobj.title}}
|
|
||||||
</view>
|
</view>
|
||||||
<!-- <view class="" style="margin: 10rpx 0;">
|
<view class="" style="margin-left: 20rpx;">
|
||||||
|
<u-icon name="coupon-fill" color="white" @click="showModal=true" :size="28"></u-icon>
|
||||||
|
</view>
|
||||||
|
<view class="" style="margin-left: 20rpx;">
|
||||||
|
<u-icon name="plus-circle" color="white" @click="navto('/pages/addLand/addLand')"
|
||||||
|
:size="28"></u-icon>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- #ifdef APP-PLUS -->
|
||||||
|
<view class="" style="margin-top: -5rpx;">
|
||||||
|
|
||||||
|
<Myindex url='/pages/index/massif' />
|
||||||
|
</view>
|
||||||
|
<!-- #endif -->
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="">
|
||||||
|
<view class="" style="height:var(--status-bar-height) ;">
|
||||||
|
</view>
|
||||||
|
<view class="nav-con" style="margin-bottom: 80rpx;">
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="content" v-if="true">
|
||||||
|
<!-- 土地信息 -->
|
||||||
|
<view class="">
|
||||||
|
<view class="card" v-if="Object.keys(dataobj).length>0">
|
||||||
|
<view class="" @click="navgo">
|
||||||
|
<view class="" style="margin: 10rpx 0;">
|
||||||
|
土地名称: {{dataobj.title}}
|
||||||
|
</view>
|
||||||
|
<!-- <view class="" style="margin: 10rpx 0;">
|
||||||
农作物: 洋芋
|
农作物: 洋芋
|
||||||
</view> -->
|
</view> -->
|
||||||
<view class="" style="margin: 10rpx 0;">
|
<view class="" style="margin: 10rpx 0;">
|
||||||
土地面积: {{dataobj.total_area}}亩
|
土地面积: {{dataobj.total_area}}亩
|
||||||
|
</view>
|
||||||
|
<view class="" style="margin: 10rpx 0;">
|
||||||
|
种植面积: {{dataobj.total_area-dataobj.residual_area}}亩
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="" style="margin: 10rpx 0;">
|
<view class="changeLand" @click="show=true">
|
||||||
种植面积: {{dataobj.total_area-dataobj.residual_area}}亩
|
切换土地
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view class="card" v-else>
|
||||||
|
|
||||||
|
<view class="">
|
||||||
|
<view class="">
|
||||||
|
暂无信息
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="add-thing" @click="showPicker1=true" v-if="columns2[0]&&columns2[0].length>0">
|
||||||
|
记农事
|
||||||
|
</view>
|
||||||
|
<!-- 苗情监测 -->
|
||||||
|
<view class="">
|
||||||
|
<view class="live-video soil-monitor">
|
||||||
|
<view class="head">
|
||||||
|
<view class="tit">
|
||||||
|
苗情监测数据
|
||||||
|
</view>
|
||||||
|
<view class="flushed-time">
|
||||||
|
<u-icon name="clock"></u-icon>
|
||||||
|
<text>刷新时间: {{getNowTimeFn()}} </text>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="changeLand" @click="show=true">
|
<view class="video" @click="navto('/pages/live/live')">
|
||||||
切换土地
|
<!-- <u--image :src="url" width="100%" height="300rpx"></u--image> -->
|
||||||
|
<u-swiper :list="dataobj.pic" width="100%" height="300rpx"></u-swiper>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
<view class="card" v-else>
|
<!-- 土壤监测 -->
|
||||||
|
|
||||||
|
<view class="">
|
||||||
|
|
||||||
|
<view class="soil-monitor">
|
||||||
|
<view class="head">
|
||||||
|
<view class="tit">
|
||||||
|
土壤监测数据
|
||||||
|
</view>
|
||||||
|
<view class="flushed-time">
|
||||||
|
<u-icon name="clock"></u-icon>
|
||||||
|
<text>刷新时间: {{getNowTimeFn()}} </text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="monitor-content"
|
||||||
|
v-if="dataobj&&dataobj.monitor&&dataobj.soil_monitor_data&&Object.keys(dataobj.soil_monitor_data).length>0">
|
||||||
|
<view class="monitor-card" v-for="(item,index) in soilList" :key="index">
|
||||||
|
<view class="name">
|
||||||
|
<view class="">
|
||||||
|
<u--image :src="item.icon" width="38.55rpx" height="38.55rpx"></u--image>
|
||||||
|
</view>
|
||||||
|
<view class="" style="margin-left: 10rpx;">
|
||||||
|
{{item.name}}
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view class="num">
|
||||||
|
<text style="font-size: 70rpx;">{{item.num}}</text>
|
||||||
|
<text>{{item.unit}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="coneng-detail" v-else>
|
||||||
|
<view class="">
|
||||||
|
<image src="@/static/img/zw.png" mode="aspectFit"></image>
|
||||||
|
<view class="">
|
||||||
|
暂无数据
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<!-- 环境监测 -->
|
||||||
|
<view class="soil-monitor">
|
||||||
|
<view class="head">
|
||||||
|
<view class="tit">
|
||||||
|
环境监测数据
|
||||||
|
</view>
|
||||||
|
<view class="flushed-time">
|
||||||
|
<u-icon name="clock"></u-icon>
|
||||||
|
<text>刷新时间: {{getNowTimeFn()}} </text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="monitor-content"
|
||||||
|
v-if="dataobj&&dataobj.monitor&&dataobj.monitor.air_monitor_data&&Object.keys(dataobj.monitor.air_monitor_data).length>0">
|
||||||
|
<view class="monitor-card" v-for="(item,index) in environmentList" :key="index">
|
||||||
|
<view class="name">
|
||||||
|
<view class="">
|
||||||
|
<u--image :src="item.icon" width="38.55rpx" height="38.55rpx"></u--image>
|
||||||
|
</view>
|
||||||
|
<view class="" style="margin-left: 10rpx;">
|
||||||
|
{{item.name}}
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view class="num">
|
||||||
|
<text style="font-size: 70rpx;">{{item.num}}</text>
|
||||||
|
<text>{{item.unit}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
<view class="coneng-detail" v-else>
|
||||||
|
|
||||||
|
<view class="">
|
||||||
|
<image src="@/static/img/zw.png" mode="aspectFit"></image>
|
||||||
|
<view class="">
|
||||||
|
暂无数据
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 组件 -->
|
||||||
|
|
||||||
|
<u-loading-page :loading="showLoading"></u-loading-page>
|
||||||
|
|
||||||
|
|
||||||
|
<u-action-sheet :show="show" keyName="name" closeOnClickOverlay :actions="columns" title="请选择"
|
||||||
|
@close="show = false" @select="confirm">
|
||||||
|
</u-action-sheet>
|
||||||
|
</view>
|
||||||
|
<view class="empty" v-else>
|
||||||
|
<view class="addLand">
|
||||||
<view class="">
|
<view class="">
|
||||||
<view class="">
|
你还没有土地信息
|
||||||
暂无信息
|
|
||||||
</view>
|
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
|
<view class="addBtn" @click="navto('/pages/addLand/addLand')">
|
||||||
|
去添加
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="add-thing" @click="showPicker1=true" v-if="columns2.length>0">
|
|
||||||
记农事
|
|
||||||
</view>
|
|
||||||
<!-- 苗情监测 -->
|
|
||||||
<view class="">
|
|
||||||
<view class="live-video soil-monitor">
|
|
||||||
<view class="head">
|
|
||||||
<view class="tit">
|
|
||||||
苗情监测数据
|
|
||||||
</view>
|
|
||||||
<view class="flushed-time">
|
|
||||||
<u-icon name="clock"></u-icon>
|
|
||||||
<text>刷新时间: {{getNowTimeFn()}} </text>
|
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="video" @click="navto('/pages/live/live')">
|
|
||||||
<!-- <u--image :src="url" width="100%" height="300rpx"></u--image> -->
|
|
||||||
<u-swiper :list="dataobj.pic" width="100%" height="300rpx"></u-swiper>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
<!-- 土壤监测 -->
|
|
||||||
|
|
||||||
<view class="">
|
|
||||||
|
|
||||||
<view class="soil-monitor">
|
|
||||||
<view class="head">
|
|
||||||
<view class="tit">
|
|
||||||
土壤监测数据
|
|
||||||
</view>
|
|
||||||
<view class="flushed-time">
|
|
||||||
<u-icon name="clock"></u-icon>
|
|
||||||
<text>刷新时间: {{getNowTimeFn()}} </text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="monitor-content"
|
|
||||||
v-if="dataobj&&dataobj.monitor&&dataobj.soil_monitor_data&&Object.keys(dataobj.soil_monitor_data).length>0">
|
|
||||||
<view class="monitor-card" v-for="(item,index) in soilList" :key="index">
|
|
||||||
<view class="name">
|
|
||||||
<view class="">
|
|
||||||
<u--image :src="item.icon" width="38.55rpx" height="38.55rpx"></u--image>
|
|
||||||
</view>
|
|
||||||
<view class="" style="margin-left: 10rpx;">
|
|
||||||
{{item.name}}
|
|
||||||
</view>
|
|
||||||
|
|
||||||
</view>
|
|
||||||
<view class="num">
|
|
||||||
<text style="font-size: 70rpx;">{{item.num}}</text>
|
|
||||||
<text>{{item.unit}}</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="coneng-detail" v-else>
|
|
||||||
|
|
||||||
<view class="">
|
|
||||||
<image src="@/static/img/zw.png" mode="aspectFit"></image>
|
|
||||||
<view class="">
|
|
||||||
暂无数据
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
</view>
|
|
||||||
<!-- 环境监测 -->
|
|
||||||
<view class="soil-monitor">
|
|
||||||
<view class="head">
|
|
||||||
<view class="tit">
|
|
||||||
环境监测数据
|
|
||||||
</view>
|
|
||||||
<view class="flushed-time">
|
|
||||||
<u-icon name="clock"></u-icon>
|
|
||||||
<text>刷新时间: {{getNowTimeFn()}} </text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="monitor-content"
|
|
||||||
v-if="dataobj&&dataobj.monitor&&dataobj.monitor.air_monitor_data&&Object.keys(dataobj.monitor.air_monitor_data).length>0">
|
|
||||||
<view class="monitor-card" v-for="(item,index) in environmentList" :key="index">
|
|
||||||
<view class="name">
|
|
||||||
<view class="">
|
|
||||||
<u--image :src="item.icon" width="38.55rpx" height="38.55rpx"></u--image>
|
|
||||||
</view>
|
|
||||||
<view class="" style="margin-left: 10rpx;">
|
|
||||||
{{item.name}}
|
|
||||||
</view>
|
|
||||||
|
|
||||||
</view>
|
|
||||||
<view class="num">
|
|
||||||
<text style="font-size: 70rpx;">{{item.num}}</text>
|
|
||||||
<text>{{item.unit}}</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
|
|
||||||
<view class="coneng-detail" v-else>
|
|
||||||
|
|
||||||
<view class="">
|
|
||||||
<image src="@/static/img/zw.png" mode="aspectFit"></image>
|
|
||||||
<view class="">
|
|
||||||
暂无数据
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 组件 -->
|
<!-- 组件 -->
|
||||||
|
|
||||||
<u-loading-page :loading="showLoading"></u-loading-page>
|
<view class="Modal">
|
||||||
|
<u-popup :show="showModal" mode="center" @close="closeModal" :round="10">
|
||||||
|
<view class="Modal">
|
||||||
|
<text> 产品编号:</text>
|
||||||
|
<uni-data-select v-model="equipmentId" style="width: 300rpx;margin-left: 30rpx;"
|
||||||
|
:localdata="range"></uni-data-select>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="Modal-btn">
|
||||||
|
<view class="Modal-btna" @click="closeModal">
|
||||||
|
取消
|
||||||
|
</view>
|
||||||
|
<view class="Modal-btnb" @click="bindFn">
|
||||||
|
确定
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
|
||||||
<u-action-sheet :show="show" keyName="name" closeOnClickOverlay :actions="columns" title="请选择"
|
|
||||||
@close="show = false" @select="confirm">
|
|
||||||
</u-action-sheet>
|
|
||||||
</view>
|
|
||||||
<view class="empty" v-else>
|
|
||||||
<view class="addLand">
|
|
||||||
<view class="">
|
|
||||||
你还没有土地信息
|
|
||||||
</view>
|
|
||||||
<view class="addBtn" @click="navto('/pages/addLand/addLand')">
|
|
||||||
去添加
|
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
|
<u-picker keyName="name" :show="showPicker1" @cancel="showPicker1=false" @confirm="confirm1"
|
||||||
|
:columns="columns2"></u-picker>
|
||||||
|
|
||||||
|
<u-picker keyName="label" :show="showPicker" @cancel="showPicker=false" @confirm="confirm2"
|
||||||
|
:columns="columns1"></u-picker>
|
||||||
</view>
|
</view>
|
||||||
<!-- 组件 -->
|
|
||||||
|
|
||||||
<view class="Modal">
|
|
||||||
<u-popup :show="showModal" mode="center" @close="closeModal" :round="10">
|
|
||||||
<view class="Modal">
|
|
||||||
<text> 产品编号:</text>
|
|
||||||
<uni-data-select v-model="equipmentId" style="width: 300rpx;margin-left: 30rpx;"
|
|
||||||
:localdata="range"></uni-data-select>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="Modal-btn">
|
|
||||||
<view class="Modal-btna" @click="closeModal">
|
|
||||||
取消
|
|
||||||
</view>
|
|
||||||
<view class="Modal-btnb" @click="bindFn">
|
|
||||||
确定
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</u-popup>
|
|
||||||
|
|
||||||
</view>
|
|
||||||
<u-picker keyName="name" :show="showPicker1" @cancel="showPicker1=false" @confirm="confirm1"
|
|
||||||
:columns="columns2"></u-picker>
|
|
||||||
|
|
||||||
<u-picker keyName="label" :show="showPicker" @cancel="showPicker=false" @confirm="confirm2"
|
|
||||||
:columns="columns1"></u-picker>
|
|
||||||
</view>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
@ -227,6 +246,7 @@
|
||||||
onLoad,
|
onLoad,
|
||||||
onShow
|
onShow
|
||||||
} from "@dcloudio/uni-app"
|
} from "@dcloudio/uni-app"
|
||||||
|
import Myindex from '@/components/return/index.vue';
|
||||||
import {
|
import {
|
||||||
bindproduct,
|
bindproduct,
|
||||||
lindexist,
|
lindexist,
|
||||||
|
@ -234,7 +254,7 @@
|
||||||
plantlist,
|
plantlist,
|
||||||
landproduct
|
landproduct
|
||||||
} from '@/api/api.js'
|
} from '@/api/api.js'
|
||||||
|
import store from "@/store/index.js"
|
||||||
const showPicker = ref(false)
|
const showPicker = ref(false)
|
||||||
const showPicker1 = ref(false)
|
const showPicker1 = ref(false)
|
||||||
const showModal = ref(false)
|
const showModal = ref(false)
|
||||||
|
@ -306,6 +326,15 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
])
|
])
|
||||||
|
onLoad(() => {
|
||||||
|
// console.log(store.state.userInfo)
|
||||||
|
if (!store.state.userInfo) {
|
||||||
|
uni.redirectTo({
|
||||||
|
url: '/pages/Login/login'
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
const dataobj = reactive({})
|
const dataobj = reactive({})
|
||||||
const tdId = ref('')
|
const tdId = ref('')
|
||||||
const palntId = ref('')
|
const palntId = ref('')
|
||||||
|
@ -397,30 +426,32 @@
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
|
|
||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
getlist3(res.data.id)
|
if (Object.keys(res.data).length > 0) {
|
||||||
Object.assign(dataobj, res.data);
|
getlist3(res.data.id)
|
||||||
|
|
||||||
if (res.data && res.data.monitor && res.data.monitor.soil_monitor_data) {
|
Object.assign(dataobj, res.data);
|
||||||
soilList[0].num = res.data.monitor.soil_monitor_data.temperature
|
|
||||||
soilList[1].num = res.data.monitor.soil_monitor_data.moisture
|
if (res.data && res.data.monitor && res.data.monitor.soil_monitor_data) {
|
||||||
soilList[2].num = res.data.monitor.soil_monitor_data.conductivity
|
soilList[0].num = res.data.monitor.soil_monitor_data.temperature
|
||||||
soilList[3].num = res.data.monitor.soil_monitor_data.ph
|
soilList[1].num = res.data.monitor.soil_monitor_data.moisture
|
||||||
soilList[4].num = res.data.monitor.soil_monitor_data.n_content
|
soilList[2].num = res.data.monitor.soil_monitor_data.conductivity
|
||||||
soilList[5].num = res.data.monitor.soil_monitor_data.p_content
|
soilList[3].num = res.data.monitor.soil_monitor_data.ph
|
||||||
soilList[6].num = res.data.monitor.soil_monitor_data.k_content
|
soilList[4].num = res.data.monitor.soil_monitor_data.n_content
|
||||||
|
soilList[5].num = res.data.monitor.soil_monitor_data.p_content
|
||||||
|
soilList[6].num = res.data.monitor.soil_monitor_data.k_content
|
||||||
|
}
|
||||||
|
if (res.data && res.data.monitor && res.data.monitor.air_monitor_data) {
|
||||||
|
environmentList[0].num = res.data.monitor.air_monitor_data.wind_speed
|
||||||
|
environmentList[1].num = res.data.monitor.air_monitor_data.wind_direction
|
||||||
|
environmentList[2].num = res.data.monitor.air_monitor_data.temperature
|
||||||
|
environmentList[3].num = res.data.monitor.air_monitor_data.moisture
|
||||||
|
environmentList[4].num = res.data.monitor.air_monitor_data.co2_content
|
||||||
|
environmentList[5].num = res.data.monitor.air_monitor_data.pressure
|
||||||
|
environmentList[6].num = res.data.monitor.air_monitor_data.rainfall
|
||||||
|
environmentList[7].num = res.data.monitor.air_monitor_data.light_intensity
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (res.data && res.data.monitor && res.data.monitor.air_monitor_data) {
|
|
||||||
environmentList[0].num = res.data.monitor.air_monitor_data.wind_speed
|
|
||||||
environmentList[1].num = res.data.monitor.air_monitor_data.wind_direction
|
|
||||||
environmentList[2].num = res.data.monitor.air_monitor_data.temperature
|
|
||||||
environmentList[3].num = res.data.monitor.air_monitor_data.moisture
|
|
||||||
environmentList[4].num = res.data.monitor.air_monitor_data.co2_content
|
|
||||||
environmentList[5].num = res.data.monitor.air_monitor_data.pressure
|
|
||||||
environmentList[6].num = res.data.monitor.air_monitor_data.rainfall
|
|
||||||
environmentList[7].num = res.data.monitor.air_monitor_data.light_intensity
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -433,7 +464,6 @@
|
||||||
page_size: 99995,
|
page_size: 99995,
|
||||||
keyword: ''
|
keyword: ''
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
|
|
||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
if (res.data.length > 0) {
|
if (res.data.length > 0) {
|
||||||
columns.splice(0, columns.length, ...res.data.map((step, index) => {
|
columns.splice(0, columns.length, ...res.data.map((step, index) => {
|
||||||
|
@ -443,8 +473,6 @@
|
||||||
};
|
};
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -470,9 +498,9 @@
|
||||||
plantlist({
|
plantlist({
|
||||||
land_id: id
|
land_id: id
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
|
|
||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
columns2.splice(0)
|
columns2.splice(0)
|
||||||
let arr1 = []
|
let arr1 = []
|
||||||
arr1.splice(0, arr1.length, ...res.data.map((step, index) => {
|
arr1.splice(0, arr1.length, ...res.data.map((step, index) => {
|
||||||
return {
|
return {
|
||||||
|
@ -481,6 +509,8 @@
|
||||||
};
|
};
|
||||||
}));
|
}));
|
||||||
columns2.push(arr1)
|
columns2.push(arr1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -498,21 +528,26 @@
|
||||||
|
|
||||||
//绑定产品
|
//绑定产品
|
||||||
const biproduct = () => {
|
const biproduct = () => {
|
||||||
bindproduct({
|
if (equipmentId.value) {
|
||||||
land_id: dataobj.id,
|
bindproduct({
|
||||||
product_id: equipmentId.value
|
land_id: dataobj.id,
|
||||||
}).then((res) => {
|
product_id: equipmentId.value
|
||||||
if (res.code == 1) {
|
}).then((res) => {
|
||||||
uni.$u.toast(res.msg);
|
if (res.code == 1) {
|
||||||
// this.dataobj=res.data
|
uni.$u.toast(res.msg);
|
||||||
equipmentId.value = ''
|
// this.dataobj=res.data
|
||||||
}
|
equipmentId.value = ''
|
||||||
console.log(res)
|
}
|
||||||
})
|
console.log(res)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
uni.$u.toast('请选择产品编号');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
const confirm2 = (e) => {
|
const confirm2 = (e) => {
|
||||||
showPicker.value = false
|
showPicker.value = false
|
||||||
|
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: e.value[0].route + '?id=' + palntId.value
|
url: e.value[0].route + '?id=' + palntId.value
|
||||||
})
|
})
|
||||||
|
@ -568,7 +603,6 @@
|
||||||
z-index: 999999;
|
z-index: 999999;
|
||||||
width: 750rpx;
|
width: 750rpx;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.coneng-detail {
|
.coneng-detail {
|
||||||
|
@ -649,13 +683,18 @@
|
||||||
z-index: 9999 !important;
|
z-index: 9999 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav {
|
.nav-con {
|
||||||
height: 70rpx;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-end;
|
|
||||||
box-sizing: border-box;
|
padding-top: 20rpx;
|
||||||
align-items: center;
|
padding-bottom: 10rpx;
|
||||||
padding-right: 40rpx;
|
}
|
||||||
|
|
||||||
|
.nav {
|
||||||
|
display: flex;
|
||||||
|
padding-right: 20rpx;
|
||||||
|
padding-left: 10rpx;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.card {
|
.card {
|
||||||
|
|
|
@ -1,23 +1,30 @@
|
||||||
<template>
|
<template>
|
||||||
<view class="head">
|
<view class="head">
|
||||||
<view class="avater">
|
<!-- #ifdef APP-PLUS -->
|
||||||
<u--image @click="previewImageFn" :src="userinfo.avatar" width="130.28rpx" height="130.28rpx"
|
<view class="head-return">
|
||||||
shape="circle"></u--image>
|
<Myindex url='/pages/index/personal' />
|
||||||
</view>
|
</view>
|
||||||
<view class="" v-if="Object.keys(userinfo).length>0">
|
<!-- #endif -->
|
||||||
|
<view class="head-con">
|
||||||
|
<view class="avater">
|
||||||
|
<u--image @click="previewImageFn" :src="userinfo.avatar" width="130.28rpx" height="130.28rpx"
|
||||||
|
shape="circle"></u--image>
|
||||||
|
</view>
|
||||||
|
<view class="" v-if="Object.keys(userinfo).length>0">
|
||||||
|
|
||||||
<view class="head-li">
|
<view class="head-li">
|
||||||
姓名: {{userinfo.nickname}}
|
姓名: {{userinfo.nickname}}
|
||||||
|
</view>
|
||||||
|
<view class="head-li">
|
||||||
|
电话: {{userinfo.mobile}}
|
||||||
|
</view>
|
||||||
|
<!-- <view class="head-li">
|
||||||
|
公司: 里海弄农业科技有限公司
|
||||||
|
</view> -->
|
||||||
</view>
|
</view>
|
||||||
<view class="head-li">
|
<view class="" v-else @click="revto('/pages/Login/login')">
|
||||||
电话: {{userinfo.mobile}}
|
请登录
|
||||||
</view>
|
</view>
|
||||||
<!-- <view class="head-li">
|
|
||||||
公司: 里海弄农业科技有限公司
|
|
||||||
</view> -->
|
|
||||||
</view>
|
|
||||||
<view class="" v-else @click="revto('/pages/Login/login')">
|
|
||||||
请登录
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="content">
|
<view class="content">
|
||||||
|
@ -38,15 +45,16 @@
|
||||||
</view>
|
</view>
|
||||||
<view class="out-btn">
|
<view class="out-btn">
|
||||||
<up-button @click="loginOutFn" type="primary" customStyle="border:none;height:90rpx" color="#34D190"
|
<up-button @click="loginOutFn" type="primary" customStyle="border:none;height:90rpx" color="#34D190"
|
||||||
text="退出登录" v-if="Object.keys(userinfo).length>0"></up-button>
|
text="退出登录" v-if="Object.keys(userinfo).length>0"></up-button>
|
||||||
|
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import Myindex from '@/components/return/index.vue';
|
||||||
import {
|
import {
|
||||||
reactive,
|
reactive,
|
||||||
ref
|
ref
|
||||||
|
@ -55,8 +63,8 @@
|
||||||
import store from "@/store/index.js"
|
import store from "@/store/index.js"
|
||||||
|
|
||||||
const userinfo = reactive({})
|
const userinfo = reactive({})
|
||||||
if (store.state.userInfo !=null) {
|
if (store.state.userInfo != null) {
|
||||||
Object.assign(userinfo,store.state.userInfo)
|
Object.assign(userinfo, store.state.userInfo)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,16 +122,23 @@
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" >
|
<style lang="scss">
|
||||||
page{
|
page {
|
||||||
background-color: $theme-bg-color;
|
background-color: $theme-bg-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
.head {
|
.head {
|
||||||
height: 25vh;
|
height: 25vh;
|
||||||
background-color: $theme-main-color;
|
background-color: $theme-main-color;
|
||||||
color: white;
|
color: white;
|
||||||
display: flex;
|
padding-top: 30rpx;
|
||||||
align-items: center;
|
position: relative;
|
||||||
|
|
||||||
|
.head-con {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
.head-li {
|
.head-li {
|
||||||
margin: 10rpx 0;
|
margin: 10rpx 0;
|
||||||
|
@ -132,11 +147,18 @@
|
||||||
.avater {
|
.avater {
|
||||||
margin: 0 40rpx;
|
margin: 0 40rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.head-return {
|
||||||
|
margin-top: 30rpx;
|
||||||
|
margin-left: calc(100% - 200rpx);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
|
|
||||||
|
|
||||||
padding-top: 30rpx;
|
padding-top: 30rpx;
|
||||||
|
|
||||||
.card {
|
.card {
|
||||||
|
|
|
@ -3,37 +3,52 @@
|
||||||
<view class="reset-password">
|
<view class="reset-password">
|
||||||
<u--form ref="formRef" :rules="rules" :model="formData">
|
<u--form ref="formRef" :rules="rules" :model="formData">
|
||||||
<u-form-item label="原密码" labelWidth="140rpx" borderBottom prop="old_password">
|
<u-form-item label="原密码" labelWidth="140rpx" borderBottom prop="old_password">
|
||||||
<u--input v-model="formData.old_password" :password="!pwdShow.old_password" placeholder="请输入原密码"
|
|
||||||
maxlength="18">
|
|
||||||
<!-- #ifdef APP-PLUS -->
|
|
||||||
<template slot="suffix">
|
<u-input placeholder="请输入原密码" border="surround" v-model="formData.old_password"
|
||||||
<uni-icons :type="pwdShow.old_password?'eye-filled':'eye-slash-filled'"
|
:password="!pwdShow.old_password">
|
||||||
@click="pwdShow.old_password=!pwdShow.old_password" color="#999"></uni-icons>
|
|
||||||
|
<template #suffix>
|
||||||
|
<u-icon :name="pwdShow.old_password?'eye-off':'eye-fill'" size="25"
|
||||||
|
@click="pwdShow.old_password=!pwdShow.old_password"></u-icon>
|
||||||
</template>
|
</template>
|
||||||
<!-- #endif -->
|
</u-input>
|
||||||
</u--input>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
<u-form-item label="新密码" labelWidth="140rpx" borderBottom prop="password">
|
<u-form-item label="新密码" labelWidth="140rpx" borderBottom prop="password">
|
||||||
<u--input v-model="formData.password" :password="!pwdShow.password" placeholder="请输入新密码"
|
|
||||||
maxlength="18">
|
|
||||||
<!-- #ifdef APP-PLUS -->
|
<u-input border="surround" v-model="formData.password" :password="!pwdShow.password"
|
||||||
<template slot="suffix">
|
placeholder="请输入新密码">
|
||||||
<u--icon :name="pwdShow.password?'eye-off':'eye-fill'"
|
|
||||||
@click="pwdShow.old_password=!pwdShow.old_password" color="#999"></u--icon>
|
<template #suffix>
|
||||||
|
<u-icon :name="pwdShow.password?'eye-off':'eye-fill'" size="25"
|
||||||
|
@click="pwdShow.password=!pwdShow.password"></u-icon>
|
||||||
</template>
|
</template>
|
||||||
<!-- #endif -->
|
</u-input>
|
||||||
</u--input>
|
|
||||||
|
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
<u-form-item label="确认密码" labelWidth="140rpx" borderBottom prop="password_confirm">
|
<u-form-item label="确认密码" labelWidth="140rpx" borderBottom prop="password_confirm">
|
||||||
<u--input v-model="formData.password_confirm" :password="!pwdShow.password_confirm"
|
<u-input border="surround" v-model="formData.password_confirm" :password="!pwdShow.password_confirm"
|
||||||
placeholder="请确认新密码" maxlength="18">
|
placeholder="请确认新密码">
|
||||||
<!-- #ifdef APP-PLUS -->
|
|
||||||
<template slot="suffix">
|
<template #suffix>
|
||||||
<u--icon :name="pwdShow.password_confirm?'eye-off':'eye-fill'"
|
<u-icon :name="pwdShow.password_confirm?'eye-off':'eye-fill'" size="25"
|
||||||
@click="pwdShow.old_password=!pwdShow.old_password" color="#999"></u--icon>
|
@click="pwdShow.password_confirm=!pwdShow.password_confirm"></u-icon>
|
||||||
</template>
|
</template>
|
||||||
<!-- #endif -->
|
</u-input>
|
||||||
</u--input>
|
|
||||||
</u-form-item>
|
</u-form-item>
|
||||||
<u-button style="margin-top: 28rpx;background-color:#34D190;color: #fff;" @click="submit">提交</u-button>
|
<u-button style="margin-top: 28rpx;background-color:#34D190;color: #fff;" @click="submit">提交</u-button>
|
||||||
</u--form>
|
</u--form>
|
||||||
|
@ -98,11 +113,11 @@
|
||||||
'新密码不能与原密码一致');
|
'新密码不能与原密码一致');
|
||||||
if (this.formData.password !== this.formData.password_confirm) return uni.$u.toast(
|
if (this.formData.password !== this.formData.password_confirm) return uni.$u.toast(
|
||||||
'两次新密码不一致');
|
'两次新密码不一致');
|
||||||
|
|
||||||
changePassword(
|
changePassword(
|
||||||
this.formData
|
this.formData
|
||||||
).then((res) => {
|
).then((res) => {
|
||||||
|
|
||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
uni.$u.toast('修改成功');
|
uni.$u.toast('修改成功');
|
||||||
uni.switchTab({
|
uni.switchTab({
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 446 B |
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
After Width: | Height: | Size: 6.0 KiB |
|
@ -25,6 +25,9 @@
|
||||||
"VideoPlayer": {},
|
"VideoPlayer": {},
|
||||||
"Barcode": {},
|
"Barcode": {},
|
||||||
"Camera": {},
|
"Camera": {},
|
||||||
|
"UniMP": {
|
||||||
|
"description": "uni小程序"
|
||||||
|
},
|
||||||
"UniNView": {
|
"UniNView": {
|
||||||
"description": "UniNView原生渲染"
|
"description": "UniNView原生渲染"
|
||||||
}
|
}
|
||||||
|
@ -77,19 +80,25 @@
|
||||||
"ad": {},
|
"ad": {},
|
||||||
"geolocation": {
|
"geolocation": {
|
||||||
"amap": {
|
"amap": {
|
||||||
"name": "amapC2GgorTaY",
|
"name": "amap_18982406440DFVLElaO",
|
||||||
"__platform__": [
|
"__platform__": [
|
||||||
"android"
|
"android"
|
||||||
],
|
],
|
||||||
"appkey_ios": "b0c21bc6b220aa882bad8ffb6bce8829",
|
"appkey_ios": "4e6789b864fe1a2d76b98e38158f20f2",
|
||||||
"appkey_android": "b0c21bc6b220aa882bad8ffb6bce8829"
|
"appkey_android": "a230d943475443eb29fc3871fbef8605"
|
||||||
|
},
|
||||||
|
"system": {
|
||||||
|
"__platform__": [
|
||||||
|
"ios",
|
||||||
|
"android"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maps": {
|
"maps": {
|
||||||
"amap": {
|
"amap": {
|
||||||
"name": "amapC2GgorTaY",
|
"name": "4e6789b864fe1a2d76b98e38158f20f2",
|
||||||
"appkey_ios": "b0c21bc6b220aa882bad8ffb6bce8829",
|
"appkey_ios": "a230d943475443eb29fc3871fbef8605",
|
||||||
"appkey_android": "b0c21bc6b220aa882bad8ffb6bce8829"
|
"appkey_android": "a230d943475443eb29fc3871fbef8605"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"audio": {
|
"audio": {
|
||||||
|
@ -167,5 +176,11 @@
|
||||||
"selected": 0
|
"selected": 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"screenOrientation": [
|
||||||
|
"portrait-primary",
|
||||||
|
"portrait-secondary",
|
||||||
|
"landscape-primary",
|
||||||
|
"landscape-secondary"
|
||||||
|
],
|
||||||
"launch_path": "__uniappview.html"
|
"launch_path": "__uniappview.html"
|
||||||
}
|
}
|
File diff suppressed because one or more lines are too long
|
@ -10,14 +10,9 @@ function baseRequest(url, method, data, {
|
||||||
onReLogin = false
|
onReLogin = false
|
||||||
}) {
|
}) {
|
||||||
let Url = config.HTTP_REQUEST_URL,
|
let Url = config.HTTP_REQUEST_URL,
|
||||||
|
|
||||||
header = config.HEADER;
|
header = config.HEADER;
|
||||||
if(store.state.userInfo){
|
if (store.state.userInfo) {
|
||||||
header.TOKEN = store.state.userInfo.token
|
header.TOKEN = store.state.userInfo.token
|
||||||
}else{
|
|
||||||
uni.redirectTo({
|
|
||||||
url:'/pages/Login/login'
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Promise((reslove, reject) => {
|
return new Promise((reslove, reject) => {
|
||||||
|
@ -53,7 +48,7 @@ function baseRequest(url, method, data, {
|
||||||
icon: 'none',
|
icon: 'none',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
reslove(res.data);
|
reslove(res.data);
|
||||||
} else if (res.data.code == 1) {
|
} else if (res.data.code == 1) {
|
||||||
// store.commit("SET_REQUEST");
|
// store.commit("SET_REQUEST");
|
||||||
reslove(res.data);
|
reslove(res.data);
|
||||||
|
|
Loading…
Reference in New Issue