Browse Source

站点月表

zuy 2 years ago
parent
commit
12a9040546

+ 1 - 1
admin-web/src/router/route.ts

@@ -200,7 +200,7 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                 name: 'adminInvestor',
                 component: () => import('/@/views/admin/investor/index.vue'),
                 meta: {
-                    title: '投资者',
+                    title: '投资者/物业',
                     isLink: '',
                     isHide: false,
                     isKeepAlive: true,

+ 2 - 2
admin-web/src/views/admin/investor/dialog.vue

@@ -200,8 +200,8 @@ const state = reactive(initState());
 
 // 打开弹窗
 const open = (action: string = 'add', row: any) => {
-  state.dialog.title = u.dialog.actions[action].title + "『投资者』"
-  state.dialog.submitTxt = u.dialog.actions[action].btn + "『投资者』"
+  state.dialog.title = u.dialog.actions[action].title + "『投资者/物业』"
+  state.dialog.submitTxt = u.dialog.actions[action].btn + "『投资者/物业』"
   state.dialog.isShowDialog = true;
   if (action !== 'add') {
     loadData(row.id);

+ 137 - 105
admin-web/src/views/admin/station/stat/dialog.vue

@@ -12,109 +12,141 @@
         :close-on-click-modal="false"
     >
       <el-form
-          :model="state.form"
-          :rules="rules"
+          :model="state.ruleForm"
+          :rules="state.rules"
           label-position="left"
           ref="formRef"
           size="default"
           label-width="100px"
           class="mt5">
-        <el-input
-            v-model="state.formQuery.stationId"
-            placeholder="站点id"
-            clearable
-            class="wd150">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.statMonth"
-            placeholder="统计时间"
-            clearable
-            class="wd150">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.chargeUsers"
-            placeholder="充电人数"
-            clearable
-            class="wd150">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.validOrders"
-            placeholder="充电有效订单数"
-            clearable
-            class="wd150">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.totalPower"
-            placeholder="总电量"
-            clearable
-            class="wd150">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.totalMoney"
-            placeholder="总充电费用"
-            clearable
-            class="wd150">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.elecMoney"
-            placeholder="总电费"
-            clearable
-            class="wd150">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.serviceMoney"
-            placeholder="总服务费"
-            clearable
-            class="wd150">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.serviceMoneyDiscount"
-            placeholder="服务费优惠金额"
-            clearable
-            class="wd150">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.discountAmount"
-            placeholder="总优惠金额"
-            clearable
-            class="wd150">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.avgOrderElec"
-            placeholder="订单平均充电量"
-            clearable
-            class="wd150">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.avgOrderMoney"
-            placeholder="订单平均充电费用"
-            clearable
-            class="wd150">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.avgConnectorElec"
-            placeholder="单枪平均日充电量"
-            clearable
-            class="wd150">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.connectorUsageRate"
-            placeholder="设备使用率"
-            clearable
-            class="wd150">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.actualPower"
-            placeholder="实际抄表电量"
-            clearable
-            class="wd150">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.actualElecMoney"
-            placeholder="实际抄表电费金额(分)"
-            clearable
-            class="wd150">
-        </el-input>
+        <el-form-item label="实际抄表电费金额(分)" prop="actualElecMoney">
+          <el-input
+              v-model="state.ruleForm.actualElecMoney"
+              placeholder="实际抄表电费金额(分)"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="实际抄表电量" prop="actualPower">
+          <el-input
+              v-model="state.ruleForm.actualPower"
+              placeholder="实际抄表电量"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="单枪平均日充电量" prop="avgConnectorElec">
+          <el-input
+              v-model="state.ruleForm.avgConnectorElec"
+              placeholder="单枪平均日充电量"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="订单平均充电量" prop="avgOrderElec">
+          <el-input
+              v-model="state.ruleForm.avgOrderElec"
+              placeholder="订单平均充电量"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="订单平均充电费用" prop="avgOrderMoney">
+          <el-input
+              v-model="state.ruleForm.avgOrderMoney"
+              placeholder="订单平均充电费用"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="充电人数" prop="chargeUsers">
+          <el-input
+              v-model="state.ruleForm.chargeUsers"
+              placeholder="充电人数"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="设备使用率" prop="connectorUsageRate">
+          <el-input
+              v-model="state.ruleForm.connectorUsageRate"
+              placeholder="设备使用率"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="总优惠金额" prop="discountAmount">
+          <el-input
+              v-model="state.ruleForm.discountAmount"
+              placeholder="总优惠金额"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="总电费" prop="elecMoney">
+          <el-input
+              v-model="state.ruleForm.elecMoney"
+              placeholder="总电费"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="总服务费" prop="serviceMoney">
+          <el-input
+              v-model="state.ruleForm.serviceMoney"
+              placeholder="总服务费"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="服务费优惠金额" prop="serviceMoneyDiscount">
+          <el-input
+              v-model="state.ruleForm.serviceMoneyDiscount"
+              placeholder="服务费优惠金额"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="统计时间" prop="statMonth">
+          <el-input
+              v-model="state.ruleForm.statMonth"
+              placeholder="统计时间"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="站点id" prop="stationId">
+          <el-input
+              v-model="state.ruleForm.stationId"
+              placeholder="站点id"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="总充电费用" prop="totalMoney">
+          <el-input
+              v-model="state.ruleForm.totalMoney"
+              placeholder="总充电费用"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="总电量" prop="totalPower">
+          <el-input
+              v-model="state.ruleForm.totalPower"
+              placeholder="总电量"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="充电有效订单数" prop="validOrders">
+          <el-input
+              v-model="state.ruleForm.validOrders"
+              placeholder="充电有效订单数"
+              clearable
+              class="wd200">
+          </el-input>
+        </el-form-item>
       </el-form>
 
       <template #footer>
@@ -137,9 +169,9 @@ import u from '/@/utils/u'
 const emit = defineEmits(['refresh']);
 const formRef = ref();
 //定义初始变量,重置使用
-const initState = ()=>({
+const initState = () => ({
   ruleForm: {
-    id:0
+    id: 0
   },
   btnLoading: false,
   dialog: {
@@ -156,18 +188,18 @@ const state = reactive(initState());
 
 
 // 打开弹窗
-const open = (action: string='add', row: any) => {
-  state.dialog.title = u.dialog.actions[action].title +"『站点统计表-月』"
-  state.dialog.submitTxt = u.dialog.actions[action].btn +"『站点统计表-月』"
+const open = (action: string = 'add', row: any) => {
+  state.dialog.title = u.dialog.actions[action].title + "『站点统计表-月』"
+  state.dialog.submitTxt = u.dialog.actions[action].btn + "『站点统计表-月』"
   state.dialog.isShowDialog = true;
-  if (action !=='add') {
+  if (action !== 'add') {
     loadData(row.id);
   }
 };
 // 关闭弹窗
 const onClose = () => {
   state.dialog.isShowDialog = false;
-  Object.assign(state,initState())
+  Object.assign(state, initState())
 };
 // 取消
 const onCancel = () => {

+ 45 - 125
admin-web/src/views/admin/station/stat/index.vue

@@ -33,83 +33,6 @@
           :model="state.formQuery"
           ref="queryRef"
           size="default" label-width="0px" class="mt5 mb5">
-        <el-input
-            v-model="state.formQuery.actualElecMoney"
-            placeholder="实际抄表电费金额(分)"
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.actualPower"
-            placeholder="实际抄表电量"
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.avgConnectorElec"
-            placeholder="单枪平均日充电量"
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.avgOrderElec"
-            placeholder="订单平均充电量"
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.avgOrderMoney"
-            placeholder="订单平均充电费用"
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.chargeUsers"
-            placeholder="充电人数"
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.connectorUsageRate"
-            placeholder="设备使用率"
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.discountAmount"
-            placeholder="总优惠金额"
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.elecMoney"
-            placeholder="总电费"
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.serviceMoney"
-            placeholder="总服务费"
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.serviceMoneyDiscount"
-            placeholder="服务费优惠金额"
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
         <el-input
             v-model="state.formQuery.statMonth"
             placeholder="统计时间"
@@ -117,41 +40,22 @@
             @blur="loadData(true)"
             class="wd150 mr10">
         </el-input>
-        <el-input
+
+        <ext-select
             v-model="state.formQuery.stationId"
-            placeholder="站点id"
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.totalMoney"
-            placeholder="总充电费用"
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.totalPower"
-            placeholder="总电量"
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.updateTime"
-            placeholder=""
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
-        <el-input
-            v-model="state.formQuery.validOrders"
-            placeholder="充电有效订单数"
+            multiple
+            placeholder="站点"
+            url="station/listStation"
+            url-method="get"
+            label-key="stationName"
+            value-key="stationId"
+            @on-change="loadData(true)"
+            data-key=""
             clearable
-            @blur="loadData(true)"
             class="wd150 mr10">
-        </el-input>
+        </ext-select>
+
+
 
 
         <el-button class="ml10"  plain size="default" type="success" @click="loadData(true)">
@@ -174,7 +78,6 @@
         <template #empty>
           <el-empty></el-empty>
         </template>
-        <el-table-column type="selection" align="center" width="55" fixed="left"/>
         <el-table-column
             v-for="field in state.tableData.columns"
             :key="field.prop"
@@ -187,8 +90,20 @@
             :show-overflow-tooltip="!field.fixed&&field.width>150"
         >
           <template #default="{row}">
-            <template v-if="field.prop==='expand'">
-              <p style="padding-left: 2em;" v-html="row[field.prop]"></p>
+            <template v-if="field.prop==='action'">
+              <el-button v-auth="'stationStatMonth.modify'" size="small" plain type="warning" @click="onRowClick('view',row)">编辑</el-button>
+              <el-button v-auth="'stationStatMonth.list'" size="small" plain type="primary" @click="onRowClick('view',row)">查看</el-button>
+              <el-button v-auth="'statement.add'" size="small" plain type="success" @click="handleCreateStatements(row)">生成对账单</el-button>
+            </template>
+            <template v-else-if="field.prop==='stationId'">
+              <div class="text-align-center">
+                {{row.stationId}}
+                <hr>
+                {{row.stationName}}
+              </div>
+            </template>
+            <template v-else-if="['totalMoney','elecMoney','actualElecMoney','serviceMoney','serviceMoneyDiscount','discountAmount','avgOrderMoney'].includes(field.prop)">
+              {{ u.fmt.fmtMoney(row[field.prop]) }}
             </template>
             <template v-else>
               <div>{{row[field.prop]}}</div>
@@ -208,11 +123,12 @@
 import {defineAsyncComponent, reactive, onMounted, onBeforeMount, ref, getCurrentInstance, nextTick, onBeforeUnmount} from 'vue';
 import {$body,$get} from "/@/utils/request";
 import {Msg} from "/@/utils/message";
-
+import u from "/@/utils/u";
 
 import ExtPage from '/@/components/form/ExtPage.vue'
 
 import mittBus from '/@/utils/mitt';
+import ExtSelect from "/@/components/form/ExtSelect.vue";
 
 const StationStatMonthDialog = defineAsyncComponent(() => import("/@/views/admin/station/stat/dialog.vue"));
 
@@ -233,20 +149,18 @@ const state = reactive({
     data: [] as Array < any >,
     loading: false,
     columns: [
-      {type: 'selection', width: 60, align: 'center', fixed: 'left'},
-      {label: '实际抄表电费金额(分)', prop: 'actualElecMoney', resizable: true,width:130},
-      {label: '订单平均充电费用', prop: 'avgOrderMoney', resizable: true,width:130},
-      {label: '充电人数', prop: 'chargeUsers', resizable: true,width:130},
-      {label: '', prop: 'createTime', sortable: 'custom', resizable: true,width:150},
-      {label: '总优惠金额', prop: 'discountAmount', resizable: true,width:130},
+      {label: '站点', prop: 'stationId', resizable: true,width:150,fixed:'left'},
+      {label: '统计时间', prop: 'statMonth', resizable: true,width:130},
+      {label: '总充电费用', prop: 'totalMoney', resizable: true,width:130},
       {label: '总电费', prop: 'elecMoney', resizable: true,width:130},
+      {label: '实际抄表电费金额', prop: 'actualElecMoney', resizable: true,width:160},
       {label: '总服务费', prop: 'serviceMoney', resizable: true,width:130},
-      {label: '服务费优惠金额', prop: 'serviceMoneyDiscount', resizable: true,width:130},
-      {label: '统计时间', prop: 'statMonth', resizable: true},
-      {label: '站点id', prop: 'stationId', resizable: true},
-      {label: '总充电费用', prop: 'totalMoney', resizable: true,width:130},
-      {label: '', prop: 'updateTime', sortable: 'custom', resizable: true,width:150},
-      {label: '充电有效订单数', prop: 'validOrders', resizable: true,width:130},
+      {label: '服务费优惠金额', prop: 'serviceMoneyDiscount', resizable: true,width:160},
+      {label: '总优惠金额', prop: 'discountAmount', resizable: true,width:130},
+      {label: '充电人数', prop: 'chargeUsers', resizable: true,width:130},
+      {label: '订单平均充电费用', prop: 'avgOrderMoney', resizable: true,width:160},
+      {label: '充电有效订单数', prop: 'validOrders', resizable: true,width:160},
+      {label: '创建时间', prop: 'createTime', sortable: 'custom', resizable: true,width:200,fixed: 'right',},
       {
         label: '操作', prop: 'action', width: 180, align: 'center', fixed: 'right',
       }
@@ -288,6 +202,12 @@ onBeforeUnmount(() => {
 
 //region 方法区
 // 初始化表格数据
+const handleCreateStatements = (statMonth) => {
+  $get(`statements/create/${statMonth.id}`).then(()=>{
+    Msg.message(`生成对账单成功`)
+  })
+}
+
 const loadData = (refresh: boolean = false) => {
   if (refresh) {
     state.pageQuery.pageNum = 1;