123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403 |
- const Parse = getApp().Parse;
- const app = getApp();
- const company = getApp().globalData.company;
- let navigationBarHeight = getApp().globalData.statusBarHeight + 44;
- const qiniuUploader = require("../../../../../../utils/qiniuUploader");
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- pageType: 'add',
- routeId: 'm1D72HCXcL',
- roomId: null,
- storeId: null,
- oldimages:[]
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function (options) {
- let {
- roomId,
- storeId
- } = options
- console.log(roomId);
- if (!storeId && !roomId) {
- wx.navigateTo({
- url: `/nova-tourism/pages/index/index`
- })
- }
- if (!storeId && roomId) {
- let pageType = 'edit'
- let store = wx.getStorageSync('store')
- this.setData({
- roomId,
- storeId: store.objectId,
- pageType
- })
- } else {
- this.setData({
- roomId,
- storeId
- })
- }
- this.initData()
- },
- async initData() {
- let store;
- let room;
- let formData;
- let route = await this.getRoute()
- if (this.data.pageType == 'add') {
- store = await this.getStore()
- } else if (this.data.pageType == 'edit') {
- room = await this.getRoom()
- }
- if (!store && !room) {
- wx.showToast({
- title: '该店铺/房型不存在',
- icon: 'none'
- })
- setTimeout(() => {
- wx.navigateTo({
- url: `/nova-tourism/pages/my/merchant/room-manage/room-edit/index`
- })
- }, 1000)
- }
- this.setData({
- store,
- route,
- room,
- })
- formData = route['editFields'].reduce((obj, cur, index) => {
- // obj[cur["key"]] = cur;
- switch (cur["type"]) {
- case 'String':
- obj[cur["key"]] = room ? room[cur["key"]] : '';
- break;
- case 'Number':
- obj[cur["key"]] = room ? room[cur["key"]] : 0;
- break;
- case 'Boolean':
- obj[cur["key"]] = room ? room[cur["key"]] : false;
- break;
- case 'Array':
- obj[cur["key"]] = room ? room[cur["key"]] : [];
- if (cur["view"] == 'edit-filemanager') {
- obj[cur["key"]] = [];
- if (room) {
- room[cur["key"]].forEach(item => {
- obj[cur["key"]].push({
- "url": item
- })
- })
- }
- }
- break;
- case 'GeoPoint':
- obj[cur["key"]] = room ? room[cur["key"]] : null;
- break;
- case 'Pointer':
- obj[cur["key"]] = room ? room[cur["key"]] : null;
- break;
- default:
- break;
- }
- return obj;
- }, {});
- this.setData({
- formData
- })
- // 富文本回显
- if (this.data.room) {
- this.data.route['editFields'].forEach(field => {
- if (field["view"] == 'editor-tinymce') {
- // this.selectComponent(`#editor${field["key"]}`).setHtml(room[field["key"]] || '');
- }
- })
- }
- // 获取七牛参数
- this.getQiniuOption()
- },
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady: function () {},
- async getQiniuOption() {
- let uploadData = await this.getUptoken()
- if (uploadData) {
- this.setData({
- uploadURL: uploadData.zoneUrl,
- domain: uploadData.domain,
- uptokenURL: uploadData.uptoken,
- })
- }
- },
- getUptoken() {
- return Parse.Cloud.run('qiniu_uptoken', {
- company: company
- })
- },
- async getStore() {
- let Store = new Parse.Query('ShopStore')
- let store = await Store.get(this.data.storeId)
- if (store && store.id) {
- store = store.toJSON()
- return store;
- } else {
- return false;
- }
- },
- async getRoom() {
- let Room = new Parse.Query('ShopRoom')
- let room = await Room.get(this.data.roomId)
- if (room && room.id) {
- room = room.toJSON()
- console.log('房间', room);
- return room;
- } else {
- return false;
- }
- },
- async getRoute() {
- let DevRoute = new Parse.Query('DevRoute')
- let route = await DevRoute.get(this.data.routeId)
- if (route && route.id) {
- route = route.toJSON()
- return route;
- } else {
- return false;
- }
- },
- onChange(event) {
- let field = event.currentTarget.dataset.field;
- let type = event.currentTarget.dataset.type;
- let value = event.detail.value;
- switch (type) {
- case 'String':
- this.data.formData[field] = value;
- break;
- case 'Number':
- this.data.formData[field] = +value;
- break;
- case 'Boolean':
- this.data.formData[field] = event.detail;
- this.setData({
- formData: this.data.formData
- });
- break;
- default:
- break;
- }
- },
- showTagEdit(event) {
- let field = event.currentTarget.dataset.field;
- let name = event.currentTarget.dataset.name;
- let that = this;
- wx.showModal({
- title: `添加${name}`,
- content: ``,
- editable: true,
- success(res) {
- if (res.confirm) {
- that.data.formData[field].push(res.content)
- that.setData({
- formData: that.data.formData
- })
- console.log('用户点击确定')
- } else if (res.cancel) {
- console.log('用户点击取消')
- }
- }
- })
- },
- tagClose(event) {
- let field = event.currentTarget.dataset.field;
- let index = event.currentTarget.dataset.index;
- this.data.formData[field].splice(index, 1)
- this.setData({
- formData: this.data.formData
- })
- },
- changeFile(event) {
- let field = event.currentTarget.dataset.field;
- let fileList = event.detail
- fileList = fileList.map(file => file.url)
- this.data.formData[field] = fileList;
- },
- chooseGeoPoint(event) {
- let field = event.currentTarget.dataset.field;
- wx.chooseLocation({
- latitude: 0,
- longitude: 0,
- success: (res) => {
- let {
- latitude,
- longitude,
- address,
- name
- } = res;
- let locations = new Parse.GeoPoint(latitude, longitude)
- this.data.formData[field] = locations
- this.data.formData['address'] = address + name
- // this.data.formData['address'] = address
- this.setData({
- formData: this.data.formData,
- })
- }
- })
- },
- // getHtml(event) {
- // let field = event.currentTarget.dataset.field;
- // let html = event.detail.content.html;
- // this.data.formData[field] = html;
- // },
- // insertImage(event) {
- // let field = event.currentTarget.dataset.field;
- // let that = this;
- // wx.chooseImage({
- // count: 1,
- // success(res) {
- // // 本地测试图片插入
- // // this.selectComponent('#hf_editor').insertSrc(res.tempFilePaths[0]);
- // // that.selectComponent(`#editor${field}`).insertSrc(res.tempFilePaths[0])
- // let tempFilePaths = res.tempFilePaths[0];
- // qiniuUploader.upload(
- // tempFilePaths,
- // (res) => {
- // let img = res.imageURL;
- // that.selectComponent(`#editor${field}`).insertSrc(img); //调用组件insertSrc方法
- // },
- // (error) => {
- // console.log("error: " + error);
- // }, {
- // region: "SCN",
- // uploadURL: that.data.uploadURL,
- // domain: that.data.domain,
- // uptoken: that.data.uptokenURL,
- // }
- // );
- // }
- // })
- // },
- async submit() {
- let checked = await this.checkForm()
- if (!checked) {
- return
- }
- //当没有更新图片时执行
- this.data.formData.images.forEach((img)=>{
- if(img.url){
- this.data.oldimages.push(img.url)
- }
- })
- if (this.data.oldimages.length != 0) {
- this.data.formData['images'] = this.data.oldimages; // 保持原有图片
- }
- let room = await this.setRoom()
- console.log(room);
- if (room && room.id) {
- wx.showToast({
- title: '操作成功',
- icon: 'none'
- })
- setTimeout(()=>{
- wx.navigateBack({
- delta: 1 // 返回上一页
- });
- },1000)
- }
- },
- async checkForm() {
- let formData = this.data.formData;
- let editFields = this.data.route.editFields;
- for (let index = 0; index < editFields.length; index++) {
- const field = editFields[index];
- if (field.required && (!formData[field.key] || formData[field.key] == '' || formData[field.key] == [])) {
- wx.showToast({
- title: `请填写${field.name}`,
- icon: 'none'
- })
- return false;
- }
- }
- return true;
- },
- async setRoom() {
- let Room
- if (this.data.roomId) {
- let ShopRoom1 = new Parse.Query('ShopRoom');
- ShopRoom1.equalTo('company', company);
- ShopRoom1.equalTo('objectId', this.data.roomId);
- Room = await ShopRoom1.first();
- } else {
- let ShopRoom = Parse.Object.extend("ShopRoom");
- Room = new ShopRoom()
- }
- Room.set('isEnabled',true)
- Room.set(this.data.formData)
- Room.set("shop", {
- "__type": "Pointer",
- "className": "ShopStore",
- "objectId": this.data.storeId
- })
- Room.set("company", {
- "__type": "Pointer",
- "className": "Company",
- "objectId": company
- })
- return await Room.save()
- },
- /**
- * 生命周期函数--监听页面显示
- */
- onShow: function () {
- },
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide: function () {
- },
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload: function () {
- },
- /**
- * 页面相关事件处理函数--监听用户下拉动作
- */
- onPullDownRefresh: function () {
- },
- /**
- * 页面上拉触底事件的处理函数
- */
- onReachBottom: function () {
- },
- /**
- * 用户点击右上角分享
- */
- onShareAppMessage: function () {
- }
- })
|