Forráskód Böngészése

活动参与管理

shuzhan 5 napja
szülő
commit
499fba0430

+ 92 - 37
src/views/charging/joinActivity-list.vue

@@ -6,23 +6,28 @@
         <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
+      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-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>
         <el-button
@@ -31,13 +36,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 +54,56 @@
         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-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 +121,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 +143,7 @@ export default {
 
     return {
       queryModel: {
-        type:"",
+        type: "",
       },
       loading: false,
       tableData: [],
@@ -130,7 +157,8 @@ export default {
       multipleSelection: [],
       showModal: false,
       modalTitle: "",
-      typeList:[],
+      typeList: [],
+      showModal3: false,
     };
   },
   methods: {
@@ -139,7 +167,7 @@ export default {
       this.showBindModal = true;
     },
     handleCloseLive() {
-      if(this.player!=null){
+      if (this.player != null) {
         this.player.pause();
       }
     },
@@ -257,6 +285,32 @@ export default {
       //保存成功后回调
       this.showModal = false;
 
+      if (refreshed) {
+        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);
       }
@@ -277,6 +331,7 @@ export default {
   },
   components: {
     "joinActivity-detail": joinActivityDetail,
+    "chargingRegUser-couponList": chargingRegUserCouponList,
   },
 };
 </script>
@@ -300,8 +355,8 @@ export default {
   text-align: left;
 }
 
-.capture-image{
-  width:160px;
+.capture-image {
+  width: 160px;
   height: 90px;
   object-fit: container;
 }

+ 106 - 35
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"
@@ -90,42 +97,104 @@
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55"></el-table-column>
-      <el-table-column prop="stationName" label="站点名称" width="180"></el-table-column>
-      <el-table-column prop="stationNo" label="站点编号" width="180"></el-table-column>
-      <el-table-column prop="errorCodeText" label="故障类型" width="180"></el-table-column>
-      <el-table-column prop="errorDesc" label="故障描述" width="180"></el-table-column>
+      <el-table-column
+        prop="stationName"
+        label="站点名称"
+        width="180"
+      ></el-table-column>
+      <el-table-column
+        prop="stationNo"
+        label="站点编号"
+        width="180"
+      ></el-table-column>
+      <el-table-column
+        prop="errorCodeText"
+        label="故障类型"
+        width="180"
+      ></el-table-column>
+      <el-table-column
+        prop="errorDesc"
+        label="故障描述"
+        width="180"
+      ></el-table-column>
       <el-table-column prop="errorImage" label="故障图片" width="180">
-        <template slot-scope="{row}">
-          <template v-if="row.errorImage!=null">
-            <el-image style="width: 50px; height: 50px" :src="url" fit="fit"
-            :data-source="url" 
-            v-for="(url, index) in row.errorImage.split(',')" :key="index" v-viewer
+        <template slot-scope="{ row }">
+          <template v-if="row.errorImage != null">
+            <el-image
+              style="width: 50px; height: 50px"
+              :src="url"
+              fit="fit"
+              :data-source="url"
+              v-for="(url, index) in row.errorImage.split(',')"
+              :key="index"
+              v-viewer
             ></el-image>
-          </template> 
+          </template>
         </template>
       </el-table-column>
-      <el-table-column prop="errorReportTime" label="故障上报时间"
-        width="180"></el-table-column>
-      <el-table-column prop="errorReportNames" label="故障上报人"
-        width="180"></el-table-column>
-              <el-table-column prop="statusN" label="状态"
-        width="180"></el-table-column>
-      <el-table-column prop="repairDesc" label="处理描述"
-        width="180"></el-table-column>
+      <el-table-column
+        prop="errorReportTime"
+        label="故障上报时间"
+        width="180"
+      ></el-table-column>
+      <el-table-column
+        prop="errorReportNames"
+        label="故障上报人"
+        width="180"
+      ></el-table-column>
+      <el-table-column
+        prop="statusN"
+        label="状态"
+        width="180"
+      ></el-table-column>
+      <el-table-column
+        prop="repairDesc"
+        label="处理描述"
+        width="180"
+      ></el-table-column>
       <el-table-column prop="repairImage" label="处理图片" width="180">
-        <template slot-scope="{row}">
-          <template v-if="row.repairImage!=null">
-            <a v-for="(url, index) in row.repairImage.split(',')" :href="url" target="_blank" :key="index">
-              <el-image style="width: 50px; height: 50px" :src="url" fit="fit"></el-image>
+        <template slot-scope="{ row }">
+          <template v-if="row.repairImage != null">
+            <a
+              v-for="(url, index) in row.repairImage.split(',')"
+              :href="url"
+              target="_blank"
+              :key="index"
+            >
+              <el-image
+                style="width: 50px; height: 50px"
+                :src="url"
+                fit="fit"
+              ></el-image>
             </a>
           </template>
         </template>
       </el-table-column>
-      <el-table-column prop="repairTime" label="处理时间" width="180"></el-table-column>
-      <el-table-column prop="repairNames" label="故障处理人" width="180"></el-table-column>
-      <el-table-column prop="overdueType" label="备注" width="120"></el-table-column>
-      <el-table-column prop="overdueHours" label="超时时长(小时)" width="120"></el-table-column>
-      <el-table-column prop="oveduerScore" label="超时扣除分数" width="120"></el-table-column>
+      <el-table-column
+        prop="repairTime"
+        label="处理时间"
+        width="180"
+      ></el-table-column>
+      <el-table-column
+        prop="repairNames"
+        label="故障处理人"
+        width="180"
+      ></el-table-column>
+      <el-table-column
+        prop="overdueType"
+        label="备注"
+        width="120"
+      ></el-table-column>
+      <el-table-column
+        prop="overdueHours"
+        label="超时时长(小时)"
+        width="120"
+      ></el-table-column>
+      <el-table-column
+        prop="oveduerScore"
+        label="超时扣除分数"
+        width="120"
+      ></el-table-column>
       <el-table-column label="操作" width="180">
         <template slot-scope="{ row }">
           <el-button size="mini" type="warning" @click="handleEdit(row)"
@@ -146,17 +215,17 @@
       layout="total, sizes, prev, pager, next, jumper"
     ></el-pagination>
     <inspectionErrorRecord-detail
-	v-if="showModal"
-	:businessKey="businessKey"
-	:title="modalTitle"
-	@close="onDetailModalClose"
-	></inspectionErrorRecord-detail>
+      v-if="showModal"
+      :businessKey="businessKey"
+      :title="modalTitle"
+      @close="onDetailModalClose"
+    ></inspectionErrorRecord-detail>
   </div>
 </template>
 <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
@@ -170,6 +239,7 @@ export default {
         stationName: "",
         stationNo: "",
         errorCode: "",
+        status:"",
       },
       loading: false,
       tableData: [],
@@ -206,10 +276,10 @@ export default {
       formData.append("pageIndex", self.pageIndex);
       formData.append("pageSize", self.pageSize);
 
-
       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);
@@ -329,7 +399,8 @@ export default {
     this.changePage(1);
   },
   components: {
-    "inspectionErrorRecord-detail": InspectionErrorRecordDetail},
+    "inspectionErrorRecord-detail": inspectionErrorRecordDetail,
+  },
 };
 </script>
 <style lang="scss" scoped>