device-param-100286.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. /**
  2. * 连续功率模式
  3. * @param option
  4. * @constructor
  5. */
  6. function PowerPackageComponent(option) {
  7. var _el = option.el;
  8. var _packages = option.packages;
  9. return new Vue({
  10. el: _el,
  11. template: `
  12. <div class="power-package-component">
  13. <div class="mui-input-group">
  14. <div class="mui-table-view-cell" v-for="(obj,index) in info.packages">
  15. <span>第{{index+1}}档功率:{{obj.max}}W</span>
  16. <span>,{{obj.price}}元/小时</span>
  17. <span class="mui-pull-right">
  18. <em v-on:click="editPackageRule(obj,index)" class="padding-t-b-10"><i class="iconfont icon-edit c-primary"></i>编辑</em>
  19. <em v-on:click="deletePackageRule(obj,index)" class="padding-t-b-10" ><i
  20. class="iconfont icon-delete c-red"></i>删除</em></span>
  21. </div>
  22. <div class="mui-table-view-cell" v-if="info.packages.length<10"
  23. v-on:click="addPackageRule()"><span><i class="iconfont icon-add c-success font-18"></i>添加</span></div>
  24. </div>
  25. <!-- v-if:编辑后,必须移掉此元素,否则submit会报 focus异常-->
  26. <div class="edit-back packageDialog" v-if="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.max"/>
  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.price"
  40. />
  41. <span>元/小时</span>
  42. </div>
  43. </div>
  44. </div>
  45. <div class="mui-popup-buttons ">
  46. <span class="mui-popup-button" v-on:click="closeRulePanel()">取消</span>
  47. <span class="mui-popup-button mui-popup-button-bold" v-on:click="savePackageRule()">确认</span>
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. `,
  53. data: {
  54. info: {
  55. dialogIndex: 0,
  56. dialogOpen: false,
  57. dialogData: {},
  58. packages: []
  59. },
  60. },
  61. mounted: function () {
  62. var that = this
  63. that.initPackages();
  64. },
  65. methods: {
  66. initPackages: function () {
  67. this.info.packages = _packages;
  68. },
  69. editPackageRule: function (obj, index) {
  70. this.info.dialogIndex = index;
  71. this.info.dialogOpen = true;
  72. this.info.dialogData = $.extend(true, {}, obj);
  73. $("body").addClass("over-hide");//避免滚动穿透,直接禁止body滚动
  74. },
  75. deletePackageRule: function (obj, index) {
  76. var that = this;
  77. var tnArray = ['取消', '确认'];
  78. mui.confirm('确定要删除该套餐?', '温馨提示', tnArray, function (e) {
  79. if (e.index == 0) {
  80. } else {
  81. //点击确认业务
  82. that.info.packages.splice(index, 1);
  83. }
  84. });
  85. },
  86. closeRulePanel: function () {
  87. this.info.dialogOpen = false;
  88. $("body").removeClass("over-hide");//恢复body滚动
  89. },
  90. savePackageRule: function () {
  91. var dialogData = this.info.dialogData;
  92. var packages = this.info.packages
  93. if ($.trim(dialogData.max) == '') {
  94. mui.toast("最大功率不能为空");
  95. return;
  96. }
  97. var dialogIndex = this.info.dialogIndex;
  98. if ($.trim(dialogData.price) == '') {
  99. mui.toast("价格不能为空");
  100. return;
  101. }
  102. this.info.packages.splice(this.info.dialogIndex, 1, $.extend(true, {}, dialogData))
  103. this.info.dialogOpen = false;
  104. $("body").removeClass("over-hide");//恢复body滚动
  105. },
  106. addPackageRule: function () {
  107. var packages = this.info.packages
  108. var dialogIndex = this.info.dialogIndex = this.info.packages.length;
  109. this.info.dialogOpen = true;
  110. $("body").addClass("over-hide");//避免滚动穿透,直接禁止body滚动
  111. this.info.dialogData = {};
  112. if (dialogIndex >= 1) {
  113. var prvItem = packages[dialogIndex - 1];
  114. this.info.dialogData.min = prvItem.max;
  115. }
  116. },
  117. }
  118. });
  119. }