Sfoglia il codice sorgente

营销管理新增子页面:贫困生管理、会员推广记录、会员充值记录

hzj18279462576@163.com 7 mesi fa
parent
commit
4027d28c3a

+ 19 - 0
src/router/index.js

@@ -201,6 +201,24 @@ const mainRoutes = {
       meta: { title: "优惠券管理", isTab: true }
     },
     {
+      path: "/poorStudent",
+      component: _import("coupon/poorStudent"),
+      name: "poorStudent",
+      meta: { title: "贫困生管理", isTab: true }
+    },
+    {
+      path: "/promotion",
+      component: _import("coupon/promotion"),
+      name: "promotion",
+      meta: { title: "会员推广记录", isTab: true }
+    },
+    {
+      path: "/memberRecharge",
+      component: _import("coupon/memberRecharge"),
+      name: "memberRecharge",
+      meta: { title: "会员充值记录", isTab: true }
+    },
+    {
       path: "/couponList",
       component: _import("coupon/couponList"),
       name: "couponList",
@@ -250,6 +268,7 @@ const mainRoutes = {
       name: "deliveryAddress",
       meta: { title: "收货地址管理", isTab: true }
     },
+
     {
       path: "/fenxiaoOrder",
       component: _import("selfShop/fenxiaoOrder"),

+ 392 - 392
src/views/allocation/materialLink.vue

@@ -1,392 +1,392 @@
-<template>
-	<div>
-    <div style="position: relative;display: inline-block;margin: 10px 0px;">
-      <span>类型:</span>
-      <el-select v-model="type" style="width:150px;margin-left: 10px;" @change="animeDat(type)">
-        <el-option v-for="item in typeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
-      </el-select>&nbsp;&nbsp;&nbsp;
-    </div>
-    <div style="position: relative;display: inline-block;margin: 10px 0px;">
-      <span>标题:</span>
-      <el-input style="width: 200px;" @keydown.enter.native="animeDat" placeholder="请输入标题"
-        v-model="title1">
-      </el-input>&nbsp;&nbsp
-    </div>
-		<div style="position: relative;display: inline-block;margin-right:2%;">
-      <el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="animeDat">查询
-      </el-button>
-      <el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="cleans">重置
-      </el-button>
-			<el-button style="margin-left:15px;" :disabled="!isAuth('materialLink:add')" size="mini" type="primary"
-				icon="document" @click="advertNotice">添加</el-button>
-		</div>
-		<el-table v-loading="tableDataLoading" :data="guangaoData.list">
-			<el-table-column fixed prop="trainingId" label="编号" width="80"></el-table-column>
-      <el-table-column prop="type" label="类型" width="120">
-      <template slot-scope="scope">
-      	<div v-if="scope.row.type==1">用户端</div>
-        <div v-if="scope.row.type==2">骑手端</div>
-        <div v-if="scope.row.type==3">商户端</div>
-      </template>
-      </el-table-column>
-			<el-table-column prop="title" label="标题" width="180">
-			</el-table-column>
-			<el-table-column prop="message" label="内容">
-				<template slot-scope="scope">
-					<div
-						style="display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;overflow: hidden;">
-						{{scope.row.message}}</div>
-				</template>
-			</el-table-column>
-			<el-table-column prop="createTime" label="创建时间" width="180"></el-table-column>
-			<el-table-column label="操作" width="180">
-				<template slot-scope="scope">
-					<el-button size="mini" type="primary" :disabled="!isAuth('materialLink:update')"
-						@click="advertUpdates(scope.row)">修改</el-button>
-					<el-button size="mini" type="danger" :disabled="!isAuth('materialLink:delete')"
-						@click="advertdeletes(scope.row)">删除</el-button>
-				</template>
-			</el-table-column>
-		</el-table>
-		<div style="text-align: center;margin-top: 10px;">
-			<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
-				:page-sizes="[10, 20, 30, 40]" :page-size="limit" :current-page="page"
-				layout="total,sizes, prev, pager, next,jumper" :total="guangaoData.totalCount">
-			</el-pagination>
-		</div>
-		<!-- 添加素材 -->
-		<el-dialog title="添加" :visible.sync="dialogFormVisible" center>
-      <div style="margin-bottom: 10px;">
-        <span style="width: 200px;display: inline-block;text-align: right;">类型:</span>
-        <el-select v-model="type1" style="width:50%;margin-left: 10px;">
-          <el-option v-for="item in typeList1" :key="item.value" :label="item.label" :value="item.value">
-          </el-option>
-        </el-select>
-      </div>
-			<div style="margin-bottom: 10px;">
-				<span style="width: 200px;display: inline-block;text-align: right;">标题:</span>
-				<el-input style="width:50%;" v-model="title" placeholder="请输入标题" type="text">
-				</el-input>
-			</div>
-			<div style="margin-bottom: 10px;">
-				<span style="width: 200px;display: inline-block;text-align: right;">内容:</span>
-				<el-input v-model="message" style="width:45%;display: none;" placeholder="请输入备注"></el-input>
-				<quill-editor ref="myTextEditor" v-model="message" :options="quillOption"
-					style="padding-bottom: 50px;height: 300px;width:60%;display: inline-table;margin-bottom: 60px;">
-				</quill-editor>
-			</div>
-			<div slot="footer" class="dialog-footer">
-				<el-button @click="dialogFormVisible = false">取 消</el-button>
-				<el-button type="primary" @click="advertNoticeTo()">确 定</el-button>
-			</div>
-		</el-dialog>
-		<!-- 修改素材 -->
-		<el-dialog title="修改" :visible.sync="dialogFormVisible1" center>
-			<el-form :model="form">
-        <el-form-item label="标题:" :label-width="formLabelWidth">
-        	<el-select v-model="form.type" style="width:50%;margin-left: 10px;">
-        	  <el-option v-for="item in typeList1" :key="item.value" :label="item.label" :value="item.value">
-        	  </el-option>
-        	</el-select>
-        </el-form-item>
-				<el-form-item label="标题:" :label-width="formLabelWidth">
-					<el-input style="width:90%;" v-model="form.title" placeholder="请输入标题" type="text"></el-input>
-				</el-form-item>
-				<el-form-item label="内容:" :label-width="formLabelWidth">
-					<el-input v-model="form.message" style="width:45%;display: none;" placeholder="请输入内容"></el-input>
-					<quill-editor ref="myTextEditor" v-model="form.message" :options="quillOption"
-						style="padding-bottom: 50px;height: 300px;width:90%;display: inline-table;margin-bottom: 60px;">
-					</quill-editor>
-				</el-form-item>
-			</el-form>
-			<div slot="footer" class="dialog-footer">
-				<el-button @click="dialogFormVisible1 = false">取 消</el-button>
-				<el-button type="primary" @click="amendadvertTo()">确 定</el-button>
-			</div>
-		</el-dialog>
-	</div>
-</template>
-
-<script>
-	import {
-		quillEditor
-	} from 'vue-quill-editor'
-	import 'quill/dist/quill.core.css'
-	import 'quill/dist/quill.snow.css'
-	import 'quill/dist/quill.bubble.css'
-	import quillConfig from './quill-config.js'
-	export default {
-		components: {
-			quillEditor
-		},
-		data() {
-			return {
-				page: 1,
-				limit: 10,
-				message: '',
-				title: '',
-				type: '',
-        title1:'',
-				form: {
-					id: '',
-					message: '',
-					title: '',
-					createAt: '',
-          type:'',
-					deleteFlag: 0,
-				},
-				formLabelWidth: '200px',
-				tableDataLoading: false,
-				dialogFormVisible1: false,
-				dialogFormVisible: false,
-				guangaoData: {},
-				quillOption: quillConfig,
-        typeList:[
-          {
-            value:'',
-            label:'全部'
-          },
-          {
-            value:1,
-            label:'用户端'
-          },
-          {
-            value:2,
-            label:'骑手端'
-          },
-          {
-            value:3,
-            label:'商户端'
-          },
-        ],
-        type1:1,
-        typeList1:[
-          {
-            value:1,
-            label:'用户端'
-          },
-          {
-            value:2,
-            label:'骑手端'
-          },
-          {
-            value:3,
-            label:'商户端'
-          },
-        ]
-			}
-		},
-		methods: {
-			handleAvatarSuccess(file) {
-				this.imgUrl = file.data
-				this.linkUrl = this.imgUrl
-			},
-			handleAvatarSuccess1(file) {
-				this.form.imgUrl = file.data
-				this.form.linkUrl = this.form.imgUrl
-			},
-			handleSizeChange(val) {
-				this.limit = val
-				this.guangaoSelect()
-			},
-			handleCurrentChange(val) {
-				this.page = val
-				this.guangaoSelect()
-			},
-			// 刷新
-			refresh() {
-				this.choicenSelect()
-				this.handpick()
-			},
-			// 添加素材弹框
-			advertNotice() {
-				this.dialogFormVisible = true
-			},
-			// 添加
-			advertNoticeTo() {
-				if (this.title == '') {
-					this.$notify({
-						title: '提示',
-						duration: 1800,
-						message: '请输入标题',
-						type: 'warning'
-					})
-					return
-				}
-				if (this.message == '') {
-					this.$notify({
-						title: '提示',
-						duration: 1800,
-						message: '请输入内容',
-						type: 'warning'
-					})
-					return
-				}
-				this.$http({
-					url: this.$http.adornUrl('admin/errand/insertAdminTrainingCenter'),
-					method: 'post',
-					data: this.$http.adornData({
-						'title': this.title,
-						'message': this.message,
-            'type':this.type1,
-            'deleteFlag': '0',
-					})
-				}).then(({
-					data
-				}) => {
-					this.dialogFormVisible = false
-					this.$message({
-						message: '操作成功',
-						type: 'success',
-						duration: 1500,
-						onClose: () => {
-							this.title = ''
-							this.message = ''
-							this.guangaoSelect()
-						}
-					})
-				})
-			},
-			// 点击修改
-			advertUpdates(rows) {
-				this.form.id = rows.trainingId
-				this.form.title = rows.title
-				this.form.message = rows.message
-				this.form.deleteFlag = rows.deleteFlag
-        this.form.type = rows.type
-				this.dialogFormVisible1 = true
-			},
-			// 确定修改
-			amendadvertTo() {
-				if (this.form.title == '') {
-					this.$notify({
-						title: '提示',
-						duration: 1800,
-						message: '请输入标题',
-						type: 'warning'
-					})
-					return
-				}
-				if (this.form.message == '') {
-					this.$notify({
-						title: '提示',
-						duration: 1800,
-						message: '请输入内容',
-						type: 'warning'
-					})
-					return
-				}
-				this.$http({
-					url: this.$http.adornUrl('admin/errand/updateAdminTrainingCenter'),
-					method: 'post',
-					data: this.$http.adornData({
-						'deleteFlag': this.form.deleteFlag,
-						'trainingId': this.form.id,
-						'title': this.form.title,
-						'message': this.form.message,
-            'type':this.form.type
-					})
-				}).then(({
-					data
-				}) => {
-					if (data.code == 0) {
-						this.$message({
-							message: '操作成功',
-							type: 'success',
-							duration: 1500,
-							onClose: () => {
-								this.guangaoSelect()
-								this.dialogFormVisible1 = false
-							}
-						})
-					} else {
-						this.$notify({
-							title: '提示',
-							duration: 1800,
-							message: data.msg,
-							type: 'warning'
-						})
-					}
-
-				})
-			},
-			// 删除广告
-			advertdeletes(row) {
-				this.$confirm(`确定删除此条信息?`, '提示', {
-					confirmButtonText: '确定',
-					cancelButtonText: '取消',
-					type: 'warning'
-				}).then(() => {
-					this.$http({
-						url: this.$http.adornUrl('admin/errand/deleteAdminTrainingCenter'),
-						method: 'post',
-						params: this.$http.adornParams({
-							'id': row.trainingId
-						})
-					}).then(({
-						data
-					}) => {
-						if (data.code == 0) {
-							this.$message({
-								message: '删除成功',
-								type: 'success',
-								duration: 1500,
-								onClose: () => {
-									this.guangaoSelect()
-								}
-							})
-						} else {
-							this.$notify({
-								title: '提示',
-								duration: 1800,
-								message: data.msg,
-								type: 'warning'
-							})
-						}
-
-					})
-				})
-			},
-			// 获取素材数据
-			guangaoSelect() {
-				let page = this.page
-				this.tableDataLoading = true
-				this.$http({
-					url: this.$http.adornUrl('admin/errand/trainingCenterList'),
-					method: 'get',
-					params: this.$http.adornParams({
-						'page': this.page,
-						'limit': this.limit,
-            'title':this.title1,
-            'type':this.type
-					})
-				}).then(({
-					data
-				}) => {
-					this.tableDataLoading = false
-					let returnData = data.data
-					this.guangaoData = returnData
-				})
-			},
-      animeDat(){
-        this.page = 1
-        this.guangaoSelect()
-      },
-      cleans(){
-        this.page = 1
-        this.title1 = ''
-        this.type = ''
-        this.guangaoSelect()
-      }
-		},
-		mounted() {
-			this.guangaoSelect()
-		}
-	}
-</script>
-
-<style>
-	.customWidth {
-		width: 80% !important;
-	}
-</style>
+<template>
+	<div>
+    <div style="position: relative;display: inline-block;margin: 10px 0px;">
+      <span>类型:</span>
+      <el-select v-model="type" style="width:150px;margin-left: 10px;" @change="animeDat(type)">
+        <el-option v-for="item in typeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
+      </el-select>&nbsp;&nbsp;&nbsp;
+    </div>
+    <div style="position: relative;display: inline-block;margin: 10px 0px;">
+      <span>标题:</span>
+      <el-input style="width: 200px;" @keydown.enter.native="animeDat" placeholder="请输入标题"
+        v-model="title1">
+      </el-input>&nbsp;&nbsp;
+    </div>
+		<div style="position: relative;display: inline-block;margin-right:2%;">
+      <el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="animeDat">查询
+      </el-button>
+      <el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="cleans">重置
+      </el-button>
+			<el-button style="margin-left:15px;" :disabled="!isAuth('materialLink:add')" size="mini" type="primary"
+				icon="document" @click="advertNotice">添加</el-button>
+		</div>
+		<el-table v-loading="tableDataLoading" :data="guangaoData.list">
+			<el-table-column fixed prop="trainingId" label="编号" width="80"></el-table-column>
+      <el-table-column prop="type" label="类型" width="120">
+      <template slot-scope="scope">
+      	<div v-if="scope.row.type==1">用户端</div>
+        <div v-if="scope.row.type==2">骑手端</div>
+        <div v-if="scope.row.type==3">商户端</div>
+      </template>
+      </el-table-column>
+			<el-table-column prop="title" label="标题" width="180">
+			</el-table-column>
+			<el-table-column prop="message" label="内容">
+				<template slot-scope="scope">
+					<div
+						style="display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;overflow: hidden;">
+						{{scope.row.message}}</div>
+				</template>
+			</el-table-column>
+			<el-table-column prop="createTime" label="创建时间" width="180"></el-table-column>
+			<el-table-column label="操作" width="180">
+				<template slot-scope="scope">
+					<el-button size="mini" type="primary" :disabled="!isAuth('materialLink:update')"
+						@click="advertUpdates(scope.row)">修改</el-button>
+					<el-button size="mini" type="danger" :disabled="!isAuth('materialLink:delete')"
+						@click="advertdeletes(scope.row)">删除</el-button>
+				</template>
+			</el-table-column>
+		</el-table>
+		<div style="text-align: center;margin-top: 10px;">
+			<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
+				:page-sizes="[10, 20, 30, 40]" :page-size="limit" :current-page="page"
+				layout="total,sizes, prev, pager, next,jumper" :total="guangaoData.totalCount">
+			</el-pagination>
+		</div>
+		<!-- 添加素材 -->
+		<el-dialog title="添加" :visible.sync="dialogFormVisible" center>
+      <div style="margin-bottom: 10px;">
+        <span style="width: 200px;display: inline-block;text-align: right;">类型:</span>
+        <el-select v-model="type1" style="width:50%;margin-left: 10px;">
+          <el-option v-for="item in typeList1" :key="item.value" :label="item.label" :value="item.value">
+          </el-option>
+        </el-select>
+      </div>
+			<div style="margin-bottom: 10px;">
+				<span style="width: 200px;display: inline-block;text-align: right;">标题:</span>
+				<el-input style="width:50%;" v-model="title" placeholder="请输入标题" type="text">
+				</el-input>
+			</div>
+			<div style="margin-bottom: 10px;">
+				<span style="width: 200px;display: inline-block;text-align: right;">内容:</span>
+				<el-input v-model="message" style="width:45%;display: none;" placeholder="请输入备注"></el-input>
+				<quill-editor ref="myTextEditor" v-model="message" :options="quillOption"
+					style="padding-bottom: 50px;height: 300px;width:60%;display: inline-table;margin-bottom: 60px;">
+				</quill-editor>
+			</div>
+			<div slot="footer" class="dialog-footer">
+				<el-button @click="dialogFormVisible = false">取 消</el-button>
+				<el-button type="primary" @click="advertNoticeTo()">确 定</el-button>
+			</div>
+		</el-dialog>
+		<!-- 修改素材 -->
+		<el-dialog title="修改" :visible.sync="dialogFormVisible1" center>
+			<el-form :model="form">
+        <el-form-item label="标题:" :label-width="formLabelWidth">
+        	<el-select v-model="form.type" style="width:50%;margin-left: 10px;">
+        	  <el-option v-for="item in typeList1" :key="item.value" :label="item.label" :value="item.value">
+        	  </el-option>
+        	</el-select>
+        </el-form-item>
+				<el-form-item label="标题:" :label-width="formLabelWidth">
+					<el-input style="width:90%;" v-model="form.title" placeholder="请输入标题" type="text"></el-input>
+				</el-form-item>
+				<el-form-item label="内容:" :label-width="formLabelWidth">
+					<el-input v-model="form.message" style="width:45%;display: none;" placeholder="请输入内容"></el-input>
+					<quill-editor ref="myTextEditor" v-model="form.message" :options="quillOption"
+						style="padding-bottom: 50px;height: 300px;width:90%;display: inline-table;margin-bottom: 60px;">
+					</quill-editor>
+				</el-form-item>
+			</el-form>
+			<div slot="footer" class="dialog-footer">
+				<el-button @click="dialogFormVisible1 = false">取 消</el-button>
+				<el-button type="primary" @click="amendadvertTo()">确 定</el-button>
+			</div>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import {
+		quillEditor
+	} from 'vue-quill-editor'
+	import 'quill/dist/quill.core.css'
+	import 'quill/dist/quill.snow.css'
+	import 'quill/dist/quill.bubble.css'
+	import quillConfig from './quill-config.js'
+	export default {
+		components: {
+			quillEditor
+		},
+		data() {
+			return {
+				page: 1,
+				limit: 10,
+				message: '',
+				title: '',
+				type: '',
+        title1:'',
+				form: {
+					id: '',
+					message: '',
+					title: '',
+					createAt: '',
+          type:'',
+					deleteFlag: 0,
+				},
+				formLabelWidth: '200px',
+				tableDataLoading: false,
+				dialogFormVisible1: false,
+				dialogFormVisible: false,
+				guangaoData: {},
+				quillOption: quillConfig,
+        typeList:[
+          {
+            value:'',
+            label:'全部'
+          },
+          {
+            value:1,
+            label:'用户端'
+          },
+          {
+            value:2,
+            label:'骑手端'
+          },
+          {
+            value:3,
+            label:'商户端'
+          },
+        ],
+        type1:1,
+        typeList1:[
+          {
+            value:1,
+            label:'用户端'
+          },
+          {
+            value:2,
+            label:'骑手端'
+          },
+          {
+            value:3,
+            label:'商户端'
+          },
+        ]
+			}
+		},
+		methods: {
+			handleAvatarSuccess(file) {
+				this.imgUrl = file.data
+				this.linkUrl = this.imgUrl
+			},
+			handleAvatarSuccess1(file) {
+				this.form.imgUrl = file.data
+				this.form.linkUrl = this.form.imgUrl
+			},
+			handleSizeChange(val) {
+				this.limit = val
+				this.guangaoSelect()
+			},
+			handleCurrentChange(val) {
+				this.page = val
+				this.guangaoSelect()
+			},
+			// 刷新
+			refresh() {
+				this.choicenSelect()
+				this.handpick()
+			},
+			// 添加素材弹框
+			advertNotice() {
+				this.dialogFormVisible = true
+			},
+			// 添加
+			advertNoticeTo() {
+				if (this.title == '') {
+					this.$notify({
+						title: '提示',
+						duration: 1800,
+						message: '请输入标题',
+						type: 'warning'
+					})
+					return
+				}
+				if (this.message == '') {
+					this.$notify({
+						title: '提示',
+						duration: 1800,
+						message: '请输入内容',
+						type: 'warning'
+					})
+					return
+				}
+				this.$http({
+					url: this.$http.adornUrl('admin/errand/insertAdminTrainingCenter'),
+					method: 'post',
+					data: this.$http.adornData({
+						'title': this.title,
+						'message': this.message,
+            'type':this.type1,
+            'deleteFlag': '0',
+					})
+				}).then(({
+					data
+				}) => {
+					this.dialogFormVisible = false
+					this.$message({
+						message: '操作成功',
+						type: 'success',
+						duration: 1500,
+						onClose: () => {
+							this.title = ''
+							this.message = ''
+							this.guangaoSelect()
+						}
+					})
+				})
+			},
+			// 点击修改
+			advertUpdates(rows) {
+				this.form.id = rows.trainingId
+				this.form.title = rows.title
+				this.form.message = rows.message
+				this.form.deleteFlag = rows.deleteFlag
+        this.form.type = rows.type
+				this.dialogFormVisible1 = true
+			},
+			// 确定修改
+			amendadvertTo() {
+				if (this.form.title == '') {
+					this.$notify({
+						title: '提示',
+						duration: 1800,
+						message: '请输入标题',
+						type: 'warning'
+					})
+					return
+				}
+				if (this.form.message == '') {
+					this.$notify({
+						title: '提示',
+						duration: 1800,
+						message: '请输入内容',
+						type: 'warning'
+					})
+					return
+				}
+				this.$http({
+					url: this.$http.adornUrl('admin/errand/updateAdminTrainingCenter'),
+					method: 'post',
+					data: this.$http.adornData({
+						'deleteFlag': this.form.deleteFlag,
+						'trainingId': this.form.id,
+						'title': this.form.title,
+						'message': this.form.message,
+            'type':this.form.type
+					})
+				}).then(({
+					data
+				}) => {
+					if (data.code == 0) {
+						this.$message({
+							message: '操作成功',
+							type: 'success',
+							duration: 1500,
+							onClose: () => {
+								this.guangaoSelect()
+								this.dialogFormVisible1 = false
+							}
+						})
+					} else {
+						this.$notify({
+							title: '提示',
+							duration: 1800,
+							message: data.msg,
+							type: 'warning'
+						})
+					}
+
+				})
+			},
+			// 删除广告
+			advertdeletes(row) {
+				this.$confirm(`确定删除此条信息?`, '提示', {
+					confirmButtonText: '确定',
+					cancelButtonText: '取消',
+					type: 'warning'
+				}).then(() => {
+					this.$http({
+						url: this.$http.adornUrl('admin/errand/deleteAdminTrainingCenter'),
+						method: 'post',
+						params: this.$http.adornParams({
+							'id': row.trainingId
+						})
+					}).then(({
+						data
+					}) => {
+						if (data.code == 0) {
+							this.$message({
+								message: '删除成功',
+								type: 'success',
+								duration: 1500,
+								onClose: () => {
+									this.guangaoSelect()
+								}
+							})
+						} else {
+							this.$notify({
+								title: '提示',
+								duration: 1800,
+								message: data.msg,
+								type: 'warning'
+							})
+						}
+
+					})
+				})
+			},
+			// 获取素材数据
+			guangaoSelect() {
+				let page = this.page
+				this.tableDataLoading = true
+				this.$http({
+					url: this.$http.adornUrl('admin/errand/trainingCenterList'),
+					method: 'get',
+					params: this.$http.adornParams({
+						'page': this.page,
+						'limit': this.limit,
+            'title':this.title1,
+            'type':this.type
+					})
+				}).then(({
+					data
+				}) => {
+					this.tableDataLoading = false
+					let returnData = data.data
+					this.guangaoData = returnData
+				})
+			},
+      animeDat(){
+        this.page = 1
+        this.guangaoSelect()
+      },
+      cleans(){
+        this.page = 1
+        this.title1 = ''
+        this.type = ''
+        this.guangaoSelect()
+      }
+		},
+		mounted() {
+			this.guangaoSelect()
+		}
+	}
+</script>
+
+<style>
+	.customWidth {
+		width: 80% !important;
+	}
+</style>

+ 1 - 1
src/views/autonym/autonym.vue

@@ -702,7 +702,7 @@ export default {
       this.dialogFormVisible = true;
     },
     refuseto() {
-      if (this.content == "") {
+      if (this.content == "" || /^\s+$/.test(this.content)) {
         this.$notify({
           title: "提示",
           duration: 1800,

+ 10 - 10
src/views/banner/bannerList.vue

@@ -797,7 +797,7 @@ export default {
     },
     // 添加banner图
     addNoticeTo() {
-      if (this.imageUrl == "") {
+      if (this.imageUrl == "" || /^\s+$/.test(this.imageUrl)) {
         this.$notify({
           title: "提示",
           duration: 1800,
@@ -806,7 +806,7 @@ export default {
         });
         return;
       }
-      if (this.name == "") {
+      if (this.name == "" || /^\s+$/.test(this.name)) {
         this.$notify({
           title: "提示",
           duration: 1800,
@@ -906,7 +906,7 @@ export default {
     },
     // 添加添加任务分类
     addNoticeTo2() {
-      if (this.imageUrl == "") {
+      if (this.imageUrl == ""|| /^\s+$/.test(this.imageUrl)) {
         this.$notify({
           title: "提示",
           duration: 1800,
@@ -915,7 +915,7 @@ export default {
         });
         return;
       }
-      if (this.name == "") {
+      if (this.name == "" || /^\s+$/.test(this.name)) {
         this.$notify({
           title: "提示",
           duration: 1800,
@@ -968,7 +968,7 @@ export default {
     },
     // 添加添加活动
     addNoticeTo3() {
-      if (this.imageUrl == "") {
+      if (this.imageUrl == "" || /^\s+$/.test(this.imageUrl)) {
         this.$notify({
           title: "提示",
           duration: 1800,
@@ -977,7 +977,7 @@ export default {
         });
         return;
       }
-      if (this.name == "") {
+      if (this.name == "" || /^\s+$/.test(this.name)) {
         this.$notify({
           title: "提示",
           duration: 1800,
@@ -1036,7 +1036,7 @@ export default {
     },
     // 添加精品服务
     addNoticeTo4() {
-      if (this.imageUrl == "") {
+      if (this.imageUrl == "" || /^\s+$/.test(this.imageUrl)) {
         this.$notify({
           title: "提示",
           duration: 1800,
@@ -1045,7 +1045,7 @@ export default {
         });
         return;
       }
-      if (this.name == "") {
+      if (this.name == "" || /^\s+$/.test(this.name)) {
         this.$notify({
           title: "提示",
           duration: 1800,
@@ -1108,7 +1108,7 @@ export default {
     },
     // 添加背景图
     addNoticeTo5() {
-      if (this.imageUrl == "") {
+      if (this.imageUrl == "" || /^\s+$/.test(this.imageUrl)) {
         this.$notify({
           title: "提示",
           duration: 1800,
@@ -1118,7 +1118,7 @@ export default {
         });
         return;
       }
-      if (this.name == "") {
+      if (this.name == "" || /^\s+$/.test(this.name)) {
         this.$notify({
           title: "提示",
           duration: 1800,

+ 4 - 4
src/views/coupon/huodongList.vue

@@ -4,22 +4,22 @@
       <div style="position: relative;display: inline-block;margin: 10px 0px;">
         <el-input style="width: 200px;" @keydown.enter.native="animeDat" placeholder="请输入活动标题"
           v-model="activyName">
-        </el-input>&nbsp;&nbsp
+        </el-input>&nbsp;&nbsp;
       </div>
       <div style="position: relative;display: inline-block;margin: 10px 0px;">
         <el-input style="width: 200px;" @keydown.enter.native="animeDat" placeholder="请输入商户名称"
           v-model="shopName">
-        </el-input>&nbsp;&nbsp
+        </el-input>&nbsp;&nbsp;
       </div>
       <!-- <div style="position: relative;display: inline-block;margin: 10px 0px;">
         <el-input style="width: 200px;" @keydown.enter.native="animeDat" placeholder="请输入订单id"
           v-model="orderId">
-        </el-input>&nbsp;&nbsp
+        </el-input>&nbsp;&nbsp;
       </div> -->
       <div style="position: relative;display: inline-block;margin: 10px 0px;">
         <el-input style="width: 200px;" @keydown.enter.native="animeDat" placeholder="请输入用户手机号"
           v-model="phone">
-        </el-input>&nbsp;&nbsp
+        </el-input>&nbsp;&nbsp;
       </div>
       <!-- <div style="position: relative;display: inline-block;margin: 10px 0px;">
         <span>状态:</span>

+ 952 - 0
src/views/coupon/memberRecharge.vue

@@ -0,0 +1,952 @@
+<template>
+  <div>
+    <div style="margin:15px 0;display: inline-block;">
+      <span>手机号码:</span>
+      <el-input
+        style="width: 180px;"
+        clearable
+        placeholder="请输入手机号码"
+        v-model="search.addressDetail"
+      ></el-input
+      >&nbsp;&nbsp;&nbsp;&nbsp;
+    </div>
+    <div style="margin:15px 0;display: inline-block;">
+      <span>是否暖心用户:</span>
+      <el-select
+        v-model="search.status"
+        placeholder="请选择"
+        style="width:150px;"
+      >
+        <el-option label="是" :value="1"></el-option>
+        <el-option label="否" :value="0"></el-option> </el-select
+      >&nbsp;&nbsp;&nbsp;&nbsp;
+    </div>
+    <div style="margin:15px 0;display: inline-block;">
+      <span>支付时间:</span>
+      <el-date-picker
+        v-model="search.createTime"
+        type="datetimerange"
+        unlink-panels
+        range-separator="-"
+        start-placeholder="开始日期"
+        end-placeholder="结束日期"
+        format="yyyy-MM-dd HH:mm:ss"
+        value-format="yyyy-MM-dd HH:mm:ss"
+      >
+      </el-date-picker
+      >&nbsp;&nbsp;&nbsp;&nbsp;
+    </div>
+    <div style="display: inline-block;">
+      <el-button
+        style="margin-left:15px;"
+        size="mini"
+        type="primary"
+        icon="document"
+        @click="select"
+        >查询
+      </el-button>
+      <el-button
+        style="margin-left:15px;"
+        size="mini"
+        type="primary"
+        icon="document"
+        @click="cleans"
+        >重置
+      </el-button>
+    </div>
+    <div style="margin:5px 0 15px 0;">
+      <!-- <el-button
+        :disabled="!isAuth('deliveryAddress:import')"
+        size="mini"
+        type="primary"
+        icon="document"
+        @click="daoruCheck"
+        >导入
+      </el-button> -->
+      <el-button
+        :disabled="!isAuth('deliveryAddress:export')"
+        size="mini"
+        type="warning"
+        icon="document"
+        @click="exportList"
+      >
+        导出Excel
+      </el-button>
+      <!-- <el-button
+        :disabled="!isAuth('deliveryAddress:add')"
+        style="margin-left:15px;"
+        size="mini"
+        type="primary"
+        icon="document"
+        @click="addAddress"
+        >新增
+      </el-button> -->
+    </div>
+    <el-table v-loading="tableDataLoading" :data="tableData.list">
+      <!-- <el-table-column type="selection">  @selection-change="changeFun"
+			</el-table-column> -->
+      <!-- <el-table-column prop="id" label="编号" width="80"></el-table-column> -->
+      <el-table-column prop="stationName" label="用户名"> </el-table-column>
+      <el-table-column prop="stationName" label="手机号码"> </el-table-column>
+      <el-table-column prop="stationName" label="充值金额"> </el-table-column>
+      <el-table-column prop="stationName" label="推广码"> </el-table-column>
+      <el-table-column prop="stationName" label="是否暖心用户"> </el-table-column>
+      <el-table-column prop="stationName" label="支付时间"> </el-table-column>
+      <el-table-column prop="province" label="会员到期时间"> </el-table-column>
+      <el-table-column fixed="right" label="操作" width="180">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="primary"
+            :disabled="!isAuth('deliveryAddress:update')"
+            @click="updates(scope.row)"
+            style="margin: 3px;"
+            >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="danger"
+            :disabled="!isAuth('deliveryAddress:delete')"
+            @click="deleteuser(scope.row)"
+            style="margin: 3px;"
+            v-if="scope.row.id != 14"
+            >删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <div style="text-align: center;margin-top: 10px;">
+      <el-pagination
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        :page-sizes="[10, 15, 20, 25]"
+        :page-size="limit"
+        :current-page="page"
+        layout="total,sizes, prev, pager, next"
+        :total="tableData.totalCount"
+      >
+      </el-pagination>
+    </div>
+
+    <el-dialog :title="addTitle" :visible.sync="addDialog" center width="600px">
+      <el-form :model="addForm">
+         <el-form-item label="姓名:" :label-width="formLabelWidth">
+          <el-input
+            v-model="addForm.addressDetail"
+            style="width: 250px"
+            placeholder="请输入姓名"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="学号:" :label-width="formLabelWidth">
+          <el-input
+            v-model="addForm.lng"
+            style="width: 250px"
+            placeholder="请输入学号"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="骑手站点:" :label-width="formLabelWidth">
+          <el-select
+            v-model="addForm.stationId"
+            style="width:250px;"
+            placeholder="请选择骑手站点"
+          >
+            <el-option
+              v-for="item in stationList"
+              :key="item.id"
+              :label="item.stationName"
+              :value="item.id"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="地址纬度:" :label-width="formLabelWidth">
+          <el-input
+            v-model="addForm.lat"
+            style="width: 250px"
+            placeholder="请输入地址纬度"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="地址配送费:" :label-width="formLabelWidth">
+          <el-input
+            v-model="addForm.deliveryFee"
+            style="width: 250px"
+            placeholder="请输入套餐内容"
+          ></el-input>
+        </el-form-item>
+      </el-form>
+      <div style="display: flex;flex-direction: row-reverse;">
+        <el-button type="primary" @click="amendAddress">确 定</el-button>
+        <el-button @click="addDialog = false" style="margin-right: 20px;"
+          >取 消</el-button
+        >
+      </div>
+    </el-dialog>
+
+    <!-- 导出限制 -->
+    <el-dialog
+      custom-class="export"
+      :visible.sync="exportVisible"
+      center
+      :title="exportTitle"
+      :close-on-click-modal="false"
+    >
+      <div class="con" v-show="exportFlag == 1">
+        <img src="../../assets/img/error.png" alt="" />
+        <span
+          style="font-size:20px;color: #000;font-weight: 800;margin: 18px 0 5px;"
+          >当前导出条数超过50000条,暂不支持导出</span
+        >
+        <span style="font-size:14px;color: #808080;"
+          >(注:数据中的图片、附件只能以链接的形式导出)</span
+        >
+      </div>
+      <div class="con" v-show="exportFlag == 2">
+        <img class="gundong" src="../../assets/img/loading.png" alt="" />
+        <span
+          style="font-size:20px;color: #000;font-weight: 800;margin: 18px 0 5px;"
+          >导出中...</span
+        >
+        <span style="font-size:14px;color: #808080;"
+          >(注:请到个人导出记录查看并下载)</span
+        >
+      </div>
+      <div class="con" v-show="exportFlag == 3">
+        <img src="../../assets/img/success.png" alt="" />
+        <span
+          style="font-size:20px;color: #000;font-weight: 800;margin: 18px 0 5px;"
+          >导出成功</span
+        >
+        <span style="font-size:14px;color: #808080;"
+          >(注:请到个人导出记录查看并下载)</span
+        >
+      </div>
+      <div class="con" v-show="exportFlag == 4">
+        <img class="gundong" src="../../assets/img/loading.png" alt="" />
+        <span
+          style="font-size:20px;color: #000;font-weight: 800;margin: 18px 0 5px;"
+          >版本迭代中,导出暂时无法使用</span
+        >
+      </div>
+      <div class="btn">
+        <el-button type="primary" @click="exportAffirm">确定</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 导入 -->
+    <el-dialog
+      custom-class="daoru"
+      :visible.sync="daoruVisible"
+      center
+      title="导入收货地址"
+      :close-on-click-modal="false"
+      width="700px"
+    >
+      <div style="margin-bottom: 55px;">
+        <el-button
+          style="margin-bottom: 20px;"
+          type="warning"
+          @click="daoruTemplate"
+          >导入模板下载</el-button
+        >
+        <el-upload
+          class="upload-demo"
+          drag
+          ref="upload"
+          v-model="daoruFile"
+          :http-request="daoruChange"
+          action="#"
+          :before-upload="daoruBeforeUpload"
+          :on-remove="handleRemove"
+        >
+          <!-- <el-button type="primary">点击上传</el-button> -->
+          <i class="el-icon-upload"></i>
+          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+          <div class="el-upload__tip" slot="tip">
+            只能上传execl文件
+          </div>
+        </el-upload>
+      </div>
+      <div class="btn" style="display: flex;flex-direction: row-reverse;">
+        <el-button type="primary" @click="daoruAffirm">确定</el-button>
+        <el-button @click="daoruCancel" style="margin-right: 20px;"
+          >取消</el-button
+        >
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { quillEditor } from "vue-quill-editor";
+import "quill/dist/quill.core.css";
+import "quill/dist/quill.snow.css";
+import "quill/dist/quill.bubble.css";
+import quillConfig from "../allocation/quill-config.js";
+import { regionData } from "element-china-area-data";
+export default {
+  name: "news",
+  components: {
+    quillEditor
+  },
+  data() {
+    return {
+      limit: 10,
+      page: 1,
+      tableDataLoading: false,
+      search: {
+        addressDetail: "",
+        createTime: "",
+        status: "",
+        stationId: ""
+      },
+      stationList: [],
+      tableData: {
+        list: []
+      },
+      switchValue: 0,
+
+      formLabelWidth: "100px",
+      addDialog: false,
+      addTitle: "新增收货地址",
+      options: regionData,
+      componentKey: 0,
+
+      storeAddre: [],
+      storeAddreStr: "",
+
+      province: "",
+      city: "", //市
+      district: "", //区
+      addForm: {
+        id: "",
+        stationId: "", //站点id不能为空
+        deliveryFee: "", //配送费用不能小于0
+        addressDetail: "", //地址详情不能为空
+        lng: "", //经度不能为空
+        lat: "", //维度不能为空
+        status: "", //启用状态;1启用、0禁用
+        sort: "" //排序不能为空
+      },
+
+      // 导出限制
+      exportTitle: "导出错误",
+      exportVisible: false,
+      exportFlag: 1, //1 超出限制  2导出中
+
+      daoruVisible: false,
+      daoruFile: []
+    };
+  },
+  methods: {
+    switchType() {},
+
+    stationsData() {
+      this.$http({
+        url: this.$http.adornUrl("admin/riderStation/selectStationList"),
+        method: "get",
+        params: this.$http.adornParams({
+          page: 1,
+          size: 1000
+        })
+      }).then(({ data }) => {
+        console.log(data, "骑手站点");
+        let returnData = data.data.list;
+        this.stationList = returnData;
+      });
+    },
+    // 多选
+    changeFun(val) {},
+
+    handleSizeChange(val) {
+      this.limit = val;
+      this.dataSelect();
+    },
+    handleCurrentChange(val) {
+      this.page = val;
+      this.dataSelect();
+    },
+    // 查询
+    select() {
+      this.page = 1;
+      this.dataSelect();
+    },
+    // 重置
+    cleans() {
+      this.page = 1;
+      this.search = {
+        addressDetail: "",
+        createTime: "",
+        status: "",
+        stationId: ""
+      };
+      this.dataSelect();
+    },
+    // 是否启用
+    changeType(flag, row) {
+      console.log(flag, row);
+      this.$http({
+        url: this.$http.adornUrl("admin/inside-address/updateStatus"),
+        method: "post",
+        data: this.$http.adornData({
+          id: row.id,
+          status: flag //启用状态;1启用、0禁用
+        })
+      }).then(({ data }) => {
+        console.log(data, "新增收货地址");
+        if (data.msg == "success") {
+          this.$message({
+            message: "操作成功",
+            type: "success",
+            duration: 1500,
+            onClose: () => {
+              this.dataSelect();
+            }
+          });
+        }
+      });
+    },
+
+    // 获取省市区
+    handleChange(value) {
+      console.log(value);
+
+      value = this.$refs["cascaderAddr"].currentLabels;
+      this.province = value[0];
+      this.city = value[1];
+      this.district = value[2];
+      if (this.city == "市辖区") {
+        this.city = this.province;
+      }
+      console.log(this.$refs["cascaderAddr"].currentLabels);
+    },
+
+    // 删除
+    deleteuser(row) {
+      let delid = [row.id];
+      this.$confirm(`确定删除此收货地址?`, "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      })
+        .then(() => {
+          this.$http({
+            url: this.$http.adornUrl("admin/inside-address/delete"),
+            method: "post",
+            // data: delid
+            data: this.$http.adornData(delid)
+          }).then(({ data }) => {
+            if (data.msg == "success") {
+              this.$message({
+                message: "删除成功",
+                type: "success",
+                duration: 1500,
+                onClose: () => {
+                  this.dataSelect();
+                }
+              });
+            } else {
+              this.$message({
+                message: data.msg,
+                type: "error",
+                duration: 1500,
+                onClose: () => {}
+              });
+            }
+          });
+        })
+        .catch(() => {});
+    },
+    // 获取数据列表
+    dataSelect() {
+      this.tableDataLoading = false;
+      this.$http({
+        url: this.$http.adornUrl("admin/inside-address/pages"),
+        method: "get",
+        params: this.$http.adornParams({
+          page: this.page,
+          limit: this.limit,
+          addressDetail: this.search.addressDetail,
+          status: this.search.status,
+          stationId: this.search.stationId,
+          startTime: this.search.createTime[0],
+          endTime: this.search.createTime[1]
+        })
+      }).then(({ data }) => {
+        console.log(data, "收货地址列表");
+        if (data.msg == "success") {
+          this.tableDataLoading = false;
+          let returnData = data.data;
+          this.tableData = returnData;
+        } else {
+          this.$message({
+            message: data.msg,
+            type: "warning",
+            duration: 1500,
+            onClose: () => {}
+          });
+        }
+      });
+    },
+    // 新增收货地址
+    addAddress() {
+      this.addTitle = "新增收货地址";
+      this.storeAddreStr = "请选择省市区";
+      this.storeAddre = [];
+      this.addForm = {
+        id: "",
+        stationId: "", //站点id不能为空
+        deliveryFee: "", //配送费用不能小于0
+        province: "", //省份不能为空
+        city: "", //城市不能为空
+        district: "", //区县不能为空
+        addressDetail: "", //地址详情不能为空
+        lng: "", //经度不能为空
+        lat: "", //维度不能为空
+        status: "", //启用状态;1启用、0禁用
+        sort: "" //排序不能为空
+      };
+      this.addDialog = true;
+    },
+
+    // 编辑
+    updates(row) {
+      console.log(row);
+      this.addTitle = "编辑收货地址";
+      this.storeAddre = [];
+      this.addForm = {
+        id: row.id,
+        stationId: row.stationId, //站点id不能为空
+        deliveryFee: row.deliveryFee, //配送费用不能小于0
+        province: row.province, //省份不能为空
+        city: row.city, //城市不能为空
+        district: row.district, //区县不能为空
+        addressDetail: row.addressDetail, //地址详情不能为空
+        lng: row.lng, //经度不能为空
+        lat: row.lat, //维度不能为空
+        status: row.status, //启用状态;1启用、0禁用
+        sort: row.sort //排序不能为空, //排序不能为空
+      };
+      this.province = row.province;
+      this.city = row.city;
+      this.district = row.district;
+      this.addDialog = true;
+      this.storeAddreStr = `${row.province}/${row.city}/${row.district}`;
+    },
+
+    // 确定收货地址
+    amendAddress() {
+      if (this.addForm.stationId == "") {
+        this.$notify({
+          title: "提示",
+          duration: 1800,
+          message: "站点不能为空",
+          type: "warning"
+        });
+        return;
+      }
+      if (this.addForm.deliveryFee == "" && this.addForm.deliveryFee < 0) {
+        this.$notify({
+          title: "提示",
+          duration: 1800,
+          message: "配送费不能为空且不能小于0",
+          type: "warning"
+        });
+        return;
+      }
+      if (this.addForm.addressDetail == "") {
+        this.$notify({
+          title: "提示",
+          duration: 1800,
+          message: "地址详情不能为空",
+          type: "warning"
+        });
+        return;
+      }
+      if (this.addForm.lng == "") {
+        this.$notify({
+          title: "提示",
+          duration: 1800,
+          message: "经度不能为空",
+          type: "warning"
+        });
+        return;
+      }
+      if (this.addForm.lat == "") {
+        this.$notify({
+          title: "提示",
+          duration: 1800,
+          message: "纬度不能为空",
+          type: "warning"
+        });
+        return;
+      }
+      if (this.addForm.id) {
+        this.$http({
+          url: this.$http.adornUrl("admin/inside-address/update"),
+          method: "post",
+          data: this.$http.adornData({
+            id: this.addForm.id,
+            stationId: this.addForm.stationId, //站点id不能为空
+            deliveryFee: this.addForm.deliveryFee, //配送费用不能小于0
+            province: this.province, //省份不能为空
+            city: this.city, //城市不能为空
+            district: this.district, //区县不能为空
+            addressDetail: this.addForm.addressDetail, //地址详情不能为空
+            lng: this.addForm.lng, //经度不能为空
+            lat: this.addForm.lat, //维度不能为空
+            status: this.addForm.status, //启用状态;1启用、0禁用
+            sort: this.addForm.sort //排序不能为空
+          })
+        }).then(({ data }) => {
+          console.log(data, "新增收货地址");
+          if (data.msg == "success") {
+            this.$message({
+              message: "操作成功",
+              type: "success",
+              duration: 1500,
+              onClose: () => {
+                this.addDialog = false;
+                this.dataSelect();
+              }
+            });
+          } else {
+            this.$message({
+              message: data.msg,
+              type: "error",
+              duration: 1500,
+              onClose: () => {
+                this.addDialog = false;
+                this.dataSelect();
+              }
+            });
+          }
+        });
+      } else {
+        this.$http({
+          url: this.$http.adornUrl("admin/inside-address/add"),
+          method: "post",
+          data: this.$http.adornData({
+            stationId: this.addForm.stationId, //站点id不能为空
+            deliveryFee: this.addForm.deliveryFee, //配送费用不能小于0
+            province: this.province, //省份不能为空
+            city: this.city, //城市不能为空
+            district: this.district, //区县不能为空
+            addressDetail: this.addForm.addressDetail, //地址详情不能为空
+            lng: this.addForm.lng, //经度不能为空
+            lat: this.addForm.lat, //维度不能为空
+            status: this.addForm.status, //启用状态;1启用、0禁用
+            sort: this.addForm.sort //排序不能为空
+          })
+        }).then(({ data }) => {
+          console.log(data, "新增收货地址");
+          if (data.msg == "success") {
+            this.$message({
+              message: "操作成功",
+              type: "success",
+              duration: 1500,
+              onClose: () => {
+                this.addDialog = false;
+                this.dataSelect();
+              }
+            });
+          } else {
+            this.$message({
+              message: data.msg,
+              type: "error",
+              duration: 1500,
+              onClose: () => {
+                this.addDialog = false;
+                this.dataSelect();
+              }
+            });
+          }
+        });
+      }
+    },
+
+    exportList() {
+      console.log(this.tableData.totalCount, "导出条数");
+      this.exportTitle = "导出";
+      // this.exportFlag = 4;
+      this.exportVisible = true;
+      if (this.tableData.totalCount >= 50000) {
+        this.exportTitle = "导出错误";
+        this.exportFlag = 1;
+      } else {
+        this.exportTitle = "导出";
+        this.exportFlag = 2;
+        this.exportVisible = true;
+        var userId = this.$cookie.get("userId");
+        this.$http({
+          url: this.$http.adornUrl("admin/export/exportShippingAddress"),
+          method: "get",
+          // responseType: "blob",
+          params: this.$http.adornParams({
+            // 'page': page,
+            // 'size': this.size,
+            userId: userId,
+            addressDetail: this.search.addressDetail,
+            status: this.search.status,
+            stationId: this.search.stationId,
+            startTime: this.search.createTime[0],
+            endTime: this.search.createTime[1]
+          })
+        }).then(({ data }) => {
+          console.log(data, "导出");
+          if (data.code == 0) {
+            this.exportTitle = "导出成功";
+            this.exportFlag = 3;
+          }
+          // let blob = new Blob([data], {
+          //   type:
+          //     "application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
+          // });
+          // if (window.navigator.msSaveOrOpenBlob) {
+          //   navigator.msSaveBlob(blob);
+          // } else {
+          //   let url = window.URL.createObjectURL(blob);
+          //   let elink = document.createElement("a");
+          //   elink.download = "订单列表.xlsx";
+          //   elink.style.display = "none";
+          //   elink.href = url;
+          //   document.body.appendChild(elink);
+          //   elink.click();
+          //   document.body.removeChild(elink);
+          // }
+        });
+      }
+    },
+    exportAffirm() {
+      this.exportVisible = false;
+    },
+
+    daoruCheck() {
+      this.daoruVisible = true;
+      this.daoruFile = [];
+      this.$nextTick(() => {
+        this.$refs.upload.clearFiles();
+      });
+    },
+    // 导入模板下载
+    daoruTemplate() {
+      this.$http({
+        url: this.$http.adornUrl(
+          "admin/inside-address/downloadInsideAddressExcel"
+        ),
+        method: "get",
+        params: this.$http.adornParams()
+      }).then(({ data }) => {
+        console.log(data, "导出");
+        const link = document.createElement("a");
+        link.href = data.data;
+        // link.download = "模板文件.xlsx"; // 设置下载后的文件名
+        link.target = "_blank"; // 在新标签页中打开
+        document.body.appendChild(link);
+        link.click();
+        document.body.removeChild(link);
+      });
+    },
+    // 确定导入
+    daoruAffirm() {
+      console.log(this.daoruFile, "导入收货地址");
+
+      let formData = new FormData();
+      formData.append("file", this.daoruFile);
+      this.$http({
+        url: this.$http.adornUrl("admin/inside-address/import"),
+        method: "post",
+        // headers: {
+        //   'Content-Type': 'multipart/form-data'
+        // },
+        data: formData
+      }).then(({ data }) => {
+        console.log(data, "导入收货地址");
+        if (data.code == 0) {
+          this.$message({
+            message: "操作成功",
+            type: "success",
+            duration: 1500,
+            onClose: () => {
+              this.addDialog = false;
+              this.dataSelect();
+            }
+          });
+        } else {
+          this.$message({
+            message: data.msg,
+            type: "error",
+            duration: 1500,
+            onClose: () => {}
+          });
+        }
+      });
+    },
+    daoruCancel() {
+      this.daoruVisible = false;
+      this.$refs.upload.clearFiles();
+    },
+    // 导入文件
+    daoruChange(file) {
+      console.log(file, "上传成功");
+      this.daoruFile = file.file;
+    },
+    daoruBeforeUpload(file) {
+      console.log(file, "上传之前");
+      // 检查文件类型
+      const isExcel =
+        file.type ===
+          "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ||
+        file.type === "application/vnd.ms-excel";
+
+      // 检查文件数量
+      const isSingleFile = this.daoruFile ? this.daoruFile.length === 0 : true;
+
+      if (!isExcel) {
+        this.$message.error("只能上传Excel文件!");
+        return false;
+      }
+
+      if (!isSingleFile) {
+        this.$message.error("只能上传一个文件!");
+        return false;
+      }
+
+      return true;
+      // return this.$processImage(this, file, false); // 导入图片处理
+    },
+    // 文件移除处理
+    handleRemove(file, fileList) {
+      this.daoruFile = [];
+    }
+  },
+  mounted() {
+    this.dataSelect();
+    this.stationsData();
+  }
+};
+</script>
+
+<style>
+.imgs {
+  position: relative;
+  border-radius: 6px;
+  width: 148px;
+  height: 148px;
+  margin-right: 10px;
+  display: inline-block;
+}
+.times {
+  position: relative;
+  border: 1px dashed rgba(206, 214, 222, 1);
+  width: 28px;
+  height: 28px;
+  border-radius: 3px;
+  background: rgba(245, 246, 247, 1);
+  margin-right: 10px;
+  display: inline-block;
+}
+
+.dels {
+  position: absolute;
+  top: 0;
+  left: 0;
+  display: none;
+}
+
+.dels .el-icon-delete {
+  line-height: 148px;
+  padding-left: 58px;
+  font-size: 25px;
+  color: #fff;
+}
+
+.imgs:hover .dels {
+  width: 100%;
+  height: 100%;
+  background: #000;
+  display: block;
+  opacity: 0.5;
+}
+
+.bqList {
+  padding: 4px 14px;
+  margin: 4px;
+  border: 1px solid #efefef;
+  font-size: 12px;
+  color: #999;
+  border-radius: 4px;
+  margin-right: 15px;
+}
+
+.delss {
+  display: none;
+  position: relative;
+}
+
+.delss .el-icon-delete {
+  position: absolute;
+  top: 0;
+}
+
+.bqList:hover .delss {
+  display: initial;
+  opacity: 0.5;
+}
+
+.tj {
+  padding: 6px !important;
+  margin: 4px;
+  font-size: 12px;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+}
+.el-upload--picture-card {
+  vertical-align: unset !important;
+}
+.tianshang {
+  margin-left: 690px;
+  margin-top: -20px;
+  width: 69px;
+  height: 26px;
+  opacity: 1;
+  border-radius: 5px;
+  background: rgba(62, 142, 247, 1);
+  font-size: 12px;
+  font-weight: 400;
+  line-height: 26px;
+  color: rgba(255, 255, 255, 1);
+  text-align: center;
+}
+
+/* 导出限制 */
+.export {
+  width: 500px;
+}
+.export .con {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  margin-bottom: 20px;
+}
+.export .con .gundong {
+  animation: gundong 3s linear infinite;
+}
+@keyframes gundong {
+  /* from表示动画的开始位置,也可以使用0%来表示。 */
+  from {
+    transform: rotate(0deg);
+  }
+  /* to表示动画的结束位置,也可以使用100%来表示。 */
+  to {
+    transform: rotate(360deg);
+  }
+}
+.export img {
+  width: 70px;
+}
+.export .btn {
+  display: flex;
+  flex-direction: row-reverse;
+}
+</style>

+ 971 - 0
src/views/coupon/poorStudent.vue

@@ -0,0 +1,971 @@
+<template>
+  <div>
+    <div style="margin:15px 0;display: inline-block;">
+      <span>姓名:</span>
+      <el-input
+        style="width: 180px;"
+        clearable
+        placeholder="请输入姓名"
+        v-model="search.addressDetail"
+      ></el-input
+      >&nbsp;&nbsp;&nbsp;&nbsp;
+    </div>
+    <div style="margin:15px 0;display: inline-block;">
+      <span>学号:</span>
+      <el-input
+        style="width: 180px;"
+        clearable
+        placeholder="请输入学号"
+        v-model="search.addressDetail"
+      ></el-input
+      >&nbsp;&nbsp;&nbsp;&nbsp;
+    </div>
+    <div style="position: relative;display: inline-block;margin: 10px 0px;">
+      <span>认证结果:</span>
+      <el-select
+        v-model="search.status"
+        placeholder="请选择"
+        style="width:150px;"
+      >
+        <el-option label="启用" :value="1"></el-option>
+        <el-option label="禁用" :value="0"></el-option> </el-select
+      >&nbsp;&nbsp;&nbsp;&nbsp;
+    </div>
+    <div style="margin:15px 0;display: inline-block;">
+      <span>认证时间:</span>
+      <el-date-picker
+        v-model="search.createTime"
+        type="datetimerange"
+        unlink-panels
+        range-separator="-"
+        start-placeholder="开始日期"
+        end-placeholder="结束日期"
+        format="yyyy-MM-dd HH:mm:ss"
+        value-format="yyyy-MM-dd HH:mm:ss"
+      >
+      </el-date-picker
+      >&nbsp;&nbsp;&nbsp;&nbsp;
+    </div>
+    <div style="display: inline-block;">
+      <el-button
+        style="margin-left:15px;"
+        size="mini"
+        type="primary"
+        icon="document"
+        @click="select"
+        >查询
+      </el-button>
+      <el-button
+        style="margin-left:15px;"
+        size="mini"
+        type="primary"
+        icon="document"
+        @click="cleans"
+        >重置
+      </el-button>
+    </div>
+    <div style="margin:5px 0 15px 0;">
+      <el-button
+        :disabled="!isAuth('deliveryAddress:import')"
+        size="mini"
+        type="primary"
+        icon="document"
+        @click="daoruCheck"
+        >导入
+      </el-button>
+      <el-button
+        :disabled="!isAuth('deliveryAddress:export')"
+        style="margin-left:15px;"
+        size="mini"
+        type="warning"
+        icon="document"
+        @click="exportList"
+      >
+        导出Excel
+      </el-button>
+      <el-button
+        :disabled="!isAuth('deliveryAddress:add')"
+        style="margin-left:15px;"
+        size="mini"
+        type="primary"
+        icon="document"
+        @click="addAddress"
+        >新增
+      </el-button>
+    </div>
+    <el-table v-loading="tableDataLoading" :data="tableData.list">
+      <!-- <el-table-column type="selection">  @selection-change="changeFun"
+			</el-table-column> -->
+      <!-- <el-table-column prop="id" label="编号" width="80"></el-table-column> -->
+      <el-table-column prop="stationName" label="姓名"> </el-table-column>
+      <el-table-column prop="province" label="学号"> </el-table-column>
+      <el-table-column prop="enableFlag" label="认证结果">
+        <template slot-scope="scope">
+          <span>{{ scope.row.createtime }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="addressDetail"
+        show-overflow-tooltip
+        label="原因描述"
+      >
+      </el-table-column>
+      <el-table-column prop="createTime" label="认证时间" width="160">
+      </el-table-column>
+      <el-table-column fixed="right" label="操作" width="180">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="primary"
+            :disabled="!isAuth('deliveryAddress:update')"
+            @click="updates(scope.row)"
+            style="margin: 3px;"
+            >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="danger"
+            :disabled="!isAuth('deliveryAddress:delete')"
+            @click="deleteuser(scope.row)"
+            style="margin: 3px;"
+            v-if="scope.row.id != 14"
+            >删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <div style="text-align: center;margin-top: 10px;">
+      <el-pagination
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        :page-sizes="[10, 15, 20, 25]"
+        :page-size="limit"
+        :current-page="page"
+        layout="total,sizes, prev, pager, next"
+        :total="tableData.totalCount"
+      >
+      </el-pagination>
+    </div>
+
+    <el-dialog :title="addTitle" :visible.sync="addDialog" center width="600px">
+      <el-form :model="addForm">
+         <el-form-item label="姓名:" :label-width="formLabelWidth">
+          <el-input
+            v-model="addForm.addressDetail"
+            style="width: 250px"
+            placeholder="请输入姓名"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="学号:" :label-width="formLabelWidth">
+          <el-input
+            v-model="addForm.lng"
+            style="width: 250px"
+            placeholder="请输入学号"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="骑手站点:" :label-width="formLabelWidth">
+          <el-select
+            v-model="addForm.stationId"
+            style="width:250px;"
+            placeholder="请选择骑手站点"
+          >
+            <el-option
+              v-for="item in stationList"
+              :key="item.id"
+              :label="item.stationName"
+              :value="item.id"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="地址纬度:" :label-width="formLabelWidth">
+          <el-input
+            v-model="addForm.lat"
+            style="width: 250px"
+            placeholder="请输入地址纬度"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="地址配送费:" :label-width="formLabelWidth">
+          <el-input
+            v-model="addForm.deliveryFee"
+            style="width: 250px"
+            placeholder="请输入套餐内容"
+          ></el-input>
+        </el-form-item>
+      </el-form>
+      <div style="display: flex;flex-direction: row-reverse;">
+        <el-button type="primary" @click="amendAddress">确 定</el-button>
+        <el-button @click="addDialog = false" style="margin-right: 20px;"
+          >取 消</el-button
+        >
+      </div>
+    </el-dialog>
+
+    <!-- 导出限制 -->
+    <el-dialog
+      custom-class="export"
+      :visible.sync="exportVisible"
+      center
+      :title="exportTitle"
+      :close-on-click-modal="false"
+    >
+      <div class="con" v-show="exportFlag == 1">
+        <img src="../../assets/img/error.png" alt="" />
+        <span
+          style="font-size:20px;color: #000;font-weight: 800;margin: 18px 0 5px;"
+          >当前导出条数超过50000条,暂不支持导出</span
+        >
+        <span style="font-size:14px;color: #808080;"
+          >(注:数据中的图片、附件只能以链接的形式导出)</span
+        >
+      </div>
+      <div class="con" v-show="exportFlag == 2">
+        <img class="gundong" src="../../assets/img/loading.png" alt="" />
+        <span
+          style="font-size:20px;color: #000;font-weight: 800;margin: 18px 0 5px;"
+          >导出中...</span
+        >
+        <span style="font-size:14px;color: #808080;"
+          >(注:请到个人导出记录查看并下载)</span
+        >
+      </div>
+      <div class="con" v-show="exportFlag == 3">
+        <img src="../../assets/img/success.png" alt="" />
+        <span
+          style="font-size:20px;color: #000;font-weight: 800;margin: 18px 0 5px;"
+          >导出成功</span
+        >
+        <span style="font-size:14px;color: #808080;"
+          >(注:请到个人导出记录查看并下载)</span
+        >
+      </div>
+      <div class="con" v-show="exportFlag == 4">
+        <img class="gundong" src="../../assets/img/loading.png" alt="" />
+        <span
+          style="font-size:20px;color: #000;font-weight: 800;margin: 18px 0 5px;"
+          >版本迭代中,导出暂时无法使用</span
+        >
+      </div>
+      <div class="btn">
+        <el-button type="primary" @click="exportAffirm">确定</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 导入 -->
+    <el-dialog
+      custom-class="daoru"
+      :visible.sync="daoruVisible"
+      center
+      title="导入收货地址"
+      :close-on-click-modal="false"
+      width="700px"
+    >
+      <div style="margin-bottom: 55px;">
+        <el-button
+          style="margin-bottom: 20px;"
+          type="warning"
+          @click="daoruTemplate"
+          >导入模板下载</el-button
+        >
+        <el-upload
+          class="upload-demo"
+          drag
+          ref="upload"
+          v-model="daoruFile"
+          :http-request="daoruChange"
+          action="#"
+          :before-upload="daoruBeforeUpload"
+          :on-remove="handleRemove"
+        >
+          <!-- <el-button type="primary">点击上传</el-button> -->
+          <i class="el-icon-upload"></i>
+          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+          <div class="el-upload__tip" slot="tip">
+            只能上传execl文件
+          </div>
+        </el-upload>
+      </div>
+      <div class="btn" style="display: flex;flex-direction: row-reverse;">
+        <el-button type="primary" @click="daoruAffirm">确定</el-button>
+        <el-button @click="daoruCancel" style="margin-right: 20px;"
+          >取消</el-button
+        >
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { quillEditor } from "vue-quill-editor";
+import "quill/dist/quill.core.css";
+import "quill/dist/quill.snow.css";
+import "quill/dist/quill.bubble.css";
+import quillConfig from "../allocation/quill-config.js";
+import { regionData } from "element-china-area-data";
+export default {
+  name: "news",
+  components: {
+    quillEditor
+  },
+  data() {
+    return {
+      limit: 10,
+      page: 1,
+      tableDataLoading: false,
+      search: {
+        addressDetail: "",
+        createTime: "",
+        status: "",
+        stationId: ""
+      },
+      stationList: [],
+      tableData: {
+        list: []
+      },
+      switchValue: 0,
+
+      formLabelWidth: "100px",
+      addDialog: false,
+      addTitle: "新增收货地址",
+      options: regionData,
+      componentKey: 0,
+
+      storeAddre: [],
+      storeAddreStr: "",
+
+      province: "",
+      city: "", //市
+      district: "", //区
+      addForm: {
+        id: "",
+        stationId: "", //站点id不能为空
+        deliveryFee: "", //配送费用不能小于0
+        addressDetail: "", //地址详情不能为空
+        lng: "", //经度不能为空
+        lat: "", //维度不能为空
+        status: "", //启用状态;1启用、0禁用
+        sort: "" //排序不能为空
+      },
+
+      // 导出限制
+      exportTitle: "导出错误",
+      exportVisible: false,
+      exportFlag: 1, //1 超出限制  2导出中
+
+      daoruVisible: false,
+      daoruFile: []
+    };
+  },
+  methods: {
+    switchType() {},
+
+    stationsData() {
+      this.$http({
+        url: this.$http.adornUrl("admin/riderStation/selectStationList"),
+        method: "get",
+        params: this.$http.adornParams({
+          page: 1,
+          size: 1000
+        })
+      }).then(({ data }) => {
+        console.log(data, "骑手站点");
+        let returnData = data.data.list;
+        this.stationList = returnData;
+      });
+    },
+    // 多选
+    changeFun(val) {},
+
+    handleSizeChange(val) {
+      this.limit = val;
+      this.dataSelect();
+    },
+    handleCurrentChange(val) {
+      this.page = val;
+      this.dataSelect();
+    },
+    // 查询
+    select() {
+      this.page = 1;
+      this.dataSelect();
+    },
+    // 重置
+    cleans() {
+      this.page = 1;
+      this.search = {
+        addressDetail: "",
+        createTime: "",
+        status: "",
+        stationId: ""
+      };
+      this.dataSelect();
+    },
+    // 是否启用
+    changeType(flag, row) {
+      console.log(flag, row);
+      this.$http({
+        url: this.$http.adornUrl("admin/inside-address/updateStatus"),
+        method: "post",
+        data: this.$http.adornData({
+          id: row.id,
+          status: flag //启用状态;1启用、0禁用
+        })
+      }).then(({ data }) => {
+        console.log(data, "新增收货地址");
+        if (data.msg == "success") {
+          this.$message({
+            message: "操作成功",
+            type: "success",
+            duration: 1500,
+            onClose: () => {
+              this.dataSelect();
+            }
+          });
+        }
+      });
+    },
+
+    // 获取省市区
+    handleChange(value) {
+      console.log(value);
+
+      value = this.$refs["cascaderAddr"].currentLabels;
+      this.province = value[0];
+      this.city = value[1];
+      this.district = value[2];
+      if (this.city == "市辖区") {
+        this.city = this.province;
+      }
+      console.log(this.$refs["cascaderAddr"].currentLabels);
+    },
+
+    // 删除
+    deleteuser(row) {
+      let delid = [row.id];
+      this.$confirm(`确定删除此收货地址?`, "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      })
+        .then(() => {
+          this.$http({
+            url: this.$http.adornUrl("admin/inside-address/delete"),
+            method: "post",
+            // data: delid
+            data: this.$http.adornData(delid)
+          }).then(({ data }) => {
+            if (data.msg == "success") {
+              this.$message({
+                message: "删除成功",
+                type: "success",
+                duration: 1500,
+                onClose: () => {
+                  this.dataSelect();
+                }
+              });
+            } else {
+              this.$message({
+                message: data.msg,
+                type: "error",
+                duration: 1500,
+                onClose: () => {}
+              });
+            }
+          });
+        })
+        .catch(() => {});
+    },
+    // 获取数据列表
+    dataSelect() {
+      this.tableDataLoading = false;
+      this.$http({
+        url: this.$http.adornUrl("admin/inside-address/pages"),
+        method: "get",
+        params: this.$http.adornParams({
+          page: this.page,
+          limit: this.limit,
+          addressDetail: this.search.addressDetail,
+          status: this.search.status,
+          stationId: this.search.stationId,
+          startTime: this.search.createTime[0],
+          endTime: this.search.createTime[1]
+        })
+      }).then(({ data }) => {
+        console.log(data, "收货地址列表");
+        if (data.msg == "success") {
+          this.tableDataLoading = false;
+          let returnData = data.data;
+          this.tableData = returnData;
+        } else {
+          this.$message({
+            message: data.msg,
+            type: "warning",
+            duration: 1500,
+            onClose: () => {}
+          });
+        }
+      });
+    },
+    // 新增收货地址
+    addAddress() {
+      this.addTitle = "新增收货地址";
+      this.storeAddreStr = "请选择省市区";
+      this.storeAddre = [];
+      this.addForm = {
+        id: "",
+        stationId: "", //站点id不能为空
+        deliveryFee: "", //配送费用不能小于0
+        province: "", //省份不能为空
+        city: "", //城市不能为空
+        district: "", //区县不能为空
+        addressDetail: "", //地址详情不能为空
+        lng: "", //经度不能为空
+        lat: "", //维度不能为空
+        status: "", //启用状态;1启用、0禁用
+        sort: "" //排序不能为空
+      };
+      this.addDialog = true;
+    },
+
+    // 编辑
+    updates(row) {
+      console.log(row);
+      this.addTitle = "编辑收货地址";
+      this.storeAddre = [];
+      this.addForm = {
+        id: row.id,
+        stationId: row.stationId, //站点id不能为空
+        deliveryFee: row.deliveryFee, //配送费用不能小于0
+        province: row.province, //省份不能为空
+        city: row.city, //城市不能为空
+        district: row.district, //区县不能为空
+        addressDetail: row.addressDetail, //地址详情不能为空
+        lng: row.lng, //经度不能为空
+        lat: row.lat, //维度不能为空
+        status: row.status, //启用状态;1启用、0禁用
+        sort: row.sort //排序不能为空, //排序不能为空
+      };
+      this.province = row.province;
+      this.city = row.city;
+      this.district = row.district;
+      this.addDialog = true;
+      this.storeAddreStr = `${row.province}/${row.city}/${row.district}`;
+    },
+
+    // 确定收货地址
+    amendAddress() {
+      if (this.addForm.stationId == "") {
+        this.$notify({
+          title: "提示",
+          duration: 1800,
+          message: "站点不能为空",
+          type: "warning"
+        });
+        return;
+      }
+      if (this.addForm.deliveryFee == "" && this.addForm.deliveryFee < 0) {
+        this.$notify({
+          title: "提示",
+          duration: 1800,
+          message: "配送费不能为空且不能小于0",
+          type: "warning"
+        });
+        return;
+      }
+      if (this.addForm.addressDetail == "") {
+        this.$notify({
+          title: "提示",
+          duration: 1800,
+          message: "地址详情不能为空",
+          type: "warning"
+        });
+        return;
+      }
+      if (this.addForm.lng == "") {
+        this.$notify({
+          title: "提示",
+          duration: 1800,
+          message: "经度不能为空",
+          type: "warning"
+        });
+        return;
+      }
+      if (this.addForm.lat == "") {
+        this.$notify({
+          title: "提示",
+          duration: 1800,
+          message: "纬度不能为空",
+          type: "warning"
+        });
+        return;
+      }
+      if (this.addForm.id) {
+        this.$http({
+          url: this.$http.adornUrl("admin/inside-address/update"),
+          method: "post",
+          data: this.$http.adornData({
+            id: this.addForm.id,
+            stationId: this.addForm.stationId, //站点id不能为空
+            deliveryFee: this.addForm.deliveryFee, //配送费用不能小于0
+            province: this.province, //省份不能为空
+            city: this.city, //城市不能为空
+            district: this.district, //区县不能为空
+            addressDetail: this.addForm.addressDetail, //地址详情不能为空
+            lng: this.addForm.lng, //经度不能为空
+            lat: this.addForm.lat, //维度不能为空
+            status: this.addForm.status, //启用状态;1启用、0禁用
+            sort: this.addForm.sort //排序不能为空
+          })
+        }).then(({ data }) => {
+          console.log(data, "新增收货地址");
+          if (data.msg == "success") {
+            this.$message({
+              message: "操作成功",
+              type: "success",
+              duration: 1500,
+              onClose: () => {
+                this.addDialog = false;
+                this.dataSelect();
+              }
+            });
+          } else {
+            this.$message({
+              message: data.msg,
+              type: "error",
+              duration: 1500,
+              onClose: () => {
+                this.addDialog = false;
+                this.dataSelect();
+              }
+            });
+          }
+        });
+      } else {
+        this.$http({
+          url: this.$http.adornUrl("admin/inside-address/add"),
+          method: "post",
+          data: this.$http.adornData({
+            stationId: this.addForm.stationId, //站点id不能为空
+            deliveryFee: this.addForm.deliveryFee, //配送费用不能小于0
+            province: this.province, //省份不能为空
+            city: this.city, //城市不能为空
+            district: this.district, //区县不能为空
+            addressDetail: this.addForm.addressDetail, //地址详情不能为空
+            lng: this.addForm.lng, //经度不能为空
+            lat: this.addForm.lat, //维度不能为空
+            status: this.addForm.status, //启用状态;1启用、0禁用
+            sort: this.addForm.sort //排序不能为空
+          })
+        }).then(({ data }) => {
+          console.log(data, "新增收货地址");
+          if (data.msg == "success") {
+            this.$message({
+              message: "操作成功",
+              type: "success",
+              duration: 1500,
+              onClose: () => {
+                this.addDialog = false;
+                this.dataSelect();
+              }
+            });
+          } else {
+            this.$message({
+              message: data.msg,
+              type: "error",
+              duration: 1500,
+              onClose: () => {
+                this.addDialog = false;
+                this.dataSelect();
+              }
+            });
+          }
+        });
+      }
+    },
+
+    exportList() {
+      console.log(this.tableData.totalCount, "导出条数");
+      this.exportTitle = "导出";
+      // this.exportFlag = 4;
+      this.exportVisible = true;
+      if (this.tableData.totalCount >= 50000) {
+        this.exportTitle = "导出错误";
+        this.exportFlag = 1;
+      } else {
+        this.exportTitle = "导出";
+        this.exportFlag = 2;
+        this.exportVisible = true;
+        var userId = this.$cookie.get("userId");
+        this.$http({
+          url: this.$http.adornUrl("admin/export/exportShippingAddress"),
+          method: "get",
+          // responseType: "blob",
+          params: this.$http.adornParams({
+            // 'page': page,
+            // 'size': this.size,
+            userId: userId,
+            addressDetail: this.search.addressDetail,
+            status: this.search.status,
+            stationId: this.search.stationId,
+            startTime: this.search.createTime[0],
+            endTime: this.search.createTime[1]
+          })
+        }).then(({ data }) => {
+          console.log(data, "导出");
+          if (data.code == 0) {
+            this.exportTitle = "导出成功";
+            this.exportFlag = 3;
+          }
+          // let blob = new Blob([data], {
+          //   type:
+          //     "application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
+          // });
+          // if (window.navigator.msSaveOrOpenBlob) {
+          //   navigator.msSaveBlob(blob);
+          // } else {
+          //   let url = window.URL.createObjectURL(blob);
+          //   let elink = document.createElement("a");
+          //   elink.download = "订单列表.xlsx";
+          //   elink.style.display = "none";
+          //   elink.href = url;
+          //   document.body.appendChild(elink);
+          //   elink.click();
+          //   document.body.removeChild(elink);
+          // }
+        });
+      }
+    },
+    exportAffirm() {
+      this.exportVisible = false;
+    },
+
+    daoruCheck() {
+      this.daoruVisible = true;
+      this.daoruFile = [];
+      this.$nextTick(() => {
+        this.$refs.upload.clearFiles();
+      });
+    },
+    // 导入模板下载
+    daoruTemplate() {
+      this.$http({
+        url: this.$http.adornUrl(
+          "admin/inside-address/downloadInsideAddressExcel"
+        ),
+        method: "get",
+        params: this.$http.adornParams()
+      }).then(({ data }) => {
+        console.log(data, "导出");
+        const link = document.createElement("a");
+        link.href = data.data;
+        // link.download = "模板文件.xlsx"; // 设置下载后的文件名
+        link.target = "_blank"; // 在新标签页中打开
+        document.body.appendChild(link);
+        link.click();
+        document.body.removeChild(link);
+      });
+    },
+    // 确定导入
+    daoruAffirm() {
+      console.log(this.daoruFile, "导入收货地址");
+
+      let formData = new FormData();
+      formData.append("file", this.daoruFile);
+      this.$http({
+        url: this.$http.adornUrl("admin/inside-address/import"),
+        method: "post",
+        // headers: {
+        //   'Content-Type': 'multipart/form-data'
+        // },
+        data: formData
+      }).then(({ data }) => {
+        console.log(data, "导入收货地址");
+        if (data.code == 0) {
+          this.$message({
+            message: "操作成功",
+            type: "success",
+            duration: 1500,
+            onClose: () => {
+              this.addDialog = false;
+              this.dataSelect();
+            }
+          });
+        } else {
+          this.$message({
+            message: data.msg,
+            type: "error",
+            duration: 1500,
+            onClose: () => {}
+          });
+        }
+      });
+    },
+    daoruCancel() {
+      this.daoruVisible = false;
+      this.$refs.upload.clearFiles();
+    },
+    // 导入文件
+    daoruChange(file) {
+      console.log(file, "上传成功");
+      this.daoruFile = file.file;
+    },
+    daoruBeforeUpload(file) {
+      console.log(file, "上传之前");
+      // 检查文件类型
+      const isExcel =
+        file.type ===
+          "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ||
+        file.type === "application/vnd.ms-excel";
+
+      // 检查文件数量
+      const isSingleFile = this.daoruFile ? this.daoruFile.length === 0 : true;
+
+      if (!isExcel) {
+        this.$message.error("只能上传Excel文件!");
+        return false;
+      }
+
+      if (!isSingleFile) {
+        this.$message.error("只能上传一个文件!");
+        return false;
+      }
+
+      return true;
+      // return this.$processImage(this, file, false); // 导入图片处理
+    },
+    // 文件移除处理
+    handleRemove(file, fileList) {
+      this.daoruFile = [];
+    }
+  },
+  mounted() {
+    this.dataSelect();
+    this.stationsData();
+  }
+};
+</script>
+
+<style>
+.imgs {
+  position: relative;
+  border-radius: 6px;
+  width: 148px;
+  height: 148px;
+  margin-right: 10px;
+  display: inline-block;
+}
+.times {
+  position: relative;
+  border: 1px dashed rgba(206, 214, 222, 1);
+  width: 28px;
+  height: 28px;
+  border-radius: 3px;
+  background: rgba(245, 246, 247, 1);
+  margin-right: 10px;
+  display: inline-block;
+}
+
+.dels {
+  position: absolute;
+  top: 0;
+  left: 0;
+  display: none;
+}
+
+.dels .el-icon-delete {
+  line-height: 148px;
+  padding-left: 58px;
+  font-size: 25px;
+  color: #fff;
+}
+
+.imgs:hover .dels {
+  width: 100%;
+  height: 100%;
+  background: #000;
+  display: block;
+  opacity: 0.5;
+}
+
+.bqList {
+  padding: 4px 14px;
+  margin: 4px;
+  border: 1px solid #efefef;
+  font-size: 12px;
+  color: #999;
+  border-radius: 4px;
+  margin-right: 15px;
+}
+
+.delss {
+  display: none;
+  position: relative;
+}
+
+.delss .el-icon-delete {
+  position: absolute;
+  top: 0;
+}
+
+.bqList:hover .delss {
+  display: initial;
+  opacity: 0.5;
+}
+
+.tj {
+  padding: 6px !important;
+  margin: 4px;
+  font-size: 12px;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+}
+.el-upload--picture-card {
+  vertical-align: unset !important;
+}
+.tianshang {
+  margin-left: 690px;
+  margin-top: -20px;
+  width: 69px;
+  height: 26px;
+  opacity: 1;
+  border-radius: 5px;
+  background: rgba(62, 142, 247, 1);
+  font-size: 12px;
+  font-weight: 400;
+  line-height: 26px;
+  color: rgba(255, 255, 255, 1);
+  text-align: center;
+}
+
+/* 导出限制 */
+.export {
+  width: 500px;
+}
+.export .con {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  margin-bottom: 20px;
+}
+.export .con .gundong {
+  animation: gundong 3s linear infinite;
+}
+@keyframes gundong {
+  /* from表示动画的开始位置,也可以使用0%来表示。 */
+  from {
+    transform: rotate(0deg);
+  }
+  /* to表示动画的结束位置,也可以使用100%来表示。 */
+  to {
+    transform: rotate(360deg);
+  }
+}
+.export img {
+  width: 70px;
+}
+.export .btn {
+  display: flex;
+  flex-direction: row-reverse;
+}
+</style>

File diff suppressed because it is too large
+ 1032 - 0
src/views/coupon/promotion.vue


+ 40 - 3
src/views/shopsList/shopAdmin.vue

@@ -1589,7 +1589,7 @@ export default {
       this.releobject.detail = "";
     },
     speciTo() {
-      if (this.ruleName == "") {
+      if (/^\s+$/.test(this.ruleName) || this.ruleName == "") {
         this.$message({
           title: "提示",
           type: "error",
@@ -1599,7 +1599,9 @@ export default {
         });
         return;
       }
-      if (this.releobject.value == "") {
+      console.log(/^\s+$/.test(), "规格");
+
+      if (/^\s+$/.test(this.releobject.value) || this.releobject.value == "") {
         this.$message({
           title: "提示",
           type: "error",
@@ -1609,7 +1611,7 @@ export default {
         });
         return;
       }
-      if (this.releobject.detail == "") {
+      if (/^\s+$/.test(this.releobject.detail) || this.releobject.detail == "") {
         this.$message({
           title: "提示",
           duration: 1800,
@@ -1721,6 +1723,9 @@ export default {
       this.form.ruleName = rows.ruleName;
       this.form.ruleValue = rows.ruleValue;
       this.form.createTime = rows.createTime;
+      this.isshow=true
+      this.releobject.value=""
+      this.releobject.detail=""
     },
     // 修改商品规格
     amendNoticeTo() {
@@ -1760,6 +1765,38 @@ export default {
       this.form.ruleValue.splice(index, 1);
     },
     speciTo1() {
+      if (/^\s+$/.test(this.form.ruleName) || this.form.ruleName == "") {
+        this.$message({
+          title: "提示",
+          type: "error",
+          duration: 1800,
+          message: "请输入标题名称",
+          type: "warning"
+        });
+        return;
+      }
+      console.log(/^\s+$/.test(this.releobject.value), "规格");
+
+      if (/^\s+$/.test(this.releobject.value) || this.releobject.value == "") {
+        this.$message({
+          title: "提示",
+          type: "error",
+          duration: 1800,
+          message: "请输入规格",
+          type: "warning"
+        });
+        return;
+      }
+      if (/^\s+$/.test(this.releobject.detail) || this.releobject.detail == "") {
+        this.$message({
+          title: "提示",
+          duration: 1800,
+          type: "error",
+          message: "请输入规格值",
+          type: "warning"
+        });
+        return;
+      }
       this.form.ruleValue.push({
         value: this.releobject.value,
         detail: this.releobject.detail

+ 2 - 5
src/views/sysmission/missionAdd.vue

@@ -38,11 +38,11 @@
           v-model="titlePicture"
           :class="{ hide: hideUpload }"
           :action="Tupiantou"
+          :headers="{ token: token }"
           :limit="1"
           :on-success="handleUploadSuccess"
           list-type="picture-card"
           :on-remove="handleRemove"
-              :headers="{ token: token }"
           :on-change="handleChange"
         >
           <i class="el-icon-plus"></i>
@@ -200,10 +200,7 @@ export default {
 
           xhr = new XMLHttpRequest();
           xhr.withCredentials = false;
-          xhr.open(
-            "POST",
-            Tupiantou
-          );
+          xhr.open("POST", Tupiantou);
           xhr.onload = function() {
             var json;