dialog.vue 7.6 KB

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