|
@@ -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>
|
|
|
+ >查询</el-button
|
|
|
+ >
|
|
|
<el-button
|
|
|
type="info"
|
|
|
size="mini"
|
|
|
style="margin-left: 8px"
|
|
|
@click="handleReset('queryForm')"
|
|
|
- >重置</el-button>
|
|
|
+ >重置</el-button
|
|
|
+ >
|
|
|
</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;
|
|
|
}
|