123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370 |
- 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: '0ePMS1OGU7',
- roomId: null,
- storeId: null,
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function (options) {
- let {roomId,storeId} = options
- if(!storeId && !roomId){
- wx.navigateTo({
- url: `/nova-tourism/pages/index/index`
- })
- }
- if(!storeId && roomId){
- let pageType = 'edit'
- this.setData({
- roomId,
- storeId,
- 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()
- 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
- }
- let room = await this.setRoom()
- console.log(room);
- if(room&&room.id){
- wx.showToast({
- title: '操作成功',
- icon:'none'
- })
- setTimeout(()=>{
- wx.navigateTo({
- url: `/nova-tourism/pages/my/merchant/room-manage/index`
- })
- },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 ShopRoom = Parse.Object.extend("ShopRoom");
- let Room = new ShopRoom()
- 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 () {
- }
- })
|