dialog.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <style scoped lang="scss">
  2. </style>
  3. <template>
  4. <div class="system-dialog-container">
  5. <el-drawer
  6. :title="state.dialog.title"
  7. v-model="state.dialog.isShowDialog"
  8. width="820px"
  9. append-to-body
  10. destroy-on-close
  11. :close-on-click-modal="false"
  12. >
  13. <el-form
  14. :model="state.ruleForm"
  15. :rules="state.rules"
  16. label-position="left"
  17. ref="formRef"
  18. size="default"
  19. label-width="100px"
  20. class="mt5">
  21. <el-form-item label="实际抄表电费金额(分)" prop="actualElecMoney">
  22. <el-input
  23. v-model="state.ruleForm.actualElecMoney"
  24. placeholder="实际抄表电费金额(分)"
  25. clearable
  26. class="wd200">
  27. </el-input>
  28. </el-form-item>
  29. <el-form-item label="实际抄表电量" prop="actualPower">
  30. <el-input
  31. v-model="state.ruleForm.actualPower"
  32. placeholder="实际抄表电量"
  33. clearable
  34. class="wd200">
  35. </el-input>
  36. </el-form-item>
  37. <el-form-item label="单枪平均日充电量" prop="avgConnectorElec">
  38. <el-input
  39. v-model="state.ruleForm.avgConnectorElec"
  40. placeholder="单枪平均日充电量"
  41. clearable
  42. class="wd200">
  43. </el-input>
  44. </el-form-item>
  45. <el-form-item label="订单平均充电量" prop="avgOrderElec">
  46. <el-input
  47. v-model="state.ruleForm.avgOrderElec"
  48. placeholder="订单平均充电量"
  49. clearable
  50. class="wd200">
  51. </el-input>
  52. </el-form-item>
  53. <el-form-item label="订单平均充电费用" prop="avgOrderMoney">
  54. <el-input
  55. v-model="state.ruleForm.avgOrderMoney"
  56. placeholder="订单平均充电费用"
  57. clearable
  58. class="wd200">
  59. </el-input>
  60. </el-form-item>
  61. <el-form-item label="充电人数" prop="chargeUsers">
  62. <el-input
  63. v-model="state.ruleForm.chargeUsers"
  64. placeholder="充电人数"
  65. clearable
  66. class="wd200">
  67. </el-input>
  68. </el-form-item>
  69. <el-form-item label="设备使用率" prop="connectorUsageRate">
  70. <el-input
  71. v-model="state.ruleForm.connectorUsageRate"
  72. placeholder="设备使用率"
  73. clearable
  74. class="wd200">
  75. </el-input>
  76. </el-form-item>
  77. <el-form-item label="总优惠金额" prop="discountAmount">
  78. <el-input
  79. v-model="state.ruleForm.discountAmount"
  80. placeholder="总优惠金额"
  81. clearable
  82. class="wd200">
  83. </el-input>
  84. </el-form-item>
  85. <el-form-item label="总电费" prop="elecMoney">
  86. <el-input
  87. v-model="state.ruleForm.elecMoney"
  88. placeholder="总电费"
  89. clearable
  90. class="wd200">
  91. </el-input>
  92. </el-form-item>
  93. <el-form-item label="总服务费" prop="serviceMoney">
  94. <el-input
  95. v-model="state.ruleForm.serviceMoney"
  96. placeholder="总服务费"
  97. clearable
  98. class="wd200">
  99. </el-input>
  100. </el-form-item>
  101. <el-form-item label="服务费优惠金额" prop="serviceMoneyDiscount">
  102. <el-input
  103. v-model="state.ruleForm.serviceMoneyDiscount"
  104. placeholder="服务费优惠金额"
  105. clearable
  106. class="wd200">
  107. </el-input>
  108. </el-form-item>
  109. <el-form-item label="统计时间" prop="statMonth">
  110. <el-input
  111. v-model="state.ruleForm.statMonth"
  112. placeholder="统计时间"
  113. clearable
  114. class="wd200">
  115. </el-input>
  116. </el-form-item>
  117. <el-form-item label="站点id" prop="stationId">
  118. <el-input
  119. v-model="state.ruleForm.stationId"
  120. placeholder="站点id"
  121. clearable
  122. class="wd200">
  123. </el-input>
  124. </el-form-item>
  125. <el-form-item label="总充电费用" prop="totalMoney">
  126. <el-input
  127. v-model="state.ruleForm.totalMoney"
  128. placeholder="总充电费用"
  129. clearable
  130. class="wd200">
  131. </el-input>
  132. </el-form-item>
  133. <el-form-item label="总电量" prop="totalPower">
  134. <el-input
  135. v-model="state.ruleForm.totalPower"
  136. placeholder="总电量"
  137. clearable
  138. class="wd200">
  139. </el-input>
  140. </el-form-item>
  141. <el-form-item label="充电有效订单数" prop="validOrders">
  142. <el-input
  143. v-model="state.ruleForm.validOrders"
  144. placeholder="充电有效订单数"
  145. clearable
  146. class="wd200">
  147. </el-input>
  148. </el-form-item>
  149. </el-form>
  150. <template #footer>
  151. <div class="dialog-footer">
  152. <el-button @click="onCancel" size="default">取 消</el-button>
  153. <el-button :loading="state.btnLoading" type="primary" @click="onSubmit" size="default">{{ state.dialog.submitTxt }}</el-button>
  154. </div>
  155. </template>
  156. </el-drawer>
  157. </div>
  158. </template>
  159. <script setup lang="ts" name="StationStatMonthDialog">
  160. import {defineAsyncComponent, reactive, onMounted, ref} from 'vue';
  161. import {Msg} from "/@/utils/message";
  162. import {$body, $get} from "/@/utils/request";
  163. import u from '/@/utils/u'
  164. // 定义子组件向父组件传值/事件
  165. const emit = defineEmits(['refresh']);
  166. const formRef = ref();
  167. //定义初始变量,重置使用
  168. const initState = () => ({
  169. ruleForm: {
  170. id: 0
  171. },
  172. btnLoading: false,
  173. dialog: {
  174. isShowDialog: false,
  175. type: '',
  176. title: '',
  177. submitTxt: '',
  178. },
  179. rules: {},
  180. })
  181. // 定义变量内容
  182. const state = reactive(initState());
  183. // 打开弹窗
  184. const open = (action: string = 'add', row: any) => {
  185. state.dialog.title = u.dialog.actions[action].title + "『站点统计表-月』"
  186. state.dialog.submitTxt = u.dialog.actions[action].btn + "『站点统计表-月』"
  187. state.dialog.isShowDialog = true;
  188. if (action !== 'add') {
  189. loadData(row.id);
  190. }
  191. };
  192. // 关闭弹窗
  193. const onClose = () => {
  194. state.dialog.isShowDialog = false;
  195. Object.assign(state, initState())
  196. };
  197. // 取消
  198. const onCancel = () => {
  199. onClose();
  200. };
  201. // 提交
  202. const onSubmit = () => {
  203. formRef.value.validate((valid, fields) => {
  204. // console.log('basic checkForm!', valid,fields)
  205. if (valid) {
  206. state.btnLoading = true;
  207. const url = state.ruleForm.id > 0 ? "stationStatMonth/modify" : "stationStatMonth/add"
  208. $body(url, state.ruleForm).then(() => {
  209. state.btnLoading = false;
  210. Msg.message('操作成功');
  211. console.log('submit!')
  212. onClose();
  213. emit('refresh');
  214. })
  215. } else {
  216. state.btnLoading = false;
  217. Msg.message('表单校验失败', 'error');
  218. }
  219. })
  220. };
  221. const handleFormChange = (formData: any) => {
  222. console.log(formData)
  223. }
  224. // 初始化表格数据
  225. const loadData = (id: any) => {
  226. $get(`stationStatMonth/detail/${id}`).then((res: any) => {
  227. state.ruleForm = res;
  228. })
  229. }
  230. // 暴露变量
  231. defineExpose({
  232. open
  233. });
  234. </script>