376 lines
9.0 KiB
JavaScript
376 lines
9.0 KiB
JavaScript
// packageI/diyRormProve/diyRormProveSubmit/diyRormProveSubmit.js
|
||
const app = getApp();
|
||
Page({
|
||
|
||
/**
|
||
* 页面的初始数据
|
||
*/
|
||
data: {
|
||
isProve: false, //是否已核销成功
|
||
pageMode: null, //页面类型。提交还是核销
|
||
loading: true,
|
||
showCode: false, //核销码弹窗
|
||
finish: false, //倒计时已结束
|
||
status: 0,
|
||
field: {},
|
||
code_url: "", //核销码图片地址
|
||
dataId: "", //提交后的表单数据id
|
||
timer: null,
|
||
|
||
thumb: null,
|
||
description: null
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面加载
|
||
*/
|
||
onLoad: function (options) {
|
||
let _mode = null;
|
||
if(options.scene){
|
||
let scene = decodeURIComponent(options.scene);
|
||
if (scene) {
|
||
var info_arr = [];
|
||
info_arr = scene.split(",");
|
||
for (let i = 0; i < info_arr.length; i++) {
|
||
let chil_arr = [];
|
||
chil_arr = info_arr[i].split("=");
|
||
if (chil_arr[0] == "id") {
|
||
this.data.id = chil_arr[1];
|
||
} else if (chil_arr[0] == "mid") {
|
||
app._setMid(chil_arr[1]);
|
||
} else if (chil_arr[0] == "mode") {
|
||
_mode = chil_arr[1];
|
||
}
|
||
}
|
||
}
|
||
}else {
|
||
_mode = this.options.mode;
|
||
this.data.id = this.options.id;
|
||
}
|
||
if (_mode == "submit") {
|
||
// 会员提交表单
|
||
this.getData();
|
||
} else if (_mode == "prove") {
|
||
this.setData({
|
||
pageMode: "prove"
|
||
});
|
||
this.getProveData();
|
||
}
|
||
},
|
||
getData() {
|
||
// 获取表单数据
|
||
if (!this.options.id) {
|
||
return;
|
||
}
|
||
let urlStr = app.getNetAddresss("plugin.diy-form-prove.frontend.controllers.prove.formDetail");
|
||
app._postNetWork({
|
||
url: urlStr,
|
||
data: {
|
||
id: this.data.id
|
||
},
|
||
success: (resdata) => {
|
||
let res = resdata.data;
|
||
if (res.result == 1) {
|
||
// if (res.data.form_data.is_prove == 0 && res.data.form_data.data_id) {
|
||
// // 场景:1.已提交但是一直没核销成功,手动删除。2.手动刷新页面
|
||
// this.data.dataId = res.data.form_data.data_id;
|
||
// this.delForm();
|
||
// return;
|
||
// }
|
||
this.setData({
|
||
thumb: res.data.form_data.thumb || null,
|
||
description:res.data.form_data.description || null,
|
||
loading: false,
|
||
field: res.data.form_data.fields,
|
||
status: res.data.form_data.status,
|
||
});
|
||
} else {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: res.msg,
|
||
duration: 1000,
|
||
});
|
||
}
|
||
},
|
||
fail: (res) => {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
submit(e) {
|
||
console.log(e.detail);
|
||
// 提交表单数据,提交后需要核销员核销
|
||
let urlStr = app.getNetAddresss("plugin.diy-form-prove.frontend.controllers.prove.saveData");
|
||
app._postNetWork({
|
||
url: urlStr,
|
||
data: {
|
||
form_id: this.data.id,
|
||
form_data: e.detail
|
||
},
|
||
success: (resdata) => {
|
||
let res = resdata.data;
|
||
if (res.result == 1) {
|
||
this.data.dataId = res.data.id;
|
||
this.getEwmImg(res.data.id);
|
||
} else {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: res.msg,
|
||
duration: 1000,
|
||
});
|
||
}
|
||
},
|
||
fail: (res) => {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
getEwmImg(_id) {
|
||
// 弹窗显示后,需要进行核销,轮询查询核销结果
|
||
let urlStr = app.getNetAddresss("plugin.diy-form-prove.frontend.controllers.prove.proveCode");
|
||
app._postNetWork({
|
||
url: urlStr,
|
||
data: {
|
||
data_id: _id
|
||
},
|
||
success: (resdata) => {
|
||
let res = resdata.data;
|
||
if (res.result == 1) {
|
||
this.setData({
|
||
code_url: `${res.data.code_url}?${Date.now()}`,
|
||
showCode: true,
|
||
finish: false,
|
||
});
|
||
this.pollTimers(); //轮询
|
||
const countDown = this.selectComponent('.control-count-down');
|
||
countDown.reset();
|
||
} else {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: res.msg,
|
||
duration: 1000,
|
||
});
|
||
}
|
||
},
|
||
fail: (res) => {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
pollTimers() {
|
||
if (this.data.finish) {
|
||
// 超过2分钟有效期
|
||
return;
|
||
}
|
||
let that = this;
|
||
let urlStr = app.getNetAddresss("plugin.diy-form-prove.frontend.controllers.prove.checkProve");
|
||
app._postNetWork({
|
||
url: urlStr,
|
||
data: {
|
||
id: this.data.dataId
|
||
},
|
||
success: (resdata) => {
|
||
let res = resdata.data;
|
||
if (res.result == 1) {
|
||
if (res.data.status == 0) {
|
||
this.data.timer = setTimeout(() => {
|
||
that.pollTimers();
|
||
}, 3000);
|
||
} else {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: '核销成功',
|
||
duration: 1000,
|
||
});
|
||
this.setData({
|
||
status: 1
|
||
});
|
||
this.initForm();
|
||
}
|
||
} else {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: res.msg,
|
||
duration: 1000,
|
||
});
|
||
}
|
||
},
|
||
fail: (res) => {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
close() {
|
||
let that = this;
|
||
let _text = this.data.finish ? "二维码链接已失效,请重新提交" : "关闭后数据需要重新填写,是否确认关闭";
|
||
wx.showModal({
|
||
title: '提示',
|
||
content: _text,
|
||
success(res) {
|
||
if (res.confirm) {
|
||
that.delForm();
|
||
that.initForm();
|
||
} else if (res.cancel) {
|
||
console.log('用户点击取消');
|
||
}
|
||
}
|
||
});
|
||
},
|
||
delForm() {
|
||
// 删除表单记录
|
||
// data_id为提交后的表单数据id
|
||
let urlStr = app.getNetAddresss("plugin.diy-form-prove.frontend.controllers.prove.delProve");
|
||
app._postNetWork({
|
||
url: urlStr,
|
||
data: {
|
||
data_id: this.data.dataId
|
||
},
|
||
success: (resdata) => {
|
||
let res = resdata.data;
|
||
if (res.result == 1) {
|
||
this.getData();
|
||
} else {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: res.msg,
|
||
duration: 1000,
|
||
});
|
||
}
|
||
},
|
||
fail: (res) => {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
finishTimer() {
|
||
this.setData({
|
||
finish: true
|
||
});
|
||
this.delForm();
|
||
this.initForm();
|
||
},
|
||
initForm() {
|
||
if (this.data.timer) clearTimeout(this.data.timer); //清理定时任务
|
||
this.setData({
|
||
showCode: false,
|
||
code_url: '',
|
||
dataId: null
|
||
});
|
||
},
|
||
|
||
// 核销 =======
|
||
getProveData() {
|
||
let urlStr = app.getNetAddresss("plugin.diy-form-prove.frontend.controllers.prove.dataDetail");
|
||
app._postNetWork({
|
||
url: urlStr,
|
||
data: {
|
||
id: this.data.id
|
||
},
|
||
success: (resdata) => {
|
||
let res = resdata.data;
|
||
if (res.result == 1) {
|
||
this.setData({
|
||
field: res.data.form_data.fields,
|
||
status: 1,
|
||
loading: false,
|
||
isProve: res.data.form_data.is_prove || false,
|
||
thumb: res.data.form_data.thumb || null,
|
||
description: res.data.form_data.description || null
|
||
});
|
||
} else {
|
||
wx.showModal({
|
||
title: '提示',
|
||
content: res.msg,
|
||
success(res) {
|
||
if (res.confirm) {
|
||
console.log('用户点击确定');
|
||
} else if (res.cancel) {
|
||
console.log('用户点击取消');
|
||
}
|
||
}
|
||
});
|
||
}
|
||
},
|
||
fail: (res) => {
|
||
console.log(res);
|
||
},
|
||
});
|
||
|
||
},
|
||
proveForm() {
|
||
if(this.data.isProve){
|
||
return;
|
||
}
|
||
let urlStr = app.getNetAddresss("plugin.diy-form-prove.frontend.controllers.prove.submitProve");
|
||
app._postNetWork({
|
||
url: urlStr,
|
||
data: {
|
||
data_id: this.data.id
|
||
},
|
||
success: (resdata) => {
|
||
let res = resdata.data;
|
||
wx.showModal({
|
||
title: '提示',
|
||
content: res.msg,
|
||
success(res) {}
|
||
});
|
||
if (res.result == 1) {
|
||
this.setData({
|
||
isProve: true
|
||
});
|
||
}
|
||
},
|
||
fail: (res) => {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
/**
|
||
* 生命周期函数--监听页面初次渲染完成
|
||
*/
|
||
onReady: function () {
|
||
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面显示
|
||
*/
|
||
onShow: function () {},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面隐藏
|
||
*/
|
||
onHide: function () {
|
||
if (this.data.timer) clearTimeout(this.data.timer); //清理定时任务
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面卸载
|
||
*/
|
||
onUnload: function () {
|
||
},
|
||
|
||
/**
|
||
* 页面相关事件处理函数--监听用户下拉动作
|
||
*/
|
||
onPullDownRefresh: function () {
|
||
|
||
},
|
||
|
||
/**
|
||
* 页面上拉触底事件的处理函数
|
||
*/
|
||
onReachBottom: function () {
|
||
|
||
},
|
||
|
||
/**
|
||
* 用户点击右上角分享
|
||
*/
|
||
onShareAppMessage: function () {
|
||
return {
|
||
title: this.data.thumb,
|
||
imageUrl: this.data.description
|
||
};
|
||
}
|
||
}); |