You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
618 lines
16 KiB
618 lines
16 KiB
<template>
|
|
<view class="postDemand">
|
|
<view class="formItem">
|
|
<view class="f-w col-3 f-32 p-t-30">
|
|
基础信息
|
|
</view>
|
|
<view class="menu-item">
|
|
<view class="menu-name">
|
|
需求类型
|
|
<text class="f-20 c-ff4444">*</text>
|
|
</view>
|
|
<view class="menu-content flex-box" @click="openlink">
|
|
<!-- <picker @change="Change" :value="index" :range="Arr" mode="multiSelector" range-key="title"> -->
|
|
<view class="uni-input" >{{categoryText }}</view>
|
|
<!-- </picker> -->
|
|
</view>
|
|
<view class=" t-r iconfont icon-right" style="font-size: 24upx;color: #333333;">
|
|
|
|
</view>
|
|
</view>
|
|
<view class="menu-item">
|
|
<view class="menu-name">
|
|
上门时间
|
|
<text class="f-20 c-ff4444">*</text>
|
|
</view>
|
|
<view class="menu-content flex-box" @click="openTime" v-if="time">
|
|
<input type="text" disabled v-model="time" class="menu-input" value="" />
|
|
</view>
|
|
<view class="menu-content flex-box col-9" @click="openTime" style="color: #999999;" v-else>
|
|
请选择上门时间
|
|
</view>
|
|
<view class=" t-r iconfont icon-right" style="font-size: 24upx;color: #333333;">
|
|
|
|
</view>
|
|
</view>
|
|
<view class="menu-item">
|
|
<view class="menu-name">
|
|
具体地址
|
|
<text class="f-20 c-ff4444">*</text>
|
|
</view>
|
|
<view class="menu-content flex-box" @click="goLocation" v-if="site">
|
|
<input type="text" disabled v-model="site" class="menu-input" value="" />
|
|
</view>
|
|
<view class="menu-content flex-box col-9" @click="goLocation" style="color: #999999;" v-else>
|
|
请选择具体地址
|
|
</view>
|
|
<view class=" t-r" style="font-size: 24upx;color: #FF4444;border-left: 1upx solid #EEEEEE;width: 100upx;" @click="goLocation">
|
|
定位
|
|
</view>
|
|
</view>
|
|
<view class="menu-item" style="border: none;">
|
|
<view class="menu-name">
|
|
联系方式
|
|
<!-- <text class="f-20 c-ff4444">*</text> -->
|
|
</view>
|
|
<view class="menu-content flex-box">
|
|
<input type="number" maxlength="11" v-model="phone" placeholder="填写后服务商可直接通过电话联系您" class="menu-input" value="" />
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
<view class="line">
|
|
|
|
</view>
|
|
<view class="requirement">
|
|
<view class="f-w f-32 col-3">
|
|
需求说明
|
|
</view>
|
|
<view class="text">
|
|
<textarea class="textarea" v-model="editorText" placeholder="请输入需求说明"></textarea>
|
|
</view>
|
|
</view>
|
|
<view class="line">
|
|
|
|
</view>
|
|
<view class="uploading">
|
|
<view class="f-w f-32 col-3">
|
|
上传照片
|
|
</view>
|
|
<view class="col-9 f-24" style="padding-top: 20upx;">
|
|
(上传照片,最多上传5张照片)
|
|
</view>
|
|
<view class="imgs">
|
|
<view class="img-item" v-for="(item,index) in imglinks" :key="index">
|
|
<image :src="item" mode=""></image>
|
|
<image class="imgclise" @click="deletImg(index)" :src="imgfixUrls + 'homemakingImg/imgcolse.png'" mode=""></image>
|
|
</view>
|
|
<view class="img-item" @click="uploadFiles(2, 6)" v-if="imglinks.length < 5">
|
|
<image :src="imgfixUrls + 'homemakingImg/upload.png'" mode=""></image>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="issue" @click="issueclick">
|
|
发布需求
|
|
</view>
|
|
<w-picker :visible.sync="visibletimeone" mode="date" fields="minute" :value="time" :current="false"
|
|
:second="false" @confirm="bindTimeChangeStar($event)" @cancel="onCancel" ref="time"></w-picker>
|
|
<w-picker
|
|
:visible.sync="visible"
|
|
mode="linkage"
|
|
:value="'94'"
|
|
:options="Arr"
|
|
:level="2"
|
|
default-type="id"
|
|
:default-props="pospt"
|
|
@confirm="onConfirm($event,'linkage')"
|
|
ref="linkage"
|
|
></w-picker>
|
|
<!-- #ifdef H5 -->
|
|
<PopManager :show="isOpenLaction" :type="'bottom'" :overlay="'false'" :showOverlay="'false'">
|
|
<view class="iframe-wid-hgt" :style="{ height: phoneHight,width:phoneWidth }" v-if="latlngs.latitude">
|
|
<iframe id="mapPage" width="100%" height="100%" frameborder="0" :src="`https://apis.map.qq.com/tools/locpicker?search=1&type=1&key=KIQBZ-6OT3G-AOMQD-IHW6J-PEUDV-VCFAF&referer=myapp&coord=${latlngs.latitude},${latlngs.longitude}`"></iframe>
|
|
</view>
|
|
<view class="iframe-wid-hgt" :style="{ height: phoneHight,width:phoneWidth }" v-if="!latlngs.latitude">
|
|
<iframe id="mapPage" width="100%" height="100%" frameborder="0" :src="`https://apis.map.qq.com/tools/locpicker?search=1&type=1&key=KIQBZ-6OT3G-AOMQD-IHW6J-PEUDV-VCFAF&referer=myapp`"></iframe>
|
|
</view>
|
|
</PopManager>
|
|
<!-- #endif -->
|
|
<!-- <TabBars :tabBarAct="0" pageType="18"></TabBars> -->
|
|
<PhoneMask :show1="popShow" @clickmask1="closePop"></PhoneMask>
|
|
<getvxphone :show="vxshow" @showFalse="showFalse"></getvxphone>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import App from '@/common/js/app.js';
|
|
import wPicker from '@/components/w-picker/w-picker.vue';
|
|
// #ifdef H5
|
|
import wxApi from '@/common/js/wxApi.js';
|
|
// #endif
|
|
import PopManager from '@/components/template/PopManager';
|
|
import TabBars from '@/components/template/tabBar.vue';
|
|
import PhoneMask from '@/components/template/PhoneMask';
|
|
import getvxphone from '@/components/template/getVXphone.vue'
|
|
export default{
|
|
data(){
|
|
return{
|
|
index:0,
|
|
visible:false,
|
|
isOpenLaction:false,
|
|
time:'',
|
|
site:'',
|
|
pospt:{"label":"title","value":"id","children":"list"},
|
|
Arr:[
|
|
],
|
|
visibletimeone:false,
|
|
localIds:null,
|
|
uploadlength:0,
|
|
imglinks:[],
|
|
phoneHight:null,
|
|
phoneWidth:null,
|
|
phone:'',
|
|
latlngs:{},
|
|
loadlogo:false,
|
|
uesrInfo:{},
|
|
editorText:'',
|
|
lng:'',
|
|
lat:'',
|
|
categoryText:'',
|
|
pageId:0,
|
|
userInfo:{},
|
|
lblis:{},
|
|
upimg:false,
|
|
popShow:false,
|
|
vxshow:false
|
|
}
|
|
},
|
|
onLoad(e) {
|
|
// debugger
|
|
let _this = this;
|
|
_this.pageId = e.id;
|
|
_this.latlngs = uni.getStorageSync('curLoction');
|
|
_this.uesrInfo = uni.getStorageSync('userinfo');
|
|
uni.getSystemInfo({
|
|
success(res) {
|
|
console.log(res);
|
|
_this.phoneHight = res.windowHeight + 'px';
|
|
_this.phoneWidth = res.windowWidth + 'px';
|
|
}
|
|
});
|
|
|
|
|
|
},
|
|
onShow() {
|
|
let _this = this;
|
|
let lblis = {}
|
|
// #ifdef H5
|
|
window.addEventListener(
|
|
'message',
|
|
function(event) {
|
|
// 接收位置信息,用户选择确认位置点后选点组件会触发该事件,回传用户的位置信息
|
|
let loc = event.data;
|
|
|
|
if (loc && loc.module == 'locationPicker') {
|
|
lblis = {
|
|
lat:loc.latlng.lat,
|
|
lng:loc.latlng.lng,
|
|
detailed_address:loc.poiaddress
|
|
}
|
|
_this.site = loc.poiaddress;
|
|
_this.lat = loc.latlng.lat;
|
|
_this.lng = loc.latlng.lng;
|
|
_this.isOpenLaction = false;
|
|
}
|
|
},
|
|
false
|
|
);
|
|
|
|
// #endif
|
|
//#ifdef APP-PLUS
|
|
if(_this.uesrInfo.address){
|
|
let bilis = {
|
|
detailed_address:_this.uesrInfo.address,
|
|
lat:_this.uesrInfo.lat,
|
|
lng:_this.uesrInfo.lng
|
|
};
|
|
_this.site = _this.uesrInfo.address;
|
|
_this.lat = _this.uesrInfo.lat;
|
|
_this.lng = _this.uesrInfo.lng;
|
|
}
|
|
//#endif
|
|
if(_this.upimg){
|
|
_this.upimg = false;
|
|
return
|
|
}
|
|
_this.getTypeinitialize(_this.pageId)
|
|
},
|
|
components:{
|
|
wPicker,
|
|
PopManager,
|
|
TabBars,
|
|
PhoneMask,
|
|
getvxphone
|
|
},
|
|
methods:{
|
|
showFalse(flag){
|
|
console.log('进了showfalse')
|
|
this.vxshow = false;
|
|
if(flag){
|
|
this.getTypeinitialize(this.pageId)
|
|
}
|
|
|
|
},
|
|
closePop(flag) {
|
|
let _this = this
|
|
_this.popShow = false
|
|
if(flag){
|
|
_this.getTypeinitialize(this.pageId)
|
|
}
|
|
|
|
},
|
|
onConfirm(e){
|
|
console.log(e);
|
|
this.categoryId = e.value[1];
|
|
this.Arr.map((item,index)=>{
|
|
if(item.id == e.value[0]){
|
|
item.list.map((items,indexs)=>{
|
|
if(items.id == e.value[1]){
|
|
this.categoryText = items.title;
|
|
}
|
|
})
|
|
}
|
|
})
|
|
},
|
|
// 时间戳转时间
|
|
getTimeData(dataValue) {
|
|
// debugger
|
|
var date = new Date(Number(dataValue)) //时间戳为10位需*1000,时间戳为13位的话不需乘1000
|
|
var Y = date.getFullYear() + '-'
|
|
var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'
|
|
var D = date.getDate() + ' '
|
|
var h = date.getHours() + ':'
|
|
var m = date.getMinutes()
|
|
var s = date.getSeconds()
|
|
// return Y+M+D+h+m+s
|
|
// console.log(timestampToTime (1533293827000))
|
|
return {
|
|
label: Y + M + D + h + m
|
|
};
|
|
},
|
|
// 时间转时间戳
|
|
getDataTime(timeValue) {
|
|
let ontime;
|
|
// debugger
|
|
ontime = timeValue.replace(/-/g, '/');
|
|
let date = new Date(ontime);
|
|
let time = date.getTime() / 1000;
|
|
return time;
|
|
},
|
|
issueclick(){
|
|
let _this = this;
|
|
if(!_this.time){
|
|
uni.showToast({
|
|
title:'上门时间不能为空',
|
|
icon:'none'
|
|
});
|
|
return
|
|
}
|
|
if(!_this.site){
|
|
uni.showToast({
|
|
title:'具体地址不能为空',
|
|
icon:'none'
|
|
});
|
|
return
|
|
};
|
|
let serviceinfo = {
|
|
visitingtime:_this.getDataTime(_this.time),
|
|
thumbs:_this.imglinks,
|
|
detail:_this.editorText,
|
|
lng:_this.lng,
|
|
lat:_this.lat,
|
|
type:_this.categoryId,
|
|
address:_this.site,
|
|
mobile:_this.phone
|
|
}
|
|
console.log(serviceinfo);
|
|
let data = {
|
|
id:this.pageId
|
|
};
|
|
// debugger
|
|
let storehours = JSON.stringify(serviceinfo);
|
|
let base64 = new this.$util.Base64();
|
|
storehours = base64.encode(storehours);
|
|
data.demandinfo = storehours;
|
|
App._post_form(
|
|
`&p=housekeep&do=editDemandApi`,
|
|
data,
|
|
res => {
|
|
console.log(res);
|
|
if(this.pageId || !res.data.orderid){
|
|
App.navigationTo({
|
|
url: 'pages/subPages2/homemaking/myDemand/myDemand',
|
|
navType:'reLaunch'
|
|
});
|
|
}else{
|
|
App.navigationTo({
|
|
url: 'pages/mainPages/payment/payment?orderid=' + res.data.orderid + '&plugin=housekeep',
|
|
navType:'reLaunch'
|
|
});
|
|
}
|
|
|
|
},
|
|
false,
|
|
() => {
|
|
|
|
}
|
|
);
|
|
},
|
|
getTypeinitialize(id = ''){
|
|
let _this = this;
|
|
App._post_form(
|
|
`&p=housekeep&do=editDemandPage`,
|
|
{id},
|
|
res => {
|
|
_this.Arr = res.data.cate;
|
|
_this.categoryText = _this.Arr[0].list[0].title;
|
|
_this.categoryId = _this.Arr[0].list[0].id;
|
|
let demand = res.data.demand;
|
|
if(id){
|
|
_this.Arr.map((item,index)=>{
|
|
item.list.map((items,indexs)=>{
|
|
if(items.id == id){
|
|
this.categoryText = items.title;
|
|
}
|
|
})
|
|
});
|
|
_this.time = _this.getTimeData(demand.visitingtime * 1000).label;
|
|
_this.site = demand.address;
|
|
_this.lat = demand.lat;
|
|
_this.lng = demand.lng;
|
|
_this.editorText = demand.detail;
|
|
_this.imglinks = demand.thumbs;
|
|
|
|
}
|
|
_this.phone = demand.mobile;
|
|
// debugger
|
|
console.log(res);
|
|
},fail=>{
|
|
if(fail.data.message == '认证后才能发布需求'){
|
|
App.navigationTo({
|
|
url: `pages/subPages/attestationCenter/index?rzType=1&type=1`,
|
|
navType:'reLaunch' ,
|
|
});
|
|
}
|
|
if (fail.data.message == '未绑定手机号') {
|
|
//#ifdef H5
|
|
_this.popShow = true;
|
|
//#endif
|
|
//#ifndef H5
|
|
_this.vxshow = true;
|
|
//#endif
|
|
|
|
}
|
|
});
|
|
},
|
|
goLocation(){
|
|
let _this = this;
|
|
_this.upimg = true;
|
|
// #ifdef MP-WEIXIN
|
|
uni.chooseLocation({
|
|
keyword: '',
|
|
success: function(e) {
|
|
let bilis = {
|
|
detailed_address:e.address,
|
|
lat:e.latitude,
|
|
lng:e.longitude
|
|
};
|
|
_this.site = e.address;
|
|
_this.lat = e.latitude;
|
|
_this.lng = e.longitude;
|
|
}
|
|
});
|
|
// #endif
|
|
// #ifdef H5
|
|
_this.isOpenLaction = true;
|
|
// #endif
|
|
//#ifdef APP-PLUS
|
|
App.navigationTo({
|
|
url: 'pages/subPages2/map/index'
|
|
});
|
|
//#endif
|
|
},
|
|
deletImg(index){
|
|
this.imglinks.splice(index,1)
|
|
},
|
|
openTime(){
|
|
this.visibletimeone = true;
|
|
},
|
|
openlink(){
|
|
this.visible = true;
|
|
},
|
|
Change(e){
|
|
console.log(e);
|
|
this.index = e.detail.value;
|
|
},
|
|
bindTimeChangeStar(e){
|
|
console.log(e);
|
|
// debugger
|
|
this.time = e.result
|
|
},
|
|
onCancel(){
|
|
|
|
},
|
|
uplodephone(length,localIds){
|
|
let _this = this;
|
|
wxApi.uoloadIg(localIds[length], data => {
|
|
if (data.errMsg === 'uploadImage:ok') {
|
|
uni.showLoading({});
|
|
let requestData = {
|
|
upload_type: 2,
|
|
id: data.serverId
|
|
};
|
|
App._post_form(
|
|
'&do=uploadFiles',
|
|
requestData,
|
|
res => {
|
|
if (res.errno === 0) {
|
|
let num = length + 1;
|
|
_this.imglinks.push(res.data.img);
|
|
if(num < _this.uploadlength){
|
|
uni.setTimeout(_this.uplodephone(num,_this.localIds),500);
|
|
}
|
|
}
|
|
},
|
|
false,
|
|
() => {
|
|
|
|
uni.hideLoading();
|
|
}
|
|
);
|
|
} else {
|
|
uni.hideLoading();
|
|
App.showError('上传失败');
|
|
}
|
|
});
|
|
|
|
},
|
|
// 文件上传接口
|
|
async uploadFiles(type, num) {
|
|
let _this = this;
|
|
_this.upimg = true;
|
|
// _this.uoloadIgs(i, 0, res, type);
|
|
// #ifdef H5
|
|
if(App.getClientType() == 2){
|
|
let res = await App.browser_upload(num);
|
|
for (let i = 0; i < res.tempFilePaths.length; i++) {
|
|
let aa = await App._upLoad(res.tempFilePaths[i]);
|
|
if (type == 2) {
|
|
_this.imglinks.push(aa.data.img);
|
|
// _this.userInfo.thumbs.push(aa.data.image);
|
|
console.log(_this.imglinks,aa.data.img);
|
|
}
|
|
}
|
|
return
|
|
}
|
|
wxApi.choseImage(res => {
|
|
// let length
|
|
_this.localIds = res.localIds;
|
|
_this.uploadlength = res.localIds.length;
|
|
_this.uplodephone(0,_this.localIds);
|
|
},5);
|
|
// #endif
|
|
// #ifndef H5
|
|
wx.chooseImage({
|
|
count: 5,
|
|
sourceType: ['album', 'camera'],
|
|
success: async function(res) {
|
|
// console.log(_this.userInfo.havestore, _this.page, '-------');
|
|
for (let i = 0; i < res.tempFilePaths.length; i++) {
|
|
let aa = await App._upLoad(res.tempFilePaths[i]);
|
|
if (type == 2) {
|
|
_this.imglinks.push(aa.data.img);
|
|
// _this.userInfo.thumbs.push(aa.data.image);
|
|
console.log(_this.imglinks,aa.data.img);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
// #endif
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.postDemand{
|
|
padding-bottom: 100upx;
|
|
.line{
|
|
height: 20upx;
|
|
background-color: #F8F8F8;
|
|
}
|
|
.requirement{
|
|
padding: 30upx;
|
|
.text{
|
|
padding: 20upx 0;
|
|
.textarea{
|
|
width: 100%;
|
|
height: 160upx;
|
|
font-size: 28upx;
|
|
}
|
|
}
|
|
}
|
|
.issue{
|
|
width: 750upx;
|
|
height: 90upx;
|
|
background: linear-gradient(360deg, #6094FD 0%, #70A8FD 100%);
|
|
line-height: 90upx;
|
|
position: fixed;
|
|
bottom: 0;
|
|
left: 0;
|
|
text-align: center;
|
|
font-size: 32upx;
|
|
color: #FFFFFF;
|
|
font-weight: bold;
|
|
border-radius: 30upx 30upx 0 0;
|
|
}
|
|
.uploading{
|
|
padding: 30upx;
|
|
.imgs{
|
|
padding: 30upx 0;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-content: flex-center;
|
|
align-items: center;
|
|
justify-content: left;
|
|
.img-item{
|
|
height: 158upx;
|
|
border-radius: 20upx;
|
|
flex: auto;
|
|
margin: 10upx;
|
|
width: 158upx;
|
|
min-width: 158upx;
|
|
max-width: 158upx;
|
|
position: relative;
|
|
image{
|
|
width: 100%;
|
|
height: 100%;
|
|
border-radius: 20upx;
|
|
}
|
|
.imgclise{
|
|
width: 30upx;
|
|
height: 30upx;
|
|
position: absolute;
|
|
right: 10upx;
|
|
top: 10upx;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.formItem{
|
|
padding: 0 30upx;
|
|
|
|
.menu-item{
|
|
display: flex;
|
|
padding: 30upx 0;
|
|
border-bottom: 1upx solid #EEEEEE;
|
|
.menu-name{
|
|
font-size: 28upx;
|
|
color: #333333;
|
|
width: 130upx;
|
|
padding-right: 50upx;
|
|
}
|
|
.menu-content{
|
|
font-size: 28upx;
|
|
color: #333333;
|
|
.menu-input{
|
|
height: 100%;
|
|
font-size: 28upx;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.p-t-30{
|
|
padding-top: 30upx;
|
|
}
|
|
}
|
|
</style>
|
|
|