warningconfIginfo.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. const app = getApp();
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. warningInfo:{},
  8. lists:[],
  9. seleteType:[{type:2,name:'报警'},{type:1,name:'预警'}],
  10. },
  11. /**
  12. * 生命周期函数--监听页面加载
  13. */
  14. onLoad: function (options) {
  15. const {groupId,isEdit} = options;
  16. this.setData({isEdit,groupId})
  17. this.warningInfo(groupId)
  18. },
  19. warningInfo(groupId){
  20. var that = this;
  21. var seleteType = that.data.seleteType;
  22. app.requestP({
  23. url:'/tempRuleGroup/info',
  24. methods:'post',
  25. data:{
  26. groupId
  27. }
  28. }).then(res=>{
  29. that.setData({
  30. warningInfo:res.data.data,
  31. name:res.data.data.name,
  32. warningList:res.data.data.childList,
  33. lists:res.data.data.childList.map((item,index)=>{
  34. return {...item , name: item.type == 1 ?'预警': item.type == 2 ?'报警':'--'}
  35. })
  36. })
  37. }).catch(err=>{
  38. app.showToptip(that,'error',err.data.msg)
  39. })
  40. },
  41. getValue(e){
  42. var that = this;
  43. //下标
  44. var index = e.currentTarget.dataset.index;
  45. //数据
  46. var value = e.detail.value;
  47. //类型
  48. var type = e.currentTarget.dataset.type;
  49. value = value.replace(/[^\d\.-]/g,'')
  50. that.setValue(index,value,type);
  51. },
  52. setValue(index,value,type){
  53. var that = this;
  54. //动态设置属性值
  55. var type = "lists["+index+"]."+type;
  56. that.setData({
  57. [type] : value
  58. })
  59. },
  60. addList: function(){
  61. var that = this;
  62. var lists = this.data.lists;
  63. this.isList(lists).then(res=>{
  64. var newData={type:'',maxCount:'',maxTemp:'',minTemp:''};
  65. lists.push(newData);
  66. that.setData({lists});
  67. }).catch(err=>{
  68. app.showToptip(that, "error",err.text);
  69. })
  70. },
  71. isList(lists){
  72. let flag;
  73. var reg = /^(\-|\+)?\d+(\.\d+)?$/;
  74. var text;
  75. return new Promise((resolve,reject)=>{
  76. for(var i =0;i<lists.length;i++){
  77. if(String(lists[i].type).length==0 || String(lists[i].maxCount).length==0 || String(lists[i].maxTemp).length==0 || String(lists[i].minTemp).length==0){
  78. reject({status:false,text:'温度不能为空'})
  79. break;
  80. }
  81. if(lists[i].maxTemp < lists[i].minTemp){
  82. reject({status:false,text:'最高温度不能小于最低温度'})
  83. break;
  84. }
  85. resolve({status:true,text:'输入正确'})
  86. }
  87. })
  88. },
  89. setType(e){
  90. var that = this;
  91. //下标
  92. var index = e.currentTarget.dataset.index;
  93. //数据
  94. var value = e.detail.value;
  95. var type = "lists["+index+"].type";
  96. var name = "lists["+index+"].name";
  97. var seleteType = this.data.seleteType;
  98. this.setData({
  99. [type] : seleteType[value].type,
  100. [name] : seleteType[value].name,
  101. })
  102. },
  103. // 手指触摸动作开始
  104. touchStart: function (e) {
  105. let that = this;
  106. //开始触摸时 重置所有删除
  107. that.data.lists.forEach(function (v, i) {
  108. if (v.isTouchMove) v.isTouchMove = false; // 只操作为true的
  109. })
  110. // 记录手指触摸开始坐标
  111. that.setData({
  112. startX: e.changedTouches[0].clientX, // 开始X坐标
  113. startY: e.changedTouches[0].clientY, // 开始Y坐标
  114. lists: that.data.lists
  115. })
  116. },
  117. // 手指触摸后移动
  118. touchMove: function (e) {
  119. let that = this,
  120. index = e.currentTarget.dataset.index, // 当前下标
  121. startX = that.data.startX, // 开始X坐标
  122. startY = that.data.startY, // 开始Y坐标
  123. touchMoveX = e.changedTouches[0].clientX, // 滑动变化坐标
  124. touchMoveY = e.changedTouches[0].clientY, // 滑动变化坐标
  125. // 获取滑动角度
  126. angle = that.angle({
  127. X: startX,
  128. Y: startY
  129. }, {
  130. X: touchMoveX,
  131. Y: touchMoveY
  132. });
  133. // 判断滑动角度
  134. that.data.lists.forEach(function (v, i) {
  135. v.isTouchMove = false
  136. // 滑动超过30度角 return
  137. if (Math.abs(angle) > 30) return;
  138. if (i == index) {
  139. // 右滑
  140. if (touchMoveX > startX)
  141. v.isTouchMove = false
  142. // 左滑
  143. else
  144. v.isTouchMove = true
  145. }
  146. })
  147. // 更新数据
  148. that.setData({
  149. lists: that.data.lists
  150. })
  151. },
  152. // 计算滑动角度
  153. angle: function (start, end) {
  154. let that = this,
  155. _X = end.X - start.X,
  156. _Y = end.Y - start.Y;
  157. // 返回角度 /Math.atan()返回数字的反正切值
  158. return 360 * Math.atan(_Y / _X) / (2 * Math.PI);
  159. },
  160. submit(){
  161. var that = this;
  162. var name = this.data.name;
  163. var lists = this.data.lists;
  164. var warningInfo = this.data.warningInfo;
  165. this.isList(lists).then(res=>{
  166. if(!name){
  167. app.showToptip(that, "error",'名称不能为空');
  168. return ;
  169. }
  170. app.requestP({
  171. url:'/tempRule/edit',
  172. method:'post',
  173. contentType:'application/json',
  174. data:{
  175. name,
  176. childList:lists,
  177. groupId:warningInfo.groupId
  178. }
  179. }).then(res=>{
  180. wx.navigateBack({
  181. delta:1
  182. })
  183. app.showToptip(that,"success",res.data.msg);
  184. }).catch(err=>{
  185. app.showToptip(that,"error",err.data.msg);
  186. })
  187. }).catch(err=>{
  188. app.showToptip(that, "error",err.text);
  189. })
  190. },
  191. /**
  192. * 生命周期函数--监听页面初次渲染完成
  193. */
  194. onReady: function () {
  195. },
  196. setName(e){
  197. this.setData({name:e.detail.value})
  198. },
  199. delList(e){
  200. var index = e.currentTarget.dataset.index;
  201. var lists = this.data.lists;
  202. var arr = lists;
  203. arr.splice(index,1);
  204. this.setData({
  205. lists:arr
  206. })
  207. },
  208. /**
  209. * 生命周期函数--监听页面显示
  210. */
  211. onShow: function () {
  212. },
  213. /**
  214. * 生命周期函数--监听页面隐藏
  215. */
  216. onHide: function () {
  217. },
  218. /**
  219. * 生命周期函数--监听页面卸载
  220. */
  221. onUnload: function () {
  222. },
  223. /**
  224. * 页面相关事件处理函数--监听用户下拉动作
  225. */
  226. onPullDownRefresh: function () {
  227. },
  228. /**
  229. * 页面上拉触底事件的处理函数
  230. */
  231. onReachBottom: function () {
  232. },
  233. /**
  234. * 用户点击右上角分享
  235. */
  236. onShareAppMessage: function () {
  237. }
  238. })