duidui_mini_program/pages/caogaozhi/caogaozhi.js
2026-03-27 10:41:46 +08:00

675 lines
14 KiB
JavaScript

var WxParse = require('../../wxParse/wxParse.js');
const app = getApp();
var that;
var Interval;
var wechat;
var id;
Page({
startX: 0,
startY: 0,
isClear: false,
//-----------------------------
// 数据变量
//-----------------------------
data: {
showModalStatus: true,
pen: 3,
color: '#FFFFFF',
currentTab: 0,
now: 1,//当前页码
all: 10,//总页码
height: 0,
time: "",
all_time: 0,
Timer_state: 1,
Answer_card: false,
Draft_paper: false,
false_analysis:false,
stem_height: 150,
jiexi:false,
field:{
analysis_text:"",
},
img:[],
scroll:"scroll",
index:0,
drag_line:false,
},
//-----------------------------
// 当页面加载时
//-----------------------------
onLoad: function (options) {
//定义变量
that = this;
id = options.id == undefined ? 269 : options.id;
},
onShow:function(){
app.Check();
wechat = wx.getStorageSync("wechat");
that.Get_a_problem(id);
that.get_config();
},
//-----------------------------
// 获取系统信息
//-----------------------------
get_config:function(){
wx.getSystemInfo({
success: function (res) {
that.setData({
height: res.windowHeight,
})
}
});
that.setData({
option_box_height:Number(that.data.height)-Number(that.data.stem_height),
})
},
//-----------------------------
// 获取问题详情
//-----------------------------
Get_a_problem:function(){
wx.request({
url: app.data.Home+'/index/Get_a_problem',
data: {
id:id,
wechat_id:wechat.wechat_id,
},
success: function(res) {
var info = res.data;
console.log(info);
if (info.stem_text!=null){
WxParse.wxParse('stem_text', "html", info.stem_text, that,0);
}
WxParse.wxParse('problem_text', "html",info.problem_text, that,0);
that.setData({
info:info,
})
that.check_coll();
}
})
},
//-----------------------------
// 点赞
//-----------------------------
on_zan:function(e){
wx.showLoading({
mask: true,
})
var a = e.currentTarget.dataset.a;
var b = e.currentTarget.dataset.b;
var id = e.currentTarget.dataset.id;
wx.showLoading();
wx.request({
url: app.data.Home + '/index/analysis_on_zan',
data: {
id:id,
wechat_id:wechat.wechat_id,
},
success: function (rs) {
wx.hideLoading();
if (rs.data == "Success") {
var info = that.data.info;
info.problem_analysis[b].analysis_zan = Number(info.problem_analysis[b].analysis_zan) +1;
info.problem_analysis[b].analysis_zan_state = Number(1);
that.setData({
info: info,
})
}
wx.hideLoading()
}
})
},
//-----------------------------
// 点赞
//-----------------------------
off_zan: function (e) {
wx.showLoading({
mask: true,
})
var a = e.currentTarget.dataset.a;
var b = e.currentTarget.dataset.b;
var id = e.currentTarget.dataset.id;
wx.showLoading();
wx.request({
url: app.data.Home + '/index/analysis_off_zan',
data: {
id: id,
wechat_id: wechat.wechat_id,
},
success: function (rs) {
wx.hideLoading();
if (rs.data=="Success") {
var info = that.data.info;
info.problem_analysis[b].analysis_zan = Number(info.problem_analysis[b].analysis_zan) - 1;
info.problem_analysis[b].analysis_zan_state = Number(2);
that.setData({
info:info,
})
}
wx.hideLoading();
}
})
},
//---------------------------------
// 图片预览
//---------------------------------
Picture_preview: function (res) {
var src = res.currentTarget.dataset.src;
var urls = res.currentTarget.dataset.urls;
//图片预览
wx.previewImage({
current: src, // 当前显示图片的http链接
urls: urls // 需要预览的图片http链接列表
})
},
//-----------------------------
// 上一个
//-----------------------------
prev: function (e) {
that.guodu();
var index = that.data.index-1;
if (index < 0) {
return false;
}
this.setData({
index:index,
now:index+1,
});
if(that.data.false_analysis == false){
that.Get_a_problem(that.data.list[index].problem_id);
}else{
that.Get_a_problem(that.data.score_wrong_problem[index]);
}
},
//-----------------------
// 下一个
//-----------------------
next: function (e) {
that.guodu();
var index = that.data.index+1;
if (index == (that.data.all) ) {
return false;
}
this.setData({
index:index,
now:index+1,
});
if(that.data.false_analysis == false){
that.Get_a_problem(that.data.list[index].problem_id);
}else{
that.Get_a_problem(that.data.score_wrong_problem[index]);
}
},
//-----------------------
// 点击数字跳转页面
//-----------------------
Continue:function(e){
that.guodu();
var index = e.currentTarget.dataset.index;
this.setData({
index:index,
now:index+1,
});
if(that.data.false_analysis == true){
var all = that.data.list.length;
that.setData({
false_analysis: false,
all: all,
})
}
that.change_answer_card();
that.Get_a_problem(that.data.list[index].problem_id);
},
//-----------------------
// 点击进入下一题
//-----------------------
click: function (res) {
that.guodu();
var eq = res.currentTarget.dataset.index;
var option = res.currentTarget.dataset.select;
var my_answer = that.data.my_answer;
my_answer[eq] = option;
var index = that.data.index+1;
if (index == (that.data.all) ) {
that.setData({
my_answer:my_answer,
})
that.change_answer_card();
return false;
}
this.setData({
index:index,
now:index+1,
my_answer:my_answer,
});
if(that.data.false_analysis == false){
that.Get_a_problem(that.data.list[index].problem_id);
}else{
that.Get_a_problem(that.data.score_wrong_problem[index]);
}
},
//-----------------------------
// 究极的过度效果
//-----------------------------
guodu:function(){
var animation = wx.createAnimation({
timingFunction: "linear",
delay: 0,
});
this.animation = animation;
animation.opacity(0).translateY(-50).scale(0).step(150);
this.setData({
animationData: animation.export()
})
setTimeout(function () {
animation.opacity(1).translateY(0).scale(1).step(100);
this.setData({
animationData: animation
})
}.bind(this),150);
},
//-----------------------------
// 查看全部解析
//-----------------------------
all_analysis: function (res) {
that.Get_a_problem(that.data.list[0].problem_id);
that.change_answer_card();
var all = that.data.list.length;
that.setData({
false_analysis: false,
now: 1,
index:0,
all: all,
})
},
//-----------------------------
// 查看错误解析
//-----------------------------
false_analysis:function(e){
that.Get_a_problem(that.data.score_wrong_problem[0]);
var all = that.data.score_wrong_problem.length;
that.setData({
false_analysis: true,
now:1,
index:0,
all: all,
})
that.change_answer_card();
},
//-----------------------------
// 切换答题卡状态 开启 关闭
//-----------------------------
change_answer_card: function () {
var card = that.data.Answer_card;
if (card == true) {
that.setData({
Answer_card: false,
})
} else {
that.setData({
Answer_card: true,
})
}
},
//-----------------------------
// 草稿纸
//-----------------------------
shows: function () {
console.log(that.data.Draft_paper);
if (that.data.Draft_paper == false) {
that.setData({
Draft_paper: true,
})
this.util('open');
} else {
that.setData({
Draft_paper: false,
showModalStatus: false
})
}
},
util: function (currentStatu) {
var animation = wx.createAnimation({
duration: 200,
timingFunction: "linear",
delay: 0,
});
this.animation = animation;
animation.opacity(0).rotateX(-100).step();
this.setData({
animationData: animation.export()
})
setTimeout(function () {
animation.opacity(1).rotateX(0).step();
this.setData({
animationData: animation
})
if (currentStatu == "close") {
this.setData({ showModalStatus: false });
}
}.bind(this), 200)
// 显示
if (currentStatu == "open") {
this.setData({
showModalStatus: true
});
}
},
//-----------------------------
// 手机触摸开始
//-----------------------------
touchStart: function (e) {
//得到触摸点的坐标
this.startX = e.changedTouches[0].x
this.startY = e.changedTouches[0].y
this.context = wx.createContext()
this.context.setStrokeStyle(this.data.color)
this.context.setLineWidth(this.data.pen)
this.context.setLineCap('round') // 让线条圆润
this.context.beginPath()
},
//-----------------------------
// 触摸后移动
//-----------------------------
touchMove: function (e) {
var startX1 = e.changedTouches[0].x
var startY1 = e.changedTouches[0].y
this.context.moveTo(this.startX, this.startY)
this.context.lineTo(startX1, startY1)
this.context.stroke()
this.startX = startX1;
this.startY = startY1;
wx.drawCanvas({
canvasId: 'myCanvas',
reserve: true,
actions: this.context.getActions()
})
},
penSelect: function (e) {
this.setData({ pen: parseInt(e.currentTarget.dataset.param) });
this.isClear = false;
},
colorSelect: function (e) {
this.setData({ color: e.currentTarget.dataset.param });
this.isClear = false;
},
cleardraw: function (e) {
this.setData({
showModalStatus: false
});
this.setData({
showModalStatus: true
});
},
//-----------------------------
// 我要解析 显示隐藏
//-----------------------------
I_want_to_parse:function(e){
var jiexi = that.data.jiexi;
if (jiexi == false){
that.setData({
jiexi:true,
problem_id: that.data.info.problem_id,
})
}else{
that.setData({
jiexi:false,
problem_id:"",
})
}
},
//-----------------------------
// 打字
//-----------------------------
dazi:function(e){
var value = e.detail.value;
var name = e.currentTarget.dataset.name;
that.data.field[name] = value;
that.setData({
field:that.data.field
});
},
//--------------------------
// 上传
//--------------------------
upload: function () {
wx.showLoading({
mask:true,
})
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: function (res) {
var tempFilePaths = res.tempFilePaths
wx.uploadFile({
url: getApp().data.Home + "/Comment/upload",
filePath: tempFilePaths[0],
name: 'file',
header: { 'content-type': 'multipart/form-data' },
success: function (res) {
wx.hideLoading();
var len = that.data.img.length;
if (len >= 3) {
wx.showModal({
title: app.data.error_title,
content: '都说了不要超过三张了',
showCancel: false,
})
return false;
}
if (len == 0) {
that.data.img[0] = res.data;
that.setData({
img: that.data.img
})
} else {
that.data.img[len] = res.data;
that.setData({
img: that.data.img
})
}
}
})
}
})
},
//-----------------------------
// 提交解析
//-----------------------------
submit:function(e){
wx.showLoading({
mask:true,
})
wx.request({
url: app.data.Home + '/index/submit_analysis',
data: {
analysis_author: wechat.wechat_id,
analysis_problem: that.data.problem_id,
analysis_text: that.data.field.analysis_text == undefined ? "" : that.data.field.analysis_text,
analysis_img: that.data.img == undefined ? "" : that.data.img,
},
method:"post",
success: function (rs) {
wx.hideLoading();
if(rs.data == 'Success'){
that.Get_a_problem(id);
wx.showModal({
content: '提交成功',
showCancel: false,
success: function (res) {
that.Get_a_problem();
that.setData({
jiexi: false,
field: {
analysis_text: "",
},
img: [],
problem_id:"",
})
}
})
}
}
})
},
//-----------------------------
// 判断收藏
//-----------------------------
check_coll:function(){
var id = that.data.info.problem_id;
wx.request({
url: app.data.Home + '/index/check_coll',
data: {
wechat_id:wechat.wechat_id,
id:id,
},
success: function (rs) {
if(rs.data == "Success"){
that.setData({
check_coll:true,
})
}else{
that.setData({
check_coll:false,
})
}
}
})
},
//-----------------------------
// 是否收藏
//-----------------------------
coll:function(){
wx.showLoading({
mask:true,
})
var id = that.data.info.problem_id;
wx.request({
url: app.data.Home + '/index/coll',
data: {
wechat_id:wechat.wechat_id,
id:id,
},
success: function (rs) {
wx.hideLoading();
if (rs.data == "Success") {
that.setData({
check_coll: true,
})
wx.showToast({
title: '已收藏',
icon: 'success',
duration: 2000
})
} else {
that.setData({
check_coll: false,
})
wx.showToast({
title: '已取消',
icon: 'success',
duration: 2000
})
}
}
})
},
//-----------------------------
// 页面分享
//-----------------------------
onShareAppMessage: function () {
var id = that.data.info.problem_id;
var Share = {
title: '怼怼公考',
desc: '怼怼公考',
path: "/pages/problem/problem?id=" + id,
};
return Share;
},
//-----------------------------
// 重置
//-----------------------------
reset: function () {
that.setData({
jiexi: false,
img: [],
problem_id: "",
})
},
//-----------------------------
// 过渡效果
//-----------------------------
drag_line: function () {
var drag_line = that.data.drag_line;
if (drag_line) {
that.setData({
drag_line: false,
})
} else {
that.setData({
drag_line: true,
})
}
that.change();
},
//-----------------------------
// 究极的过度效果
//-----------------------------
change: function (state) {
var animation = wx.createAnimation({
timingFunction: "linear",
delay: 0,
});
that.animation = animation;
var drag_line = that.data.drag_line;
var height = that.data.height - 129;
if (drag_line) {
animation.height(height).step(150);
that.setData({
animationData2: animation.export()
})
} else {
animation.height(app.data.stem_height).step(150);
that.setData({
animationData2: animation.export()
})
}
},
//-----------------------------
// 页面分享
//-----------------------------
onShareAppMessage: function () {
return app.Share();
},
})