device-param-100803.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. function PowerPackageComponent(option) {
  2. var _el = option.el;
  3. var _packages = option.packages;
  4. var app = this.app = new Vue({
  5. el: _el,
  6. template: `
  7. <div class="power-package-component">
  8. <div class="mui-input-group">
  9. <div class="mui-table-view-cell" v-for="(obj,index) in info.packages">
  10. <span>功率范围:{{obj.lowLimit}}W-{{obj.upLimit}}W,</span>
  11. <span >{{obj.price}}元/{{obj.time}}分钟</span>
  12. <span class="mui-pull-right">
  13. <em v-on:click="editPackageRule(obj,index)" class="padding-t-b-10"><i class="iconfont icon-edit c-primary"></i>编辑</em>
  14. <em v-on:click="deletePackageRule(obj,index)" class="padding-t-b-10" ><i
  15. class="iconfont icon-delete c-red"></i>删除</em></span>
  16. </div>
  17. <div class="mui-table-view-cell"
  18. v-on:click="addPackageRule()"><span><i class="iconfont icon-add c-success font-18"></i>添加</span></div>
  19. </div>
  20. <div class="edit-back packageDialog" v-bind:class="{ hidden: !info.dialogOpen }">
  21. <div class="edit-content">
  22. <div class="edit-box ">
  23. <div class="mui-input-row">
  24. <label>最小功率</label>
  25. <div class="mui-pull-right edit-row">
  26. <input type="number" inputmode="decimal" maxlength="5" v-model.number="info.dialogData.lowLimit"/>
  27. <span>W</span>
  28. </div>
  29. </div>
  30. <div class="mui-input-row">
  31. <label>最大功率</label>
  32. <div class="mui-pull-right edit-row">
  33. <input type="number" inputmode="decimal" maxlength="5" v-model.number="info.dialogData.upLimit"/>
  34. <span>W</span>
  35. </div>
  36. </div>
  37. <div class="mui-input-row">
  38. <label>价格</label>
  39. <div class="mui-pull-right edit-row">
  40. <input type="number" inputmode="decimal" maxlength="5" v-model.number="info.dialogData.price"
  41. />
  42. <span>币</span>
  43. </div>
  44. </div>
  45. <div class="mui-input-row ">
  46. <label>时间</label>
  47. <div class="mui-pull-right edit-row">
  48. <input type="number" maxlength="5" v-model="info.dialogData.time"
  49. />
  50. <span>分钟</span>
  51. </div>
  52. </div>
  53. </div>
  54. <div class="mui-popup-buttons ">
  55. <span class="mui-popup-button" v-on:click="closeRulePanel()">取消</span>
  56. <span class="mui-popup-button mui-popup-button-bold" v-on:click="savePackageRule()">确认</span>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. `
  62. ,
  63. data: {
  64. info: {
  65. dialogIndex: 0,
  66. dialogOpen: false,
  67. dialogData: {},
  68. packages: []
  69. },
  70. },
  71. mounted: function () {
  72. var that = this
  73. that.initPackages();
  74. },
  75. computed: {},
  76. filters: {},
  77. methods: {
  78. initPackages: function () {
  79. this.info.packages = _packages;
  80. },
  81. editPackageRule: function (obj, index) {
  82. this.info.dialogIndex = index;
  83. this.info.dialogOpen = true;
  84. this.info.dialogData = $.extend(true, {}, obj);
  85. $("body").addClass("over-hide");//避免滚动穿透,直接禁止body滚动
  86. },
  87. deletePackageRule: function (obj, index) {
  88. var that = this;
  89. var tnArray = ['取消', '确认'];
  90. mui.confirm('确定要删除该套餐?', '温馨提示', tnArray, function (e) {
  91. if (e.index == 0) {
  92. } else {
  93. //点击确认业务
  94. that.info.packages.splice(index, 1);
  95. }
  96. });
  97. },
  98. closeRulePanel: function () {
  99. this.info.dialogOpen = false;
  100. $("body").removeClass("over-hide");//恢复body滚动
  101. },
  102. savePackageRule: function () {
  103. var dialogData = this.info.dialogData;
  104. var packages = this.info.packages
  105. if ($.trim(dialogData.lowLimit) == '') {
  106. mui.toast("最小功率不能为空");
  107. return;
  108. }
  109. if ($.trim(dialogData.upLimit) == '') {
  110. mui.toast("最大功率不能为空");
  111. return;
  112. }
  113. var dialogIndex = this.info.dialogIndex;
  114. if (dialogIndex >= 1) {
  115. var prvItem = packages[dialogIndex-1];
  116. if (dialogData.lowLimit < prvItem.upLimit) {
  117. mui.toast("最小功率必须大于上一个配置的最大功率");
  118. return;
  119. }
  120. }
  121. if (dialogIndex < (packages.length - 1)) {
  122. var lastItem = packages[dialogIndex + 1];
  123. if (dialogData.upLimit > lastItem.lowLimit) {
  124. mui.toast("最大功率必须大于上一个配置的最小功率");
  125. return;
  126. }
  127. }
  128. if (dialogData.lowLimit >= dialogData.upLimit) {
  129. mui.toast("最大功率必须大于最小功率");
  130. return;
  131. }
  132. if ($.trim(dialogData.price) == '') {
  133. mui.toast("价格不能为空");
  134. return;
  135. }
  136. if (!dialogData.time) {
  137. mui.toast("时间不能为空");
  138. return;
  139. }
  140. this.info.packages[this.info.dialogIndex] = $.extend(true, {}, this.info.dialogData);
  141. this.info.dialogOpen = false;
  142. $("body").removeClass("over-hide");//恢复body滚动
  143. },
  144. addPackageRule: function () {
  145. this.info.dialogIndex = this.info.packages.length;
  146. this.info.dialogOpen = true;
  147. $("body").addClass("over-hide");//避免滚动穿透,直接禁止body滚动
  148. this.info.dialogData = {
  149. name: "",
  150. };
  151. },
  152. }
  153. });
  154. }
  155. PowerPackageComponent.prototype.getPackages = function () {
  156. return this.app.info.packages;
  157. };