caiyuqin 4 месяцев назад
Родитель
Сommit
1bf12c658f
41 измененных файлов с 4489 добавлено и 456 удалено
  1. 4 0
      api/api.js
  2. 47 0
      common/router/modules/routes.js
  3. 1 1
      components/index_nav.vue
  4. 104 0
      components/popup/index.vue
  5. 20 2
      components/upload/index.vue
  6. 24 0
      pages.json
  7. 131 0
      pages/login/components/classification.vue
  8. 1358 0
      pages/login/settiedCopy.vue
  9. 361 284
      pages/login/settled.vue
  10. 1 1
      pages/message/details.vue
  11. 400 0
      pages/store/adVideo.vue
  12. 14 52
      pages/store/advertising.vue
  13. 109 56
      pages/store/businessInfor.vue
  14. 11 7
      pages/store/components/status.vue
  15. 124 0
      pages/store/components/tipModal.vue
  16. 8 25
      pages/store/headPhoto.vue
  17. 497 0
      pages/store/newSettings.vue
  18. 25 6
      pages/store/selectTdMap.vue
  19. 1 1
      pages/store/settings.vue
  20. 380 0
      pages/store/shopQualifications.vue
  21. 178 0
      pages/store/shopRenovation.vue
  22. 163 0
      pages/store/storeAdress.vue
  23. 168 0
      pages/store/storeInfo.vue
  24. 271 0
      pages/store/storeQualification.vue
  25. 32 6
      pages/store/tdtuMap.vue
  26. 32 4
      plugin/colorui/main.css
  27. BIN
      static/arrow.png
  28. BIN
      static/login/add.png
  29. BIN
      static/login/card-1.png
  30. BIN
      static/login/card-2.png
  31. BIN
      static/login/jiankang.png
  32. BIN
      static/login/right-icon.png
  33. BIN
      static/login/shiping.png
  34. BIN
      static/login/swiper1-bar.png
  35. BIN
      static/login/swiper1.png
  36. BIN
      static/login/swiper2-bar.png
  37. BIN
      static/login/swiper2.png
  38. BIN
      static/login/swiper3-bar.png
  39. BIN
      static/login/swiper3.png
  40. BIN
      static/map-icon.png
  41. 25 11
      store/index.js

+ 4 - 0
api/api.js

@@ -49,7 +49,11 @@ const apiService = {
 	    }else{
 	        return configService.staticDomainURL + "/" + avatar;
 	    }
+	},
+	shopInfo( id) {
+		return http.get('/merchant/register/queryInfoById?id='+id)	
 	}
 };
 
+	
 export default apiService;

+ 47 - 0
common/router/modules/routes.js

@@ -776,5 +776,52 @@ const routes = [{
 			title: '提现详情',
 		},
 	},
+	 {
+		path: '/pages/store/newSettings',
+		name: 'newSettings',
+		meta: {
+			title: '店铺设置',
+		},
+	},
+	 {
+		path: '/pages/store/storeInfo',
+		name: 'storeInfo',
+		meta: {
+			title: '门店名称',
+		},
+	},
+	{
+		path: '/pages/store/storeAdress',
+		name: 'storeInfo',
+		meta: {
+			title: '门店地址',
+		},
+	},
+	{
+		path: '/pages/store/storeQualification',
+		name: 'storeInfo',
+		meta: {
+			title: '经营资质',
+		},
+	},{
+		path: '/pages/store/shopQualifications',
+		name: 'storeInfo',
+		meta: {
+			title: '门店资质',
+		},
+	},{
+		path: '/pages/store/shopRenovation',
+		name: 'storeInfo',
+		meta: {
+			title: '店铺装修',
+		},
+	},{
+		path: '/pages/store/adVideo',
+		name: 'storeInfo',
+		meta: {
+			title: '视频',
+		},
+	},
+	
 ]
 export default routes

+ 1 - 1
components/index_nav.vue

