Browse Source

Merge branch 'master' of http://47.92.161.104:10080/yanliming/jp-charging-station-portal

zq 5 days ago
parent
commit
253139ce1d

+ 1 - 1
src/routers/modules/base.js

@@ -304,7 +304,7 @@ var routers = [
                 component: () => import('@/views/charging/joinActivity-list.vue'),
                 meta: {
                         roles: ["admin"],
-                        title: '加盟申请管理'
+                        title: '活动参与管理'
                 }
         },
         {

+ 135 - 38
src/views/charging/joinActivity-list.vue

@@ -6,23 +6,38 @@
         <a href="#">运营管理</a>
       </el-breadcrumb-item>
       <el-breadcrumb-item>
-        <a href="/charging/joinActivity">加盟申请管理</a>
+        <a href="/charging/joinActivity">活动参与管理</a>
       </el-breadcrumb-item>
-    </el-breadcrumb> 
+    </el-breadcrumb>
     <el-divider></el-divider>
     <!--
       要resetFields起作用,必须配置:model和prop
     -->
-    <el-form ref="queryForm" :model="queryModel" inline class="demo-form-inline">
-      <el-form-item label="加盟类型" prop="type">
-          <el-select v-model="queryModel.type" size="mini" clearable >
-            <el-option
-              v-for="result in typeList"
-              :key="result.value"
-              :label="result.name"
-              :value="result.value"
-            ></el-option>
-          </el-select>
+    <el-form
+      ref="queryForm"
+      :model="queryModel"
+      inline
+      class="demo-form-inline"
+    >
+      <el-form-item label="类型" prop="type">
+        <el-select v-model="queryModel.type" size="mini" clearable>
+          <el-option
+            v-for="result in typeList"
+            :key="result.value"
+            :label="result.name"
+            :value="result.value"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="手机号" prop="phone">
+        <el-input type="text" size="mini" v-model="queryModel.phone"></el-input>
+      </el-form-item>
+      <el-form-item label="发放奖励" prop="status">
+        <el-select v-model="queryModel.status" size="mini" clearable>
+          <el-option label="全部" value=""></el-option>
+          <el-option label="已发放" value="1"></el-option>
+          <el-option label="未发放" value="0"></el-option>
+        </el-select>
       </el-form-item>
       <el-form-item>
         <el-button
@@ -31,13 +46,15 @@
           icon="ios-search"
           @click="changePage(1)"
           :loading="loading"
-        >查询</el-button>&nbsp;
+          >查询</el-button
+        >&nbsp;
         <el-button
           type="info"
           size="mini"
           style="margin-left: 8px"
           @click="handleReset('queryForm')"
-        >重置</el-button>&nbsp;
+          >重置</el-button
+        >&nbsp;
       </el-form-item>
     </el-form>
     <el-divider></el-divider>
@@ -47,43 +64,67 @@
         size="small"
         plain
         icon="el-icon-circle-plus"
-        :disabled="multipleSelection.length==0"
+        :disabled="multipleSelection.length == 0"
         @click="handleBatchDelete"
-      >删除选中项</el-button>
+        >删除选中项</el-button
+      >
     </el-row>
     <el-table
       :data="tableData"
-      style="min-height:400px;"
+      style="min-height: 400px"
       v-loading="loading"
       stripe
       @sort-change="sortChange"
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55"></el-table-column>
-     <el-table-column
-        prop="typeN"
-        label="加盟类型"
-      ></el-table-column>
+      <el-table-column prop="typeN" label="类型"></el-table-column>
       <el-table-column
         prop="phone"
         label="申请人手机号码"
         width="150"
         :show-overflow-tooltip="true"
       ></el-table-column>
-    <el-table-column  prop="content"  label="内容"  width="650">
-        <template slot-scope="{row}">
-            <div v-for="(item,index) in row.contentList" v-bind:key="index">
-              {{item.name}}:{{item.value}}
-            </div>
+      <el-table-column prop="content" label="内容" width="650">
+        <template slot-scope="{ row }">
+          <div v-for="(item, index) in row.contentList" v-bind:key="index">
+            <a v-if="item.type == 'img'" :href="item.value" target="_blank">
+              <el-avatar
+                :size="48"
+                shape="circle"
+                :src="formatImageUrl(item.value)"
+                :key="row.id"
+              ></el-avatar>
+            </a>
+            <span v-else>{{ item.name }} : {{ item.value }}</span>
+          </div>
         </template>
-    </el-table-column>
-      <el-table-column
-        prop="createTime"
-        label="创建时间"
-      ></el-table-column>
+      </el-table-column>
+      <el-table-column prop="createTime" label="创建时间"></el-table-column>
+      <el-table-column label="发放奖励">
+        <template slot-scope="{ row }">
+          <el-switch
+            v-model="row.status"
+            active-color="#13ce66"
+            inactive-color="#ff4949"
+            @change="handleUpdate(row)"
+          >
+          </el-switch>
+        </template>
+      </el-table-column>
       <el-table-column label="操作">
-        <template slot-scope="{row}">
-          <el-link type="danger" :underline="false" @click="handleDelete(row)">删除</el-link>
+        <template slot-scope="{ row }">
+          <el-link type="danger" :underline="false" @click="handleDelete(row)"
+            >删除</el-link
+          >
+          <span v-if="row.createBy != null">-</span>
+          <el-link
+            type="primary"
+            :underline="false"
+            v-if="row.createBy != null"
+            @click="handleCouponList(row)"
+            >优惠劵</el-link
+          >
         </template>
       </el-table-column>
     </el-table>
@@ -101,10 +142,17 @@
       :title="modalTitle"
       @close="onDetailModalClose"
     ></joinActivity-detail>
+    <chargingRegUser-couponList
+      v-if="showModal3"
+      :title="modalTitle3"
+      :businessKey="businessKey"
+      @close="onDetailModalClose3"
+    ></chargingRegUser-couponList>
   </div>
 </template>
 <script>
 import joinActivityDetail from "./joinActivity-detail";
+import chargingRegUserCouponList from "./chargingRegUser-couponList";
 import joinActivityApi from "@/api/base/joinActivity";
 import dataDictionaryApi from "@/api/sys/dataDictionary";
 import "nprogress/nprogress.css"; // progress bar style
@@ -116,7 +164,9 @@ export default {
 
     return {
       queryModel: {
-        type:"",
+        type: "",
+        status:"",
+        phone:""
       },
       loading: false,
       tableData: [],
@@ -130,7 +180,8 @@ export default {
       multipleSelection: [],
       showModal: false,
       modalTitle: "",
-      typeList:[],
+      typeList: [],
+      showModal3: false,
     };
   },
   methods: {
@@ -139,7 +190,7 @@ export default {
       this.showBindModal = true;
     },
     handleCloseLive() {
-      if(this.player!=null){
+      if (this.player != null) {
         this.player.pause();
       }
     },
@@ -155,6 +206,8 @@ export default {
       formData.append("pageSize", self.pageSize);
 
       formData.append("type", self.queryModel.type);
+      formData.append("phone", self.queryModel.phone);
+      formData.append("status", self.queryModel.status);
 
       joinActivityApi
         .pageList(formData)
@@ -261,6 +314,49 @@ export default {
         this.changePage(this.pageIndex);
       }
     },
+    isValidImageUrl(url) {
+      if (!url) return false;
+      try {
+        new URL(url); // 验证是否是合法 URL
+        return /\.(jpg|jpeg|png|gif|webp)$/i.test(url); // 检查是否是图片扩展名
+      } catch {
+        return false;
+      }
+    },
+    formatImageUrl(url) {
+      if (!this.isValidImageUrl(url)) return ""; // 无效 URL 返回空
+      return `${url}?x-oss-process=image/resize,m_fill,w_64,h_64`;
+    },
+    handleCouponList(record) {
+      this.modalTitle3 = "优惠劵信息";
+      this.businessKey = record.createBy;
+      this.showModal3 = true;
+    },
+    onDetailModalClose3(refreshed) {
+      //保存成功后回调
+      this.showModal3 = false;
+
+      if (refreshed) {
+        this.changePage(this.pageIndex);
+      }
+    },
+    handleUpdate(row) {
+      joinActivityApi.update(row).then((response) => {
+        var jsonData = response.data;
+
+        if (jsonData.result) {
+          this.$message({
+            type: "success",
+            message: "修改成功!",
+          });
+        } else {
+          this.$message({
+            type: "error",
+            message: "修改失败!" + jsonData.data.message,
+          });
+        }
+      });
+    },
   },
   created() {
     var self = this;
@@ -277,6 +373,7 @@ export default {
   },
   components: {
     "joinActivity-detail": joinActivityDetail,
+    "chargingRegUser-couponList": chargingRegUserCouponList,
   },
 };
 </script>
@@ -300,8 +397,8 @@ export default {
   text-align: left;
 }
 
-.capture-image{
-  width:160px;
+.capture-image {
+  width: 160px;
   height: 90px;
   object-fit: container;
 }

+ 12 - 2
src/views/inspection/inspectionErrorRecord-list.vue

@@ -43,6 +43,13 @@
           ></el-option>
         </el-select>
       </el-form-item>
+      <el-form-item label="状态" prop="status">
+        <el-select size="mini" v-model="queryModel.status" clearable>
+          <el-option label="全部" value="" ></el-option>
+          <el-option label="未处理" value="0" ></el-option>
+          <el-option label="已处理" value="1" ></el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item>
         <el-button
           type="primary"
@@ -156,7 +163,7 @@
 <script>
 import Constant from "@/constant";
 import inspectionErrorRecordApi from "@/api/inspection/inspectionErrorRecord";
-import InspectionErrorRecordDetail from "./inspectionErrorRecord-detail";
+import inspectionErrorRecordDetail from "./inspectionErrorRecord-detail";
 import dataDictionaryApi from "@/api/sys/dataDictionary";
 import NProgress from "nprogress"; // progress bar
 import "nprogress/nprogress.css"; // progress bar style
@@ -171,6 +178,7 @@ export default {
         stationName: "",
         stationNo: "",
         errorCode: "",
+        status:"",
       },
       loading: false,
       tableData: [],
@@ -211,6 +219,7 @@ export default {
       formData.append("stationNo", self.queryModel.stationNo);
       formData.append("stationName", self.queryModel.stationName);
       formData.append("errorCode", self.queryModel.errorCode);
+      formData.append("status", self.queryModel.status);
 
       if (this.field != null) {
         formData.append("field", this.field);
@@ -330,7 +339,8 @@ export default {
     this.changePage(1);
   },
   components: {
-    "inspectionErrorRecord-detail": InspectionErrorRecordDetail},
+    "inspectionErrorRecord-detail": inspectionErrorRecordDetail,
+  },
 };
 </script>
 <style lang="scss" scoped>