device-param-1008031.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. function PowerPackageComponent(option) {
  2. var _el = option.el;
  3. var _packages = option.packages;
  4. var _price = option.price;
  5. var app = this.app = new Vue({
  6. el: _el,
  7. template: `
  8. <div class="power-package-component">
  9. <div class="mui-input-group">
  10. <div class="mui-input-row">
  11. <label class="">默认价格</label>
  12. <input type="number" inputmode="decimal" class="mui-text-right font-b-10" v-model.number="info.price" style="padding-right:58px "/>
  13. <span class="font-b-12" style="position: absolute;right: 15px;top: 12px;">元/小时</span>
  14. </div>
  15. <div class="mui-table-view-cell" v-for="(obj,index) in info.packages">
  16. <span>功率范围:{{obj.min}}W-{{obj.max}}W,</span>
  17. <span >{{obj.price}}元/小时</span>
  18. <span class="mui-pull-right">
  19. <em v-on:click="editPackageRule(obj,index)" class="padding-t-b-10"><i class="iconfont icon-edit c-primary"></i>编辑</em>
  20. <em v-on:click="deletePackageRule(obj,index)" class="padding-t-b-10" ><i
  21. class="iconfont icon-delete c-red"></i>删除</em></span>
  22. </div>
  23. <div class="mui-table-view-cell"
  24. v-on:click="addPackageRule()"><span><i class="iconfont icon-add c-success font-18"></i>添加</span></div>
  25. </div>
  26. <div class="edit-back packageDialog" v-bind:class="{ hidden: !info.dialogOpen }">
  27. <div class="edit-content">
  28. <div class="edit-box ">
  29. <div class="mui-input-row">
  30. <label>最小功率</label>
  31. <div class="mui-pull-right edit-row">
  32. <input type="number" inputmode="decimal" maxlength="5" v-model.number="info.dialogData.min"/>
  33. <span>W</span>
  34. </div>
  35. </div>
  36. <div class="mui-input-row">
  37. <label>最大功率</label>
  38. <div class="mui-pull-right edit-row">
  39. <input type="number" inputmode="decimal" maxlength="5" v-model.number="info.dialogData.max"/>
  40. <span>W</span>
  41. </div>
  42. </div>
  43. <div class="mui-input-row">
  44. <label>价格</label>
  45. <div class="mui-pull-right edit-row">
  46. <input type="number" inputmode="decimal" maxlength="5" v-model.number="info.dialogData.price"
  47. />
  48. <span>元/小时</span>
  49. </div>
  50. </div>
  51. </div>
  52. <div class="mui-popup-buttons ">
  53. <span class="mui-popup-button" v-on:click="closeRulePanel()">取消</span>
  54. <span class="mui-popup-button mui-popup-button-bold" v-on:click="savePackageRule()">确认</span>
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. `
  60. ,
  61. data: {
  62. info: {
  63. dialogIndex: 0,
  64. dialogOpen: false,
  65. dialogData: {},
  66. price: 1,
  67. packages: []
  68. },
  69. },
  70. mounted: function () {
  71. var that = this
  72. that.initPackages();
  73. },
  74. computed: {},
  75. filters: {},
  76. methods: {
  77. initPackages: function () {
  78. this.info.packages = _packages;
  79. this.info.price = _price;
  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.min) == '') {
  106. mui.toast("最小功率不能为空");
  107. return;
  108. }
  109. if ($.trim(dialogData.max) == '') {
  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.min < prvItem.max) {
  117. mui.toast("最小功率必须大于上一个配置的最大功率");
  118. return;
  119. }
  120. }
  121. if (dialogIndex < (packages.length - 1)) {
  122. var lastItem = packages[dialogIndex + 1];
  123. if (dialogData.max > lastItem.min) {
  124. mui.toast("最大功率必须大于上一个配置的最小功率");
  125. return;
  126. }
  127. }
  128. if (dialogData.min >= dialogData.max) {
  129. mui.toast("最大功率必须大于最小功率");
  130. return;
  131. }
  132. if ($.trim(dialogData.price) == '') {
  133. mui.toast("价格不能为空");
  134. return;
  135. }
  136. this.info.packages[this.info.dialogIndex] = $.extend(true, {}, this.info.dialogData);
  137. this.info.dialogOpen = false;
  138. $("body").removeClass("over-hide");//恢复body滚动
  139. },
  140. addPackageRule: function () {
  141. this.info.dialogIndex = this.info.packages.length;
  142. this.info.dialogOpen = true;
  143. $("body").addClass("over-hide");//避免滚动穿透,直接禁止body滚动
  144. this.info.dialogData = {
  145. };
  146. },
  147. }
  148. });
  149. }
  150. PowerPackageComponent.prototype.getPackages = function () {
  151. return this.app.info.packages;
  152. };
  153. PowerPackageComponent.prototype.getPrice = function () {
  154. return this.app.info.price;
  155. };
  156. function PowerPackageComponent2(option) {
  157. var _el = option.el;
  158. var _packages = option.packages;
  159. var _price = option.price;
  160. var app = this.app = new Vue({
  161. el: _el,
  162. template: `
  163. <div class="power-package-component">
  164. <div class="mui-input-group">
  165. <div class="mui-input-row">
  166. <label class="">默认价格</label>
  167. <input type="number" class="mui-text-right font-b-10" v-model="info.price" style="padding-right:58px "/>
  168. <span class="font-b-12" style="position: absolute;right: 15px;top: 12px;">元/小时</span>
  169. </div>
  170. <div class="mui-table-view-cell" v-for="(obj,index) in info.packages">
  171. <span>时段:{{obj.min}} -{{obj.max}},</span>
  172. <span >{{obj.price}}元/小时</span>
  173. <span class="mui-pull-right">
  174. <em v-on:click="editPackageRule(obj,index)" class="padding-t-b-10"><i class="iconfont icon-edit c-primary"></i>编辑</em>
  175. <em v-on:click="deletePackageRule(obj,index)" class="padding-t-b-10" ><i
  176. class="iconfont icon-delete c-red"></i>删除</em></span>
  177. </div>
  178. <div class="mui-table-view-cell"
  179. v-on:click="addPackageRule()"><span><i class="iconfont icon-add c-success font-18"></i>添加</span></div>
  180. </div>
  181. <div class="edit-back packageDialog" v-bind:class="{ hidden: !info.dialogOpen }">
  182. <div class="edit-content">
  183. <div class="edit-box ">
  184. <div class="mui-input-row">
  185. <label>起始时间(0-24)</label>
  186. <div class="mui-pull-right edit-row">
  187. <input type="number" step="1" min="0" max="24" v-model="info.dialogData.min"/>
  188. </div>
  189. </div>
  190. <div class="mui-input-row">
  191. <label>结束时间(0-24)</label>
  192. <div class="mui-pull-right edit-row">
  193. <input type="number" step="1" min="0" max="24" v-model="info.dialogData.max"/>
  194. </div>
  195. </div>
  196. <div class="mui-input-row">
  197. <label>价格</label>
  198. <div class="mui-pull-right edit-row">
  199. <input type="number" maxlength="5" v-model="info.dialogData.price"
  200. />
  201. <span>元/小时</span>
  202. </div>
  203. </div>
  204. </div>
  205. <div class="mui-popup-buttons ">
  206. <span class="mui-popup-button" v-on:click="closeRulePanel()">取消</span>
  207. <span class="mui-popup-button mui-popup-button-bold" v-on:click="savePackageRule()">确认</span>
  208. </div>
  209. </div>
  210. </div>
  211. </div>
  212. `
  213. ,
  214. data: {
  215. info: {
  216. dialogIndex: 0,
  217. dialogOpen: false,
  218. dialogData: {},
  219. price: 1,
  220. packages: []
  221. },
  222. },
  223. mounted: function () {
  224. var that = this
  225. that.initPackages();
  226. },
  227. computed: {},
  228. filters: {},
  229. methods: {
  230. initPackages: function () {
  231. this.info.packages = _packages;
  232. this.info.price = _price;
  233. },
  234. editPackageRule: function (obj, index) {
  235. this.info.dialogIndex = index;
  236. this.info.dialogOpen = true;
  237. this.info.dialogData = $.extend(true, {}, obj);
  238. $("body").addClass("over-hide");//避免滚动穿透,直接禁止body滚动
  239. },
  240. deletePackageRule: function (obj, index) {
  241. var that = this;
  242. var tnArray = ['取消', '确认'];
  243. mui.confirm('确定要删除该套餐?', '温馨提示', tnArray, function (e) {
  244. if (e.index == 0) {
  245. } else {
  246. //点击确认业务
  247. that.info.packages.splice(index, 1);
  248. }
  249. });
  250. },
  251. closeRulePanel: function () {
  252. this.info.dialogOpen = false;
  253. $("body").removeClass("over-hide");//恢复body滚动
  254. },
  255. savePackageRule: function () {
  256. var dialogData = this.info.dialogData;
  257. if ($.trim(dialogData.max) == '') {
  258. mui.toast("起始时间不能为空");
  259. return;
  260. }
  261. if ($.trim(dialogData.min) == '') {
  262. mui.toast("结束不能为空");
  263. return;
  264. }
  265. if ($.trim(dialogData.price) == '') {
  266. mui.toast("价格不能为空");
  267. return;
  268. }
  269. this.info.packages[this.info.dialogIndex] = $.extend(true, {}, this.info.dialogData);
  270. this.info.dialogOpen = false;
  271. $("body").removeClass("over-hide");//恢复body滚动
  272. },
  273. addPackageRule: function () {
  274. this.info.dialogIndex = this.info.packages.length;
  275. this.info.dialogOpen = true;
  276. $("body").addClass("over-hide");//避免滚动穿透,直接禁止body滚动
  277. this.info.dialogData = {
  278. };
  279. },
  280. }
  281. });
  282. }
  283. PowerPackageComponent2.prototype.getPackages = function () {
  284. return this.app.info.packages;
  285. };
  286. PowerPackageComponent2.prototype.getPrice = function () {
  287. return this.app.info.price;
  288. };