@@ -30,7 +30,7 @@
 				swiperList: [{
 						name: '店铺设置',
 						url: '/static/index/shop.png',
-						path: '/pages/store/settings'
+						path: '/pages/store/newSettings'
 					},
 					{
 						name: '团餐活动',

+ 104 - 0
components/popup/index.vue

@@ -0,0 +1,104 @@
+<template>
+  <view class="tip-modal-content">
+    <u-popup v-model='isShow' :title="title" :showConfirmButton="false" mode="bottom" border-radius="20">
+      <view class="head-title">{{title}}</view>
+      <view class="slot-content">
+        <slot></slot>
+      </view>
+      <view class="u-flex btn-box">
+        <view class="btn cancel" @click='close'>取消</view>
+        <view class="btn sure u-flex-1" @click='sure'>确定</view>
+      </view>
+
+    </u-popup>
+  </view>
+
+</template>
+
+<script>
+export default {
+  props: {
+    isShow: {
+      type: Boolean,
+      default: false
+    },
+    title: {
+      type: String,
+      default: ''
+    },
+  },
+  data() {
+    return {
+      value: ""
+    };
+  },
+  onReady() {
+  },
+  onLoad(Option) {
+
+  },
+  methods: {
+    close() {
+      this.$emit('close')
+    },
+    sure() {
+      this.$emit('sure', this.value)
+    },
+    selectTime() { }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.tip-modal-content {
+  ::v-deep.u-modal__button-group--confirm-button {
+    padding: 0;
+  }
+  .modal-footer {
+    border-top: 1rpx solid #eeeeee;
+    padding: 16rpx;
+  }
+  ::v-deep.default .u-popup__content {
+    background: linear-gradient(
+      to bottom,
+      #f8e0e3 0%,
+      #ffffff 30%,
+      #ffffff 100%
+    );
+  }
+  .head-title {
+    text-align: center;
+    border-bottom:1rpx solid #eee;
+    height:86rpx;
+    line-height:86rpx;
+    margin:0 24rpx;
+    font-weight: 500;
+    font-size:32rpx;
+  }
+  .btn-box {
+    background-color: #fff;
+    padding: 16rpx 24rpx 20rpx 24rpx;
+    border-top: 1rpx solid #eee;
+    .btn {
+      font-size: 28rpx;
+      border-radius: 54rpx;
+      height: 68rpx;
+      line-height: 68rpx;
+      text-align: center;
+    }
+    .cancel {
+      border: 1rpx solid #ccc;
+      color: #999999;
+      width: 205rpx;
+      margin-right: 24rpx;
+    }
+    .sure {
+      color: #fff;
+      background: linear-gradient(90deg, #77b6ff 0%, #449aff 100%);
+    }
+  }
+  .slot-content {
+    margin: 24rpx 40rpx;
+  }
+}
+</style>

+ 20 - 2
components/upload/index.vue

@@ -1,10 +1,16 @@
 <template>
-	<u-upload :action="action" :fileList="fileListData" 
+	<u-upload :action="action" :fileList="fileListData"   :custom-btn="isImage" ref="uUpload"
+		:key="uploadKey"
 		v-bind="$attrs" 
 		@on-remove="onRemove"
 		@on-success="afterRead"
+		@on-choose-complete='onChoose'
 		@on-list-change="onListChange">
-		<slot></slot>
+		<template v-if='isImage'>
+			<view slot="addBtn">
+        <slot></slot>
+   		</view>
+		</template>
 	</u-upload>
 </template>
 
@@ -13,6 +19,10 @@ import configService from '@/common/service/config.service';
 export default {
 	name: "",
 	props: {
+		isImage:{
+			type:Boolean, //是否用自定义图片
+			default:false
+		},
 		api: {
 			type: String,
 			default: '/sys/common/upload'
@@ -25,6 +35,7 @@ export default {
 	data() {
 		return {
 			fileListData: [],
+			uploadKey:0 // 清空时改变 key,强制重建组件
 		};
 	},
 	watch: {
@@ -33,7 +44,10 @@ export default {
 			handler(n) {
 				if (n.length > 0) {
 					this.fileListData = n;
+				}else{
+					this.fileListData=[]
 				}
+				this.uploadKey++;  
 			}
 		}
 	},
@@ -50,6 +64,7 @@ export default {
 	},
 	methods: {
 		afterRead(event, index, list) {
+			this.$emit('loadIng', false);
 			// url是组件的固定字段
 			this.fileListData[index] = {
 				...event,
@@ -96,6 +111,9 @@ export default {
 				});
 			});
 		},
+		onChoose(){
+			this.$emit('loadIng', true);
+		}
 	}
 }
 </script>

+ 24 - 0
pages.json

@@ -550,6 +550,30 @@
 			"style": {
 				"navigationBarTitleText": "广告详情"
 			}
+		},
+		{
+			"path": "pages/store/newSettings",
+			"style": {}
+
+		},{
+			"path": "pages/store/storeInfo",
+			"style": {}
+		},
+		{
+			"path": "pages/store/storeAdress",
+			"style": {}
+		},{
+			"path": "pages/store/storeQualification",
+			"style": {}
+		},{
+			"path": "pages/store/shopQualifications",
+			"style": {}
+		},{
+			"path": "pages/store/shopRenovation",
+			"style": {}
+		},{
+			"path": "pages/store/adVideo",
+			"style": {}
 		}
 	],
 	"globalStyle": {

+ 131 - 0
pages/login/components/classification.vue

@@ -0,0 +1,131 @@
+<template>
+  <view class="class-box">
+    <view class="content">
+      <view class="type">
+        <view class="title">选择分类</view>
+        <u-radio-group v-model="carServiceValue" placement="column">
+          <view class="u-flex radio-box" v-for="(item,index) in treeData" :key='index'>
+            <view> {{item.title}}</view>
+            <u-radio shape="circle" :label="item.title" :name="item.key" activeColor="#77B6FF"></u-radio>
+          </view>
+        </u-radio-group>
+      </view>
+      <view class="u-flex btn-box">
+        <view class="btn cancel" @click="cancel">取消</view>
+        <view class="btn sure u-flex-1" @click="cut">确定</view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+export default {
+  name: 'selectType',
+  props: {
+    treeData: {
+      type: Array,
+      default: () => []
+    }
+  },
+  data() {
+    return {
+      carServiceList: [
+      ],
+      carServiceValue: '',
+      userImpCount: "",
+    }
+  },
+  methods: {
+    transmitType(item) {
+      this.$emit('transmitType', { value: item.value, label: item.label })
+    },
+    cut() {
+      if (this.carServiceValue) {
+        let item = this.treeData.filter((e => e.key == this.carServiceValue))[0]
+        this.$emit('suerPop', { title: item.title, id: item.key })
+      } else {
+        uni.showToast({
+          icon: 'none',
+          title: `请选择`
+        });
+      }
+    },
+    init(id) {
+      this.carServiceValue = id
+    },
+    cancel() {
+      this.$emit('cancel')
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+.class-box {
+  width: 100vw;
+  height: 100vh;
+  background: rgba(0, 0, 0, 0.4);
+  position: fixed;
+  top: 0;
+  left: 0;
+  display: flex;
+  align-items: end;
+  z-index: 999;
+
+  .content {
+    width: 100%;
+    border-radius: 20rpx 20rpx 0px 0px;
+    overflow-y: hidden;
+
+    .title {
+      font-weight: 500;
+      font-size: 32rpx;
+      color: #333333;
+      text-align: center;
+      height: 86rpx;
+      line-height: 86rpx;
+      border-bottom: 1rpx solid #eee;
+    }
+
+    .type {
+      width: 100%;
+      padding: 0 24rpx;
+      background-color: #fff;
+    }
+    .radio-box {
+      width: 100%;
+      justify-content: space-between;
+      height: 80rpx;
+      line-height: 80rpx;
+      border-bottom: 1rpx solid #eee;
+    }
+    .btn-box {
+      background-color: #fff;
+      padding: 16rpx 24rpx 20rpx 24rpx;
+      .btn {
+        font-size: 28rpx;
+        border-radius: 54rpx;
+        height: 76rpx;
+        line-height: 76rpx;
+        text-align: center;
+      }
+      .cancel {
+        border: 1rpx solid #ccc;
+        color: #999999;
+        width: 205rpx;
+        margin-right: 24rpx;
+      }
+      .sure {
+        color: #fff;
+        background: linear-gradient(90deg, #77b6ff 0%, #449aff 100%);
+      }
+    }
+  }
+  ::v-deep.u-radio__label {
+    display: none;
+  }
+  ::v-deep.u-radio-group {
+    width: 100%;
+  }
+}
+</style>

+ 1358 - 0
pages/login/settiedCopy.vue

@@ -0,0 +1,1358 @@
+<template>
+	<view>
+		<cu-custom :bgColor="title == '申请入驻' ? 'bg-gradual-blue1' : 'bg-fff'" :isBack="true">
+			<block slot="content">{{ title }}</block>
+		</cu-custom>
+		<view class="progress" v-if="title == '申请入驻'">
+			<view class="progress-style progress-bag">
+				<view v-if="tab == 1" class="progress-icon"></view>
+				<view v-if="tab == 2" class="progress-style progress-bag1">
+					<view class="progress-icon1"></view>
+				</view>
+				<view v-if="tab == 3" class="progress-style progress-bag2">
+					<view class="progress-icon1"></view>
+				</view>
+			</view>
+			<view class="progress-title flex justify-between">
+				<view :class="tab == '1' ? 'color' : ''">账户信息</view>
+				<view :class="tab == '2' ? 'color' : ''">提交资料</view>
+				<view :class="tab == '3' ? 'color' : ''">门店信息</view>
+			</view>
+		</view>
+		<status v-else  :obj='form.localMerchantInfoExamine|| {}'></status>
+		<view v-if="tab == 1" :class="title == '申请入驻'?'tab-top':'tab-padding'">
+			<form>
+
+				<!-- <view class="borderRadiu" v-if="title == '申请入驻' && loginType == 3">
+					<view class="flex cu-form-group margin-top1 ">
+						<view class="content ">
+							<text class="text-bold">推荐人邀请码</text>
+							<i class="text-bg-w "></i>
+						</view>
+					</view>
+					<view class=" cu-form-group ">
+						<view class="title">邀请码</view>
+						<input placeholder="输入邀请码(选填)" v-model="form.referenceCode" name="input"
+							:disabled="referenceCodeDisable"></input>
+					</view>
+				</view> -->
+
+				<view class="borderRadiu" style="height: 67vh;overflow-y: auto;">
+					<view class="flex cu-form-group margin-top1">
+						<view class="content ">
+							<text class="text-bold text-500 head-title">提交经营主体资料</text>
+							<i class="text-bg-w"></i>
+						</view>
+					</view>
+					<view class="customize">
+						<view class="title" style="text-align: center;">营业执照</view>
+						<view style="border-bottom: 1px solid #EEEEEE;">
+							<view class="business-img flex align-center">
+								<image :src="businessLicenseImg ? businessLicenseImg : '/static/login/yingyezhizhao.png'" mode=""
+									@click="businessChange('businessLicense')">
+								</image>
+							</view>
+						</view>
+						<view class="business-prompt">
+							请上传营业执照照片或复印件,复印件需加盖公司公章,仅支持jpg、png格式;图片需清晰、完整、无反光、无PS、无不相关水印、非拍屏
+						</view>
+					</view>
+					<view class=" cu-form-group">
+						<view class="title"> 主体类型</view>
+						<view style="display: flex;width: 74%;justify-content: space-between;" @click="showSelectLocality = true">
+							<view style="font-size: 30rpx;">
+								<text v-if="typeLabel"> {{ typeLabel }}</text>
+								<text v-else class='phone-placeholder'>请选择主体类型</text>
+							</view>
+							<u-icon name="arrow-right" style="margin-left: 17rpx;color: #C7C6CA"></u-icon>
+						</view>
+						<!-- <u-select v-model="showSelectLocality" :list="selectLocality" @confirm="confirmLocality"></u-select> -->
+					</view>
+					<view class="cu-form-group">
+						<view class="title">公司名称</view>
+						<input placeholder="请输入公司名称" v-model="form.corporateName" name="input" placeholder-class="phone-placeholder"></input>
+					</view>
+					<view class="cu-form-group">
+						<view class="title">统一代码</view>
+						<input placeholder="请输入统一社会信用代码" v-model="form.creditCode" name="input" placeholder-class="phone-placeholder"></input>
+					</view>
+					<view class="cu-form-group">
+						<view class="title">证件期限 </view>
+						<!-- <uni-data-checkbox  v-model="form.lifespan" :localdata="lifespanOption"></uni-data-checkbox> -->
+						<radio-group @change="typeChang($event, 'lifespanType')" v-model="form.lifespanType">
+							<label class="margin-left-sm">
+								<radio :class="form.lifespanType == '1' ? 'checked blue' : ''"
+									:checked="form.lifespanType == '1' ? true : false" value="1"></radio>
+								<!-- <checkbox class=' blue' :class="form.type?'checked':''" :checked="form.type?true:false" value="1"></checkbox> -->
+								<text class="margin-left-sm">长期有效</text>
+							</label>
+							<label class="margin-left-sm">
+								<radio :class="form.lifespanType == '2' ? 'checked blue' : ''"
+									:checked="form.lifespanType == '2' ? true : false" value="2"></radio>
+								<text class="margin-left-sm">固定期限</text>
+							</label>
+						</radio-group>
+					</view>
+					<view class="cu-form-group" v-if="form.lifespanType == 2">
+						<view class="title">有效期起</view>
+						<view style="display: flex;width: 74%;justify-content: space-between;" @click="selectDate">
+							<view style="font-size: 30rpx;">
+								<text v-if="form.lifespanBegin"> {{ form.lifespanBegin }}--{{form.lifespanEnd}}</text>
+								<text v-else style="color: grey">请选择</text>
+							</view>
+							<u-icon name="arrow-right" style="margin-left: 17rpx;color: #C7C6CA"></u-icon>
+						</view>
+						<rangTime title="选择证件有效时间" ref="rangTime" :mode="mode" @onSubmit="onEndTimeChange" />
+					</view>
+					<view class="cu-form-group" style="display: block;">
+						<view class="title">经营范围</view>
+						<view class="scope" style="width: 100%;height: auto;">
+							<u-input v-model="form.businessScope" type="textarea" placeholder-class="phone-placeholder"
+								style="width: 100%;min-height: 165rpx;max-height: 300rpx; background-color:#F7F8FC;padding: 0 16rpx;margin: 0;overflow-y: auto;" />
+						</view>
+					</view>
+				</view>
+
+			</form>
+		</view>
+		<view v-if="tab == 2" :class="title=='申请入驻'?'tab-top':'tab-padding'" :style="title == '店铺信息' ? 'margin-top: 120upx' : ''">
+			<form>
+				<view class="borderRadiu borderRadiu-box2">
+					<view class="flex cu-form-group margin-top1 ">
+						<view class="content ">
+							<text class="text-bold text-500 head-title">法人信息</text>
+							<i class="text-bg-w "></i>
+						</view>
+					</view>
+					<view class="cu-form-group  ">
+						<view class="title">法人姓名</view>
+						<input placeholder="请输入法人姓名" v-model="form.legalPerson" name="input" placeholder-class="phone-placeholder"></input>
+					</view>
+					<view class="cu-form-group">
+						<view class="title">法人证件号</view>
+						<input placeholder="请输入法人证件号" v-model="form.legalPersonCode" name="input" placeholder-class="phone-placeholder"></input>
+					</view>
+					<view class="customize">
+						<view class="title">法人证件照片</view>
+						<view style="padding: 16upx 0;border-bottom: 1px solid #EEEEEE;">
+							<view class="flex upload justify-between">
+								<view class="imgOcr-border">
+									<image :src="identityOneImg ? identityOneImg : '/static/login/code1.png'" mode=""
+										@click="businessChange('identityOne')"></image>
+								</view>
+								<view class="imgOcr-border">
+									<image :src="identityTwoImg ? identityTwoImg : '/static/login/code2.png'" mode=""
+										@click="businessChange('identityTwo')"></image>
+								</view>
+							</view>
+						</view>
+						<view class="business-prompt">
+							<view>请上传中国大陆公民.身份证照片,仅支持jpg、png格式</view>
+							<view>1、需提供与主体证照上一致的法人证件照片</view>
+							<view>2、图片需清晰、完整、无反光、无PS、无不相关水印、非拍屏</view>
+							<view>3、证件未过期</view>
+						</view>
+					</view>
+				</view>
+			</form>
+
+		</view>
+		<view v-if="tab == 3" :class="title == '申请入驻'?'tab-top':'tab-padding'" :style="title == '店铺信息' ? 'margin-top: 120upx' : ''">
+			<form>
+				<view class="borderRadiu">
+					<view class="flex cu-form-group margin-top1">
+						<view class="content">
+							<text class="text-bold text-500 head-title">提交门店信息</text>
+							<i class="text-bg-w "></i>
+						</view>
+					</view>
+					<view class="cu-form-group">
+						<view class="title"><span>*</span>门店名称</view>
+						<input placeholder="请输入门店名称" v-model="form.storeName" name="input" placeholder-class="phone-placeholder"></input>
+					</view>
+					<view class="cu-form-group">
+						<view class="title"><span>*</span>所在地区</view>
+						<view class="u-flex-1 u-flex u-row-between" @click="$refs.picker.show()">
+							<view style="font-size: 30rpx;">
+								<text v-if="form.locality"> {{ form.locality }}</text>
+								<text v-else class="phone-placeholder">请选择所在地区</text>
+							</view>
+							<u-icon name="arrow-right" style="margin-left: 17rpx;color: #999"></u-icon>
+						</view>
+					</view>
+					<view class="cu-form-group">
+						<view class="title"><span>*</span>门店地址</view>
+						<input placeholder="请输入门店地址详细地址" v-model="form.address" name="input" placeholder-class="phone-placeholder"></input>
+					</view>
+					<view class="cu-form-group">
+						<view class="title"><span>*</span>店铺面积</view>
+						<input placeholder="请输入店铺面积" style="width: 200rpx !important;" v-model="form.storeExtent"
+							name="input" placeholder-class="phone-placeholder"></input>㎡
+					</view>
+					<view class="cu-form-group address-box" :style="{ display: mapIsHidden }"
+						@click="selectAddress">
+						<view class="title"><span>*</span>地理位置</view>
+						<tdmap :allowSelection="false" :showCoordinates="false" :key="mapKey" style="height: 300rpx;"></tdmap>
+					</view>
+				</view>
+				<view class="borderRadiu">
+					<view class="flex cu-form-group margin-top1">
+						<view class="content ">
+							<text class="text-bold text-500 head-title">提交门店负责人信息</text>
+							<i class="text-bg-w "></i>
+						</view>
+					</view>
+					<view class="cu-form-group">
+						<view class="title"><span>*</span>姓名</view>
+						<input placeholder="门店负责人姓名" v-model="form.leaderName" name="input"
+							placeholder-class="phone-placeholder"></input>
+					</view>
+					<view class="cu-form-group">
+						<view class="title"><span>*</span>手机号</view>
+						<input placeholder="门店负责人手机号" v-model="form.storePhone" name="input"
+							placeholder-class="phone-placeholder"></input>
+					</view>
+					<view class="cu-form-group" @click="classShow = true">
+						<view class="title"><span>*</span>分类</view>
+						<view class="u-flex-1 u-flex u-row-between">
+							<view style="font-size: 30rpx;">
+								<text v-if="classItem.title"> {{ classItem.title }}</text>
+								<text v-else class="phone-placeholder">请选择分类</text>
+							</view>
+							<u-icon name="arrow-right" style="margin-left: 17rpx;color: #999"></u-icon>
+						</view>
+					</view>
+				</view>
+
+
+				<view class="borderRadiu" v-for='(item,index) in dynamicList' :key='index'>
+					<view class="flex cu-form-group margin-top1">
+						<view class="content ">
+							<text class="text-bold text-500 head-title">{{item.qualificationName}}</text>
+							<i class="text-bg-w "></i>
+						</view>
+					</view>
+					<view class="business-img flex align-center">
+						<Upload  width="360" height="218" :maxCount="1" :fileList.sync="item.specialArr" :previewFullImage="false" delIcon='trash' :showProgress='false'
+							:isImage='true' @complete="onUpload($event, item)" @loadIng='loadIng'>
+							 <image class='img' :src="item.special ? item.special : '/static/login/shiping.png'" mode=""></image>
+						</Upload>
+					</view>
+				</view>
+			</form>
+		</view>
+		<view v-if="tab == 1" class="padding flex flex-direction sub-bottom">
+			<button class="cu-btn bg-blue round " @click="tab = 2">下一步</button>
+		</view>
+		<view v-if="tab == 2 && title == '申请入驻'" class="padding flex sub-bottom">
+			<button class="cu-btn round line-blue  shadow" @click="tab = 1">上一步</button>
+			<button style="margin-left: 12upx;width:77%" class="cu-btn bg-blue round " @click="tab = 3">下一步</button>
+		</view>
+		<view v-if="tab == 2 && title == '店铺信息'" class="padding flex sub-bottom" style="justify-content: space-around;">
+			<!-- <button class="cu-btn  line-gray  shadow" style="width: 40%;"
+				@click="$Router.push({ name: 'settings' })">取消</button> -->
+			<button class="cu-btn round line-blue  shadow" style="width: 48%;" @click="tab = 1">上一页</button>
+			<button style="margin-left: 12upx;width:48%" class="cu-btn line-blue  round shadow" @click="tab = 3">下一页</button>
+			<!-- <button style="margin-left: 12upx;width:40%" class="cu-btn bg-blue  " @click="sumbit">提交审核</button> -->
+		</view>
+		<view v-if="tab == 3" class="padding flex sub-bottom">
+			<button class="cu-btn round line-blue  shadow" @click="tab = 2">{{ title == '申请入驻' ? '上一步' : '上一页' }}</button>
+			<button style="margin-left: 12upx;width:77%" class="cu-btn bg-blue round " @click="sumbit">提交审核</button>
+		</view>
+		<view class="cu-load load-modal" v-if="lodingshow">
+			<image src="/static/logo.png" mode="aspectFit"></image>
+			<view class="gray-text">加载中...</view>
+		</view>
+		<w-picker class="picker-style" :visible.sync="visible" ref="picker" mode="region" :value="form.locality"
+			@confirm="onConfirm($event, 'region')"></w-picker>
+		<selectType v-if="showSelectLocality" @transmitType="confirmLocality" @cutPopup="showSelectLocality = false">
+		</selectType>
+
+		<!-- 分类 -->
+		<Classification v-show="classShow" @suerPop="suerPop" @cancel='classShow=false' :treeData='treeData'>
+		</Classification>
+	</view>
+
+</template>
+<script>
+	import {
+		watch
+	} from 'vue'
+	import configService from '../../common/service/config.service'
+	import regionPicker from "../../components/w-picker/region-picker.vue"
+	import selectType from "../../components/selectType.vue"
+	// import aMap from "./map.vue"
+	import status from "../store/components/status.vue"
+	import Classification from "./components/classification.vue"
+	import {
+		ACCESS_TOKEN,
+		USER_INFO
+	} from "@/common/util/constants";
+	import * as $p from "@/uni_modules/uni-easyinput/components/uni-easyinput/common";
+	import rangTime from '../../components/dengrq-datetime-picker/dateSelector/index.vue'
+
+	import tdmap from "@/pages/store/tdtuMap.vue"
+	import Upload from '@/components/upload/index.vue';
+	export default {
+		components: {
+			regionPicker,
+			status,
+			rangTime,
+			selectType,
+			// aMap
+			tdmap,
+			Classification,
+			Upload
+		},
+		data() {
+			return {
+				imageList: [],
+				mapIsHidden: false,
+				latitude: 37.827066,
+				longitude: 112.34988,
+				// latitude: null, // 默认中心纬度(例如北京)
+				// longitude: null, // 默认中心经度
+				marker: [], // 初始为空数组
+				title: '申请入驻',
+				lodingshow: false,
+				form: {
+					name: null,
+					type: 1,
+					corporateName: null,
+					creditCode: null,
+					lifespanType: 1,
+					lifespanBegin: this.timestampToTime(),
+					lifespanEnd: '9999-12-31',
+					lifespanBegin: null,
+					lifespanEnd: null,
+					businessLicense: null,
+					legalPerson: null,
+					legalPersonCode: null,
+					storeName: null,
+					country: null,
+					locality: '',
+					address: null,
+					headPhoto: '',
+					passWord: uni.getStorageSync('password'),
+					phone: uni.getStorageSync('phone'),
+					ordinaryUserId: null,
+					storeExtent: null,
+					address: '',
+					longitude: '',
+					latitude: '',
+					typeLabel: null,
+					businessScope: null,
+					qualificationList:[],
+					leaderName:"",
+					storePhone:"",
+					classId: '',
+				},
+				formName: {
+					// name: '姓名',
+					type: '主体类型',
+					corporateName: '公司名称',
+					creditCode: '统一代码',
+					lifespanType: '有效期',
+					// headPhoto: '门头照片',
+					legalPerson: '法人姓名',
+					legalPersonCode: '法人证件号',
+					storeName: '门店名称',
+					locality: '所在地区',
+					address: '门店地址',
+					businessLicense: '营业执照',
+					businessScope: '经营范围',
+					leaderName: '负责人姓名',
+					storePhone: '负责人手机号',
+					storeExtent: '店铺面积',
+					// typeLabel: '主体类型'
+					classId: '分类',
+				
+				},
+				tab: 1,
+				supplierOption: [],
+				businessLicenseImg: '',
+				identityOneImg: '',
+				identityTwoImg: '',
+				visible: false,
+				index: -1,
+				// markers:[{
+				// 	latitude: 37.827066,
+				// 	longitude: 112.34988,
+				// 	iconPath: '../../static/avatar_girl.png'
+				// }]
+				markers: [],
+				headPhotoImg: [],
+				loginType: '',
+				showSelectLocality: false, //选择主体类型弹窗显隐
+				mode: 1,
+				typeLabel: '',
+				referenceCodeDisable: false,
+				mapKey: 1,
+
+				//新版本
+				classShow:false,
+				fileObj:{},
+				treeData:[],
+				classItem:{
+					title:"",
+					id:"",
+				},
+				dynamicList:[],
+			}
+		},
+		watch: {
+			visible(val) {
+				if (!val) {
+					this.mapIsHidden = 'block'
+				}
+			}
+		},
+		onShow() {
+			this.getCurrentLocation();
+			this.markers = uni.getStorageSync('address') ? [Object.assign(uni.getStorageSync('address'), {
+				iconPath: '../../static/boiaoji.png'
+			})] : []
+			let storageData = uni.getStorageSync('address');
+			// this.form.address = storageData.address
+			this.form.latitude = storageData.lat
+			this.form.longitude = storageData.lng
+		},
+		async onLoad(data) {
+			if (data.loginType) {
+			    console.log(data)
+				// data.loginType =2  需要根据merchantId查询商户临时数据
+				// data.loginType =3  不需要回显
+				this.loginType = data.loginType;
+				if (data.loginType === '3') {
+					this.form.ordinaryUserId = data.ordinaryUserId;
+					this.form.name = (data.name == null || data.name == 'null') ? "" : data.name,
+						this.form.passWord = data.passWord;
+					this.form.phone = data.phone;
+				}
+				//邀请入驻商家完善信息
+				else if (data.loginType == 2) {
+					this.merchantId = uni.getStorageSync(USER_INFO).merchantId;
+					let res = await this.$http.get("/merchant/localMerchantInfo/queryAppInfoById?id=" + this.merchantId)
+					console.log(res.data)
+					let obj = res.data.result
+					if (res.data.success) {
+						this.title = '店铺信息'
+						this.tab = 1
+						obj.lifespanType = obj.lifespanType ? obj.lifespanType : '1'
+						this.markers = this.form.longitude && this.form.latitude ? [{
+							longitude: this.form.longitude,
+							latitude: this.form.latitude,
+							iconPath: '../../static/boiaoji.png'
+						}] : []
+						this.businessLicenseImg = obj.businessLicense
+						this.identityOneImg = obj.identityOne
+						this.identityTwoImg = obj.identityTwo
+						this.headPhotoImg = obj.headPhoto ? obj.headPhoto.split(',').filter(id => id !== '') : []
+						obj.headPhoto = obj.headPhoto ? obj.headPhoto.split(',').filter(id => id !== '') : []
+						obj.locality = obj.locality ? obj.locality : ''
+						this.switchType(obj.type)
+						this.form = obj
+						uni.setStorageSync('address', {
+							lng: obj.longitude,
+							lat: obj.latitude,
+							address: obj.address
+						});
+						uni.setStorageSync('currentAddress', {
+							name: obj.address
+						});
+
+					} else {
+						this.$tip.toast(obj.data.message);
+					}
+					this.loginType = data.loginType
+				}
+			} else {
+				if (data.params) {
+					let obj = JSON.parse(decodeURIComponent(data.params));
+
+					this.title = '店铺信息'
+					this.tab = 1
+					obj.lifespanType = obj.lifespanType ? obj.lifespanType : '1'
+					this.markers = this.form.longitude && this.form.latitude ? [{
+						longitude: this.form.longitude,
+						latitude: this.form.latitude,
+						iconPath: '../../static/boiaoji.png'
+					}] : []
+					this.businessLicenseImg = obj.businessLicense
+					this.identityOneImg = obj.identityOne
+					this.identityTwoImg = obj.identityTwo
+					this.headPhotoImg = obj.headPhoto ? obj.headPhoto.split(',').filter(id => id !== '') : []
+					obj.headPhoto = obj.headPhoto ? obj.headPhoto.split(',').filter(id => id !== '') : []
+					obj.locality = obj.locality ? obj.locality : ''
+					this.switchType(obj.type)
+					this.form = obj
+				}
+			}
+			this.getTree()
+			//查询商户信息
+			
+			if(data.merchantId){
+				this.getInfoBus(data.merchantId)
+			}
+		},
+		methods: {
+			switchType(type) {
+				const selectLocality = [{
+						value: 1,
+						label: '个人独资'
+					},
+					{
+						value: 2,
+						label: '个体工商户'
+					},
+					{
+						value: 3,
+						label: '有限责任公司'
+					},
+					{
+						value: 4,
+						label: '股份责任公司'
+					},
+					{
+						value: 5,
+						label: '合伙企业'
+					}
+				];
+				const item = selectLocality.find(item => item.value == type);
+				if (item) {
+					this.typeLabel = item.label;
+				}
+			},
+			//选择位置
+			selectAddress() {
+				uni.navigateTo({
+					url: '/pages/store/selectTdMap?url=' + '/pages/store/editStore'
+				})
+			},
+			//选择主题类型
+			confirmLocality(data) {
+				this.form.type = data.value
+				this.typeLabel = data.label
+				this.showSelectLocality = false
+			},
+			//选择证件有效时间
+			onEndTimeChange(val) {
+				console.log(val)
+				this.form.lifespanBegin = val.startDate
+				this.form.lifespanEnd = val.endDate
+				this.$forceUpdate(); // 强制刷新视图
+			},
+			//选择时间显示
+			selectDate() {
+				// this.isSelectDate = true
+				this.$refs.rangTime.open()
+			},
+			getCurrentLocation() {
+				uni.getStorage({
+					key: 'currentAddress',
+					success: (res) => {
+						if (res.data && res.data.location) {
+							let temp = res.data.location.split(',');
+							this.latitude = temp[1];
+							this.longitude = temp[0];
+
+							this.marker = [{
+								id: 0,
+								latitude: temp[1],
+								longitude: temp[0],
+								title: res.data.name || '当前位置',
+								iconPath: '../../static/boiaoji.png',
+								width: 30,
+								height: 30,
+								callout: { // 添加标注说明
+									content: res.data.name || '当前位置',
+									color: '#000',
+									fontSize: 12,
+									borderRadius: 10,
+									bgColor: '#fff',
+									padding: 5,
+									display: 'ALWAYS'
+								}
+							}];
+							this.$forceUpdate();
+						}
+
+					},
+					fail: () => {
+						// 如果没有存储的位置,可以设置默认位置
+						this.setDefaultLocation();
+					}
+				});
+			},
+			setDefaultLocation() {
+				let that = this
+				uni.getLocation({
+					type: 'gcj02',
+					success: function(res) {
+						that.latitude = res.latitude;
+						that.longitude = res.longitude;
+						that.marker = [{
+							id: 0,
+							latitude: that.latitude,
+							longitude: that.longitude,
+							title: '默认位置',
+							iconPath: '../../static/boiaoji.png',
+							width: 30,
+							height: 30
+						}];
+
+					},
+					fail() {
+
+					}
+				});
+
+
+			},
+
+			handleMarkerTap() {
+				const queryString = uni.getStorageSync('address') ? encodeURIComponent(JSON.stringify(uni.getStorageSync(
+					'address'))) : ''
+				uni.navigateTo({
+					url: `/pages/login/map?position=${queryString}`
+					// url:'/pages/login/map'
+				})
+
+			},
+			getFile(e) {
+				let path = ''
+				uni.uploadFile({
+					url: configService.apiUrl + '/sys/common/upload',
+					filePath: e,
+					name: "file",
+					formData: {
+						'biz': 'temp',
+					},
+					success: (files) => {
+						let data = JSON.parse(files.data);
+						if (data.success) {
+							path = res.tempFilePaths
+						}
+					}
+				})
+				console.log(path, 88);
+
+				return path
+			},
+			uploadAll() {
+				if (this.imageList.length === 0) {
+					uni.showToast({
+						title: '请先选择图片',
+						icon: 'none'
+					});
+					return;
+				}
+
+				uni.showLoading({
+					title: '上传中...',
+					mask: true
+				});
+
+				const uploadPromises = this.imageList.map((path, index) => {
+					return new Promise((resolve, reject) => {
+						uni.uploadFile({
+							url: configService.apiUrl + '/sys/common/upload', // 替换为实际接口
+							filePath: path,
+							formData: {
+								'biz': 'temp',
+							},
+							name: 'file',
+							success: (files) => {
+								resolve(configService.apiUrl + '/' + JSON.parse(files.data).message)
+							},
+							fail: reject
+						});
+					});
+
+				});
+
+				Promise.all(uploadPromises)
+					.then(results => {
+						uni.hideLoading();
+						this.imageList = []; // 清空已上传列表
+						this.headPhotoImg = this.headPhotoImg.concat(results)
+						this.form.headPhoto = this.form.headPhoto.concat(results)
+
+					})
+					.catch(error => {
+						uni.hideLoading();
+					});
+			},
+
+			ChooseImage() {
+				uni.chooseImage({
+					count: 5 - Number(this.headPhotoImg.length),
+					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+					sourceType: ['album'], //从相册选择
+					success: (res) => {
+						if (res) {
+							this.imageList = [...this.imageList, ...res.tempFilePaths];
+							this.uploadAll()
+						}
+					}
+				});
+			},
+			ViewImage(e) {
+				uni.previewImage({
+					urls: this.headPhotoImg,
+					current: e.currentTarget.dataset.url
+				});
+			},
+			DelImg(e) {
+				uni.showModal({
+					title: '提示',
+					content: '确定要删除?',
+					cancelText: '取消',
+					confirmText: '确定',
+					success: res => {
+						if (res.confirm) {
+							this.headPhotoImg.splice(e.currentTarget.dataset.index, 1)
+							this.form.headPhoto.splice(e.currentTarget.dataset.index, 1)
+						}
+					}
+				})
+			},
+			onConfirm(e) {
+				this.mapIsHidden = false
+				this.form.locality = e.result
+				this.form.country = e.value[e.value.length - 1]
+			},
+			PickerChange(e) {
+				this.form.purveyorId = this.supplierOption[e.detail.value].id
+			},
+			typeChang(e, val) {
+				this.form[val] = e.detail.value
+			},
+
+			async businessChange(type) {
+				let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
+					count: 1,
+					sizeType: ['compressed']
+				});
+				let size = chooseImageRes.tempFiles[0].size / 1024 / 1024 < 5;
+				if (!size) {
+					this.$refs.uToast.show({
+						title: '上传图片大小不能超过 5MB!',
+						type: 'error',
+					})
+					return false
+				}
+
+				if (chooseImageRes) {
+					this.lodingshow = true;
+					// this.$tip.loading()
+					this[type + 'Img'] = chooseImageRes.tempFilePaths[0];
+					uni.uploadFile({
+						url: configService.apiUrl + '/sys/common/upload',
+						filePath: chooseImageRes.tempFilePaths[0],
+						name: "file",
+						formData: {
+							'biz': 'temp',
+						},
+						success: (files) => {
+							let data = JSON.parse(files.data);
+							if (data.success) {
+								this.form[type] = data.message
+
+								if (type == 'businessLicense' || type == 'identityOne') {
+									uni.uploadFile({
+										url: configService.apiUrl +
+											`${type == 'businessLicense' ? '/order/identify/businessLicense' : '/order/identify/idCard'}`,
+										filePath: chooseImageRes.tempFilePaths[0],
+										name: "image1",
+										success: (uploadFileRes) => {
+											let data1 = JSON.parse(uploadFileRes.data).result;
+											let obj = {}
+											if (type == 'businessLicense') {
+												obj = {
+													corporateName: data1.company ? data1.company : '', //公司名称
+													creditCode: data1.socialCreditCode ? data1.socialCreditCode : '', //统一社会信用代码
+													businessScope: data1.businessScope ? data1.businessScope : '', //经营范围
+													lifespanBegin: data1.registerDate ? data1.registerDate.substr(0,
+															4) + '-' + data1.registerDate.substr(5, 2) + '-' + data1.registerDate
+														.substr(8, 2) : '',
+													lifespanEnd: data1.effectiveDate && data1.effectiveDate.includes('年') ? data1
+														.effectiveDate.substr(0,
+															4) + '-' + data1.effectiveDate.substr(5, 2) + '-' + data1.effectiveDate
+														.substr(8, 2) : '9999-12-31',
+													lifespanType: data1.registerDate || data1.effectiveDate ? '2' : '1',
+												}
+
+											} else {
+												obj = {
+													legalPerson: data1.customerInfo.name ? data1.customerInfo.name : '', //法人姓名
+													legalPersonCode: data1.customerInfo.identifyNumber ? data1.customerInfo
+														.identifyNumber : '', //法人证件号
+												}
+											}
+											this.$nextTick(() => {
+												this.form = {
+													...this.form,
+													...obj,
+												}
+												// this.$set(this.form, obj);
+												// this.form=Object.assign(this.form,obj)
+												console.log(obj, this.form, 88888);
+
+											})
+											this.lodingshow = false;
+
+										}
+									});
+								} else {
+									this.lodingshow = false;
+
+								}
+							}
+						}
+					});
+				} else {
+					this.lodingshow = false;
+				}
+			},
+			timestampToTime(timestamp) {
+				// let date = new Date(timestamp * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
+				let date = new Date(new Date()); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
+				let Y = date.getFullYear() + '-';
+				let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+				let D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ';
+				return Y + M + D;
+			},
+			sumbit() {
+				if (this.title == '申请入驻') {
+					if (this.loginType) {
+						if (this.loginType === '3') {
+							//普通用户没有商户新增
+							for (let j in this.form) {
+								if (!this.form[j]) {
+									// if (this.form['lifespanType'] == 2 && (this.form['lifespanBegin'] == null || this.form[
+									// 			'lifespanEnd'] ==
+									// 		null)) {
+									// 	// this.$tip.alert('请选择日期!')
+									// 	uni.showToast({
+									// 		icon: 'none',
+									// 		title: '请选择日期!'
+									// 	})
+									// 	return
+									// }
+									// if (this.form['businessLicense'] == null) {
+									// 	// this.$tip.alert('请上传营业执照!')
+									// 	uni.showToast({
+									// 		icon: 'none',
+									// 		title: '请上传营业执照!'
+									// 	})
+									// 	return
+									// }
+									// if (this.formName[j]) {
+									// 	// this.$tip.alert(`请填写${this.formName[j]}!`)
+									// 	uni.showToast({
+									// 		icon: 'none',
+									// 		title: `请填写${this.formName[j]}!`
+									// 	})
+									// 	return
+									// }
+								}
+							}
+							if (this.form.classId) {
+								const hasError = this.dynamicList.some(e => {
+									for (var i in this.fileObj) {
+										if (i == e.key && !this.fileObj[i]) {
+											uni.showToast({
+												icon: 'none',
+												title: `请上传${e.qualificationName}`
+											});
+											return true;
+										}
+									}
+									return false;
+								});
+
+								if (hasError) return;
+							}
+							const isHttpOrHttpsone = /^https?:\/\//.test(this.form.identityOne)
+							const isHttpOrHttpstwo = /^https?:\/\//.test(this.form.identityOne)
+							const isbusinessLicense = /^https?:\/\//.test(this.form.businessLicense)
+							if (!isHttpOrHttpsone) {
+								this.form.identityOne = configService.apiUrl + '/' + this.form.identityOne
+							}
+							if (!isHttpOrHttpstwo) {
+								this.form.identityTwo = configService.apiUrl + '/' + this.form.identityTwo
+							}
+							if (!isbusinessLicense) {
+								this.form.businessLicense = configService.apiUrl + '/' + this.form.businessLicense
+							}
+							this.form.address = uni.getStorageSync('address').address
+							this.form.latitude = uni.getStorageSync('address').lat
+							this.form.longitude = uni.getStorageSync('address').lng
+
+					
+							const imgArr = []
+							this.dynamicList.forEach((e => {
+								for (var key in this.fileObj) {
+									if (key == e.key) {
+										imgArr.push({
+											categoryId: this.classItem.id,
+											categoryName: this.classItem.title,
+											special: this.fileObj[key],
+											qualificationName: e.qualificationName
+										})
+									}
+								}
+							}))
+							this.form.qualificationList=imgArr
+							let data = {
+								...this.form,
+								source: 2,
+								// headPhoto: Array.isArray(this.form.headPhoto) ? this.form.headPhoto.join(',') : this.form.headPhoto,
+								longitude: this.markers.length > 0 ? this.markers[0].longitude : '',
+								latitude: this.markers.length > 0 ? this.markers[0].latitude : ''
+							}
+							this.$http.post('/merchant/register/add', data).then(res => {
+								if (res.data.code == 200) {
+									//放入session
+									const result = res.data.result
+									const userInfo = result.userInfo
+									uni.setStorageSync(ACCESS_TOKEN, result.token);
+									uni.setStorageSync(USER_INFO, userInfo);
+									this.$store.commit('SET_TOKEN', result.token)
+									this.$store.commit('SET_NAME', {
+										username: userInfo.username,
+										realname: userInfo.realname
+									})
+									this.$store.commit('SET_AVATAR', userInfo.avatar)
+									// #ifdef APP-PLUS
+									uni.switchTab({
+										url: '/pages/index/index'
+									})
+									// #endif
+									// #ifndef APP-PLUS
+									// this.$tip.success('登录成功!')
+									uni.showToast({
+										icon: 'none',
+										title: '登录成功'
+									})
+									this.$Router.replaceAll({
+										name: 'index'
+									})
+									// #endif
+								} else {
+									// this.$tip.error(res.data.message);
+									uni.showToast({
+										icon: 'none',
+										title: res.data.message
+									})
+								}
+							})
+						} else if (this.loginType == 2) {
+							const isHttpOrHttpsone = /^https?:\/\//.test(this.form.identityOne)
+							const isHttpOrHttpstwo = /^https?:\/\//.test(this.form.identityOne)
+							const isbusinessLicense = /^https?:\/\//.test(this.form.businessLicense)
+							if (!isHttpOrHttpsone) {
+								this.form.identityOne = configService.apiUrl + '/' + this.form.identityOne
+							}
+							if (!isHttpOrHttpstwo) {
+								this.form.identityTwo = configService.apiUrl + '/' + this.form.identityTwo
+							}
+							if (!isbusinessLicense) {
+								this.form.businessLicense = configService.apiUrl + '/' + this.form.businessLicense
+							}
+							
+							this.form.address = uni.getStorageSync('address').address
+							this.form.latitude = uni.getStorageSync('address').lat
+							this.form.longitude = uni.getStorageSync('address').lng
+							let data = {
+								...this.form,
+								source: 2,
+								id: uni.getStorageSync('login_user_info').merchantId
+								// headPhoto: Array.isArray(this.form.headPhoto) ? this.form.headPhoto.join(',') : this.form.headPhoto,
+
+								// longitude: this.markers.length > 0 ? this.markers[0].longitude : '',
+								// latitude: this.markers.length > 0 ? this.markers[0].latitude : ''
+							}
+
+							// this.$http.post('/merchant/localMerchantInfo/edit', data).then(res => {
+							this.$http.post('/merchant/register/add', data).then(res => {
+								if (res.data.success) {
+									// this.$tip.success(res.data.result || '成功')
+									uni.showToast({
+										icon: 'none',
+										title: res.data.result || '成功'
+									})
+									uni.navigateBack({
+										delta: 1 // 返回的页面数,默认为1
+									})
+								} else {
+									// this.$tip.error(res.data.message);
+									uni.showToast({
+										icon: 'none',
+										title: res.data.message
+									})
+								}
+							})
+						}
+					}
+				} else {
+					// this.form.identityOne = configService.apiUrl+'/'+this.form.identityOne
+					// this.form.identityTwo = configService.apiUrl+'/'+this.form.identityTwo
+					const isHttpOrHttpsone = /^https?:\/\//.test(this.form.identityOne)
+					const isHttpOrHttpstwo = /^https?:\/\//.test(this.form.identityOne)
+					const isbusinessLicense = /^https?:\/\//.test(this.form.businessLicense)
+					if (!isHttpOrHttpsone) {
+						this.form.identityOne = configService.apiUrl + '/' + this.form.identityOne
+					}
+					if (!isHttpOrHttpstwo) {
+						this.form.identityTwo = configService.apiUrl + '/' + this.form.identityTwo
+					}
+					if (!isbusinessLicense) {
+						this.form.businessLicense = configService.apiUrl + '/' + this.form.businessLicense
+					}
+					this.form.address = uni.getStorageSync('address').address
+					this.form.latitude = uni.getStorageSync('address').lat
+					this.form.longitude = uni.getStorageSync('address').lng
+					let data = {
+						...this.form,
+						source: 2,
+						headPhoto: Array.isArray(this.form.headPhoto) ? this.form.headPhoto.join(',') : this.form.headPhoto,
+
+						// longitude: this.markers.length > 0 ? this.markers[0].longitude : '',
+						// latitude: this.markers.length > 0 ? this.markers[0].latitude : ''
+					}
+
+					// this.$http.post('/merchant/localMerchantInfo/edit', data).then(res => {
+					this.$http.post('/merchant/localMerchantInfo/editMerchantInfo', data).then(res => {
+						console.log(res)
+						if (res.data.success) {
+							// this.$tip.success(res.data.result || '成功')
+							uni.showToast({
+								icon: 'none',
+								title: res.data.result || '成功'
+							})
+							uni.navigateBack({
+								delta: 1 // 返回的页面数,默认为1
+							})
+						} else {
+							// this.$tip.error(res.data.message);
+							uni.showToast({
+								icon: 'none',
+								title: res.data.message
+							})
+						}
+					})
+				}
+
+			},
+				// 图片处理
+			onUpload(event, item) {
+				// this.fileList[type] = event;
+				this.fileObj[item.key] = event.map(f => `${configService.apiUrl}/${f.message}`).join();
+				console.log(this.dynamicList)
+        
+				//处理删除后的图片默认图片不清空
+				this.dynamicList.forEach((e=>{
+					if(e.key==item.key){
+						e.special=''
+					}
+				}))
+				console.log(this.dynamicList)
+			},
+			getTree() {
+				this.$http.get('/sys/category/loadTreeRoot?pcode=' + 'c09' + '&async=' + false).then(res => {
+					this.treeData = res.data.result
+				})
+			},
+			//分类查询
+			suerPop(item){
+				this.classItem=item;
+				this.classShow=false
+				this.$http.get('/merchant/register/queryQualificationByCategoryId?categoryId=' + item.id).then(res => {
+					const data=res.data.result
+           data.forEach((element,index) => {
+						   element.specialArr=[]
+							 element.key='key'+index
+							 this.fileObj[element.key]=''
+							 this.$set(this.fileObj, element.key, '');
+					 });
+				  this.dynamicList =data
+				})
+        this.form.classId=item.id
+			},
+			getInfoBus(merchantId){
+					this.$http.get('/merchant/register/queryInfoById?id=' +merchantId).then(res => {
+					let data=res.data.result
+					this.form = data
+					this.businessLicenseImg = data.businessLicense
+					this.identityOneImg = data.identityOne
+					this.identityTwoImg = data.identityTwo
+					this.switchType(data.type)
+					if(data.qualificationList){
+						let obj=data.qualificationList[0]
+						this.classItem.title=obj.categoryName
+						this.classItem.id=obj.categoryId
+						  data.qualificationList.forEach((element,index) => {
+								element.specialArr=[]
+								element.key='key'+index
+								this.$set(this.fileObj, element.key, '');
+								this.fileObj[element.key]=element.special
+					 		});
+							this.dynamicList =data.qualificationList
+					}
+				})
+			},
+			loadIng(val){
+				this.lodingshow=val;
+			}
+		}
+	}
+</script>
+<style scoped lang="scss">
+	page {
+		background: #F8F8FA;
+		padding-bottom:120rpx;
+	}
+
+	.cu-form-group .title {
+		width: 132rpx;
+		padding: 0;
+
+		span {
+			color: red;
+		}
+	}
+
+	.cu-bg {
+		background: linear-gradient(180deg, #D6E9FF 0%, #FFFFFF 100%);
+	}
+
+	.tab-top {
+		margin-top: 78upx;
+		padding: 26upx;
+	}
+  .tab-padding{
+		padding: 26upx;
+	}
+	.borderRadiu {
+		height: auto;
+		border-radius: 8px;
+		padding-bottom: 10px;
+		background-color: #ffffff;
+		// border-bottom: 1px solid #eee;
+		.content{
+			position: relative;
+		}
+		.text-bg-w{
+			position:absolute;
+			bottom:4rpx;
+
+		}
+		.address-box{
+			flex-direction: column;
+			align-items: flex-start;
+		}
+		.business-img {
+			height: 218upx;
+			width: 360upx;
+			margin: 20upx auto 0 auto;
+
+			image {
+				width: 100%;
+				height: 100%;
+			}
+			.img{
+				height: 218upx;
+				width: 360upx;
+			}
+		}
+	}
+	.borderRadiu-box2{
+		.cu-form-group .title {
+			width:154rpx;
+		}
+	}
+	.head-title{
+		color:#232832;
+	}
+
+	.sub-bottom {
+		position: fixed;
+		width: 100%;
+		bottom: 0;
+		background: #FFFFFF;
+		border-top: 1px solid #EEEEEE;
+	}
+
+	.progress-status {
+		position: fixed;
+		width: 100%;
+		z-index: 9999;
+		padding: 26upx 42upx;
+		background: #FFFFFF;
+
+		.status {
+			font-size: 38upx;
+			color: #F6863E;
+			font-weight: 500;
+			margin-bottom: 10upx;
+
+			text {
+				margin-left: 5upx
+			}
+
+			image {
+				vertical-align: text-top;
+				width: 42upx;
+				height: 42upx;
+			}
+		}
+	}
+
+	.progress {
+		position: fixed;
+		height: 96upx;
+		width: 100%;
+		z-index: 9999;
+		background: #FFFFFF;
+		padding: 22upx 30upx;
+		border-top:1rpx solid #EEEEEE;
+
+		.progress-title {
+			margin-top: 16upx;
+			font-size: 24upx;
+			color: #999999;
+
+			.color {
+				color: #333333;
+
+			}
+		}
+
+		.progress-style {
+			width: 100%;
+			height: 10upx;
+			border-radius: 5px 5px 5px 5px;
+		}
+
+		.progress-bag {
+			position: relative;
+			background: rgba(68, 154, 255, 0.05);
+
+			.progress-icon {
+				position: absolute;
+				margin-top: -1px;
+				width: 12upx;
+				height: 12upx;
+				background: #449AFF;
+				border-radius: 50%;
+				box-shadow: 0px 0px 0px 7upx rgba(68, 154, 255, 0.3);
+			}
+
+			.progress-icon1 {
+				position: absolute;
+				margin-top: -1px;
+				width: 12upx;
+				height: 12upx;
+				background: #449AFF;
+				border-radius: 50%;
+				left: 99%;
+				box-shadow: 0px 0px 0px 7upx rgba(68, 154, 255, 0.3);
+			}
+
+			.progress-bag1 {
+				width: 50%;
+				position: absolute;
+				background: rgba(68, 154, 255, 0.8);
+
+			}
+
+			.progress-bag2 {
+				position: absolute;
+				background: rgba(68, 154, 255, 0.8);
+			}
+		}
+
+	}
+
+	.customize {
+		background-color: #fff;
+		// border-top: 0.5px solid #eee;
+		margin: 16upx 18upx;
+
+		.title {
+			font-size: 30upx;
+			// padding: 10px;
+		}
+
+		
+
+		.business-prompt {
+			padding-top: 16upx;
+			font-size: 20upx;
+			color: #999999;
+		}
+	}
+
+	.booder-top {
+		border-bottom: 1px solid rgb(238, 238, 238);
+		padding-top: 7px;
+	}
+
+
+	.img-border {
+		padding: 15px 20px;
+
+	}
+
+	.upload {
+		width: 100%;
+		height: 188upx;
+		// padding: 15px 20px;
+		background-color: white;
+
+		.imgOcr-border {
+			position: relative;
+			width: 48%;
+			height: 100%;
+			padding: 12upx;
+			// background-color: #fff;
+			background: url('/static/login/code3.png');
+
+			background-size: cover;
+			// box-shadow: 0px 4px 10px 0px #DAE3F4;
+
+			image {
+				width: 100%;
+				// border-radius: 4px;
+				height: 100%;
+			}
+		}
+	}
+
+	.picker-style {
+		.w-picker-cnt .visible {
+			position: absolute;
+			z-index: 100000;
+		}
+	}
+
+	::v-deep .cu-form-group uni-textarea {
+		margin: 0;
+	}
+
+	.cu-form-group{
+		.title{
+			color:#232832;
+			font-size:28rpx;
+		}
+		.phone-placeholder{
+			font-size:28rpx;
+			color:#999;
+		}
+	}
+		::v-deep .u-delete-icon{
+		background:rgba(0, 0, 0, 0.6) !important;
+	}
+</style>

+ 361 - 284
pages/login/settled.vue

@@ -3,7 +3,7 @@
 		<cu-custom :bgColor="title == '申请入驻' ? 'bg-gradual-blue1' : 'bg-fff'" :isBack="true">
 			<block slot="content">{{ title }}</block>
 		</cu-custom>
-		<view class="progress" v-if="title == '申请入驻'">
+		<view class="progress" v-if="!merchantId">
 			<view class="progress-style progress-bag">
 				<view v-if="tab == 1" class="progress-icon"></view>
 				<view v-if="tab == 2" class="progress-style progress-bag1">
@@ -19,29 +19,29 @@
 				<view :class="tab == '3' ? 'color' : ''">门店信息</view>
 			</view>
 		</view>
-		<status v-else :status="form.status" :reason="form.reason" :updateTime="form.updateTime" :remark="form.remark"></status>
-		<view v-if="tab == 1" :class="title == '申请入驻'?'tab-top':''">
+		<status v-else  :obj='form.localMerchantInfoExamine|| {}'></status>
+		<view v-if="tab == 1" :class="!merchantId?'tab-top':'tab-padding'">
 			<form>
 
-				<view class="borderRadiu" v-if="title == '申请入驻' && loginType == 3">
+				<!-- <view class="borderRadiu" v-if="title == '申请入驻' && loginType == 3">
 					<view class="flex cu-form-group margin-top1 ">
 						<view class="content ">
 							<text class="text-bold">推荐人邀请码</text>
-							<i class="text-bg "></i>
+							<i class="text-bg-w "></i>
 						</view>
 					</view>
 					<view class=" cu-form-group ">
-						<view class="title"> <span>*</span> 邀请码</view>
+						<view class="title">邀请码</view>
 						<input placeholder="输入邀请码(选填)" v-model="form.referenceCode" name="input"
 							:disabled="referenceCodeDisable"></input>
 					</view>
-				</view>
+				</view> -->
 
-				<view class="borderRadiu" style="height: 67vh;overflow-y: auto;">
-					<view class="flex cu-form-group margin-top1">
+				<view class="borderRadiu margin-top1" style="height: 67vh;overflow-y: auto;">
+					<view class="flex cu-form-group ">
 						<view class="content ">
-							<text class="text-bold">提交经营主体资料</text>
-							<i class="text-bg"></i>
+							<text class="text-bold text-500 head-title">提交经营主体资料</text>
+							<i class="text-bg-w"></i>
 						</view>
 					</view>
 					<view class="customize">
@@ -58,11 +58,11 @@
 						</view>
 					</view>
 					<view class=" cu-form-group">
-						<view class="title">主体类型</view>
+						<view class="title"> 主体类型</view>
 						<view style="display: flex;width: 74%;justify-content: space-between;" @click="showSelectLocality = true">
 							<view style="font-size: 30rpx;">
 								<text v-if="typeLabel"> {{ typeLabel }}</text>
-								<text v-else style="color: grey">请选择主体类型</text>
+								<text v-else class='phone-placeholder'>请选择主体类型</text>
 							</view>
 							<u-icon name="arrow-right" style="margin-left: 17rpx;color: #C7C6CA"></u-icon>
 						</view>
@@ -70,11 +70,11 @@
 					</view>
 					<view class="cu-form-group">
 						<view class="title">公司名称</view>
-						<input placeholder="请输入公司名称" v-model="form.corporateName" name="input"></input>
+						<input placeholder="请输入公司名称" v-model="form.corporateName" name="input" placeholder-class="phone-placeholder"></input>
 					</view>
 					<view class="cu-form-group">
 						<view class="title">统一代码</view>
-						<input placeholder="请输入统一社会信用代码" v-model="form.creditCode" name="input"></input>
+						<input placeholder="请输入统一社会信用代码" v-model="form.creditCode" name="input" placeholder-class="phone-placeholder"></input>
 					</view>
 					<view class="cu-form-group">
 						<view class="title">证件期限 </view>
@@ -107,7 +107,7 @@
 					<view class="cu-form-group" style="display: block;">
 						<view class="title">经营范围</view>
 						<view class="scope" style="width: 100%;height: auto;">
-							<u-input v-model="form.businessScope" type="textarea"
+							<u-input v-model="form.businessScope" type="textarea" placeholder-class="phone-placeholder"
 								style="width: 100%;min-height: 165rpx;max-height: 300rpx; background-color:#F7F8FC;padding: 0 16rpx;margin: 0;overflow-y: auto;" />
 						</view>
 					</view>
@@ -115,22 +115,22 @@
 
 			</form>
 		</view>
-		<view v-if="tab == 2" :class="title=='申请入驻'?'tab-top':''" :style="title == '店铺信息' ? 'margin-top: 120upx' : ''">
+		<view v-if="tab == 2" :class="!merchantId?'tab-top':'tab-padding'">
 			<form>
-				<view class="borderRadiu">
+				<view class="borderRadiu borderRadiu-box2">
 					<view class="flex cu-form-group margin-top1 ">
 						<view class="content ">
-							<text class="text-bold">法人信息</text>
-							<i class="text-bg "></i>
+							<text class="text-bold text-500 head-title">法人信息</text>
+							<i class="text-bg-w "></i>
 						</view>
 					</view>
 					<view class="cu-form-group  ">
 						<view class="title">法人姓名</view>
-						<input placeholder="请输入法人姓名" v-model="form.legalPerson" name="input"></input>
+						<input placeholder="请输入法人姓名" v-model="form.legalPerson" name="input" placeholder-class="phone-placeholder"></input>
 					</view>
 					<view class="cu-form-group">
 						<view class="title">法人证件号</view>
-						<input placeholder="请输入法人证件号" v-model="form.legalPersonCode" name="input"></input>
+						<input placeholder="请输入法人证件号" v-model="form.legalPersonCode" name="input" placeholder-class="phone-placeholder"></input>
 					</view>
 					<view class="customize">
 						<view class="title">法人证件照片</view>
@@ -157,60 +157,88 @@
 			</form>
 
 		</view>
-		<view v-if="tab == 3" :class="title == '申请入驻'?'tab-top':''" :style="title == '店铺信息' ? 'margin-top: 120upx' : ''">
+		<view v-if="tab == 3" :class="!merchantId?'tab-top':'tab-padding'">
 			<form>
 				<view class="borderRadiu">
 					<view class="flex cu-form-group margin-top1">
-						<view class="content ">
-							<text class="text-bold">提交门店信息</text>
-							<i class="text-bg "></i>
+						<view class="content">
+							<text class="text-bold text-500 head-title">提交门店信息</text>
+							<i class="text-bg-w "></i>
 						</view>
 					</view>
 					<view class="cu-form-group">
-						<view class="title">门店名称</view>
-						<input placeholder="请输入门店名称" v-model="form.storeName" name="input"></input>
+						<view class="title"><span>*</span>门店名称</view>
+						<input placeholder="请输入门店名称" v-model="form.storeName" name="input" placeholder-class="phone-placeholder"></input>
 					</view>
 					<view class="cu-form-group">
-						<view class="title">所在地区</view>
-						<view style="display: flex;width: 74%;justify-content: space-between;" @click="$refs.picker.show()">
+						<view class="title"><span>*</span>所在地区</view>
+						<view class="u-flex-1 u-flex u-row-between" @click="$refs.picker.show()">
 							<view style="font-size: 30rpx;">
 								<text v-if="form.locality"> {{ form.locality }}</text>
-								<text v-else style="color: grey">请选择所在地区</text>
+								<text v-else class="phone-placeholder">请选择所在地区</text>
 							</view>
-							<u-icon name="arrow-right" style="margin-left: 17rpx;color: #C7C6CA"></u-icon>
+							<u-icon name="arrow-right" style="margin-left: 17rpx;color: #999"></u-icon>
 						</view>
 					</view>
 					<view class="cu-form-group">
-						<view class="title">门店地址</view>
-						<input placeholder="请输入门店地址详细地址" v-model="form.address" name="input"></input>
+						<view class="title"><span>*</span>门店地址</view>
+						<input placeholder="请输入门店地址详细地址" v-model="form.address" name="input" placeholder-class="phone-placeholder"></input>
 					</view>
 					<view class="cu-form-group">
-						<view class="title">店铺面积</view>
+						<view class="title"><span>*</span>店铺面积</view>
 						<input placeholder="请输入店铺面积" style="width: 200rpx !important;" v-model="form.storeExtent"
-							name="input"></input>㎡
+							name="input" placeholder-class="phone-placeholder"></input>㎡
 					</view>
-					<view class=" booder-top" style="padding-bottom: 16upx" :style="{ display: mapIsHidden }"
+					<view class="cu-form-group address-box" :style="{ display: mapIsHidden }"
 						@click="selectAddress">
+						<view class="title"><span>*</span>地理位置</view>
 						<tdmap :allowSelection="false" :showCoordinates="false" :key="mapKey" style="height: 300rpx;"></tdmap>
 					</view>
 				</view>
 				<view class="borderRadiu">
 					<view class="flex cu-form-group margin-top1">
 						<view class="content ">
-							<text class="text-bold">提交门店负责人信息</text>
-							<i class="text-bg "></i>
+							<text class="text-bold text-500 head-title">提交门店负责人信息</text>
+							<i class="text-bg-w "></i>
 						</view>
 					</view>
 					<view class="cu-form-group">
-						<view class="title">姓名</view>
-						<input placeholder="门店负责人姓名" v-model="form.leaderName" name="input"></input>
+						<view class="title"><span>*</span>姓名</view>
+						<input placeholder="门店负责人姓名" v-model="form.leaderName" name="input"
+							placeholder-class="phone-placeholder"/>
 					</view>
 					<view class="cu-form-group">
-						<view class="title">手机号</view>
-						<input placeholder="门店负责人手机号" v-model="form.leaderPhone" name="input"></input>
+						<view class="title"><span>*</span>手机号</view>
+						<input placeholder="门店负责人手机号" v-model="form.storePhone" name="input"
+							placeholder-class="phone-placeholder"/>
+					</view>
+					<view class="cu-form-group" @click="openClass">
+						<view class="title"><span>*</span>分类</view>
+						<view class="u-flex-1 u-flex u-row-between">
+							<view style="font-size: 30rpx;">
+								<text v-if="classItem.title"> {{ classItem.title }}</text>
+								<text v-else class="phone-placeholder">请选择分类</text>
+							</view>
+							<u-icon name="arrow-right" style="margin-left: 17rpx;color: #999"></u-icon>
+						</view>
 					</view>
 				</view>
 
+
+				<view class="borderRadiu" v-for='(item,index) in dynamicList' :key='index'>
+					<view class="flex cu-form-group margin-top1">
+						<view class="content ">
+							<text class="text-bold text-500 head-title">{{item.qualificationName}}</text>
+							<i class="text-bg-w "></i>
+						</view>
+					</view>
+					<view class="business-img flex align-center">
+						<Upload  width="360" height="218" :maxCount="1" :fileList.sync="item.specialArr" :previewFullImage="false" delIcon='trash' :showProgress='false'
+							:isImage='true' @complete="onUpload($event, item)" @loadIng='loadIng'>
+							 <image class='img' :src="item.special ? item.special : '/static/login/shiping.png'" mode=""></image>
+						</Upload>
+					</view>
+				</view>
 			</form>
 		</view>
 		<view v-if="tab == 1" class="padding flex flex-direction sub-bottom">
@@ -227,11 +255,11 @@
 			<button style="margin-left: 12upx;width:48%" class="cu-btn line-blue  round shadow" @click="tab = 3">下一页</button>
 			<!-- <button style="margin-left: 12upx;width:40%" class="cu-btn bg-blue  " @click="sumbit">提交审核</button> -->
 		</view>
-		<view v-if="tab == 3" class="padding flex sub-bottom">
-			<button class="cu-btn round line-blue  shadow" @click="tab = 2">{{ title == '申请入驻' ? '上一步' : '上一页' }}</button>
-			<button style="margin-left: 12upx;width:77%" class="cu-btn bg-blue round " @click="sumbit">提交审核</button>
+		<view v-if="tab == 3" class="u-flex btn-box sub-bottom">
+			<button class="cu-btn round line-blue  shadow mar-right" @click="tab = 2">{{ title == '申请入驻' ? '上一步' : '上一页' }}</button>
+			<button  class="cu-btn bg-blue round u-flex-1" v-if='(form.localMerchantInfoExamine && form.localMerchantInfoExamine.status==2) || !merchantId' @click="sumbit">提交审核</button>
 		</view>
-		<view class="cu-load load-modal" v-if="lodingshow">
+		<view class="cu-load load-modal" v-if="loadingShow">
 			<image src="/static/logo.png" mode="aspectFit"></image>
 			<view class="gray-text">加载中...</view>
 		</view>
@@ -239,8 +267,14 @@
 			@confirm="onConfirm($event, 'region')"></w-picker>
 		<selectType v-if="showSelectLocality" @transmitType="confirmLocality" @cutPopup="showSelectLocality = false">
 		</selectType>
+
+		<!-- 分类 -->
+		<Classification v-show="classShow" @suerPop="suerPop" @cancel='classShow=false' :treeData='treeData' ref='classification'>
+		</Classification>
 	</view>
 
+
+
 </template>
 <script>
 	import {
@@ -251,6 +285,7 @@
 	import selectType from "../../components/selectType.vue"
 	// import aMap from "./map.vue"
 	import status from "../store/components/status.vue"
+	import Classification from "./components/classification.vue"
 	import {
 		ACCESS_TOKEN,
 		USER_INFO
@@ -259,6 +294,7 @@
 	import rangTime from '../../components/dengrq-datetime-picker/dateSelector/index.vue'
 
 	import tdmap from "@/pages/store/tdtuMap.vue"
+	import Upload from '@/components/upload/index.vue';
 	export default {
 		components: {
 			regionPicker,
@@ -266,7 +302,9 @@
 			rangTime,
 			selectType,
 			// aMap
-			tdmap
+			tdmap,
+			Classification,
+			Upload
 		},
 		data() {
 			return {
@@ -278,7 +316,7 @@
 				// longitude: null, // 默认中心经度
 				marker: [], // 初始为空数组
 				title: '申请入驻',
-				lodingshow: false,
+				loadingShow: false,
 				form: {
 					name: null,
 					type: 1,
@@ -305,7 +343,11 @@
 					longitude: '',
 					latitude: '',
 					typeLabel: null,
-					businessScope: null
+					businessScope: null,
+					qualificationList:[],
+					leaderName:"",
+					storePhone:"",
+					classId: '',
 				},
 				formName: {
 					// name: '姓名',
@@ -322,9 +364,11 @@
 					businessLicense: '营业执照',
 					businessScope: '经营范围',
 					leaderName: '负责人姓名',
-					leaderPhone: '负责人手机号',
+					storePhone: '负责人手机号',
 					storeExtent: '店铺面积',
 					// typeLabel: '主体类型'
+					classId: '分类',
+				
 				},
 				tab: 1,
 				supplierOption: [],
@@ -333,11 +377,6 @@
 				identityTwoImg: '',
 				visible: false,
 				index: -1,
-				// markers:[{
-				// 	latitude: 37.827066,
-				// 	longitude: 112.34988,
-				// 	iconPath: '../../static/avatar_girl.png'
-				// }]
 				markers: [],
 				headPhotoImg: [],
 				loginType: '',
@@ -346,6 +385,19 @@
 				typeLabel: '',
 				referenceCodeDisable: false,
 				mapKey: 1,
+
+				//新版本
+				classShow:false,
+				fileObj:{},
+				treeData:[],
+				classItem:{
+					title:"",
+					id:"",
+				},
+				dynamicList:[],
+				paramsObj:{},
+				optionData:null,
+				merchantId:""
 			}
 		},
 		watch: {
@@ -354,9 +406,6 @@
 					this.mapIsHidden = 'block'
 				}
 			}
-		},
-		computed() {
-
 		},
 		onShow() {
 			this.getCurrentLocation();
@@ -368,75 +417,15 @@
 			this.form.latitude = storageData.lat
 			this.form.longitude = storageData.lng
 		},
-		async onLoad(data) {
-			if (data.loginType) {
-				// data.loginType =2  需要根据merchantId查询商户临时数据
-				// data.loginType =3  不需要回显
-				this.loginType = data.loginType;
-				if (data.loginType === '3') {
-					this.form.ordinaryUserId = data.ordinaryUserId;
-					this.form.name = (data.name == null || data.name == 'null') ? "" : data.name,
-						this.form.passWord = data.passWord;
-					this.form.phone = data.phone;
-				}
-				//邀请入驻商家完善信息
-				else if (data.loginType == 2) {
-					this.merchantId = uni.getStorageSync(USER_INFO).merchantId;
-					let res = await this.$http.get("/merchant/localMerchantInfo/queryAppInfoById?id=" + this.merchantId)
-					console.log(res.data)
-					let obj = res.data.result
-					if (res.data.success) {
-						this.title = '店铺信息'
-						this.tab = 1
-						obj.lifespanType = obj.lifespanType ? obj.lifespanType : '1'
-						this.markers = this.form.longitude && this.form.latitude ? [{
-							longitude: this.form.longitude,
-							latitude: this.form.latitude,
-							iconPath: '../../static/boiaoji.png'
-						}] : []
-						this.businessLicenseImg = obj.businessLicense
-						this.identityOneImg = obj.identityOne
-						this.identityTwoImg = obj.identityTwo
-						this.headPhotoImg = obj.headPhoto ? obj.headPhoto.split(',').filter(id => id !== '') : []
-						obj.headPhoto = obj.headPhoto ? obj.headPhoto.split(',').filter(id => id !== '') : []
-						obj.locality = obj.locality ? obj.locality : ''
-						this.switchType(obj.type)
-						this.form = obj
-						uni.setStorageSync('address', {
-							lng: obj.longitude,
-							lat: obj.latitude,
-							address: obj.address
-						});
-						uni.setStorageSync('currentAddress', {
-							name: obj.address
-						});
-
-					} else {
-						this.$tip.toast(obj.data.message);
-					}
-					this.loginType = data.loginType
-				}
-			} else {
-				if (data.params) {
-					let obj = JSON.parse(decodeURIComponent(data.params));
-
-					this.title = '店铺信息'
-					this.tab = 1
-					obj.lifespanType = obj.lifespanType ? obj.lifespanType : '1'
-					this.markers = this.form.longitude && this.form.latitude ? [{
-						longitude: this.form.longitude,
-						latitude: this.form.latitude,
-						iconPath: '../../static/boiaoji.png'
-					}] : []
-					this.businessLicenseImg = obj.businessLicense
-					this.identityOneImg = obj.identityOne
-					this.identityTwoImg = obj.identityTwo
-					this.headPhotoImg = obj.headPhoto ? obj.headPhoto.split(',').filter(id => id !== '') : []
-					obj.headPhoto = obj.headPhoto ? obj.headPhoto.split(',').filter(id => id !== '') : []
-					obj.locality = obj.locality ? obj.locality : ''
-					this.switchType(obj.type)
-					this.form = obj
-				}
+		async onLoad(option) {
+			this.optionData=option;
+			this.merchantId=option.merchantId;
+			this.getTree()
+			//查询商户信息
+			if(this.merchantId){
+				this.getInfoBus()
+			}else{
+				this.getInfo()
 			}
 		},
 		methods: {
@@ -475,7 +464,6 @@
 			},
 			//选择主题类型
 			confirmLocality(data) {
-				console.log(data)
 				this.form.type = data.value
 				this.typeLabel = data.label
 				this.showSelectLocality = false
@@ -689,7 +677,7 @@
 				}
 
 				if (chooseImageRes) {
-					this.lodingshow = true;
+					this.loadingShow = true;
 					// this.$tip.loading()
 					this[type + 'Img'] = chooseImageRes.tempFilePaths[0];
 					uni.uploadFile({
@@ -745,19 +733,19 @@
 												console.log(obj, this.form, 88888);
 
 											})
-											this.lodingshow = false;
+											this.loadingShow = false;
 
 										}
 									});
 								} else {
-									this.lodingshow = false;
+									this.loadingShow = false;
 
 								}
 							}
 						}
 					});
 				} else {
-					this.lodingshow = false;
+					this.loadingShow = false;
 				}
 			},
 			timestampToTime(timestamp) {
@@ -768,10 +756,7 @@
 				let D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ';
 				return Y + M + D;
 			},
-			sumbit() {
-				if (this.title == '申请入驻') {
-					if (this.loginType) {
-						if (this.loginType === '3') {
+			async sumbit() {
 							//普通用户没有商户新增
 							for (let j in this.form) {
 								if (!this.form[j]) {
@@ -801,10 +786,24 @@
 										})
 										return
 									}
-
-
 								}
 							}
+							if (this.form.classId) {
+								const hasError = this.dynamicList.some(e => {
+									for (var i in this.fileObj) {
+										if (i == e.key && !this.fileObj[i]) {
+											uni.showToast({
+												icon: 'none',
+												title: `请上传${e.qualificationName}`
+											});
+											return true;
+										}
+									}
+									return false;
+								});
+
+								if (hasError) return;
+							}
 							const isHttpOrHttpsone = /^https?:\/\//.test(this.form.identityOne)
 							const isHttpOrHttpstwo = /^https?:\/\//.test(this.form.identityOne)
 							const isbusinessLicense = /^https?:\/\//.test(this.form.businessLicense)
@@ -820,146 +819,163 @@
 							this.form.address = uni.getStorageSync('address').address
 							this.form.latitude = uni.getStorageSync('address').lat
 							this.form.longitude = uni.getStorageSync('address').lng
-							let data = {
+
+					
+							const imgArr = []
+							this.dynamicList.forEach((e => {
+								for (var key in this.fileObj) {
+									if (key == e.key) {
+										imgArr.push({
+											categoryId: this.classItem.id,
+											categoryName: this.classItem.title,
+											special: this.fileObj[key],
+											qualificationName: e.qualificationName
+										})
+									}
+								}
+							}))
+							this.form.qualificationList=imgArr
+							this.paramsObj = {
 								...this.form,
 								source: 2,
 								// headPhoto: Array.isArray(this.form.headPhoto) ? this.form.headPhoto.join(',') : this.form.headPhoto,
 								longitude: this.markers.length > 0 ? this.markers[0].longitude : '',
 								latitude: this.markers.length > 0 ? this.markers[0].latitude : ''
 							}
-							this.$http.post('/merchant/app/add', data).then(res => {
-								if (res.data.code == 200) {
-									//放入session
-									const result = res.data.result
-									const userInfo = result.userInfo
-									uni.setStorageSync(ACCESS_TOKEN, result.token);
-									uni.setStorageSync(USER_INFO, userInfo);
-									this.$store.commit('SET_TOKEN', result.token)
-									this.$store.commit('SET_NAME', {
-										username: userInfo.username,
-										realname: userInfo.realname
-									})
-									this.$store.commit('SET_AVATAR', userInfo.avatar)
-									// #ifdef APP-PLUS
-									uni.switchTab({
-										url: '/pages/index/index'
-									})
-									// #endif
-									// #ifndef APP-PLUS
-									// this.$tip.success('登录成功!')
-									uni.showToast({
-										icon: 'none',
-										title: '登录成功'
-									})
-									this.$Router.replaceAll({
-										name: 'index'
-									})
-									// #endif
-								} else {
-									// this.$tip.error(res.data.message);
-									uni.showToast({
-										icon: 'none',
-										title: res.data.message
-									})
-								}
-							})
-						} else if (this.loginType == 2) {
-							const isHttpOrHttpsone = /^https?:\/\//.test(this.form.identityOne)
-							const isHttpOrHttpstwo = /^https?:\/\//.test(this.form.identityOne)
-							const isbusinessLicense = /^https?:\/\//.test(this.form.businessLicense)
-							if (!isHttpOrHttpsone) {
-								this.form.identityOne = configService.apiUrl + '/' + this.form.identityOne
-							}
-							if (!isHttpOrHttpstwo) {
-								this.form.identityTwo = configService.apiUrl + '/' + this.form.identityTwo
-							}
-							if (!isbusinessLicense) {
-								this.form.businessLicense = configService.apiUrl + '/' + this.form.businessLicense
-							}
-							
-							this.form.address = uni.getStorageSync('address').address
-							this.form.latitude = uni.getStorageSync('address').lat
-							this.form.longitude = uni.getStorageSync('address').lng
-							let data = {
-								...this.form,
-								source: 2,
-								id: uni.getStorageSync('login_user_info').merchantId
-								// headPhoto: Array.isArray(this.form.headPhoto) ? this.form.headPhoto.join(',') : this.form.headPhoto,
-
-								// longitude: this.markers.length > 0 ? this.markers[0].longitude : '',
-								// latitude: this.markers.length > 0 ? this.markers[0].latitude : ''
-							}
-
-							// this.$http.post('/merchant/localMerchantInfo/edit', data).then(res => {
-							this.$http.post('/merchant/localMerchantInfo/editMerchantInfo', data).then(res => {
-								if (res.data.success) {
-									// this.$tip.success(res.data.result || '成功')
-									uni.showToast({
-										icon: 'none',
-										title: res.data.result || '成功'
-									})
-									uni.navigateBack({
-										delta: 1 // 返回的页面数,默认为1
-									})
-								} else {
-									// this.$tip.error(res.data.message);
-									uni.showToast({
-										icon: 'none',
-										title: res.data.message
-									})
-								}
-							})
-						}
-					}
-				} else {
-					// this.form.identityOne = configService.apiUrl+'/'+this.form.identityOne
-					// this.form.identityTwo = configService.apiUrl+'/'+this.form.identityTwo
-					const isHttpOrHttpsone = /^https?:\/\//.test(this.form.identityOne)
-					const isHttpOrHttpstwo = /^https?:\/\//.test(this.form.identityOne)
-					const isbusinessLicense = /^https?:\/\//.test(this.form.businessLicense)
-					if (!isHttpOrHttpsone) {
-						this.form.identityOne = configService.apiUrl + '/' + this.form.identityOne
-					}
-					if (!isHttpOrHttpstwo) {
-						this.form.identityTwo = configService.apiUrl + '/' + this.form.identityTwo
+							//去重
+               this.checkInit()
+			},
+				// 图片处理
+			onUpload(event, item) {
+				this.fileObj[item.key] = event.map(f => `${configService.apiUrl}/${f.message}`).join();
+        
+				//处理删除后的图片默认图片不清空
+				this.dynamicList.forEach((e=>{
+					if(e.key==item.key){
+						e.special=''
 					}
-					if (!isbusinessLicense) {
-						this.form.businessLicense = configService.apiUrl + '/' + this.form.businessLicense
+				}))
+			},
+			getTree() {
+				this.$http.get('/sys/category/loadTreeRoot?pcode=' + 'c09' + '&async=' + false).then(res => {
+					this.treeData = res.data.result
+				})
+			},
+			//分类查询
+			suerPop(item) {
+				this.classItem = item;
+				this.classShow = false
+				this.$http.get('/merchant/register/queryQualificationByCategoryId?categoryId=' + item.id).then(res => {
+					const data = res.data.result
+					if (data.length) {
+						data.forEach((element, index) => {
+							element.specialArr = []
+							element.key = 'key' + index
+							element.special = configService.apiUrl + '/' + element.special
+							this.fileObj[element.key] = ''
+							this.$set(this.fileObj, element.key, '');
+						});
+						this.dynamicList = data
+					} else {
+						this.dynamicList = []
 					}
-					this.form.address = uni.getStorageSync('address').address
-					this.form.latitude = uni.getStorageSync('address').lat
-					this.form.longitude = uni.getStorageSync('address').lng
-					let data = {
-						...this.form,
-						source: 2,
-						headPhoto: Array.isArray(this.form.headPhoto) ? this.form.headPhoto.join(',') : this.form.headPhoto,
-
-						// longitude: this.markers.length > 0 ? this.markers[0].longitude : '',
-						// latitude: this.markers.length > 0 ? this.markers[0].latitude : ''
+				})
+				this.form.classId = item.id
+			},
+			//查询信息
+			getInfoBus(){
+					this.$http.get('/merchant/register/queryInfoById?id=' +this.merchantId).then(res => {
+					let data=res.data.result
+					this.form = data
+					this.businessLicenseImg = data.businessLicense
+					this.identityOneImg = data.identityOne
+					this.identityTwoImg = data.identityTwo
+					this.switchType(data.type)
+					if(data.qualificationList){
+						let obj=data.qualificationList[0]
+						this.classItem.title=obj.categoryName
+						this.classItem.id=obj.categoryId
+						  data.qualificationList.forEach((element,index) => {
+								element.specialArr=[]
+								element.key='key'+index
+								this.$set(this.fileObj, element.key, '');
+								this.fileObj[element.key]=element.special
+					 		});
+						this.dynamicList =data.qualificationList
 					}
-
-					// this.$http.post('/merchant/localMerchantInfo/edit', data).then(res => {
-					this.$http.post('/merchant/localMerchantInfo/editMerchantInfo', data).then(res => {
-						console.log(res)
-						if (res.data.success) {
-							// this.$tip.success(res.data.result || '成功')
-							uni.showToast({
-								icon: 'none',
-								title: res.data.result || '成功'
-							})
-							uni.navigateBack({
-								delta: 1 // 返回的页面数,默认为1
-							})
-						} else {
-							// this.$tip.error(res.data.message);
-							uni.showToast({
-								icon: 'none',
-								title: res.data.message
-							})
-						}
+					this.title = '店铺信息'
+					this.getInfo()
+				})
+			},
+			openClass(){
+				this.classShow=true;
+				this.$nextTick(()=>{
+					this.$refs.classification.init(this.classItem.id)
+				})
+			},
+			loadIng(val){
+				this.loadingShow=val;
+			},
+			//去重检查
+			async checkInit(){
+				let params = {
+					country: this.form.country,
+					storeName: this.form.storeName,
+					id: this.merchantId
+				}
+				let res = await this.$http.get('/merchant/register/checkDuplicate', {
+					params: params
+				})
+				if (res.data.success) {
+					this.settleInit()
+				} else {
+					uni.showToast({ icon: 'none', title: res.data.message })
+				}
+			},
+			//提交信息
+			async settleInit() {
+				let api ='/merchant/register/add'
+				let res = await this.$http.post(api, this.paramsObj)
+				if (res.data.code == 200) {
+					//放入session
+					const result = res.data.result
+					const userInfo = result.userInfo
+					uni.setStorageSync(ACCESS_TOKEN, result.token);
+					uni.setStorageSync(USER_INFO, userInfo);
+					this.$store.commit('SET_TOKEN', result.token)
+					this.$store.commit('SET_NAME', {
+						username: userInfo.username,
+						realname: userInfo.realname
+					})
+					this.$store.commit('SET_AVATAR', userInfo.avatar)
+					// #ifdef APP-PLUS
+					uni.switchTab({
+						url: '/pages/index/index'
+					})
+					// #endif
+					// #ifndef APP-PLUS
+					uni.showToast({
+						icon: 'none',
+						title: '登录成功'
+					})
+					this.$Router.replaceAll({
+						name: 'index'
+					})
+					// #endif
+				} else {
+					uni.showToast({
+						icon: 'none',
+						title: res.data.message
 					})
 				}
 
+			},
+			getInfo(){
+				let data=this.optionData
+				this.form.ordinaryUserId = data.ordinaryUserId;
+				this.form.name = (data.name == null || data.name == 'null') ? "" : data.name,
+				this.form.passWord = data.passWord;
+				this.form.phone = data.phone;
 			}
 		}
 	}
@@ -967,10 +983,11 @@
 <style scoped lang="scss">
 	page {
 		background: #F8F8FA;
+		padding-bottom:120rpx;
 	}
 
 	.cu-form-group .title {
-		width: 154rpx;
+		width: 132rpx;
 		padding: 0;
 
 		span {
@@ -986,13 +1003,49 @@
 		margin-top: 78upx;
 		padding: 26upx;
 	}
-
+  .tab-padding{
+		padding: 0 26upx;
+	}
 	.borderRadiu {
 		height: auto;
 		border-radius: 8px;
 		padding-bottom: 10px;
 		background-color: #ffffff;
 		// border-bottom: 1px solid #eee;
+		.content{
+			position: relative;
+		}
+		.text-bg-w{
+			position:absolute;
+			bottom:4rpx;
+
+		}
+		.address-box{
+			flex-direction: column;
+			align-items: flex-start;
+		}
+		.business-img {
+			height: 218upx;
+			width: 360upx;
+			margin: 20upx auto 0 auto;
+
+			image {
+				width: 100%;
+				height: 100%;
+			}
+			.img{
+				height: 218upx;
+				width: 360upx;
+			}
+		}
+	}
+	.borderRadiu-box2{
+		.cu-form-group .title {
+			width:154rpx;
+		}
+	}
+	.head-title{
+		color:#232832;
 	}
 
 	.sub-bottom {
@@ -1034,7 +1087,8 @@
 		width: 100%;
 		z-index: 9999;
 		background: #FFFFFF;
-		padding: 20upx 30upx;
+		padding: 22upx 30upx;
+		border-top:1rpx solid #EEEEEE;
 
 		.progress-title {
 			margin-top: 16upx;
@@ -1103,20 +1157,7 @@
 			// padding: 10px;
 		}
 
-		.business-img {
-			height: 218upx;
-			width: 360upx;
-			padding: 16upx;
-			// padding-bottom: 16upx;
-			background: url('/static/login/yingye2.png');
-			margin: 16upx auto;
-			background-size: cover;
-
-			image {
-				width: 100%;
-				height: 100%;
-			}
-		}
+		
 
 		.business-prompt {
 			padding-top: 16upx;
@@ -1171,4 +1212,40 @@
 	::v-deep .cu-form-group uni-textarea {
 		margin: 0;
 	}
+
+	.cu-form-group{
+		.title{
+			color:#232832;
+			font-size:28rpx;
+		}
+		.phone-placeholder{
+			font-size:28rpx;
+			color:#999;
+		}
+	}
+		::v-deep .u-delete-icon{
+		background:rgba(0, 0, 0, 0.6) !important;
+	}
+	.btn-box {
+		background-color: #fff;
+		padding: 16rpx 24rpx 20rpx 24rpx;
+		border-top: 1rpx solid #eee;
+		display: flex;
+		justify-content: center;
+  .btn {
+    font-size: 28rpx;
+    border-radius: 54rpx;
+    height: 68rpx;
+    line-height: 68rpx;
+    text-align: center;
+  }
+  .line-gray {
+    width: 205rpx;
+    margin-right: 24rpx;
+    border: 1rpx solid #ccc;
+  }
+	 .mar-right{
+    margin-right: 24rpx;
+  }
+}
 </style>

+ 1 - 1
pages/message/details.vue

@@ -89,7 +89,7 @@ export default {
         'S5': '/pages/store/businessQua?params=${queryString}', //经营资质审核结果
         'S6': '/pages/product/index?type=0', // 商品审核结果通过
         'S7': '/pages/product/index?type=3', // 商品审核结果不通过
-        'S8': '/pages/store/settings', //店铺设置页面 
+        'S8': '/pages/store/newSettings', //店铺设置页面 
         'O1': ``, //核销成功 不跳转
         'O4': `/pages/groupMeal/goods/list`, //拼团成功
       };

+ 400 - 0
pages/store/adVideo.vue

@@ -0,0 +1,400 @@
+<template>
+  <view>
+    <cu-custom bgColor="bg-fff" :isBack="true">
+      <block slot="content" style="font-size: 36rpx;"> 广告素材</block>
+    </cu-custom>
+    <status v-if="form && form.videoStatus !== null" :status="form.videoStatus" :updateTime="form.videoUpdateTime"
+      :remark="form.videoRemark"></status>
+    <view class="tab-top" :style="form && form.videoStatus == null ? 'margin-top: 14upx;' : 'margin-top: 144upx;'">
+      <view class="borderRadiu">
+
+        <view class="customize">
+          <view class=" cu-form-group justify-between">
+            <view class="content ">
+              <text class="text-bold">宣传视频</text>
+              <i class="text-bg-w "></i>
+            </view>
+          </view>
+          <view class="booder-top">
+            <view class="business-img ">
+              <view class="uni-uploader__file" v-if="video">
+                <view class="uploader_video">
+                  <uni-icons class="icon iconfont icon-cuo" type="trash-filled" size="20"
+                    @tap="delectVideo"></uni-icons>
+                  <video :src="video" class="video-container"></video>
+                </view>
+              </view>
+              <image v-else src="/static/store/upload2.png" mode="" @tap="chooseVideo()"></image>
+
+            </view>
+          </view>
+          <view class="business-prompt">
+            最多上传1个视频,大小不超过50M,建议宽高比9:16
+          </view>
+        </view>
+      </view>
+    </view>
+    <view class="padding flex sub-bottom" style="justify-content: space-around;">
+      <button class="cu-btn round line-gray shadow" @click="$Router.push({ name: 'settings' })"
+        style="width: 205rpx;">取消</button>
+      <button style="width:443rpx;background: linear-gradient( 90deg, #77B6FF 0%, #449AFF 100%);border-radius:53rpx ;"
+        class="cu-btn bg-blue round " @click="sumbit">提交审核</button>
+    </view>
+  </view>
+</template>
+<script>
+import configService from '../../common/service/config.service'
+import {
+  USER_INFO
+} from "@/common/util/constants"
+import status from "./components/status.vue"
+
+export default {
+  components: {
+    status
+  },
+  data() {
+    return {
+      video: '',
+      photoList: [],
+      form: {},
+      src: '',
+      businessData: []
+    }
+  },
+  async onLoad(data) {
+    if (data.params) {
+      let obj = JSON.parse(decodeURIComponent(data.params));
+      this.video = obj.video ? obj.video : ''
+      obj.photo = obj.photo ? obj.photo.split(',').filter(id => id !== '') : []
+      this.form = obj
+    }
+
+  },
+  async onShow() {
+    let res = await this.$http.get('/merchant/localMerchantTime/list?merchantId=' + uni.getStorageSync(USER_INFO)
+      .merchantId,)
+    if (res.data.success) {
+      this.businessData = res.data.result
+    } else {
+      uni.showToast({
+        icon: 'none',
+        title: res.data.message
+      })
+    }
+  },
+  methods: {
+    addImage() {
+      // 将图片地址添加到图片数组
+      this.list.push('http://web.shmily.ren/shmily-drag-image/static/4.jpg')
+    },
+    delImage(done) {
+      uni.showModal({
+        content: '是否删除?',
+        success: (res) => {
+          if (res.confirm) {
+            // 执行 done() 删除
+            done()
+          }
+        }
+      })
+    },
+    hoursChange(index) {
+      const queryString = encodeURIComponent(JSON.stringify({
+        index,
+        arr: this.businessData
+      }))
+      uni.navigateTo({
+        url: `/pages/store/addHours?params=${queryString}`
+      })
+
+    },
+    delectVideo() {
+      uni.showModal({
+        title: "提示",
+        content: "是否要删除此视频",
+        success: (res) => {
+          if (res.confirm) {
+            this.video = ''
+          }
+        }
+      })
+    },
+    DelImg(e) {
+      uni.showModal({
+        title: '提示',
+        content: '确定要删除?',
+        cancelText: '取消',
+        confirmText: '确定',
+        success: res => {
+          if (res.confirm) {
+            // this.photoList.splice(e.currentTarget.dataset.index, 1)
+            this.form.photo.splice(e.currentTarget.dataset.index, 1)
+
+          }
+        }
+      })
+    },
+    ChooseImage() {
+      uni.chooseImage({
+        // count: 4, //默认9
+        sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+        sourceType: ['album'], //从相册选择
+        success: (res) => {
+          if (res) {
+            // this[type + 'Img'] = chooseImageRes.tempFilePaths[0];
+            uni.uploadFile({
+              url: configService.apiUrl + '/sys/common/upload',
+              filePath: res.tempFilePaths[0],
+              name: "file",
+              formData: {
+                'biz': 'temp',
+              },
+              success: (files) => {
+                let data = JSON.parse(files.data);
+                if (data.success) {
+                  if (this.form.photo.length != 0) {
+                    // this.photoList = this.photoList.concat(res.tempFilePaths)
+                    this.form.photo.push(configService.apiUrl + '/' + data.message)
+
+                  } else {
+                    // this.photoList =res.tempFilePaths
+                    this.form.photo = [configService.apiUrl + '/' + data.message]
+                  }
+                }
+              }
+            })
+          }
+
+        }
+      });
+    },
+    ViewImage(e) {
+      uni.previewImage({
+        urls: this.form.photo,
+        current: e.currentTarget.dataset.url
+      });
+    },
+    chooseVideo() {
+      // 上传视频
+      console.log('上传视频')
+      uni.chooseVideo({
+        sourceType: ['camera', 'album'],
+        success: (res) => {
+          this.video = res.tempFilePath;
+        }
+      })
+    },
+    sumbit() {
+      let data = {
+        	merchantId: uni.getStorageSync(USER_INFO).merchantId,
+					context: this.video,
+					status:1,
+					type:3,
+      }
+       this.$http.post('/LocalMerchantInfoTrimExamine/localMerchantInfoTrimExamine/add', data).then(res => {
+          if (res.data.success) {
+            uni.showToast({
+              icon: 'none',
+              title: res.data.result || '成功'
+            })
+
+            uni.navigateBack({
+              delta: 1 // 返回的页面数,默认为1
+            })
+          } else {
+            uni.showToast({
+              icon: 'none',
+              title: res.data.message
+            })
+          }
+        })
+
+    },
+    delClick(val) {
+      this.$http.delete('/merchant/localMerchantTime/delete?id=' + val.id).then(res => {
+        if (res.data.success) {
+          uni.showToast({
+            icon: 'none',
+            title: res.data.result || '成功'
+          })
+
+          this.$http.get('/merchant/localMerchantTime/list?merchantId=' + uni.getStorageSync(USER_INFO).merchantId)
+            .then(res => {
+              if (res.data.success) {
+                this.businessData = res.data.result
+              } else {
+                uni.showToast({
+                  icon: 'none',
+                  title: res.data.message
+                })
+              }
+            })
+
+        } else {
+          uni.showToast({
+            icon: 'none',
+            title: res.data.message
+          })
+        }
+      })
+    }
+  }
+}
+</script>
+<style scoped lang="scss">
+page {
+  background: #f8f8fa;
+}
+
+::v-deep .cu-custom {
+  border: none !important;
+}
+
+.tab-top {
+  padding: 0 26upx;
+  padding-bottom: 130upx;
+}
+
+.progress-status {
+  position: fixed;
+  width: 100%;
+  z-index: 9999;
+  background: #ffffff;
+  border: none;
+
+  .status {
+    font-size: 38upx;
+    color: #f6863e;
+    font-weight: 500;
+    margin-bottom: 10upx;
+
+    text {
+      margin-left: 5upx;
+    }
+
+    image {
+      vertical-align: text-top;
+      width: 42upx;
+      height: 42upx;
+    }
+  }
+}
+
+.borderRadiu {
+  border-radius: 8px;
+  .customize {
+    padding: 0 18upx 18upx;
+    margin-bottom: 16rpx;
+    background-color: #ffffff;
+    border-radius: 16rpx;
+    .title {
+      padding: 18upx 0;
+      font-size: 28upx;
+      // padding: 10px;
+    }
+  }
+
+  .business-img {
+    height: 210upx;
+    width: 310upx;
+    background-size: cover;
+
+    image {
+      width: 100%;
+      height: 100%;
+    }
+  }
+
+  .business-prompt {
+    padding-top: 16upx;
+    font-size: 20upx;
+    color: #999999;
+  }
+}
+
+.booder-top {
+  border-bottom: 1px solid rgb(238, 238, 238);
+  padding-bottom: 7px;
+
+  .uploader_video {
+    width: 310upx;
+    height: 210upx;
+  }
+
+  .video-container {
+    max-width: 100%;
+    /* 最大宽度为父容器宽度 */
+    max-height: 100%;
+
+    ::v-deep.uni-video-bar {
+      height: 62upx;
+      padding: 0;
+    }
+  }
+}
+
+.sub-bottom {
+  position: fixed;
+  width: 100%;
+  bottom: 0;
+  background: #ffffff;
+  border-top: 1px solid #eeeeee;
+}
+
+.uni-uploader__img {
+  width: 200upx;
+  height: 200upx;
+}
+
+.uni-uploader__file,
+.uploader_video {
+  position: relative;
+  z-index: 1;
+  width: 200upx;
+  height: 200upx;
+}
+
+.icon-cuo {
+  position: absolute;
+  right: 0;
+  top: 5upx;
+
+  color: #ffffff;
+  z-index: 999;
+  border-top-right-radius: 20upx;
+  border-bottom-left-radius: 20upx;
+}
+
+.business-hours {
+  padding: 27upx 22upx;
+  background: #f7f8fc;
+  font-size: 28upx;
+  border-radius: 8px 8px 8px 8px;
+  margin-bottom: 18upx;
+}
+
+.del-style {
+  width: 116upx;
+  background: #ffffff;
+  border-radius: 4px 4px 4px 4px;
+  border: 1px solid #eeeeee;
+  color: #333333;
+  font-size: 26upx;
+  line-height: 50upx;
+  text-align: center;
+}
+
+.business-date {
+  text {
+    margin-right: 22upx;
+  }
+}
+.content {
+  position: relative;
+}
+.text-bg-w {
+  position: absolute;
+  bottom: 4rpx;
+}
+</style>

+ 14 - 52
pages/store/advertising.vue

@@ -7,36 +7,11 @@
 			:remark="form.videoRemark"></status>
 		<view class="tab-top" :style="form && form.videoStatus == null ? 'margin-top: 14upx;' : 'margin-top: 144upx;'">
 			<view class="borderRadiu">
-
-				<view class="customize">
-					<view class=" cu-form-group justify-between">
-						<view class="content ">
-							<text class="text-bold">宣传视频</text>
-							<i class="text-bg "></i>
-						</view>
-					</view>
-					<view class="booder-top">
-						<view class="business-img ">
-							<view class="uni-uploader__file" v-if="video">
-								<view class="uploader_video">
-									<uni-icons class="icon iconfont icon-cuo" type="trash-filled" size="20"
-										@tap="delectVideo"></uni-icons>
-									<video :src="video" class="video-container"></video>
-								</view>
-							</view>
-							<image v-else src="/static/store/upload2.png" mode="" @tap="chooseVideo()"></image>
-
-						</view>
-					</view>
-					<view class="business-prompt">
-						最多上传1个视频,大小不超过50M,建议宽高比9:16
-					</view>
-				</view>
 				<view class="customize">
 					<view class=" cu-form-group justify-between">
 						<view class="content ">
 							<text class="text-bold">经营相册</text>
-							<i class="text-bg "></i>
+							<i class="text-bg-w"></i>
 						</view>
 					</view>
 					<!-- <view class="grid col-4 grid-square flex-sub booder-top">
@@ -84,7 +59,7 @@
 			return {
 				video: '',
 				photoList: [],
-				form: {},
+				form: {photo:[]},
 				src: '',
 				cameraList: [{
 						value: 'back',
@@ -225,12 +200,12 @@
 			sumbit() {
 				let data = {
 					merchantId: uni.getStorageSync(USER_INFO).merchantId,
-					video: this.video,
-					photo: this.form.photo.join(",")
+					context: this.form.photo.join(","),
+					status:1,
+					type:2,
 				}
 				console.log(this.form.photo)
-				if (this.form.videoStatus == null) {
-					this.$http.post('/merchant/LocalMerchantOperate/add', data).then(res => {
+				this.$http.post('/LocalMerchantInfoTrimExamine/localMerchantInfoTrimExamine/add', data).then(res => {
 						if (res.data.success) {
 							uni.showToast({
 								icon:'none',
@@ -247,27 +222,6 @@
 							})
 						}
 					})
-				} else {
-					this.$http.post('/merchant/LocalMerchantOperate/edit', {
-						...data,
-						id: this.form.videoId
-					}).then(res => {
-						if (res.data.success) {
-							uni.showToast({
-								icon:'none',
-								title:res.data.result || '成功'
-							})
-							uni.navigateBack({
-								delta: 1 // 返回的页面数,默认为1
-							})
-						} else {
-							uni.showToast({
-								icon:'none',
-								title:res.data.message
-							})
-						}
-					})
-				}
 
 			},
 			delClick(val) {
@@ -461,4 +415,12 @@
 			margin-right: 22upx;
 		}
 	}
+	.content{
+			position: relative;
+		}
+		.text-bg-w{
+			position:absolute;
+			bottom:4rpx;
+
+		}
 </style>

+ 109 - 56
pages/store/businessInfor.vue

@@ -14,16 +14,14 @@
 			:remark="form.videoRemark" style="z-index: 0;"></status> -->
 		<view class="tab-top" :style="form && form.videoStatus == null ? 'margin-top: 14upx;' : ''">
 			<view class="borderRadiu">
-				<view class=" cu-form-group margin-top1 justify-between">
-					<view class="content ">
-						<text class="text-bold">营业时间</text>
-						<i class="text-bg "></i>
-					</view>
+				<view class='title-box'>
+						<view class='title'>营业时间</view>
+						<i class="text-bg-w"></i>
 				</view>
 				<view class="customize">
 					<view class="business-hours" v-for="(val,index) in businessData" :key="val.id" @click="hoursChange(index)">
-						<view class="flex justify-between">
-							<text>{{ val.period }}</text>
+						<view class="u-flex justify-between">
+							<text class='title'>{{ val.period }}</text>
 							<view @click.stop="delClick(val)" class="del-style">删除</view>
 						</view>
 						<view class="business-date" v-if="val.timeType==1">
@@ -35,52 +33,21 @@
 							<text>{{ val.endTime }}</text>
 						</view>
 					</view>
-					<image v-if="businessData.length!==2" style="width: 100%;height:137upx" src="/static/store/yingyeshijian.png"
-						mode="" @click="hoursChange()"> </image>
-				</view>
-			</view>
-			<view class="borderRadiu">
-				<view class=" cu-form-group margin-top1 justify-between">
-					<view class="content ">
-						<text class="text-bold">经营信息</text>
-						<i class="text-bg "></i>
-					</view>
-				</view>
-				<!-- <view class="data-item">
-					<span>店铺面积</span>
-					<input v-model="form.storeExtent" type="Number"
-						style="width: 100px;height: 49rpx;background-color: #f7f8fc;margin: 0px 8rpx 0px 20rpx;"></input>㎡
-				</view> -->
-				<view class="data-item">
-					<span>开业时间</span>
-					<view class="" style="flex: 1;display: flex;justify-content: space-between;padding-left: 20rpx;"
-						@click="show = true">
-						<span v-if="date">{{date}}</span>
-						<span v-else style="color: #999999;">去设置</span>
-						<u-icon name="arrow-right"></u-icon>
+					<view class='hours-add' v-if="businessData.length!==2" @click="hoursChange()">
+						<u-image width="52rpx" height="52rpx"  src="/static/login/add.png" mode="aspectFill"></u-image>
+						<view class='time'>添加营业时间</view>
 					</view>
 				</view>
-				<!-- <view class="customize">
-					<view class="title">地理位置</view>
-					<view class=" booder-top" style="padding-bottom: 16upx" :style="{ display: mapIsHidden }"
-						@click="selectAddress">
-						<tdmap 
-							:allowSelection="false" 
-							:showCoordinates="false" 
-							:key="mapKey"
-						></tdmap>
-					</view>
-					<view class="business-prompt">
-						若位置有误直接影响客户到店,请在地图中仔细核对,可拖拽地图确保位置正确
-					</view>
-				</view> -->
 			</view>
 		</view>
-		<view class="padding flex sub-bottom">
-			<button class="cu-btn round line-gray  shadow" @click="$Router.push({ name: 'settings' })">取消</button>
-			<button style="margin-left: 12upx;width:77%" class="cu-btn bg-blue round " @click.native="sumbit">提交</button>
-		</view>
-		<u-picker v-model="show" mode="time" @confirm="selectTime" style="z-index: 999 !important;"></u-picker>
+		<!-- <view class="padding u-flex sub-bottom">
+			<button class="cu-btn round line-gray  shadow" @click="goPage">返回</button>
+			<button class="cu-btn bg-blue-gra round u-flex-1" @click.native="sumbit">提交</button>
+		</view> -->
+		 <view class="u-flex btn-box sub-bottom">
+      <view class="btn cancel" @click='goPage'>返回</view>
+    </view>
+		<u-picker v-model="show" mode="time" @confirm="selectTime" style="z-index: 999 !important;" title='开业时间'></u-picker>
 	</view>
 </template>
 
@@ -179,7 +146,7 @@
 		},
 		methods: {
 			back() {
-				uni.navigateTo({ url: '/pages/store/settings' });
+				uni.navigateTo({ url: '/pages/store/newSettings' });
 			},
 			selectAddress() {
 				uni.navigateTo({ url: '/pages/store/selectTdMap?url=' + '/pages/store/businessInfor' });
@@ -286,6 +253,11 @@
 						}
 					});
 			},
+			goPage() {
+				uni.navigateBack({
+					delta: 1
+				});
+    },
 		},
 	};
 </script>
@@ -331,7 +303,7 @@
 			}
 		}
 	}
-	.tab-top { padding: 0 26upx; padding-bottom: 130upx; }
+	.tab-top { padding: 0 24upx; padding-bottom: 130upx; }
 	.progress-status {
 		position: fixed;
 		width: 100%;
@@ -347,11 +319,12 @@
 		}
 	}
 	.borderRadiu {
-		border-radius: 8px;
+		border-radius: 16rpx;
 		background-color: #ffffff;
+		padding:18rpx 18rpx 28rpx 28rpx;
+		margin-top:20rpx;
 		.customize {
-			padding: 0 18upx 18upx;
-			.title { padding: 18upx 0; font-size: 28upx; }
+			.title { padding-bottom: 18upx; font-size: 28upx; }
 		}
 		.business-img {
 			height: 210upx;
@@ -378,6 +351,29 @@
 		background: #ffffff;
 		border-top: 1px solid #eeeeee;
 	}
+	.btn-box {
+		background-color: #fff;
+		padding: 16rpx 24rpx 20rpx 24rpx;
+		border-top: 1rpx solid #eee;
+		display: flex;
+		justify-content: center;
+		.btn {
+			font-size: 28rpx;
+			border-radius: 54rpx;
+			height: 68rpx;
+			line-height: 68rpx;
+			text-align: center;
+		}
+		.cancel {
+			border: 1rpx solid #ccc;
+			color: #999999;
+			width: 205rpx;
+			margin-right: 24rpx;
+		}
+	}
+	::v-deep .u-delete-icon {
+		background: rgba(0, 0, 0, 0.6) !important;
+	}
 	.uni-uploader__img { width: 200upx; height: 200upx; }
 	.uni-uploader__file, .uploader_video {
 		position: relative;
@@ -400,18 +396,41 @@
 		font-size: 28upx;
 		border-radius: 8px 8px 8px 8px;
 		margin-bottom: 18upx;
+		.title{
+			font-size:28rpx;
+			font-weight: 500;
+			color:#333;
+		}
 	}
 	.del-style {
 		width: 116upx;
+		height:47rpx;
 		background: #ffffff;
 		border-radius: 4px 4px 4px 4px;
 		border: 1px solid #eeeeee;
 		color: #333333;
-		font-size: 26upx;
-		line-height: 50upx;
+		font-size: 24upx;
+		line-height: 47rpx;
 		text-align: center;
+		font-weight: 500;
 	}
 	.business-date { text { margin-right: 22upx; } }
+	.hours-add{
+		background:#F7F8FC;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-self: center;
+		width:100%;
+		padding:20rpx 0;
+		border-radius:8rpx;
+		.time{
+			color:#449AFF;
+			font-size:22rpx;
+			margin-top:12rpx;
+			font-weight: 500;
+		}
+	}
 	.data-item {
 		display: flex;
 		align-items: center;
@@ -421,4 +440,38 @@
 		align-items: center;
 		.custom-input { width: 160rpx; }
 	}
+	.title-box {
+    position: relative;
+    display: inline-block;
+    margin-bottom: 20rpx;
+			.title {
+			font-weight: 500;
+			font-size: 30rpx;
+			color: #333;
+			margin-top: 16rpx;
+		}
+		.text-bg-w {
+			display: block;
+			width: 100%;
+			height: 5rpx;
+			background: linear-gradient(90deg, #88bfff 0%, #449aff 100%);
+			border-radius: 8rpx;
+			position: absolute;
+			bottom: 4rpx;
+		}
+  }
+  .cu-btn {
+		height:76rpx;
+		line-height:76rpx;
+		border-radius: 53rpx ;
+	}
+	.line-gray{
+		width:205rpx;
+		margin-right:24rpx;
+		border:1rpx solid #ccc;
+	}
+	::v-deep.cu-btn[class*="line"]::after{
+		border: none;
+	}
+	
 </style>

+ 11 - 7
pages/store/components/status.vue

@@ -1,7 +1,7 @@
 <template>
     <view class="progress-statu" 
-        :style="status == null ? '' : 'padding: 20upx 42upx;'">
-        <view v-if="status == 0">
+        :style="obj.status == null ? '' : 'padding: 20upx 42upx;'">
+        <view v-if="obj.status == 0">
             <view class="flex justify-between">
                 <view class="status">
                     <image src="/static/login/status1.png" mode="aspectFit"></image>
@@ -9,9 +9,9 @@
                 </view>
                 <!-- <text style="color: #999;">{{updateTime }}</text> -->
             </view>
-            <view  style="color: #666666;">{{updateTime }} 提交的店铺信息待审核中</view>
+            <view  style="color: #666666;"> 提交的店铺信息待审核中</view>
         </view>
-        <view v-if="status== 1">
+        <view v-if="obj.status== 1">
             <view class="flex justify-between">
                 <view class="status">
                     <image src="/static/login/status2.png" mode="aspectFit"></image>
@@ -19,9 +19,9 @@
                 </view>
                 <!-- <text style="color: #999;">{{updateTime }}</text> -->
             </view>
-            <view style="color: #666666;">{{ updateTime }} 提交的店铺信息审核通过</view>
+            <view style="color: #666666;">{{ obj.updateTime }} 提交的店铺信息审核通过</view>
         </view>
-        <view v-if="status == 2">
+        <view v-if="obj.status == 2">
             <view class="flex justify-between">
                 <view class="status">
                     <image src="/static/login/status3.png" mode="aspectFit"></image>
@@ -29,7 +29,7 @@
                 </view>
                 <!-- <text style="color: #999;">{{updateTime }}</text> -->
             </view>
-            <view>驳回原因:{{ remark }}<br/>补充说明:{{reason}}<br/>审批时间:{{updateTime }} </view>
+            <view>驳回原因:{{ obj.remark }}</view>
         </view>
     </view>
 </template>
@@ -51,6 +51,10 @@ export default {
         remark: {
             type: String,
             default: ''
+        },
+        obj:{
+            type:Object,
+            default:()=>{}
         }
 }
 }

+ 124 - 0
pages/store/components/tipModal.vue

@@ -0,0 +1,124 @@
+<template>
+  <view class="tip-modal-content">
+    <u-modal v-model='isShow' :title="title" :showConfirmButton="false">
+      <view class="close-icon" @click="close"><u-icon name="close-circle" size='20'></u-icon></view>
+      <view class="slot-content">
+        <u-input v-model="value" :type="type" :border="false" :clearable="false" placeholder='请输入' />
+      </view>
+
+      <view class="u-flex btn-box">
+        <view class="btn cancel" @click='close'>取消</view>
+        <view class="btn sure u-flex-1" @click='sure'>确定</view>
+      </view>
+
+    </u-modal>
+  </view>
+
+</template>
+
+<script>
+export default {
+  props: {
+    isShow: {
+      type: Boolean,
+      default: false
+    },
+    title: {
+      type: String,
+      default: ''
+    },
+    type: {
+      type: String,
+      default: 'text'
+    }
+  },
+  data() {
+    return {
+      value: ""
+    };
+  },
+  onReady() {
+  },
+  onLoad(Option) {
+
+  },
+  methods: {
+    close() {
+      this.$emit('close')
+    },
+    sure() {
+      this.$emit('sure', this.value)
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.tip-modal-content {
+  ::v-deep.u-modal__button-group--confirm-button {
+    padding: 0;
+  }
+  .modal-footer {
+    border-top: 1rpx solid #eeeeee;
+    padding: 16rpx;
+  }
+  ::v-deep.default .u-popup__content {
+    background: linear-gradient(
+      to bottom,
+      #f8e0e3 0%,
+      #ffffff 30%,
+      #ffffff 100%
+    );
+  }
+  .close-icon {
+    position: absolute;
+    right: 40rpx;
+    top: 40rpx;
+    z-index: 11;
+  }
+  ::v-deep.close-icon {
+    display: none;
+  }
+  .btn-box {
+    background-color: #fff;
+    padding: 16rpx 24rpx 20rpx 24rpx;
+    border-top: 1rpx solid #eee;
+    .btn {
+      font-size: 28rpx;
+      border-radius: 54rpx;
+      height: 68rpx;
+      line-height: 68rpx;
+      text-align: center;
+    }
+    .cancel {
+      border: 1rpx solid #ccc;
+      color: #999999;
+      width: 205rpx;
+      margin-right: 24rpx;
+    }
+    .sure {
+      color: #fff;
+      background: linear-gradient(90deg, #77b6ff 0%, #449aff 100%);
+    }
+  }
+  .slot-content {
+    margin: 70rpx 24rpx;
+  }
+  ::v-deep.u-model__title {
+    border-top: 1rpx solid #eee;
+    padding: 20rpx 24rpx;
+  }
+  ::v-deep.u-model__title {
+    border-top: 1rpx solid #eee;
+    padding: 20rpx 24rpx;
+  }
+  ::v-deep.uni-input-wrapper {
+    background: #f7f8fc;
+    border-radius: 8rpx;
+  }
+  ::v-deep.uni-input-placeholder,
+  ::v-deep.uni-input-input {
+    padding-left: 20rpx;
+  }
+}
+</style>

+ 8 - 25
pages/store/headPhoto.vue

@@ -11,7 +11,7 @@
 					<view class=" cu-form-group justify-between">
 						<view class="content ">
 							<text class="text-bold">门头照片</text>
-							<i class="text-bg "></i>
+							<i class="text-bg-w"></i>
 						</view>
 					</view>
 					<view class="grid col-4 grid-square flex-sub booder-top">
@@ -59,7 +59,7 @@
 		data() {
 			return {
 				photoList: [],
-				form: {},
+				form: {headPhoto:''},
 				src: '',
 				cameraList: [{
 						value: 'back',
@@ -80,6 +80,7 @@
 				// this.video = obj.video ? obj.video : ''
 				obj.photo = obj.photo ? obj.headPhoto.split(',').filter(id => id !== '') : []
 				this.form = obj
+				console.log(obj)
 				
 			}
 
@@ -172,11 +173,11 @@
 			sumbit() {
 				let data = {
 					merchantId: uni.getStorageSync(USER_INFO).merchantId,
-					headPhoto: this.form.headPhoto,
-					id:this.form.headPhotoId
+					context: this.form.headPhoto,
+					status:0,
+					type:1,
 				}
-				if (this.form.headPhotoStatus == null) {
-					this.$http.post('merchant/localMerchantHeadPhoto/add', data).then(res => {
+				this.$http.post('/LocalMerchantInfoTrimExamine/localMerchantInfoTrimExamine/add', data).then(res => {
 						if (res.data.success) {
 							uni.showToast({
 								icon:'none',
@@ -191,25 +192,7 @@
 								title:res.data.message
 							})
 						}
-					})
-				} else {
-					this.$http.post('merchant/localMerchantHeadPhoto/edit',data).then(res => {
-						if (res.data.success) {
-							uni.showToast({
-								icon:'none',
-								title:'提交成功'
-							})
-							uni.navigateBack({
-								delta: 1 // 返回的页面数,默认为1
-							})
-						} else {
-							uni.showToast({
-								icon:'none',
-								title:res.data.message
-							})
-						}
-					})
-				}
+				})
 
 			},
 			delClick(val) {

+ 497 - 0
pages/store/newSettings.vue

@@ -0,0 +1,497 @@
+<template>
+  <view>
+    <view class="top"></view>
+    <u-navbar title="店铺设置" :autoBack="true" :placeholder="true"></u-navbar>
+    <view class='pub-box'>
+      <view class='title-box'>
+        <view class='title'>开票信息</view>
+        <i class="text-bg-w "></i>
+      </view>
+      <view class='item-list u-flex' v-for='(item,index) in infoList' :key='index' @click='infoClick(item)'>
+        <view class="item-title u-flex">
+          <view class='name'>{{item.title}}</view>
+          <view class="type" v-if='item.status'>{{item.status}}</view>
+        </view>
+        <view class="u-flex u-flex-1 u-row-right">
+          <view class='item-p one-line-text' :class='{active:item.isHas}'>{{item.content}}</view>
+          <u-icon v-if='item.isMore' class="icon" name="arrow-right"></u-icon>
+          <view v-else class="pls"></view>
+        </view>
+      </view>
+    </view>
+    <view class='pub-box'>
+      <view class='title-box'>
+        <view class='title'>扩展信息</view>
+        <i class="text-bg-w "></i>
+      </view>
+      <view class='item-list u-flex' @click='infoClick({type:9})'>
+        <view class="item-title u-flex">
+          <view>设施服务</view>
+        </view>
+        <view class="u-flex">
+          <view class='item-p'>{{indexOption.content?'已配置':'去配置'}}</view>
+          <u-icon class="icon" name="arrow-right"></u-icon>
+        </view>
+      </view>
+    </view>
+    <view class='pub-box'>
+      <view class='title-box'>
+        <view class='title'>认证信息</view>
+        <i class="text-bg-w "></i>
+      </view>
+      <view class='item-list u-flex' @click='infoClick({type:11})'>
+        <view class="item-title u-flex">
+          <view>门店资质</view>
+
+        </view>
+        <view class="u-flex">
+          <view class='item-p'>已配置</view>
+          <u-icon class="icon" name="arrow-right"></u-icon>
+        </view>
+      </view>
+      <view class='item-list u-flex' @click='infoClick({type:12})'>
+        <view class="item-title u-flex">
+          <view>经营资质</view>
+          <view class="type">{{filterType(shopStatus.status)}}</view>
+        </view>
+        <view class="u-flex">
+          <view class='item-p'>已配置</view>
+          <u-icon class="icon" name="arrow-right"></u-icon>
+        </view>
+      </view>
+    </view>
+
+    <!-- 店铺名称 -->
+    <TipModal :isShow="modalShow" title='店铺名称' @close='modalShow=false' @sure='sure'></TipModal>
+    <!-- 开业时间 -->
+    <u-picker v-model="timeShow" mode="time" @confirm="selectTime" title='开业时间'></u-picker>
+    <!-- 门店电话 -->
+    <TipModal :isShow="phoneShow" title='门店电话' @close='phoneShow=false' @sure='phoneSure' type='number'></TipModal>
+    <!-- 设施服务 -->
+    <Upopup :isShow="serverShow" title='选择配套设施' @close='serverShow=false' @sure='serverSure'>
+      <view class="server-box">
+        <view v-for="(tag,index) in tags" :key='index' class="tag-type"
+          :class="{ 'selected-background': isSelected(tag,'selectedTags') }"
+          @click="toggleSelection(tag,'selectedTags')">{{tag}}
+          <view class="selected-img" v-show='isSelected(tag,"selectedTags")'>
+            <u-image width="20rpx" height="20rpx" src="/static/login/right-icon.png" mode="aspectFill"></u-image>
+          </view>
+        </view>
+      </view>
+    </Upopup>
+
+    <!-- 营业状态 -->
+    <Upopup :isShow="businessShow" title='选择配套设施' @close='businessShow=false' @sure='openSure'>
+      <view class="server-box">
+        <view v-for="(tag,index) in businessShowList" :key='index' class="tag-type"
+          :class="{ 'selected-background': selected(tag,'selectedBus') }" @click="singSelection(tag,'selectedBus')">
+          {{tag.name}}
+          <view class="selected-img" v-show='selected(tag,"selectedBus")'>
+            <u-image width="20rpx" height="20rpx" src="/static/login/right-icon.png" mode="aspectFill"></u-image>
+          </view>
+        </view>
+      </view>
+      <view class='tip-content'>关闭门店前需保证没有还未使用的有效服务券哦!</view>
+    </Upopup>
+  </view>
+</template>
+<script>
+import { USER_INFO } from "@/common/util/constants"
+import TipModal from "./components/tipModal.vue"
+import Upopup from "@/components/popup/index.vue"
+export default {
+  components: {
+    TipModal,
+    Upopup
+  },
+  data() {
+    return {
+      tags: ['停车位', '休息室', 'WIFI', '空调', '茶点', '洗手间'], // 你的标签数组
+      businessShowList: [{
+        name: "营业中",
+        value: 1
+      }, {
+        name: "歇业中",
+        value: 2
+      }, {
+        name: "门店关闭",
+        value: 3
+      }],
+      modalShow: false,
+      merchantId: null,
+      indexOption: {
+        content: ""
+      },
+      selectTags: [],
+      timeShow: false,
+      phoneShow: false,
+      businessShow: false,
+      serverShow: false,
+      selectedTags: [], // 用于存储被选中的标签索引
+      selectedBus: [], // 用于存储被选中的标签索引
+      shopStatus: {
+        status:null
+      }, //经营资质审核状态
+      nameStatus: {
+        status:null
+      }, //门店名称审核状态
+      renovationStatus: "", //装修审核状态
+      typeArr: [{
+        type: 0,
+        name: '待审核'
+      }, {
+        type: 1,
+        name: '审核通过'
+      }, {
+        type: 2,
+        name: '审核驳回'
+      }]
+    }
+  },
+  async onShow() {
+    this.merchantId = uni.getStorageSync(USER_INFO).merchantId;
+    this.getInit()
+
+    //查询状态经营资质和门店名称
+    this.trimExamine(0)
+    this.trimExamine(1)
+
+    //装修审核
+    this.bindStatus()
+
+  },
+  computed: {
+    infoList() {
+      let data = this.indexOption || {}
+      return [
+        {
+          title: '店铺logo',
+          content: '去配置',
+          status: false, //是否有状态
+          isMore: true, //是否显示更多 
+          isHas: true,  //是否配置了
+          type: 1
+        },
+        {
+          title: '门店名称',
+          content: data.storeName || '去配置',
+          status: this.filterType(this.nameStatus.status),
+          isMore: true,
+          isHas: false,
+          type: 2
+        },
+        {
+          title: '营业状态',
+          content: this.filterStatus(data.merchantStatus) || '去配置',
+          isMore: true,
+          isHas: true,
+          type: 3
+        },
+        {
+          title: '营业时间',
+          content: ` ${!data.contentStatus ? "去配置" : '已配置'} `,
+          isMore: true,
+          isHas: true,
+          type: 4
+        },
+        // {
+        //   title: '开业时间',
+        //   content: data.openingTime || '去配置',
+        //   isMore: true,
+        //   isHas: true,
+        //   type: 5
+        // },
+        {
+          title: '门店分类',
+          content: data.qualificationList && data.qualificationList[0].categoryName,
+          isMore: false,
+          isHas: true,
+          type: 6
+        },
+        {
+          title: '门店电话',
+          content: data.storePhone || '去配置',
+          isMore: true,
+          isHas: true,
+          type: 7
+        },
+        {
+          title: '门店地址',
+          content: data.address || '去配置',
+          isMore: true,
+          isHas: true,
+          type: 8
+        }
+      ]
+    },
+  },
+  methods: {
+    async getInit() {
+      let res = await this.$http.get("/merchant/register/queryInfoById?id=" + this.merchantId)
+      if (res.data.success) {
+        let data = res.data.result
+        this.selectTags = data.content ? data.content.split(',').filter(id => id !== '') : []
+        this.indexOption = data
+        this.indexOption.merchantId = this.merchantId;
+        this.selectedBus = this.businessShowList.filter((e => e.value == data.merchantStatus))
+        this.selectedTags = this.indexOption.content ? this.indexOption.content.split(',') : [];
+      }
+    },
+    infoClick(item) {
+      this.indexOption.shopStatus = this.shopStatus
+      this.indexOption.nameStatus = this.nameStatus
+      const queryString = encodeURIComponent(JSON.stringify(this.indexOption))
+      if (item.type == 1) {
+        uni.navigateTo({
+          url: `/pages/store/shopRenovation?params=${queryString}`
+        })
+      }
+      else if (item.type == 2) {
+        // this.modalShow = true
+        uni.navigateTo({
+          url: `/pages/store/storeInfo?params=${queryString}`
+        })
+      } else if (item.type == 3) {
+        if (this.renovationStatus == 1 && this.indexOption.localMerchantInfoExamine.status == 1) {
+          this.selectedBus = this.businessShowList.filter((e => e.value == this.indexOption.merchantStatus))
+          this.businessShow = true
+        } else {
+          this.$tip.toast('需要通过审核才可以设置营业状态');
+        }
+
+      }
+      else if (item.type == 4) {
+        uni.navigateTo({
+          url: `/pages/store/businessInfor?params=${queryString}`
+        });
+      } else if (item.type == 5) {
+        this.timeShow = true
+      } else if (item.type == 7) {
+        this.phoneShow = true
+      } else if (item.type == 8) {
+        uni.navigateTo({
+          url: `/pages/store/storeAdress?params=${queryString}`
+        });
+      } else if (item.type == 9) {
+        this.selectedTags = this.indexOption.content ? this.indexOption.content.split(',') : [];
+        this.serverShow = true
+      } else if (item.type == 11) {
+        uni.navigateTo({
+          url: `/pages/store/shopQualifications?params=${queryString}`
+        });
+      } else if (item.type == 12) {
+        uni.navigateTo({
+          url: `/pages/store/storeQualification?params=${queryString}`
+        });
+      }
+    },
+    sure() {
+      this.modalShow = false
+    },
+    //门店电话修改
+    async phoneSure(val) {
+      await this.editInfo({ storePhone: val })
+      this.phoneShow = false
+      this.getInit()
+    },
+    selectTime() { },
+    // 检查一个标签是否被选中
+    isSelected(tag, data) {
+      return this[data].length && this[data].includes(tag);
+    },
+    // 切换标签的选中状态
+    toggleSelection(tag, data) {
+      const indexIndex = this[data].indexOf(tag);
+      if (indexIndex > -1) {
+        this[data].splice(indexIndex, 1);
+      } else {
+        this[data].push(tag);
+      }
+    },
+    selected(tag, data) {
+      const target = this[data].find(item => item.value == tag.value);
+      const name = target ? target.name : ''
+      return name;
+    },
+    singSelection(tag, data) {
+      this[data] = [];
+      this[data].push(tag);
+    },
+    filterStatus(type) {
+      if (type) {
+        return this.businessShowList.find(item => item.value == type).name;
+      }
+    },
+    //0:待审核,1:通过,2:驳回
+    filterType(type) {
+      if (this.typeArr && type != undefined && type!=null) {
+        return this.typeArr.find(item => item.type == type).name;
+      }
+
+    },
+    async trimExamine(type) {
+      let params = {
+        merchantId: this.merchantId,
+        type: type //0门店名称 1经营资质
+      }
+      let res = await this.$http.get('/localMerchantInfoChangeExamine/localMerchantInfoChangeExamine/queryByMerchantId', {
+        params: params
+      })
+      if (type == 1) {
+        this.shopStatus = res.data.result || { status: null }  //0:待审核,1:通过,2:驳回
+      } else {
+        this.nameStatus = res.data.result || { status: null } 
+      }
+    },
+    //装修
+    async bindStatus() {
+      let res = await this.$http.get('/LocalMerchantInfoTrimExamine/localMerchantInfoTrimExamine/queryByMerchantId', {
+        params: { merchantId: this.merchantId }
+      })
+      this.renovationStatus = res.data.result
+    },
+    async editInfo(params) {
+      params.id = this.merchantId
+      let res = await this.$http.post('/merchant/register/updateInfo', params)
+    },
+    //营业状态
+    async openSure(val) {
+      await this.editInfo({ merchantStatus: this.selectedBus[0].value })
+      this.businessShow = false
+      this.getInit()
+    },
+    //服务设施
+    serverSure() {
+      let code = !!this.indexOption.content ? '/merchant/localMerchantService/edit' : '/merchant/localMerchantService/add'
+      this.$http.post(code, {
+        merchantId: this.merchantId,
+        content: this.selectedTags.join(',')
+      }).then(res => {
+        if (res.data.success) {
+          this.$tip.success(res.data.result || '成功')
+          this.serverShow = false
+          this.getInit()
+        } else {
+          this.$tip.error(res.data.message);
+        }
+      })
+    },
+  }
+}
+</script>
+<style scoped lang="scss">
+page {
+  background: #f8f8fa;
+  height: 100%;
+}
+.top {
+  width: 100%;
+  height: var(--status-bar-height);
+  background: linear-gradient(87deg, #ffffff 0%, #a3cdff 100%),
+    linear-gradient(360deg, #ffffff 0%, rgba(255, 255, 255, 0) 100%);
+}
+.pub-box {
+  background: #fff;
+  padding: 0 30rpx;
+  margin-bottom: 16rpx;
+  .title-box {
+    position: relative;
+    display: inline-block;
+    margin-bottom: 20rpx;
+  }
+  .title {
+    font-weight: 500;
+    font-size: 30rpx;
+    color: #333;
+    margin-top: 16rpx;
+  }
+  .text-bg-w {
+    display: block;
+    width: 100%;
+    height: 5rpx;
+    background: linear-gradient(90deg, #88bfff 0%, #449aff 100%);
+    border-radius: 8rpx;
+    position: absolute;
+    bottom: 4rpx;
+  }
+  .item-list {
+    font-size: 28rpx;
+  }
+  .item-title {
+    color: #333;
+    .name {
+      width: 140rpx;
+    }
+  }
+  .item-p {
+    color: #999999;
+  }
+  .active {
+    color: #666666;
+  }
+  .item-list {
+    width: 100%;
+    justify-content: space-between;
+    align-items: center;
+    padding: 20rpx 0;
+    border-bottom: 1rpx solid #eee;
+    .icon {
+      margin-top: 2rpx;
+      color: #666;
+    }
+    .type {
+      padding: 2rpx 8rpx;
+      background: #fbf9e4;
+      font-size: 20rpx;
+      text-align: center;
+      color: #f6863e;
+      border-radius: 4rpx;
+      margin-left: 10rpx;
+    }
+    .pls {
+      margin-right: 22rpx;
+    }
+  }
+}
+::v-deep .u-picker__title {
+  font-weight: 500;
+  font-size: 32rpx;
+  color: #333333;
+}
+.server-box {
+  display: grid;
+  grid-template-columns: repeat(4, 1fr);
+  gap: 24rpx;
+  .tag-type {
+    position: relative;
+    display: inline-block;
+    font-size: 26upx;
+    height: 54upx;
+    color: #333333;
+    border-radius: 4px 4px 4px 4px;
+    border: 1px solid #c2c2c2;
+    text-align: center;
+    line-height: 54upx;
+  }
+
+  .selected-background {
+    color: #2983ec;
+
+    background: rgba(68, 154, 255, 0.1);
+    border: 1px solid #449aff;
+  }
+
+  .selected-img {
+    position: absolute;
+    top: -16rpx;
+    right: 0;
+    z-index: 99;
+  }
+}
+.tip-content {
+  color: #666;
+  font-size: 24rpx;
+  margin: 24rpx 0 40rpx 0;
+  text-align: center;
+}
+</style>

+ 25 - 6
pages/store/selectTdMap.vue

@@ -358,6 +358,7 @@
 
 <!-- 使用module属性定义renderjs模块 -->
 <script module="renderjsMap" lang="renderjs">
+	import mapIcon from "@/static/map-icon.png"
 	let mapInstance = null;
 	let markerInstance = null;
 	let labelInstance = null;
@@ -434,9 +435,9 @@
 					// 创建自定义图标
 					const iconUrl = this.generateMarkerIcon('#ff0000');
 					const icon = new T.Icon({
-						iconUrl: iconUrl,
-						iconSize: new T.Point(30, 30),
-						iconAnchor: new T.Point(15, 30)
+						iconUrl: mapIcon,
+						iconSize: new T.Point(28, 28),
+						iconAnchor: new T.Point(14, 28)
 					});
 					
 					// 创建标记
@@ -444,22 +445,40 @@
 						icon: icon,
 						title: name || address
 					});
+					// 4. 先创建一个临时div来测量文字宽度
+						const measureDiv = document.createElement('div');
+						measureDiv.style.position = 'absolute';
+						measureDiv.style.visibility = 'hidden';
+						measureDiv.style.whiteSpace = 'nowrap';
+						measureDiv.style.fontSize = '14px';
+						measureDiv.style.fontWeight = '500';
+						measureDiv.style.padding = '6px 10px';
+						measureDiv.innerText = name || address || '未知位置';
+						document.body.appendChild(measureDiv);
+
+						const textHeight = measureDiv.offsetHeight;
+						const textWidth = measureDiv.offsetWidth;
+						document.body.removeChild(measureDiv);
+
+						// 计算偏移量:水平居中,垂直向上偏移(文字框高度的一半 + 标记高度的一半 + 间距)
+						const offsetX = -textWidth / 2;  // 水平居中:文字框中心对准标记中心
+						const offsetY = -textHeight - 7; // 向上偏移:文字框高度 + 7px 间距
 					
 					// 创建标签
 					labelInstance = new T.Label({
 						text: address,
 						position: lngLat,
 						style: {
-							color: '#333',
+							color: '#333333',
 							backgroundColor: 'rgba(255, 255, 255, 0.9)',
 							borderColor: '#ff0000',
 							borderWidth: 1,
 							borderRadius: 4,
 							fontSize: '14px',
 							fontWeight: '500',
-							padding: '6px 10px'
+							padding: '18px 12px 18px 24px'
 						},
-						offset: new T.Point(0, -40)
+						offset: new T.Point(offsetX, offsetY)
 					});
 					
 					// 添加到地图

+ 1 - 1
pages/store/settings.vue

@@ -179,7 +179,7 @@
 					if (res.data.success) {
 						this.$tip.success(res.data.result || '成功')
 						uni.redirectTo({
-							url: '/pages/store/settings'
+							url: '/pages/store/newSettings'
 						});
 					} else {
 						this.$tip.error(res.data.message);

+ 380 - 0
pages/store/shopQualifications.vue

@@ -0,0 +1,380 @@
+<template>
+  <view class="storeInfo-content">
+    <view class="top"></view>
+    <u-navbar title="门店资质" :autoBack="true" :placeholder="true"></u-navbar>
+    <view class="pub-box">
+      <view class="flex justify-between">
+        <!-- (0:待审核,1:通过,2:驳回) -->
+        <view class="status" v-show='infoObj.localMerchantInfoExamine.status==2'>
+          <image src="/static/login/status3.png" mode="aspectFit"></image>
+          <text class='red'>审核驳回</text>
+        </view>
+        <view class="status" v-show='infoObj.localMerchantInfoExamine.status==0'>
+          <image src="/static/login/status1.png" mode="aspectFit"></image>
+          <text class='blue'>待审核</text>
+        </view>
+      </view>
+      <view class="des" v-show='infoObj.localMerchantInfoExamine.status==2'>
+        说明:失败内容说明...
+      </view>
+      <view class="des" v-show='infoObj.localMerchantInfoExamine.status==0'>
+        提交的经营资质信息待审核中
+      </view>
+
+    </view>
+
+    <view class="pub-box pub-info-box" v-show="!index">
+      <view class='title-box'>
+        <view class='title'>提交经营主体资料</view>
+        <i class="text-bg-w "></i>
+      </view>
+      <view class="img-title">营业执照</view>
+      <view class="business-img flex align-center">
+        <!-- <Upload width="360" height="218" :maxCount="1" :fileList.sync="fileList.cover" :previewFullImage="false"
+          delIcon='trash' :isImage='true' @complete="onUpload($event, 'cover')">
+          <image class='img' :src="businessLicenseImg ? businessLicenseImg : '/static/login/shiping.png'" mode="">
+          </image>
+        </Upload> -->
+        <image class='img' :src="infoObj.businessLicense" mode="">
+        </image>
+      </view>
+      <view class="tip-text">请上传营业执照照片或复印件,复印件需加盖公司公章,仅支持jpg、png格式;图片需清晰、完整、无反光、无PS、无不相关水印、非拍屏</view>
+
+      <view class='info-list-content'>
+        <view class="info-list" v-for="(item,index) in infoList" :key='index'>
+          <view class='info-label'>{{item.title}}</view>
+          <u-radio-group v-model="infoObj.lifespanType" v-if='item.isRadio'>
+            <u-radio activeColor="#449AFF" name="1">长期有效</u-radio>
+            <u-radio activeColor="#449AFF" name="2">固定期限</u-radio>
+          </u-radio-group>
+          <view v-else class='u-flex-1 one-line-text'>{{item.content}}</view>
+        </view>
+      </view>
+    </view>
+    <view class="pub-box pub-info-box" v-show="index==1">
+      <view class='title-box'>
+        <view class='title'>法人信息</view>
+        <i class="text-bg-w "></i>
+      </view>
+      <view class='info-list-content'>
+        <view class="info-list" v-for="(item,index) in infoPerList" :key='index'>
+          <view class='per-label'>{{item.title}}</view>
+          <view class='u-flex-1 one-line-text'>{{item.content}}</view>
+        </view>
+        <view class="info-list border-none">
+          <view class='per-label'>法人证件照片</view>
+        </view>
+        <view class='u-flex u-row-between card-img'>
+          <u-image width="300rpx" height="182rpx" :src="infoObj.identityOne" mode="aspectFill"></u-image>
+          <u-image width="300rpx" height="182rpx" :src="infoObj.identityTwo" mode="aspectFill"></u-image>
+        </view>
+      </view>
+      <view class="business-prompt">
+        <view>请上传中国大陆公民.身份证照片,仅支持jpg、png格式</view>
+        <view>1、需提供与主体证照上一致的法人证件照片</view>
+        <view>2、图片需清晰、完整、无反光、无PS、无不相关水印、非拍屏</view>
+        <view>3、证件未过期</view>
+      </view>
+    </view>
+
+    <view class="u-flex btn-box sub-bottom">
+      <button v-if='!index' class="cu-btn bg-blue-gra round u-flex-1" @click.native='index=1'>下一步</button>
+      <view v-if='index==1' class='nex-box'>
+        <button class="cu-btn bg-blue-border round " @click.native='index=0'>上一步</button>
+        <button class="cu-btn bg-blue-gra round " @click='goPage'>返回</button>
+      </view>
+    </view>
+  </view>
+
+</template>
+
+<script>
+import Upload from '@/components/upload/index.vue';
+export default {
+  components: {
+    Upload
+  },
+  data() {
+    return {
+      value: "",
+      fileList: {
+        cover: []
+      },
+      infoObj: {
+        lifespanType: ""
+      },
+      value: "",
+      index: 0,
+    };
+  },
+  onReady() {
+  },
+  onLoad(Option) {
+    let data = JSON.parse(decodeURIComponent(Option.params));
+    this.infoObj = data
+    console.log(data)
+
+  },
+  computed: {
+    infoList() {
+      let data = this.infoObj || {}
+      return [
+        {
+          title: '主体类型',
+          content: this.switchType(data.type),
+          type: 1
+        },
+        {
+          title: '门店地址',
+          content: data.address,
+          type: 2
+        },
+        {
+          title: '统一代码',
+          content: data.creditCode,
+          type: 3
+        },
+        {
+          title: '证件期限',
+          content: data.lifespanType,
+          isRadio: true,
+          type: 4
+        },
+        {
+          title: '有效期起',
+          content: `${data.lifespanBegin} --${data.lifespanEnd}`,
+          type: 5
+        },
+      ]
+    },
+    infoPerList() {
+      let data = this.infoObj || {}
+      return [
+        {
+          title: '法人姓名',
+          content: data.legalPerson,
+        },
+        {
+          title: '法人证件号',
+          content: data.legalPersonCode,
+        },
+      ]
+    },
+  },
+  methods: {
+    onUpload() { },
+    goPage() {
+      uni.navigateBack({
+        delta: 1
+      });
+    },
+    switchType(type) {
+      const selectLocality = [{
+        value: 1,
+        label: '个人独资'
+      },
+      {
+        value: 2,
+        label: '个体工商户'
+      },
+      {
+        value: 3,
+        label: '有限责任公司'
+      },
+      {
+        value: 4,
+        label: '股份责任公司'
+      },
+      {
+        value: 5,
+        label: '合伙企业'
+      }
+      ];
+      const item = selectLocality.find(item => item.value == type);
+      if (item) {
+        return item.label;
+      }
+    },
+    sumbit() { }
+
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.top {
+  width: 100%;
+  height: var(--status-bar-height);
+  background: linear-gradient(87deg, #ffffff 0%, #a3cdff 100%),
+    linear-gradient(360deg, #ffffff 0%, rgba(255, 255, 255, 0) 100%);
+}
+.storeInfo-content {
+  background: #f7f8fc;
+  height: 100vh;
+  overflow: auto;
+  .pub-box {
+    background: #fff;
+    padding: 0 40rpx;
+  }
+  .pub-info-box {
+    margin: 16rpx 24rpx 0 24rpx;
+    border-radius: 16rpx;
+  }
+  .info-list {
+    display: flex;
+    border-bottom: 1rpx solid #eee;
+    height: 74rpx;
+    line-height: 74rpx;
+    color: #232832;
+    font-size: 28rpx;
+    .info-label {
+      width: 132rpx;
+    }
+    .per-label {
+      width: 162rpx;
+    }
+  }
+  .border-none {
+    border: none;
+  }
+  .card-img {
+    padding-bottom: 16rpx;
+    border-bottom: 1rpx solid #eee;
+  }
+  .info-list-content {
+    .info-list:last-child {
+      border: none;
+    }
+  }
+  .tip-text {
+    color: #999;
+    font-size: 20rpx;
+    border-top: 1rpx solid #eee;
+    padding: 16rpx 0;
+  }
+  .status {
+    font-size: 36upx;
+    color: #596abb;
+    font-weight: 500;
+    margin-bottom: 10upx;
+    padding-top: 18rpx;
+
+    text {
+      margin-left: 5upx;
+    }
+
+    image {
+      vertical-align: text-top;
+      width: 40upx;
+      height: 40upx;
+    }
+  }
+  .des {
+    color: #666;
+    font-size: 24rpx;
+    padding-bottom: 18rpx;
+  }
+  .title {
+    font-size: 28rpx;
+    color: #333;
+  }
+  .red {
+    color: #f34f4f;
+    font-weight: 500;
+  }
+  .blue {
+    color: #596abb;
+    font-weight: 500;
+  }
+  .title-box {
+    position: relative;
+    display: inline-block;
+    margin-bottom: 20rpx;
+  }
+  .title {
+    font-weight: 500;
+    font-size: 30rpx;
+    color: #333;
+    margin-top: 16rpx;
+  }
+  .text-bg-w {
+    display: block;
+    width: 100%;
+    height: 5rpx;
+    background: linear-gradient(90deg, #88bfff 0%, #449aff 100%);
+    border-radius: 8rpx;
+    position: absolute;
+    bottom: 4rpx;
+  }
+  .business-prompt {
+    padding: 16upx 0;
+    font-size: 20upx;
+    color: #999999;
+  }
+}
+.img-title {
+  font-size: 26rpx;
+  color: #232832;
+  margin: 16rpx 0;
+  text-align: center;
+}
+.business-img {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin: 0 auto;
+  padding-bottom: 20rpx;
+
+  image {
+    width: 100%;
+    height: 100%;
+  }
+  .img {
+    height: 218rpx;
+    width: 360rpx;
+  }
+}
+.sub-bottom {
+  position: fixed;
+  width: 100%;
+  bottom: 0;
+  background: #ffffff;
+  border-top: 1px solid #eeeeee;
+}
+.btn-box {
+  background-color: #fff;
+  padding: 16rpx 24rpx 20rpx 24rpx;
+  border-top: 1rpx solid #eee;
+  display: flex;
+  justify-content: center;
+  .btn {
+    font-size: 28rpx;
+    border-radius: 54rpx;
+    height: 68rpx;
+    line-height: 68rpx;
+    text-align: center;
+  }
+  .cancel {
+    border: 1rpx solid #ccc;
+    color: #999999;
+    width: 205rpx;
+    margin-right: 24rpx;
+  }
+}
+.bg-blue-border {
+  background: transparent;
+  border: 1rpx solid #449aff;
+  color: #449aff;
+}
+.nex-box {
+  width: 100%;
+  display: flex;
+  justify-content: space-between;
+  .cu-btn {
+    width: 48%;
+  }
+}
+::v-deep .u-radio__label {
+  color: #232832;
+}
+</style>

+ 178 - 0
pages/store/shopRenovation.vue

@@ -0,0 +1,178 @@
+<template>
+  <view class="content-wap">
+    <view class="top"></view>
+    <u-navbar title="店铺装修" :autoBack="true" :placeholder="true"></u-navbar>
+
+    <!-- Tab 栏 -->
+    <view class="tab-content">
+      <view class="tab-list">
+        <view v-for="(item, index) in tabList" :key="index" class="tab-item" :class="{ active: currentIndex === index }"
+          @click="switchTab(index)">
+          {{ item.title }}
+          <view class='line' :class="{ 'active-line': currentIndex === index }"></view>
+        </view>
+      </view>
+    </view>
+
+    <swiper class="image-swiper" :current="currentIndex" @change="onSwiperChange" :circular="false">
+      <swiper-item v-for="(item, index) in tabList" :key="index">
+        <view class="custom-slide">
+          <image :src="item.image" mode="widthFix" class="slide-image" @click="onImageClick(index)"></image>
+          <view class="image-caption" :class='["image-caption"+(index+1)]'>
+            <image :src="item.bar" mode="widthFix" class="slide-bar"></image>
+            <view class='info'>
+              <view class='title'>{{item.title}}</view>
+              <view class="tip">{{item.content}}</view>
+              <view class='btn-box' @click.native='set(item)'>
+                <view class='btn'>去设置</view>
+              </view>
+            </view>
+          </view>
+        </view>
+      </swiper-item>
+    </swiper>
+  </view>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      currentIndex: 0,
+      tabList: [
+        { image: '/static/login/swiper1.png', title: '入口图', content: '提升店铺意向', bar: '/static/login/swiper1-bar.png', url: `/pages/store/headPhoto` },
+        { image: '/static/login/swiper2.png', title: '经营相册', content: '呈现菜品,环境特色', bar: '/static/login/swiper2-bar.png', url: `/pages/store/advertising` },
+        { image: '/static/login/swiper3.png', title: '视频', content: '丰富视频内容', bar: '/static/login/swiper3-bar.png', url: `/pages/store/adVideo` }
+      ],
+      info: null
+    };
+  },
+  onLoad(Option) {
+    this.info = Option.params
+  },
+  methods: {
+    switchTab(index) {
+      this.currentIndex = index;
+    },
+    onSwiperChange(e) {
+      this.currentIndex = e.detail.current;
+    },
+    onImageClick(index) {
+      const urls = this.tabList.map(item => item.image);
+      uni.previewImage({ urls, current: index });
+    },
+    set(item) {
+      uni.navigateTo({
+        url: `${item.url}?params=${this.info}`
+      });
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.content-wap {
+  height: 100vh;
+  background: #f7f8fc;
+  .top {
+    width: 100%;
+    height: var(--status-bar-height);
+    background: linear-gradient(87deg, #ffffff 0%, #a3cdff 100%),
+      linear-gradient(360deg, #ffffff 0%, rgba(255, 255, 255, 0) 100%);
+  }
+}
+.tab-content {
+  background: #fff;
+  padding: 0 60rpx 0 60rpx;
+  height: 70rpx;
+  line-height: 70rpx;
+}
+.tab-list {
+  display: flex;
+  justify-content: space-between;
+  color: #888;
+  font-size: 26rpx;
+  .tab-item {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+  }
+  .line {
+    width: 80%;
+    height: 6rpx;
+    background: transparent;
+    border-radius: 6rpx;
+  }
+  .active-line {
+    background: #449aff;
+  }
+  .active {
+    color: #333333;
+    font-weight: 500;
+  }
+}
+
+.image-swiper {
+  width: 100%;
+  height: calc(100vh - 202rpx);
+}
+.custom-slide {
+  position: relative;
+  width: 100%;
+  height: 100%;
+}
+.slide-image {
+  width: 100%;
+  height: 100%;
+  padding: 0 40rpx;
+}
+.image-caption {
+  width: 100%;
+  position: absolute;
+  top: 196rpx;
+  z-index: 1;
+}
+.slide-bar {
+  width: 100%;
+  height: 218rpx;
+}
+.image-caption2 {
+  top: 90rpx;
+}
+.image-caption3 {
+  top: 329rpx;
+}
+
+.info {
+  width: 100%;
+  color: #fff;
+  text-align: center;
+
+  .title {
+    font-size: 30rpx;
+    font-weight: 500;
+  }
+  .tip {
+    font-size: 26rpx;
+    margin: 5rpx 0 20rpx 0;
+  }
+  .btn-box {
+    display: flex;
+    justify-content: center;
+  }
+  .btn {
+    width: 200rpx;
+    height: 60rpx;
+    line-height: 60rpx;
+    text-align: center;
+    font-size: 26rpx;
+    font-weight: 500;
+    border-radius: 53rpx;
+    border: 1rpx solid #ffffff;
+  }
+}
+.info2 {
+  top: 90rpx;
+}
+</style>

+ 163 - 0
pages/store/storeAdress.vue

@@ -0,0 +1,163 @@
+<template>
+  <view class="content-wap">
+    <view class="top"></view>
+    <u-navbar title="门店地址" :autoBack="true" :placeholder="true"></u-navbar>
+    <form>
+      <view class="form-box">
+        <view class="cu-form-group">
+          <view class="title">所在地区</view>
+          <view class="u-flex" @click="$refs.picker.show()">
+            <view class='content-text'>
+              <text v-if="form.locality"> {{ form.locality }}</text>
+              <text v-else>请选择所在地区</text>
+            </view>
+            <u-icon class="arrow-right" name="arrow-right"></u-icon>
+          </view>
+        </view>
+
+        <view class="cu-form-group" @click='selectAddress'>
+          <view class="title">门店地址</view>
+          <view class="u-flex u-flex-1 u-row-right">
+            <view class='content-text one-line-text'>
+              <text>{{form.address}}</text>
+            </view>
+            <u-icon class="arrow-right" name="arrow-right"></u-icon>
+          </view>
+        </view>
+      </view>
+    </form>
+    <view class="map">
+      <Tmap :allowSelection="false" :showCoordinates="false" :key="mapKey" class='map-cont'></Tmap>
+    </view>
+    <view class="padding flex sub-bottom">
+      <button class="cu-btn bg-blue-gra round u-flex-1" @click.native="submit">提交</button>
+    </view>
+
+    <w-picker class="picker-style" :visible.sync="visible" ref="picker" mode="region" :value="form.locality"
+      @confirm="onConfirm($event, 'region')"></w-picker>
+  </view>
+
+</template>
+
+<script>
+import Tmap from "@/pages/store/tdtuMap.vue"
+export default {
+  components: {
+    Tmap
+  },
+  data() {
+    return {
+      form: {
+        locality: '',
+        country: null,
+        address: '',
+        longitude: '',
+        latitude: '',
+      },
+      visible: false,
+      mapKey: 1,
+      objInfo: {}
+    };
+  },
+  onShow() {
+    this.$nextTick(() => {
+      let storageData = uni.getStorageSync('address');
+      this.form.address = storageData.address
+      this.form.longitude = storageData.lng
+      this.form.latitude = storageData.lat
+    })
+
+  },
+  onLoad(Option) {
+    this.objInfo = JSON.parse(decodeURIComponent(Option.params));
+    this.form.locality = this.objInfo.locality;
+    this.form.country = this.objInfo.country;
+  },
+  methods: {
+    onConfirm(e) {
+      this.form.locality = e.result;
+      this.form.country = e.value[e.value.length - 1]
+    },
+    async submit() {
+      let addressObj = uni.getStorageSync('address')
+      let params = {
+        ...this.form,
+        id: this.objInfo && this.objInfo.merchantId
+      }
+      let res = await this.$http.post('/merchant/register/updateInfo', params)
+      if (res.data.success) {
+        uni.showToast({
+          icon: 'none',
+          title: '提交成功'
+        })
+        uni.navigateBack({
+          delta: 1 // 返回的页面数,默认为1
+        })
+      } else {
+        uni.showToast({
+          icon: 'none',
+          title: res.data.message
+        })
+      }
+    },
+    //选择位置
+    selectAddress() {
+      uni.navigateTo({
+        url: '/pages/store/selectTdMap?url=' + '/pages/store/editStore'
+      })
+    },
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.top {
+  width: 100%;
+  height: var(--status-bar-height);
+  background: linear-gradient(87deg, #ffffff 0%, #a3cdff 100%),
+    linear-gradient(360deg, #ffffff 0%, rgba(255, 255, 255, 0) 100%);
+}
+.content-wap {
+  height: 100vh;
+  background: #f7f8fc;
+}
+.form-box {
+  background: #fff;
+  padding: 0 30rpx;
+  .cu-form-group {
+    height: 62rpx;
+    line-height: 62rpx;
+    display: flex;
+    justify-content: space-between;
+    border-bottom: 1rpx solid #eee;
+  }
+  .title {
+    font-size: 28rpx;
+    color: #333;
+    width: 140rpx;
+  }
+  .content-text {
+    font-size: 28rpx;
+    color: #666;
+  }
+  .arrow-right {
+    color: #666;
+    margin-left: 6rpx;
+  }
+}
+.map {
+  background: #fff;
+  padding: 30rpx;
+  margin-top: 16rpx;
+  .map-cont {
+    height: 208rpx;
+  }
+}
+.sub-bottom {
+  position: fixed;
+  width: 100%;
+  bottom: 0;
+  background: #ffffff;
+  border-top: 1px solid #eeeeee;
+}
+</style>

+ 168 - 0
pages/store/storeInfo.vue

@@ -0,0 +1,168 @@
+<template>
+  <view class="storeInfo-content">
+    <view class="top"></view>
+    <u-navbar title="经营信息" :autoBack="true" :placeholder="true"></u-navbar>
+    <view class="pub-box">
+      <view class="flex justify-between">
+        <!-- //0:待审核,1:通过,2:驳回 -->
+        <view class="status" v-if='infoObj.nameStatus.status==2'>
+          <image src="/static/login/status3.png" mode="aspectFit"></image>
+          <text class='red'>审核驳回</text>
+        </view>
+        <view class="status" v-if='infoObj.nameStatus.status==0'>
+          <image src="/static/login/status1.png" mode="aspectFit"></image>
+          <text class='blue'>待审核</text>
+        </view>
+      </view>
+      <view class="des" v-if='infoObj.nameStatus.status==2'>
+        说明:{{infoObj.nameStatus.remark}}
+      </view>
+      <view class="des" v-if='infoObj.nameStatus.status==0'>
+        提交的信息待审核中
+      </view>
+
+    </view>
+
+    <view class="pub-box u-flex u-row-between">
+      <view class="title">门店名称</view>
+      <u-input v-model="value" type="text" :border="false" :clearable="false" inputAlign='right' placeholder='请输入' />
+    </view>
+
+    <view class="u-flex btn-box sub-bottom">
+      <button class="cu-btn round line-gray  shadow " @click.native='goPage'>返回</button>
+      <button class="cu-btn bg-blue-gra round u-flex-1 " @click='submit' v-if='infoObj.nameStatus.status || infoObj.nameStatus.status==null'>提交审核</button>
+    </view>
+  </view>
+
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      value: "",
+      infoObj: {}
+    };
+  },
+  onReady() {
+  },
+  onLoad(Option) {
+    let data = JSON.parse(decodeURIComponent(Option.params));
+    this.infoObj = data
+    console.log( this.infoObj)
+  },
+  methods: {
+    goPage() {
+      uni.navigateBack({
+        delta: 1
+      });
+    },
+    submit() {
+      const params = {
+        afterValue: this.infoObj.storeName,
+        beforeValue: this.value,
+        merchantId: this.infoObj.merchantId,
+        status: 0,
+        type: 0 //0门店名称 1经营资质
+      }
+
+      this.$http.post('/localMerchantInfoChangeExamine/localMerchantInfoChangeExamine/add', params).then(res => {
+        if (res.data.success) {
+          uni.showToast({
+            icon: 'none',
+            title: '提交成功'
+          })
+          this.goPage()
+        } else {
+          uni.showToast({
+            icon: 'none',
+            title: res.data.message
+          })
+        }
+      })
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.top {
+  width: 100%;
+  height: var(--status-bar-height);
+  background: linear-gradient(87deg, #ffffff 0%, #a3cdff 100%),
+    linear-gradient(360deg, #ffffff 0%, rgba(255, 255, 255, 0) 100%);
+}
+.storeInfo-content {
+  background: #f7f8fc;
+  height: 100vh;
+  .pub-box {
+    background: #fff;
+    padding: 0 40rpx;
+    margin-bottom: 16rpx;
+  }
+  .status {
+    font-size: 36upx;
+    color: #596abb;
+    font-weight: 500;
+    margin-bottom: 10upx;
+    padding-top: 18rpx;
+
+    text {
+      margin-left: 5upx;
+    }
+
+    image {
+      vertical-align: text-top;
+      width: 40upx;
+      height: 40upx;
+    }
+  }
+  .des {
+    color: #666;
+    font-size: 24rpx;
+    padding-bottom: 18rpx;
+  }
+  .title {
+    font-size: 28rpx;
+    color: #333;
+  }
+  .red {
+    color: #f34f4f;
+    font-weight: 500;
+  }
+  .blue {
+    color: #596abb;
+    font-weight: 500;
+  }
+}
+.sub-bottom {
+  position: fixed;
+  width: 100%;
+  bottom: 0;
+  background: #ffffff;
+  border-top: 1px solid #eeeeee;
+}
+.btn-box {
+  background-color: #fff;
+  padding: 16rpx 24rpx 20rpx 24rpx;
+  border-top: 1rpx solid #eee;
+  display: flex;
+  justify-content: center;
+  .btn {
+    font-size: 28rpx;
+    border-radius: 54rpx;
+    height: 68rpx;
+    line-height: 68rpx;
+    text-align: center;
+  }
+  .line-gray {
+    width: 205rpx;
+    margin-right: 24rpx;
+    border: 1rpx solid #ccc;
+  }
+ 
+}
+::v-deep.cu-btn[class*="line"]::after {
+  border: none;
+}
+</style>

+ 271 - 0
pages/store/storeQualification.vue

@@ -0,0 +1,271 @@
+<template>
+  <view class="storeInfo-content">
+    <view class="top"></view>
+    <u-navbar title="经营资质" :autoBack="true" :placeholder="true"></u-navbar>
+    <view class="pub-box">
+      <view class="flex justify-between">
+        <!-- //0:待审核,1:通过,2:驳回 -->
+        <view class="status" v-if='infoObj.shopStatus.status==2'>
+          <image src="/static/login/status3.png" mode="aspectFit"></image>
+          <text class='red'>审核驳回</text>
+        </view>
+        <view class="status" v-if='infoObj.shopStatus.status==0'>
+          <image src="/static/login/status1.png" mode="aspectFit"></image>
+          <text class='blue'>待审核</text>
+        </view>
+      </view>
+      <view class="des" v-if='infoObj.shopStatus.status==2'>
+        说明:{{infoObj.shopStatus.remark}}
+      </view>
+      <view class="des" v-if='infoObj.shopStatus.status==0'>
+        提交的经营资质信息待审核中
+      </view>
+
+    </view>
+
+    <view class="pub-box" v-for='(item,index) in dynamicList' :key='index'>
+      <view class='title-box'>
+        <view class='title'>{{item.qualificationName}}</view>
+        <i class="text-bg-w "></i>
+      </view>
+      <view class="business-img flex align-center">
+        <Upload width="332" height="190" :maxCount="1" :fileList.sync="item.specialArr" :previewFullImage="false"
+          delIcon='trash' :isImage='true' @complete="onUpload($event, item)" @loadIng='loadIng'>
+          <image class='img' :src="item.special ? item.special : '/static/login/shiping.png'" mode="">
+          </image>
+        </Upload>
+      </view>
+    </view>
+    <view class="u-flex btn-box sub-bottom">
+      <view class="btn cancel" @click='goPage'>返回</view>
+      <button class="cu-btn bg-blue-gra round u-flex-1" @click.native="submit" :disabled='disabled'
+        v-if='infoObj.shopStatus.status || infoObj.shopStatus.status==null'>提交审核</button>
+    </view>
+  </view>
+
+</template>
+
+<script>
+import Upload from '@/components/upload/index.vue';
+import configService from '@/common/service/config.service'
+export default {
+  components: {
+    Upload
+  },
+  data() {
+    return {
+      value: "",
+      dynamicList: [],
+      infoObj: {},
+      fileObj: {},
+      disabled: false
+    };
+  },
+  onReady() {
+  },
+  onLoad(Option) {
+    let data = JSON.parse(decodeURIComponent(Option.params));
+    this.infoObj = data
+    this.setValue()
+    console.log(data)
+
+  },
+  methods: {
+    onUpload(event, item) {
+      this.fileObj[item.key] = event.map(f => `${configService.apiUrl}/${f.message}`).join();
+      item.special = ''
+    },
+    goPage() {
+      uni.navigateBack({
+        delta: 1
+      });
+    },
+    submit() {
+      let self = this
+      const hasError = this.dynamicList.some(e => {
+        for (var i in this.fileObj) {
+          if (i == e.key && !self.fileObj[i]) {
+            uni.showToast({
+              icon: 'none',
+              title: `请上传${e.qualificationName}`
+            });
+            return true;
+          }
+        }
+        return false;
+      });
+      if (hasError) return;
+      const imgArr = []
+      this.dynamicList.forEach((e => {
+        for (var key in this.fileObj) {
+          if (key == e.key) {
+            imgArr.push({
+              categoryId: e.id,
+              categoryName: e.categoryName,
+              special: this.fileObj[key],
+              qualificationName: e.qualificationName
+            })
+          }
+        }
+      }))
+      const params = {
+        afterValue: JSON.stringify(imgArr),
+        beforeValue: JSON.stringify(this.infoObj.qualificationList),
+        merchantId: this.infoObj.merchantId,
+        status: 0,
+        type: 1 //0门店名称 1经营资质
+      }
+
+      this.$http.post('/localMerchantInfoChangeExamine/localMerchantInfoChangeExamine/add', params).then(res => {
+        if (res.data.success) {
+          uni.showToast({
+            icon: 'none',
+            title: '提交成功'
+          })
+          this.goPage()
+        } else {
+          uni.showToast({
+            icon: 'none',
+            title: res.data.message
+          })
+        }
+      })
+    },
+    setValue() {
+      const sourceList = this.infoObj.qualificationList || [];
+      this.dynamicList = sourceList.map((element, index) => {
+        const newKey = 'key' + index;
+        this.$set(this.fileObj, newKey, '');
+        this.fileObj[newKey] = element.special;
+        return {
+          ...element,
+          specialArr: [],
+          key: newKey
+        };
+      });
+    },
+    loadIng(val) {
+      this.disabled = val
+    }
+
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.top {
+  width: 100%;
+  height: var(--status-bar-height);
+  background: linear-gradient(87deg, #ffffff 0%, #a3cdff 100%),
+    linear-gradient(360deg, #ffffff 0%, rgba(255, 255, 255, 0) 100%);
+}
+.storeInfo-content {
+  background: #f7f8fc;
+  height: 100vh;
+  .pub-box {
+    background: #fff;
+    padding: 0 40rpx;
+    margin-bottom: 16rpx;
+  }
+  .status {
+    font-size: 36upx;
+    color: #596abb;
+    font-weight: 500;
+    margin-bottom: 10upx;
+    padding-top: 18rpx;
+
+    text {
+      margin-left: 5upx;
+    }
+
+    image {
+      vertical-align: text-top;
+      width: 40upx;
+      height: 40upx;
+    }
+  }
+  .des {
+    color: #666;
+    font-size: 24rpx;
+    padding-bottom: 18rpx;
+  }
+  .title {
+    font-size: 28rpx;
+    color: #333;
+  }
+  .red {
+    color: #f34f4f;
+    font-weight: 500;
+  }
+  .blue {
+    color: #596abb;
+    font-weight: 500;
+  }
+  .title-box {
+    position: relative;
+    display: inline-block;
+    margin-bottom: 20rpx;
+  }
+  .title {
+    font-weight: 500;
+    font-size: 30rpx;
+    color: #333;
+    margin-top: 16rpx;
+  }
+  .text-bg-w {
+    display: block;
+    width: 100%;
+    height: 5rpx;
+    background: linear-gradient(90deg, #88bfff 0%, #449aff 100%);
+    border-radius: 8rpx;
+    position: absolute;
+    bottom: 4rpx;
+  }
+}
+.business-img {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin: 0 auto;
+  padding-bottom: 20rpx;
+
+  image {
+    width: 100%;
+    height: 100%;
+  }
+  .img {
+    height: 190rpx;
+    width: 332rpx;
+  }
+}
+.sub-bottom {
+  position: fixed;
+  width: 100%;
+  bottom: 0;
+  background: #ffffff;
+  border-top: 1px solid #eeeeee;
+}
+.btn-box {
+  background-color: #fff;
+  padding: 16rpx 24rpx 20rpx 24rpx;
+  border-top: 1rpx solid #eee;
+  display: flex;
+  justify-content: center;
+  .btn {
+    font-size: 28rpx;
+    border-radius: 54rpx;
+    height: 68rpx;
+    line-height: 68rpx;
+    text-align: center;
+  }
+  .cancel {
+    border: 1rpx solid #ccc;
+    color: #999999;
+    width: 205rpx;
+    margin-right: 24rpx;
+  }
+}
+::v-deep .u-delete-icon {
+  background: rgba(0, 0, 0, 0.6) !important;
+}
+</style>

+ 32 - 6
pages/store/tdtuMap.vue

@@ -32,6 +32,7 @@
 </script>
 
 <script module="randerJSMap" lang="renderjs">
+	import mapIcon from "@/static/map-icon.png"
 	export default {
 		data() {
 			return {
@@ -160,9 +161,9 @@
 
 					// 2. 创建自定义图标(红色标记)
 					const icon = new T.Icon({
-						iconUrl: this.generateMarkerIcon('#ff0000'),
-						iconSize: new T.Point(30, 30),
-						iconAnchor: new T.Point(15, 30)
+						iconUrl:mapIcon,
+						iconSize: new T.Point(28, 28),
+						iconAnchor: new T.Point(14, 28)
 					});
 
 					// 3. 创建标记(使用T.Marker类)
@@ -172,7 +173,27 @@
 						draggable: false
 					});
 
-					// 4. 创建文本标签
+						// 4. 先创建一个临时div来测量文字宽度
+						const measureDiv = document.createElement('div');
+						measureDiv.style.position = 'absolute';
+						measureDiv.style.visibility = 'hidden';
+						measureDiv.style.whiteSpace = 'nowrap';
+						measureDiv.style.fontSize = '14px';
+						measureDiv.style.fontWeight = '500';
+						measureDiv.style.padding = '6px 10px';
+						measureDiv.innerText = address || '未知位置';
+						document.body.appendChild(measureDiv);
+
+						const textHeight = measureDiv.offsetHeight;
+						const textWidth = measureDiv.offsetWidth;
+						document.body.removeChild(measureDiv);
+
+						// 计算偏移量:水平居中,垂直向上偏移(文字框高度的一半 + 标记高度的一半 + 间距)
+						const offsetX = -textWidth / 2;  // 水平居中:文字框中心对准标记中心
+						const offsetY = -textHeight - 7; // 向上偏移:文字框高度 + 7px 间距
+						
+
+					// 5. 创建文本标签
 					this.labelRef = new T.Label({
 						text: address || '未知位置',
 						position: lngLat,
@@ -184,9 +205,9 @@
 							borderRadius: 4,
 							fontSize: '14px',
 							fontWeight: '500',
-							padding: '6px 10px'
+							padding: '18px 12px 18px 24px'
 						},
-						offset: new T.Point(0, -40) // 向上偏移
+						offset: new T.Point(offsetX, offsetY) // 向上偏移
 					});
 
 					// 5. 添加到地图
@@ -621,4 +642,9 @@
 			transform: scale(1.2);
 		}
 	}
+	::v-deep .tdt-label {
+		border-radius: 8px !important;
+		-webkit-border-radius: 8px !important;
+		font-weight: 500 !important;
+	}
 </style>

+ 32 - 4
plugin/colorui/main.css

@@ -2340,7 +2340,7 @@ button.cuIcon.lg {
 
 .cu-form-group {
 	background-color: #ffffff;
-	margin: 1upx 18upx;
+	margin: 1upx 16upx;
 	display: flex;
 	align-items: center;
 	min-height: 80upx;
@@ -2367,11 +2367,18 @@ button.cuIcon.lg {
 	background: linear-gradient(90deg, #88BFFF 0%, #449AFF 100%);
 	border-radius: 4px 4px 4px 4px;
 }
+.text-bg-w{
+	display: block;
+	width: 100%;
+	height: 5rpx;
+	background: linear-gradient(90deg, #88BFFF 0%, #449AFF 100%);
+	border-radius: 8rpx;
+}
 
 .cu-form-group input {
 	flex: 1;
-	font-size: 30upx;
-	color: #555;
+	font-size: 28upx;
+	color: #333;
 	padding-right: 20upx;
 }
 
@@ -3476,6 +3483,10 @@ scroll-view.cu-steps .cu-item {
 	background-color: #1cbbb4;
 	color: #ffffff;
 }
+.bg-blue-gra{
+	background: linear-gradient( 90deg, #77B6FF 0%, #449AFF 100%);
+	color:#fff;
+}
 
 .bg-blue {
 	background-color: #0081ff;
@@ -3853,6 +3864,9 @@ scroll-view.cu-steps .cu-item {
 	font-size: 30upx;
 	font-weight: bold;
 }
+.text-500{
+	font-weight: 500;
+}
 
 .text-center {
 	text-align: center;
@@ -3977,4 +3991,18 @@ scroll-view.cu-steps .cu-item {
 	justify-content: space-between;
 }
 
-
+  /* 超出一行  */
+.one-line-text {
+	display: -webkit-box;
+	-webkit-box-orient: vertical;
+	-webkit-line-clamp: 1;
+	overflow: hidden;
+}
+  /* 超出两行  */
+.tow-line-text {
+	display: -webkit-box;
+	-webkit-box-orient: vertical;
+	-webkit-line-clamp: 2;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}

BIN
static/arrow.png


BIN
static/login/add.png


BIN
static/login/card-1.png


BIN
static/login/card-2.png


BIN
static/login/jiankang.png


BIN
static/login/right-icon.png


BIN
static/login/shiping.png


BIN
static/login/swiper1-bar.png


BIN
static/login/swiper1.png


BIN
static/login/swiper2-bar.png


BIN
static/login/swiper2.png


BIN
static/login/swiper3-bar.png


BIN
static/login/swiper3.png


BIN
static/map-icon.png


+ 25 - 11
store/index.js

@@ -34,24 +34,36 @@ export default new Vuex.Store({
     // 登录
     mLogin({ commit }, param) {
       return new Promise((resolve, reject) => {
-       api.loginNew(param.phone,param.code).then(response => {
+       api.loginNew(param.phone,param.code).then(async response => {
           if(response.data.code ==200){ 
             const result = response.data.result
             const userInfo = result.userInfo
-            console.log(result)
-            if (userInfo.userState === '1' || userInfo.userState === '2'){
-              uni.setStorageSync(ACCESS_TOKEN,result.token);
-              uni.setStorageSync(USER_INFO,userInfo);
+            const { userState, merchantId, passWord, name, ordinaryUserId, phone } = userInfo;
+           
+            if (userInfo.merchantId) {
+
+              uni.setStorageSync(ACCESS_TOKEN, result.token);
               commit('SET_TOKEN', result.token)
-              commit('SET_AVATAR', userInfo.avatar)
-              commit('SET_NAME', { username: userInfo.username,realname: userInfo.realname})
-              resolve(response)
-            }else{
+
+              api.shopInfo(userInfo.merchantId).then(res => {
+                let data = res.data.result
+                if (data.localMerchantInfoExamine.status == 1) {
+                  uni.setStorageSync(USER_INFO, userInfo);
+                  commit('SET_AVATAR', userInfo.avatar)
+                  commit('SET_NAME', { username: userInfo.username, realname: userInfo.realname })
+                  resolve(response)
+                } else {
+                  uni.navigateTo({
+                      url: `/pages/login/settled?loginType=${userState || ''}&merchantId=${merchantId || ''}&passWord=${param.code}&name=${name || ''}&ordinaryUserId=${ordinaryUserId || ''}&phone=${param.phone}`
+                  });
+                }
+              })
+            } else {
               uni.navigateTo({
-                url: `/pages/login/settled?loginType=`+userInfo.userState+'&merchantId='+userInfo.merchantId+'&passWord='+userInfo.passWord
-                   +'&name='+userInfo.name +'&ordinaryUserId='+userInfo.ordinaryUserId+'&phone='+userInfo.phone
+                  url: `/pages/login/settled?loginType=${userState || ''}&merchantId=${merchantId || ''}&passWord=${param.code}&name=${name || ''}&ordinaryUserId=${ordinaryUserId || ''}&phone=${param.phone}`
               });
             }
+            
           }else if(response.data.code == 501) {
             const msgParams ={
               msg: '当前手机号用户不存在,请先下载掌柜生活APP注册。',
@@ -71,6 +83,8 @@ export default new Vuex.Store({
         })
       })
     },
+    
+   
     //手机号登录
     PhoneLogin({ commit }, userInfo) {
       return new Promise((resolve, reject) => {