소스 검색

订气页面、收货地址页面、选择公司

qianduan 1 년 전
부모
커밋
2ff7c6fda6
62개의 변경된 파일3721개의 추가작업 그리고 189개의 파일을 삭제
  1. 16 0
      .hbuilderx/launch.json
  2. 2 2
      components/orderManagement.vue
  3. 41 18
      components/x-form.vue
  4. 94 0
      components/x-modal.vue
  5. 16 14
      components/x-navbottom.vue
  6. 8 2
      manifest.json
  7. 18 2
      pages.json
  8. 276 0
      pages/codeLogin.vue
  9. 84 0
      pages/home/company.vue
  10. 52 9
      pages/home/index.vue
  11. 8 9
      pages/index/codeTracing.vue
  12. 3 2
      pages/indexRouter.vue
  13. 54 24
      pages/login.vue
  14. 114 12
      pages/mine/addAddress.vue
  15. 49 18
      pages/mine/address.vue
  16. 4 4
      pages/mine/index.vue
  17. 29 17
      pages/mine/password.vue
  18. 37 24
      pages/mine/personal.vue
  19. 5 0
      pages/mine/system.vue
  20. 332 0
      pages/order/booking.vue
  21. 1 1
      pages/order/index.vue
  22. 112 31
      pages/register.vue
  23. 0 0
      unpackage/dist/dev/.automator/app-plus/.automator.json
  24. 0 0
      unpackage/dist/dev/app-plus/__uniappchooselocation.js
  25. BIN
      unpackage/dist/dev/app-plus/__uniapperror.png
  26. 0 0
      unpackage/dist/dev/app-plus/__uniappes6.js
  27. 0 0
      unpackage/dist/dev/app-plus/__uniappopenlocation.js
  28. 0 0
      unpackage/dist/dev/app-plus/__uniapppicker.js
  29. 6 0
      unpackage/dist/dev/app-plus/__uniappquill.js
  30. 0 0
      unpackage/dist/dev/app-plus/__uniappquillimageresize.js
  31. 0 0
      unpackage/dist/dev/app-plus/__uniappscan.js
  32. BIN
      unpackage/dist/dev/app-plus/__uniappsuccess.png
  33. 25 0
      unpackage/dist/dev/app-plus/__uniappview.html
  34. 8 0
      unpackage/dist/dev/app-plus/app-config-service.js
  35. 154 0
      unpackage/dist/dev/app-plus/app-config.js
  36. 9 0
      unpackage/dist/dev/app-plus/app-service.js
  37. 504 0
      unpackage/dist/dev/app-plus/app-view.js
  38. 0 0
      unpackage/dist/dev/app-plus/manifest.json
  39. 539 0
      unpackage/dist/dev/app-plus/static/fonts/demo.css
  40. 372 0
      unpackage/dist/dev/app-plus/static/fonts/demo_index.html
  41. 47 0
      unpackage/dist/dev/app-plus/static/fonts/iconfont.css
  42. 0 0
      unpackage/dist/dev/app-plus/static/fonts/iconfont.js
  43. 65 0
      unpackage/dist/dev/app-plus/static/fonts/iconfont.json
  44. BIN
      unpackage/dist/dev/app-plus/static/fonts/iconfont.ttf
  45. BIN
      unpackage/dist/dev/app-plus/static/fonts/iconfont.woff
  46. BIN
      unpackage/dist/dev/app-plus/static/fonts/iconfont.woff2
  47. BIN
      unpackage/dist/dev/app-plus/static/image/bottle.png
  48. 91 0
      unpackage/dist/dev/app-plus/static/js/announcements.js
  49. 176 0
      unpackage/dist/dev/app-plus/static/js/blockSort.js
  50. 370 0
      unpackage/dist/dev/app-plus/static/js/districtCode.js
  51. BIN
      unpackage/dist/dev/app-plus/static/logo.png
  52. BIN
      unpackage/dist/dev/app-plus/static/portrait.png
  53. BIN
      unpackage/dist/dev/app-plus/static/tab/dd.png
  54. BIN
      unpackage/dist/dev/app-plus/static/tab/dd_s.png
  55. BIN
      unpackage/dist/dev/app-plus/static/tab/sy.png
  56. BIN
      unpackage/dist/dev/app-plus/static/tab/sy_s.png
  57. BIN
      unpackage/dist/dev/app-plus/static/tab/wd.png
  58. BIN
      unpackage/dist/dev/app-plus/static/tab/wd_s.png
  59. BIN
      unpackage/dist/dev/app-plus/static/tab/xx.png
  60. BIN
      unpackage/dist/dev/app-plus/static/tab/xx_s.png
  61. 0 0
      unpackage/dist/dev/app-plus/view.css
  62. 0 0
      unpackage/dist/dev/app-plus/view.umd.min.js

+ 16 - 0
.hbuilderx/launch.json

@@ -0,0 +1,16 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+  // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+    "version": "0.0",
+    "configurations": [{
+     	"app-plus" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"default" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"type" : "uniCloud"
+     }
+    ]
+}

+ 2 - 2
components/orderManagement.vue

@@ -31,10 +31,10 @@
 			</view>
 			<view class="card_delivery" v-if="item.state == 5">
 				<view style="margin-right: 10rpx;flex: 1;">
-					<u-button type="warning" @click="goSecurityCheck(item)">入户安全检查</u-button>
+					<u-button type="primary" @click="goSecurityCheck(item)">修改订单</u-button>
 				</view>
 				<view style="margin-left: 10rpx;flex: 1;">
-					<u-button type="primary" @click="confirmedDelivery(item)">确认送达</u-button>
+					<u-button type="warning" @click="confirmedDelivery(item)">取消订单</u-button>
 				</view>
 			</view>
 		</view>

+ 41 - 18
components/x-form.vue

@@ -20,10 +20,10 @@
 					</view>
 				</u-form-item>
 				<u-form-item :required="item.required ? true : false" :label="item.label" :prop="item.field"
-					v-else-if="item.type == 'cascader' && !item.visible">
+					v-else-if="item.type == 'cascader' || item.type == 'select' && !item.visible">
 					<view class="card_form_item">
 						<u--input :placeholder="item.placeholder" suffixIcon="arrow-down"
-							v-model="model[`${item.field}`]" @focus="change"></u--input>
+							v-model="model[`${item.field}`]" @focus="change(item)"></u--input>
 					</view>
 				</u-form-item>
 				<u-form-item :required="item.required ? true : false" :label="item.label" :prop="item.field"
@@ -55,6 +55,7 @@
 				</u-form-item>
 			</view>
 		</u--form>
+		<u-picker :show="singleShow" :columns="columns"  keyName="label" @cancel="singleShow = false"></u-picker>
 		<u-picker :show="show" ref="uPicker" :columns="addressColumns" :defaultIndex="areaDetault" keyName="label"
 			@confirm="confirm" @change="changeHandler" @cancel="cancel"></u-picker>
 		<view style="width: 100%;height: 170rpx;"></view>
@@ -107,29 +108,45 @@
 		},
 		data() {
 			return {
+				singleShow: false,
 				show: false,
 				areaData: urbanArea(), //原始数据
 				addressColumns: [], //数据数组
 				areaDetault: [], //默认选中数据
 				fileList1: [],
+				columns: [],
 			}
 		},
 		mounted() {},
 		methods: {
-			change() {
-				// console.log(this.columns, 23)
-				this.show = true
-				this.addressColumns = [
-					this.areaData,
-					this.areaData[0].children,
-				];
-				this.$nextTick(() => {
-					if (this.model.hr) {
-						this.setDefault()
-					}
-				})
+			change(value) {
+				console.log(value,25)
+				if (value.type == 'cascader') {
+					this.show = true
+					this.addressColumns = [
+						this.areaData,
+						this.areaData[0].children,
+					];
+					this.$nextTick(() => {
+						if (this.model.hr) {
+							this.setDefault()
+						}
+					})
+				} else {
+					this.columns = value.options
+					this.singleShow = true
+				}
 			},
 			confirm(value) {
+				let arr = value.value
+				let arr1 = []
+				let arr2 = []
+				arr.forEach(item => {
+					arr1.push(item.value)
+					arr2.push(item.label)
+				})
+				this.model.hr = arr1.join('/')
+				this.model.region = arr2.join('/')
 				this.show = false
 				this.$emit('confirm', value)
 			},
@@ -220,10 +237,10 @@
 				})
 				//匹配省市区对应每列的第几个
 				arr = this.areaData.map(e => {
-					return e.label
+					return e
 				})
 				arr1 = this.areaData[index].children.map(e => {
-					return e.label
+					return e
 				})
 				this.addressColumns = [arr, arr1]
 				this.areaDetault = [index, index1]
@@ -237,10 +254,16 @@
 					picker = this.$refs.uPicker
 				} = e
 				if (columnIndex === 0) {
-					const children1 = this.areaData[index].children.map(e => {
-						return e.label
+					const children1 = this.areaData[index].children.map(e1 => {
+						return e1
 					})
 					picker.setColumnValues(1, children1)
+					if (columnIndex === 1) {
+						const children3 = this.areaData[indexs[0]].children[indexs[1]].children.map(e2 => {
+							return e2
+						})
+						picker.setColumnValues(2, children3)
+					}
 				}
 			},
 		}

+ 94 - 0
components/x-modal.vue

@@ -0,0 +1,94 @@
+<template>
+	<!-- 模态框 -->
+	<view class="card_modal center_in" v-if="showModal">
+		<view class="card_lk">
+			<view class="modal_title">{{title}}</view>
+			<view class="btn_modal">
+				<view class="item_btn center_in" @click="close">取消</view>
+				<view class="item_btn center_in" style="color: #f1a532;">删除</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'x-modal',
+		props: {
+			show: {
+				type: Boolean,
+				default () {
+					return false
+				}
+			},
+			title: {
+				type: String,
+				default () {
+					return ''
+				}
+			},
+		},
+		watch: {
+			show: {
+				handler(newVal) {
+					if (newVal) {
+						this.showModal = true
+					} else {
+						this.showModal = false
+					}
+				},
+				deep: true // 开启深度监听
+			}
+		},
+		data() {
+			return {
+				showModal: false,
+			}
+		},
+		methods:{
+			close(){
+				this.$emit('close')
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.card_modal {
+		position: fixed;
+		z-index: 10070;
+		inset: 0px;
+		background-color: rgba(0, 0, 0, 0.5);
+	}
+
+	.card_lk {
+		width: 60%;
+		display: flex;
+		flex-direction: column;
+		background-color: #fff;
+		border-radius: 30rpx;
+	}
+
+	.modal_title {
+		text-align: center;
+		font-size: 30rpx;
+		font-weight: 600;
+		padding: 30rpx 50rpx;
+	}
+
+	.btn_modal {
+		display: flex;
+		border-top: 1rpx solid #e7e6e4;
+	}
+
+	.item_btn {
+		flex: 1;
+		padding: 20rpx;
+		font-size: 30rpx;
+		font-weight: 600;
+	}
+
+	.item_btn:nth-child(1) {
+		border-right: 1rpx solid #e7e6e4;
+	}
+</style>

+ 16 - 14
components/x-navbottom.vue

@@ -30,22 +30,24 @@
 			return {
 				dataList: [],
 				list: [{
-					icon: 'icon-shouye',
-					title: '首页',
-				}, {
-					icon: 'icon-dingdan',
-					title: '订单',
-				}, {
-					icon: 'icon-a-xiaoxi',
-					title: '消息',
-				}, {
-					icon: 'icon-wode',
-					title: '我的',
-				}],
+						icon: 'icon-shouye',
+						title: '首页',
+					}, {
+						icon: 'icon-dingdan',
+						title: '订单',
+					},
+					// {
+					// 	icon: 'icon-a-xiaoxi',
+					// 	title: '消息',
+					// }, 
+					{
+						icon: 'icon-wode',
+						title: '我的',
+					}
+				],
 			}
 		},
-		mounted() {
-		},
+		mounted() {},
 		methods: {
 			gonavs(e, cindex) {
 				this.$emit('botomchos', cindex)

+ 8 - 2
manifest.json

@@ -44,7 +44,8 @@
             "ios" : {},
             /* SDK配置 */
             "sdkConfigs" : {
-                "push" : {}
+                "push" : {},
+                "maps" : {}
             }
         }
     },
@@ -70,5 +71,10 @@
     "uniStatistics" : {
         "enable" : false
     },
-    "vueVersion" : "2"
+    "vueVersion" : "2",
+    "h5" : {
+        "sdkConfigs" : {
+            "maps" : {}
+        }
+    }
 }

+ 18 - 2
pages.json

@@ -17,6 +17,11 @@
 				"navigationStyle": "custom"
 			}
 		}, {
+			"path": "pages/codeLogin",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		}, {
 			"path": "pages/register",
 			"style": {
 				"navigationStyle": "custom"
@@ -33,6 +38,12 @@
 			}
 		},
 		{
+			"path": "pages/home/company",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		},
+		{
 			"path": "pages/index/codeTracing",
 			"style": {
 				"navigationStyle": "custom"
@@ -41,8 +52,13 @@
 		{
 			"path": "pages/order/index",
 			"style": {
-				"navigationBarTitleText": "订单",
-				"enablePullDownRefresh": false
+				"navigationBarTitleText": "订单"
+			}
+		},
+		{
+			"path": "pages/order/booking",
+			"style": {
+				"navigationStyle": "custom"
 			}
 		},
 		{

+ 276 - 0
pages/codeLogin.vue

@@ -0,0 +1,276 @@
+<template>
+	<!-- 验证码登录 -->
+	<view>
+		<u-navbar title="" autoBack placeholder></u-navbar>
+		<view class="card_login">
+			<view class="card_head_logo">
+				<image class="mine_image" src="../static/logo.png" mode=""></image>
+				<view class="welcome_title">欢迎登录宝智达气瓶</view>
+			</view>
+			<u--form labelPosition="left" :model="formList" :rules="rules" ref="uForm">
+				<u-form-item label="手机号" prop="phone" labelWidth="80" borderBottom ref="item1">
+					<u--input v-model="formList.phone" border="none" placeholder="请填写手机号"></u--input>
+				</u-form-item>
+				<u-form-item label="验证码" prop="verifyCode" labelWidth="80" borderBottom>
+					<u--input v-model="formList.verifyCode" border="none" placeholder="请填写验证码"></u--input>
+					<u-button slot="right" @tap="getCode" :text="tips" type="success" size="mini"
+						:disabled="disabled1"></u-button>
+				</u-form-item>
+			</u--form>
+			<u-code ref="uCode" @change="codeChange" seconds="90" @start="disabled1 = true"
+				@end="disabled1 = false"></u-code>
+			<view class="btn_login">
+				<view class="title_register" @click="posswordLogin">密码登录</view>
+				<view class="title_register" @click="goRegister">去注册</view>
+			</view>
+			<view class="card_hint">
+				<view class="card_checkbox">
+					<u-checkbox-group @change="checkboxChange">
+						<u-checkbox name="asgas" shape="circle"></u-checkbox>
+					</u-checkbox-group>
+					<span class="message" :style="{display:hintShow ? 'block' : 'none'}">
+						请先阅读并同意协议
+					</span>
+				</view>
+				<view class="agreement_title">我已阅读并同意<span class="protocol_title">《用户协议》</span>、<span
+						class="protocol_title">《隐私政策》</span>,
+					并授权宝智达气瓶使用该宝智达气瓶账号信息(如昵称、头像、收货地址)进行统一管理
+				</view>
+			</view>
+			<view class="card_btn">
+				<u-button type="primary" :disabled="disabled" text="登录" @click="getLogin"></u-button>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				formList: {
+					phone: '',
+					verifyCode: '',
+				},
+				checked: false,
+				hintShow: false,
+				userInfo: {},
+				tips: '',
+				disabled1: false,
+				rules: {
+					phone: {
+						type: 'string',
+						required: true,
+						message: '请填写手机号',
+						trigger: ['blur']
+					},
+					verifyCode: {
+						type: 'string',
+						required: true,
+						message: '请填写验证码',
+						trigger: ['blur']
+					},
+				},
+			}
+		},
+		computed: {
+			disabled() {
+				if (this.formList.phone == '' || this.formList.verifyCode == '') {
+					return true;
+				} else {
+					return false;
+				}
+			}
+		},
+		// beforeCreate() {
+		// 	var token = this.$cache.getToken()
+		// 	if (token) {
+		// 		uni.redirectTo({
+		// 			url: '/pages/indexRouter'
+		// 		})
+		// 	}
+		// },
+		methods: {
+			checkboxChange() {
+				if (this.checked) {
+					this.checked = false
+				} else {
+					this.checked = true
+					this.hintShow = false
+				}
+			},
+			getLogin() {
+				if (!this.checked) {
+					this.hintShow = true
+				} else {
+					uni.showLoading({
+						title: '登录中...'
+					});
+					this.$api.post('/api/applet/login', {
+						phone: this.formList.phone,
+						verifyCode: this.formList.verifyCode
+					}).then((res) => {
+						if (res.code == 200) {
+							this.$cache.setToken(res.data.token)
+							this.getUserInfo()
+						} else {
+							uni.showToast({
+								title: res.data.msg,
+								icon: 'none'
+							});
+						}
+						uni.hideLoading();
+					})
+				}
+			},
+			getUserInfo() {
+				this.$api.get('/api/user/profile').then(res => {
+					if (res.code == 200) {
+						this.userInfo = res.data
+						this.$cache.setCache('userInfo', this.userInfo)
+						uni.redirectTo({
+							url: '/pages/indexRouter'
+						})
+					} else {
+						uni.showToast({
+							title: '当前用户不存在',
+							icon: 'none'
+						});
+					}
+				})
+			},
+			getCode() {
+				if (this.$refs.uCode.canGetCode) {
+					// 模拟向后端请求验证码
+					if (this.formList.phone) {
+						uni.showLoading({
+							title: '正在获取验证码'
+						})
+						// 通知验证码组件内部开始倒计时
+						this.$refs.uCode.start();
+						this.$api.get('/api/verify-code', {
+							phone: this.formList.phone,
+						}).then(res => {
+							if (res.code == 200) {
+								uni.hideLoading();
+								// 这里此提示会被this.start()方法中的提示覆盖
+								uni.$u.toast('验证码已发送');
+							}
+						})
+					} else {
+						uni.$u.toast('请先输入手机号');
+					}
+				} else {
+					uni.$u.toast('倒计时结束后再发送');
+				}
+			},
+			codeChange(text) {
+				this.tips = text;
+			},
+			// 密码登录
+			posswordLogin() {
+				uni.redirectTo({
+					url: '/pages/login'
+				})
+			},
+			// 注册
+			goRegister() {
+				uni.navigateTo({
+					url: '/pages/register'
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.welcome_title {
+		font-size: 46rpx;
+		font-weight: 600;
+		margin-bottom: 60rpx;
+		margin-top: 10rpx;
+	}
+
+	.card_head_logo {
+		margin-top: 50rpx;
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.card_login {
+		padding: 20rpx 40rpx;
+	}
+
+	.mine_image {
+		width: 100rpx;
+		height: 100rpx;
+	}
+
+	.login_input_box {
+		margin-bottom: 30rpx;
+	}
+
+	.title_register {
+		display: flex;
+		justify-content: flex-end;
+		font-size: 28rpx;
+		color: #494949;
+	}
+
+	.card_hint {
+		margin-top: 60rpx;
+		display: flex;
+		align-items: flex-start;
+	}
+
+	.agreement_title {
+		font-size: 26rpx;
+		color: #333;
+	}
+
+	.protocol_title {
+		color: #1177ff;
+	}
+
+	.card_btn {
+		margin-top: 20rpx;
+	}
+
+	.card_checkbox {
+		margin-top: 5rpx;
+		position: relative;
+		cursor: pointer;
+	}
+
+	.message {
+		display: none;
+		position: absolute;
+		padding: 5px 8px;
+		border: 1px solid #494949;
+		border-radius: 9px;
+		top: -36px;
+		font-size: 12px;
+		width: 110px;
+		background: #494949;
+		color: #fff;
+		left: -6px;
+	}
+
+	.message::after {
+		content: '';
+		position: absolute;
+		left: 8px;
+		top: 100%;
+		border: 8px solid transparent;
+		border-top: 6px solid #494949;
+		margin-left: -2px;
+	}
+
+	.btn_login {
+		margin-top: 20rpx;
+		display: flex;
+		justify-content: space-between;
+	}
+</style>

+ 84 - 0
pages/home/company.vue

@@ -0,0 +1,84 @@
+<template>
+	<!-- 选择公司 -->
+	<view>
+		<u-navbar title="选择公司" autoBack placeholder></u-navbar>
+		<view class="card_company" v-if="list.length > 0">
+			<view class="hint_title">请选择燃气公司</view>
+			<view class="item_company" v-for="(item,index) in list" :key="index" @click="goBooking">
+				<u--image :showLoading="true" :src="src" width="80px" height="80px" @click="click"></u--image>
+				<view class="wordage">
+					<view class="title_company">{{item.title}}</view>
+					<view class="distance_title">距您{{item.num}}</view>
+				</view>
+			</view>
+		</view>
+		<view style="margin-top: 30%;" v-else>
+			<u-empty mode="list" text="该区/县暂无商家入驻"></u-empty>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				src: 'https://cdn.uviewui.com/uview/album/1.jpg',
+				list: [{
+					title: '宝智达燃气有限公司',
+					num: '10.12km',
+				}, {
+					title: '宝智达燃气有限公司',
+					num: '10.12km',
+				}, ]
+			}
+		},
+		methods: {
+			// 去订气
+			goBooking() {
+				uni.navigateTo({
+					url: '/pages/order/booking'
+				});
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.card_company {
+		display: flex;
+		flex-direction: column,
+	}
+
+	.hint_title {
+		margin-left: 30rpx;
+		margin-top: 30rpx;
+		font-size: 26rpx;
+		color: #909399;
+	}
+
+	.item_company {
+		display: flex;
+		margin: 30rpx 30rpx 0rpx 30rpx;
+		border: 1rpx solid #e7e6e4;
+		border-radius: 10rpx;
+	}
+
+	.wordage {
+		display: flex;
+		flex-direction: column;
+		justify-content: space-evenly;
+		margin-left: 20rpx;
+		padding: auto 0px;
+	}
+
+	.title_company {
+		color: #303133;
+		font-size: 30rpx;
+		font-weight: 600;
+	}
+
+	.distance_title {
+		font-size: 24rpx;
+		color: #909399;
+	}
+</style>

+ 52 - 9
pages/home/index.vue

@@ -27,26 +27,66 @@
 			return {
 				dataList: [],
 				stationList: [{
-					id: 'inspect',
+					id: 'Booking',
 					title: '订气',
 					icon: 'icon-lpg',
 					color: '#f4b237',
 				}],
+				city:'',
+				latitude:'',
+				longitude:'',
 			}
 		},
+		onShow() {
+			this.getLocation()
+		},
 		mounted() {
+			this.getLocation()
 			var userInfo = this.$cache.getCache('userInfo')
-			console.log(userInfo,25)
+			// console.log(userInfo, 25)
 		},
 		methods: {
+			//获取经纬度
+			getLocation() {
+				console.log(24)
+				uni.getLocation({
+					type: 'gcj02', //返回可以用于uni.openLocation的经纬度
+					geocode: true,
+					success: (res) => {
+						console.log(res,9998)
+						// #ifdef APP-PLUS
+						this.city = res.address.city;
+						// #endif
+						this.latitude = res.latitude;
+						this.longitude = res.longitude;
+						// #ifdef H5
+						uni.request({
+							url: 'https://restapi.amap.com/v3/geocode/regeo', //逆地理编码接口地址。
+							data: {
+								key: '2eba463a7c621e888e478eee3f3209c9',
+								//location:经纬度  lng :经度  lat:纬度  
+								location: this.longitude + ',' + this.latitude,
+								radius: 1000,
+								extensions: 'all',
+								batch: false,
+								roadlevel: 0
+							},
+							success: (res) => {
+								console.log(res.data,326326);
+								//详细地址信息
+								if (res.statusCode == 200 && res.data.info == 'OK') {
+									this.city = res.data.regeocode.addressComponent.city
+								}
+							}
+						});
+						// #endif
+					},
+				});
+			},
 			scanCodes(value) {
-				if (value.id == '25' || value.id == '27') {
+				if (value.id == 'Booking') {
 					uni.navigateTo({
-						url: '/pages/home/selectStore?id=' + value.id + '&title=' + value.title
-					});
-				} else {
-					uni.navigateTo({
-						url: '/pages/order/delivery?id=' + value.id + '&title=' + value.title
+						url: '/pages/home/company'
 					});
 				}
 			},
@@ -97,7 +137,8 @@
 		display: flex;
 		align-items: center;
 		flex-direction: column;
-		justify-content: center;
+		// justify-content: center;
+		justify-content: flex-end;
 		width: 100%;
 		height: 240rpx;
 		background-color: #027DB4;
@@ -110,7 +151,9 @@
 	}
 
 	.title_hint {
+		height: 80rpx;
 		margin-top: 20rpx;
+		margin-bottom: 20rpx;
 		color: #fff;
 		width: 80%;
 		text-align: center;

+ 8 - 9
pages/index/codeTracing.vue

@@ -56,7 +56,7 @@
 		},
 		data() {
 			return {
-				frequencyCoding: '',
+				frequencyCoding: '377825938847',
 				gasCylinderList: {},
 				operationLogList: [],
 				basicsList: [{
@@ -107,6 +107,9 @@
 				}],
 			}
 		},
+		onLoad(option) {
+			console.log(option,265)
+		},
 		methods: {
 			// 扫一扫
 			sweep() {
@@ -160,10 +163,6 @@
 </script>
 
 <style lang="scss" scoped>
-	page {
-		background-color: #f4f4f5 !important;
-	}
-
 	.card_order_details {
 		padding: 30rpx 40rpx 10rpx 40rpx;
 		background-color: #fff;
@@ -203,15 +202,14 @@
 	}
 
 	.card_basic_information {
-		background-color: #fff;
-		margin: 20rpx;
-		border-radius: 10rpx;
+		border-top: 10px solid #f5f5f5;
+		padding: 20rpx;
 	}
 
 	.headline {
 		font-size: 32rpx;
 		color: #000;
-		padding: 20rpx 20rpx 20rpx 30rpx;
+		padding: 0rpx 10rpx 20rpx 10rpx;
 		border-bottom: 1rpx solid #e7e6e4;
 	}
 
@@ -235,6 +233,7 @@
 		width: 38%;
 		text-align: right;
 		font-size: 28rpx;
+		color: #3eacef;
 	}
 
 	.basics_right {

+ 3 - 2
pages/indexRouter.vue

@@ -3,8 +3,9 @@
 	<view>
 		<Home v-if="nowchos === 0"></Home>
 		<Order v-else-if="nowchos === 1"></Order>
-		<Information v-else-if="nowchos === 2"></Information>
-		<Mine ref="mine" v-else-if="nowchos === 3"></Mine>
+		<Mine ref="mine" v-else-if="nowchos === 2"></Mine>
+		<!-- <Information v-else-if="nowchos === 2"></Information>
+		<Mine ref="mine" v-else-if="nowchos === 3"></Mine> -->
 		<view class="bottomboxs">
 			<x-navbottom :nowchos='nowchos' @botomchos='botomchos'></x-navbottom>
 		</view>

+ 54 - 24
pages/login.vue

@@ -7,15 +7,18 @@
 				<image class="mine_image" src="../static/logo.png" mode=""></image>
 				<view class="welcome_title">欢迎登录宝智达气瓶</view>
 			</view>
-			<view class="login_input_box">
-				<u--input v-model="formList.account" fontSize="18px" placeholder="请输入账号" border="bottom"
-					clearable></u--input>
+			<u--form labelPosition="left" :model="formList" :rules="rules" ref="uForm">
+				<u-form-item label="手机号" prop="phone" labelWidth="80" borderBottom ref="item1">
+					<u--input v-model="formList.phone" border="none" placeholder="请填写手机号"></u--input>
+				</u-form-item>
+				<u-form-item label="密码" prop="password" labelWidth="80" borderBottom ref="item1">
+					<u--input v-model="formList.password" type="password" border="none" placeholder="请填写密码"></u--input>
+				</u-form-item>
+			</u--form>
+			<view class="btn_login">
+				<view class="title_register" @click="codeLogin">验证码登录</view>
+				<view class="title_register" @click="goRegister">去注册</view>
 			</view>
-			<view class="login_input_box">
-				<u--input v-model="formList.password" fontSize="18px" placeholder="请输入密码" password border="bottom"
-					clearable></u--input>
-			</view>
-			<view class="title_register" @click="goRegister">去注册</view>
 			<view class="card_hint">
 				<view class="card_checkbox">
 					<u-checkbox-group @change="checkboxChange">
@@ -42,9 +45,23 @@
 		data() {
 			return {
 				formList: {
-					account: '',
+					phone: '',
 					password: '',
 				},
+				rules: {
+					phone: {
+						type: 'string',
+						required: true,
+						message: '请填写手机号',
+						trigger: ['blur']
+					},
+					password: {
+						type: 'string',
+						required: true,
+						message: '请填写密码',
+						trigger: ['blur']
+					},
+				},
 				checked: false,
 				hintShow: false,
 				userInfo: {},
@@ -52,7 +69,7 @@
 		},
 		computed: {
 			disabled() {
-				if (this.formList.account == '' || this.formList.password == '') {
+				if (this.formList.phone == '' || this.formList.password == '') {
 					return true;
 				} else {
 					return false;
@@ -83,15 +100,17 @@
 					uni.showLoading({
 						title: '登录中...'
 					});
-					this.$api.post('/api/login', {
-						type: 1,
-						mobile: true,
-						username: this.formList.account,
+					this.$api.post('/api/applet/login', {
+						phone: this.formList.phone,
 						password: this.formList.password
 					}).then((res) => {
 						if (res.code == 200) {
-							this.$cache.setToken(res.token)
+							this.$cache.setToken(res.data.token)
 							this.getUserInfo()
+							
+							// uni.redirectTo({
+							// 	url: '/pages/indexRouter'
+							// })
 						} else {
 							uni.showToast({
 								title: res.data.msg,
@@ -103,9 +122,10 @@
 				}
 			},
 			getUserInfo() {
-				this.$api.get('/api/user/profile').then(res => {
+				this.$api.get('/api/applet/profile').then(res => {
 					if (res.code == 200) {
-						this.userInfo = res.data.user
+						console.log(res,24)
+						this.userInfo = res.data
 						this.$cache.setCache('userInfo', this.userInfo)
 						uni.redirectTo({
 							url: '/pages/indexRouter'
@@ -118,8 +138,14 @@
 					}
 				})
 			},
+			// 验证码登录
+			codeLogin() {
+				uni.redirectTo({
+					url: '/pages/codeLogin'
+				})
+			},
 			// 注册
-			goRegister(){
+			goRegister() {
 				uni.navigateTo({
 					url: '/pages/register'
 				})
@@ -153,15 +179,13 @@
 		height: 100rpx;
 	}
 
-	.login_input_box {
-		margin-bottom: 30rpx;
-	}
-	.title_register{
+	.title_register {
 		display: flex;
 		justify-content: flex-end;
-		font-size: 30rpx;
+		font-size: 28rpx;
 		color: #494949;
 	}
+
 	.card_hint {
 		margin-top: 60rpx;
 		display: flex;
@@ -169,7 +193,7 @@
 	}
 
 	.agreement_title {
-		font-size: 30rpx;
+		font-size: 26rpx;
 		color: #333;
 	}
 
@@ -210,4 +234,10 @@
 		border-top: 6px solid #494949;
 		margin-left: -2px;
 	}
+
+	.btn_login {
+		margin-top: 20rpx;
+		display: flex;
+		justify-content: space-between;
+	}
 </style>

+ 114 - 12
pages/mine/addAddress.vue

@@ -6,13 +6,20 @@
 			<x-form ref="personage" :list="list" :model="model" :rules="rules" btnTitle="保存地址" @confirm="confirm"
 				@clientele="clientele"></x-form>
 		</view>
+		<x-modal :show="show" :title="title" @close="show = false"></x-modal>
 	</view>
 </template>
 
 <script>
+	import {
+		urbanArea
+	} from '@/static/js/districtCode.js'
 	export default {
 		data() {
 			return {
+				show: false,
+				title: '地址删除后无法恢复是否删除地址?',
+				areaData: urbanArea(), //原始数据
 				deleteState: false,
 				list: [{
 					field: 'name',
@@ -21,7 +28,7 @@
 					type: 'input',
 					required: true,
 				}, {
-					field: 'principalPhone',
+					field: 'phone',
 					label: '手机号码',
 					placeholder: '请输入手机号码',
 					type: 'input',
@@ -39,17 +46,16 @@
 					type: 'input',
 					required: true,
 				}, {
-					field: 'default',
+					field: 'isDefault',
 					label: '设置默认地址',
 					type: 'default',
 				}],
 				model: {
 					name: '',
-					principalPhone: '',
-					type: '',
+					phone: '',
 					region: '',
 					address: '',
-					default: false,
+					isDefault: false,
 				},
 				rules: {
 					'name': {
@@ -58,18 +64,12 @@
 						message: '请输入姓名',
 						trigger: ['blur', 'change']
 					},
-					'principalPhone': {
+					'phone': {
 						type: 'string',
 						required: true,
 						message: '请输入手机号码',
 						trigger: ['blur', 'change']
 					},
-					'type': {
-						type: 'number',
-						required: true,
-						message: '请选择客户类型',
-						trigger: ['blur', 'change']
-					},
 					'region': {
 						type: 'string',
 						required: true,
@@ -83,12 +83,114 @@
 						trigger: ['blur', 'change']
 					},
 				},
+				regionCode: [],
+				addressId: '',
 			}
 		},
 		onLoad(value) {
+			// console.log(value, 24)
 			if (value.revamp == 'true') {
 				this.deleteState = true
+				this.getListDetails(value.id)
+				this.addressId = value.id
+			} else {
+				this.deleteState = false
 			}
+		},
+		methods: {
+			confirm(value) {
+				this.regionCode = value.value
+				this.model.city = this.regionCode[0].value
+				this.model.area = this.regionCode[1].value
+				let arr1 = []
+				let arr2 = []
+				this.regionCode.forEach(item => {
+					arr1.push(item.value)
+					arr2.push(item.label)
+				})
+				this.model.hr = arr1.join('/')
+				this.model.region = arr2.join('/')
+			},
+			clientele() {
+				// console.log(this.model, 234)
+				if (!this.deleteState) {
+					// 添加
+					const param = {
+						...this.model
+					}
+					delete param.region
+					this.$api.post('/api/applet/address', param).then(res => {
+						if (res.code == 200) {
+							uni.navigateBack({
+								delta: 1
+							});
+						}
+					})
+				} else {
+					// 修改
+					const param = {
+						...this.model
+					}
+					delete param.region
+					delete param.hr
+					console.log(param, 25)
+					this.$api.put('/api/applet/address', param).then(res => {
+						if (res.code == 200) {
+							uni.navigateBack({
+								delta: 1
+							});
+						}
+					})
+				}
+			},
+			// 删除
+			rightClick() {
+				this.show = true
+				return
+				this.$api.delete('/api/applet/address', {
+					id: this.addressId,
+				}).then(res => {
+					if (res.code == 200) {
+						uni.navigateBack({
+							delta: 1
+						});
+					}
+				})
+			},
+			getListDetails(id) {
+				const arr = this.$cache.getCache('addressInfo')
+				console.log(arr, 25)
+				this.model.name = arr.name
+				this.model.phone = arr.phone
+				this.model.address = arr.address
+				this.model.isDefault = arr.isDefault
+				this.model.city = arr.city
+				this.model.area = arr.area
+				var city = this.cityScreening(arr.city, this.areaData)
+				var area = this.cityScreening(arr.area, this.areaData)
+				this.model.region = city + '/' + area
+			},
+			// 城市筛选
+			cityScreening(value, list) {
+				function getChildById(parentArray, id) {
+					for (let i = 0; i < parentArray.length; i++) {
+						if (parentArray[i].value === id) { // 如果当前元素的ID与目标ID相等,则返回该元素
+							return parentArray[i];
+						} else if (parentArray[i].children && Array.isArray(parentArray[i]
+								.children)) { // 判断当前元素是否有子节点且类型为数组
+							const result = getChildById(parentArray[i].children, id); // 对子节点进行递归调用
+							if (result !== null) { // 若子节点存在结果,则返回该结果
+								return result;
+							}
+						}
+					}
+					return null; // 没有找到符合条件的元素时返回null
+				}
+				var name = getChildById(list, value)
+				if (name != null) {
+					return name.label
+				}
+			},
 		}
 	}
 </script>

+ 49 - 18
pages/mine/address.vue

@@ -4,15 +4,17 @@
 		<view>
 			<view class="card_address" v-for="(item,index) in list" :key="index">
 				<view class="center_item">
-					<view class="title_item">{{item.title}}</view>
+					<view class="title_item">{{item.name}}</view>
 					<view class="phone_title">
 						<view class="title_item">{{hidePhone(item.phone)}}</view>
-						<view class="tag_phone" v-if="item.flag">默认</view>
+						<view class="tag_phone" v-if="item.isDefault">默认</view>
 					</view>
 				</view>
 				<view class="center_item address_item">
-					<view class="title_address">{{item.address}}{{item.detailed}}</view>
-					<view @click="goAmend"><u-icon name="edit-pen" size="30"></u-icon></view>
+					<view class="title_address">
+						{{cityScreening(item.city, areaData)}}{{cityScreening(item.area, areaData)}}{{item.address}}
+					</view>
+					<view @click.native.stop="goAmend(item)"><u-icon name="edit-pen" size="30"></u-icon></view>
 				</view>
 			</view>
 		</view>
@@ -20,24 +22,52 @@
 </template>
 
 <script>
+	import {
+		urbanArea
+	} from '@/static/js/districtCode.js'
 	export default {
 		data() {
 			return {
-				list: [{
-					title: 'gadga',
-					phone: '17673255533',
-					address: '贵州省贵阳市观山湖区',
-					detailed: '金融城c座',
-					flag: true,
-				}, {
-					title: '熊',
-					phone: '17673255533',
-					address: '贵州省贵阳市观山湖区',
-					detailed: '金融城c座',
-				}, ]
+				areaData: urbanArea(), //原始数据
+				list: []
 			}
 		},
+		onShow() {
+			console.log(23)
+			this.getList()
+		},
+		mounted() {
+			// this.getList()
+		},
 		methods: {
+			getList() {
+				this.$api.get('/api/applet/address').then(res => {
+					if (res.code == 200) {
+						this.list = res.data.list
+					}
+				})
+			},
+			// 城市筛选
+			cityScreening(value, list) {
+				function getChildById(parentArray, id) {
+					for (let i = 0; i < parentArray.length; i++) {
+						if (parentArray[i].value === id) { // 如果当前元素的ID与目标ID相等,则返回该元素
+							return parentArray[i];
+						} else if (parentArray[i].children && Array.isArray(parentArray[i]
+								.children)) { // 判断当前元素是否有子节点且类型为数组
+							const result = getChildById(parentArray[i].children, id); // 对子节点进行递归调用
+							if (result !== null) { // 若子节点存在结果,则返回该结果
+								return result;
+							}
+						}
+					}
+					return null; // 没有找到符合条件的元素时返回null
+				}
+				var name = getChildById(list, value)
+				if (name != null) {
+					return name.label
+				}
+			},
 			hidePhone(phoneNumber) {
 				function hidePhoneNumber(phoneNumber) {
 					return phoneNumber.slice(0, 3) + '****' + phoneNumber.slice(-4);
@@ -52,9 +82,10 @@
 				});
 			},
 			// 修改地址
-			goAmend() {
+			goAmend(value) {
+				this.$cache.setCache('addressInfo', value)
 				uni.navigateTo({
-					url: '/pages/mine/addAddress?revamp=' + true
+					url: '/pages/mine/addAddress?revamp=' + true + '&id=' + value.id
 				});
 			}
 		}

+ 4 - 4
pages/mine/index.vue

@@ -4,8 +4,8 @@
 		<view class="card_avatar" v-if="token != ''">
 			<image class="mine_image" src="../../static/portrait.png" mode=""></image>
 			<view class="card_user_title">
-				<view class="mine_phone">{{userInfo.nickName}}</view>
-				<view class="mine_phone">{{userInfo.username}}</view>
+				<view class="mine_phone">{{userInfo.principalPhone}}</view>
+				<view class="mine_phone">{{userInfo.principalName}}</view>
 			</view>
 		</view>
 		<view class="card_avatar" v-else @click="login">
@@ -24,10 +24,10 @@
 			<view class="option_title">地址管理</view>
 			<u-icon name="arrow-right" size="20"></u-icon>
 		</view>
-		<view class="space_between card_mine_option" @click="goPersonal">
+		<!-- <view class="space_between card_mine_option" @click="goPersonal">
 			<view class="option_title">我的安全检查</view>
 			<u-icon name="arrow-right" size="20"></u-icon>
-		</view>
+		</view> -->
 		<view class="space_between card_mine_option" @click="goSet">
 			<view class="option_title">系统设置</view>
 			<u-icon name="arrow-right" size="20"></u-icon>

+ 29 - 17
pages/mine/password.vue

@@ -4,19 +4,20 @@
 		<view class="card_password">
 			<view class="item_pass">
 				<view class="pass_title">旧密码<span style="color: red;">*</span></view>
-				<u--input placeholder="请输入内容" border="surround" v-model="userInfo.name"></u--input>
+				<u--input placeholder="请输入内容" type="password" border="surround" v-model="userInfo.oldCode"></u--input>
 			</view>
 			<view class="item_pass">
 				<view class="pass_title">新密码<span style="color: red;">*</span></view>
-				<u--input placeholder="请输入内容" border="surround" v-model="userInfo.name"></u--input>
+				<u--input placeholder="请输入内容" type="password" border="surround"
+					v-model="userInfo.sedNewCode"></u--input>
 			</view>
 			<view class="item_pass">
 				<view class="pass_title">再次输入新密码<span style="color: red;">*</span></view>
-				<u--input placeholder="请输入内容" border="surround" v-model="userInfo.name"></u--input>
+				<u--input placeholder="请输入内容" type="password" border="surround" v-model="userInfo.newCode"></u--input>
 			</view>
 		</view>
 		<view class="card_btn">
-			<u-button type="primary" :disabled="disabled" text="提交"></u-button>
+			<u-button type="primary" :disabled="disabled" text="提交" @click="amend"></u-button>
 		</view>
 	</view>
 </template>
@@ -25,21 +26,32 @@
 	export default {
 		data() {
 			return {
-				model1: {
-					name: 'uView UI',
-				},
 				userInfo: {
-					name: ''
-				},
-				rules: {
-					'name': {
-						type: 'string',
-						required: true,
-						message: '请填写姓名',
-						trigger: ['blur', 'change']
-					},
+					oldCode: '',
+					sedNewCode: '',
+					newCode: ''
 				},
-				disabled:false,
+			}
+		},
+		computed: {
+			disabled() {
+				if (this.userInfo.oldCode == '' || this.userInfo.sedNewCode == '' || this.userInfo.newCode == '') {
+					return true;
+				} else {
+					return false;
+				}
+			}
+		},
+		methods: {
+			amend() {
+				if (this.userInfo.sedNewCode == this.userInfo.newCode) {
+					console.log(23)
+				} else {
+					uni.showToast({
+						title: '输入两次密码不一样',
+						icon: 'none'
+					});
+				}
 			}
 		}
 	}

+ 37 - 24
pages/mine/personal.vue

@@ -119,32 +119,32 @@
 		},
 		methods: {
 			getUser() {
-				this.$api.get('/api/user/profile').then(res => {
+				this.$api.get('/api/applet/profile').then(res => {
 					if (res.code == 200) {
 						const param = res.data.user
 						this.userInfo = param
-						this.$nextTick(() => {
-							this.userType = param.provUser.userType
-							this.model.name = param.provUser.name
-							this.model.idCard = param.provUser.idCard
-							this.model.phone = param.provUser.phone
-							this.model.description = param.provUser.description
-							let arrImg = []
-							let arrImg1 = []
-							if (param.provStoreUserBindCertificate.imgUrl && this.userType == 3) {
-								arrImg = param.provStoreUserBindCertificate.imgUrl.split(',')
-							} else if (param.provTruckUserBindCertificate.imgUrl && this.userType == 4) {
-								arrImg = param.provTruckUserBindCertificate.imgUrl.split(',')
-							}
-							arrImg.forEach(item => {
-								let arr = {
-									thumb: this.$baseUrl + item,
-									url: item,
-								}
-								arrImg1.push(arr)
-							})
-							this.$refs.personage.fileList1 = arrImg1
-						})
+						// this.$nextTick(() => {
+						// 	this.userType = param.provUser.userType
+						// 	this.model.name = param.provUser.name
+						// 	this.model.idCard = param.provUser.idCard
+						// 	this.model.phone = param.provUser.phone
+						// 	this.model.description = param.provUser.description
+						// 	let arrImg = []
+						// 	let arrImg1 = []
+						// 	if (param.provStoreUserBindCertificate.imgUrl && this.userType == 3) {
+						// 		arrImg = param.provStoreUserBindCertificate.imgUrl.split(',')
+						// 	} else if (param.provTruckUserBindCertificate.imgUrl && this.userType == 4) {
+						// 		arrImg = param.provTruckUserBindCertificate.imgUrl.split(',')
+						// 	}
+						// 	arrImg.forEach(item => {
+						// 		let arr = {
+						// 			thumb: this.$baseUrl + item,
+						// 			url: item,
+						// 		}
+						// 		arrImg1.push(arr)
+						// 	})
+						// 	this.$refs.personage.fileList1 = arrImg1
+						// })
 						// console.log(this.model, 26)
 					}
 				})
@@ -184,7 +184,20 @@
 						uni.$u.toast(res.msg)
 					}
 				})
-			}
+			},
+			confirm(value) {
+				this.regionCode = value.value
+				this.model.city = this.regionCode[0].value
+				this.model.area = this.regionCode[1].value
+				let arr1 = []
+				let arr2 = []
+				this.regionCode.forEach(item => {
+					arr1.push(item.value)
+					arr2.push(item.label)
+				})
+				this.model.hr = arr1.join('/')
+				this.model.region = arr2.join('/')
+			},
 		}
 	}
 </script>

+ 5 - 0
pages/mine/system.vue

@@ -37,6 +37,11 @@
 						uni.redirectTo({
 							url: '/pages/login'
 						})
+					} else if (res.code == 401) {
+						console.log(13)
+						this.logoutShow = false
+						this.$cache.removeToken()
+						this.$cache.removeCache('userInfo')
 					}
 				})
 			},

+ 332 - 0
pages/order/booking.vue

@@ -0,0 +1,332 @@
+<template>
+	<view>
+		<u-navbar title="订气" autoBack placeholder></u-navbar>
+		<view class="card_shipping">
+			<view class="space_between shipping_select" @click="selectShipping">
+				<view class="shipping_title" v-if="!addInfo.id">选择收货地址</view>
+				<view v-else>
+					<view class="center_item">
+						<view class="title_item">{{addInfo.name}}</view>
+						<view class="title_item">{{hidePhone(addInfo.phone)}}</view>
+					</view>
+					<view class="title_address1">
+						{{cityScreening(addInfo.city, areaData)}}{{cityScreening(addInfo.area, areaData)}}{{addInfo.address}}
+					</view>
+				</view>
+				<view style="margin-right: 10rpx;">
+					<u-icon name="arrow-right"></u-icon>
+				</view>
+			</view>
+		</view>
+		<view class="card_form">
+			<x-form ref="personage" :list="list" :model="model" :rules="rules" @confirm="confirm"
+				@clientele="clientele"></x-form>
+		</view>
+		<u-popup :show="receivingShow" closeable :round="10" mode="bottom" @close="close">
+			<view class="card_addres">
+				<view class="title_address">选择收货地址</view>
+				<view class="card_add_booking">
+					<view class="card_address" v-for="(item,index) in addressList" :key="index"
+						@click="selectBooking(item)">
+						<view class="card_group"
+							:style="{border:item.flag ? '2rpx solid #2b85e4' : '2rpx solid #e7e6e4'}">
+							<view class="item_radio" v-if="item.flag"></view>
+						</view>
+						<view style="width: 100%;">
+							<view class="center_item">
+								<view class="title_item">{{item.name}}</view>
+								<view class="phone_title">
+									<view class="title_item">{{hidePhone(item.phone)}}</view>
+									<view class="tag_phone" v-if="item.isDefault">默认</view>
+								</view>
+							</view>
+							<view class="center_item address_item">
+								<view class="title_address1">
+									{{cityScreening(item.city, areaData)}}{{cityScreening(item.area, areaData)}}{{item.address}}
+								</view>
+								<view @click.native.stop="goAmend(item)"><u-icon name="edit-pen" size="30"></u-icon>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="btn_add">
+					<u-button type="primary" size="normal" text="新增收货地址" @click="rightClick"></u-button>
+				</view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	import {
+		urbanArea
+	} from '@/static/js/districtCode.js'
+	export default {
+		data() {
+			return {
+				areaData: urbanArea(), //原始数据
+				list: [{
+					field: 'commodity',
+					label: '商品',
+					placeholder: '请选择商品',
+					type: 'select',
+					required: true,
+					options: [
+						[{
+								label: '液化石油气',
+								value: 0,
+							},
+							{
+								label: '二甲醚',
+								value: 1,
+							},
+						]
+					],
+				}, {
+					field: 'specification',
+					label: '规格',
+					placeholder: '请选择规格',
+					type: 'select',
+					required: true,
+				}, {
+					field: 'amount',
+					label: '数量',
+					placeholder: '请输入数量',
+					type: 'input',
+					required: true,
+				}, {
+					field: 'remark',
+					label: '备注',
+					placeholder: '请输入备注',
+					type: 'textarea',
+				}],
+				model: {
+					commodity: '',
+					specification: '',
+					amount: '',
+					remark: '',
+				},
+				rules: {
+					'commodity': {
+						type: 'string',
+						required: true,
+						message: '请选择商品',
+						trigger: ['blur', 'change']
+					},
+					'specification': {
+						type: 'string',
+						required: true,
+						message: '请选择规格',
+						trigger: ['blur', 'change']
+					},
+					'amount': {
+						type: 'number',
+						required: true,
+						message: '请输入数量',
+						trigger: ['blur', 'change']
+					},
+				},
+				receivingShow: false,
+				addressList: [],
+				value: '',
+				addInfo: {},
+			}
+		},
+		mounted() {
+			this.getList()
+		},
+		methods: {
+			selectShipping() {
+				this.receivingShow = true
+			},
+			close() {
+				this.receivingShow = false
+			},
+			getList() {
+				this.$api.get('/api/applet/address').then(res => {
+					if (res.code == 200) {
+						this.addressList = res.data.list
+						this.addressList.forEach(item => {
+							item.flag = false
+						})
+					}
+				})
+			},
+			// 选择收货地址
+			selectBooking(value) {
+				this.addressList.forEach(item => {
+					if (value.id == item.id) {
+						this.addInfo = item
+						this.receivingShow = false
+						item.flag = true
+					} else {
+						item.flag = false
+					}
+				})
+				this.$forceUpdate()
+			},
+			// 新增地址
+			rightClick() {
+				uni.navigateTo({
+					url: '/pages/mine/addAddress'
+				});
+			},
+			// 修改地址
+			goAmend(value) {
+				this.$cache.setCache('addressInfo', value)
+				uni.navigateTo({
+					url: '/pages/mine/addAddress?revamp=' + true + '&id=' + value.id
+				});
+			},
+			// 城市筛选
+			cityScreening(value, list) {
+				function getChildById(parentArray, id) {
+					for (let i = 0; i < parentArray.length; i++) {
+						if (parentArray[i].value === id) { // 如果当前元素的ID与目标ID相等,则返回该元素
+							return parentArray[i];
+						} else if (parentArray[i].children && Array.isArray(parentArray[i]
+								.children)) { // 判断当前元素是否有子节点且类型为数组
+							const result = getChildById(parentArray[i].children, id); // 对子节点进行递归调用
+							if (result !== null) { // 若子节点存在结果,则返回该结果
+								return result;
+							}
+						}
+					}
+					return null; // 没有找到符合条件的元素时返回null
+				}
+				var name = getChildById(list, value)
+				if (name != null) {
+					return name.label
+				}
+			},
+			hidePhone(phoneNumber) {
+				if (phoneNumber) {
+					function hidePhoneNumber(phoneNumber) {
+						return phoneNumber.slice(0, 3) + '****' + phoneNumber.slice(-4);
+					}
+					const hiddenPhoneNumber = hidePhoneNumber(phoneNumber);
+					return hiddenPhoneNumber
+				}
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.card_shipping {
+		display: flex;
+		width: 100%;
+	}
+
+	.shipping_select {
+		display: flex;
+		align-items: center;
+		padding-left: 20rpx;
+		margin: 20rpx 30rpx;
+		width: 100%;
+		height: 120rpx;
+		border-radius: 6rpx;
+		border: 1rpx solid #e7e6e4;
+	}
+
+	.shipping_title {
+		font-size: 30rpx;
+		font-weight: 600;
+	}
+
+	.card_form {
+		margin: 10rpx 30rpx;
+	}
+
+	.card_add_booking {
+		width: 100%;
+		display: flex;
+		flex-direction: column;
+	}
+
+	.card_addres {
+		height: 50vh;
+	}
+
+	.title_address {
+		margin-top: 20rpx;
+		text-align: center;
+		font-size: 32rpx;
+		font-weight: 600;
+	}
+
+	.card_address {
+		display: flex;
+		margin: 30rpx 20rpx 20rpx 20rpx;
+		padding: 10rpx;
+		border-bottom: 1rpx solid #e7e6e4;
+	}
+
+
+	.center_item {
+		display: flex;
+		align-items: center;
+	}
+
+	.title_item {
+		font-size: 26rpx;
+		color: #606266;
+	}
+
+	.phone_title {
+		position: relative;
+		margin-left: 30rpx;
+	}
+
+	.tag_phone {
+		position: absolute;
+		right: -53rpx;
+		top: -14rpx;
+		padding: 2rpx 4rpx;
+		border: 1rpx solid #2b85e4;
+		font-size: 20rpx;
+		color: #2b85e4;
+	}
+
+	.title_address1 {
+		font-size: 30rpx;
+		color: #303133;
+		font-weight: 600;
+	}
+
+	.address_item {
+		width: 100%;
+		display: flex;
+		justify-content: space-between;
+		margin-top: 6rpx;
+	}
+
+	.card_group {
+		position: relative;
+		flex: none;
+		margin-right: 15rpx;
+		width: 32rpx;
+		height: 32rpx;
+		border-radius: 50%;
+	}
+
+	.item_radio {
+		position: absolute;
+		left: 50%;
+		top: 50%;
+		transform: translate(-50%, -50%);
+		width: 20rpx;
+		height: 20rpx;
+		border-radius: 50%;
+		background-color: #2b85e4;
+	}
+
+	.btn_add {
+		width: calc(100% - 40rpx);
+		position: fixed;
+		bottom: 0;
+		padding: 20rpx;
+		background-color: #fff;
+	}
+</style>

+ 1 - 1
pages/order/index.vue

@@ -70,7 +70,7 @@
 		methods: {
 			// 获取订单列表
 			getOrderList(stateType) {
-				this.$api.get('/api/order/delivery', {
+				this.$api.get('/api/applet/order', {
 					state: stateType,
 				}).then(res => {
 					if (res.code == 200) {

+ 112 - 31
pages/register.vue

@@ -6,17 +6,30 @@
 				<image class="mine_image" src="../static/logo.png" mode=""></image>
 				<view class="welcome_title">欢迎注册宝智达气瓶</view>
 			</view>
-			<view class="login_input_box">
-				<u--input v-model="formList.account" fontSize="18px" placeholder="请输入账号" border="bottom"
-					clearable></u--input>
-			</view>
-			<view class="login_input_box">
-				<u--input v-model="formList.password" fontSize="18px" placeholder="请输入密码" password border="bottom"
-					clearable></u--input>
-			</view>
+			<u--form labelPosition="left" :model="formList" :rules="rules" ref="uForm">
+				<u-form-item label="类型" prop="type" labelWidth="80" borderBottom ref="item1">
+					<u-radio-group v-model="formList.type" placement="row">
+						<u-radio shape="circle" :customStyle="{marginRight: '20px'}" v-for="(item, index) in radiolist"
+							:key="index" :label="item.name" :name="item.value"></u-radio>
+					</u-radio-group>
+				</u-form-item>
+				<u-form-item label="手机号" prop="phone" labelWidth="80" borderBottom ref="item1">
+					<u--input v-model="formList.phone" border="none" placeholder="请填写手机号"></u--input>
+				</u-form-item>
+				<u-form-item label="验证码" prop="verifyCode" labelWidth="80" borderBottom>
+					<u--input v-model="formList.verifyCode" border="none" placeholder="请填写验证码"></u--input>
+					<u-button slot="right" @tap="getCode" :text="tips" type="success" size="mini"
+						:disabled="disabled1"></u-button>
+				</u-form-item>
+				<u-form-item label="密码" prop="password" labelWidth="80" borderBottom ref="item1">
+					<u--input v-model="formList.password" border="none" placeholder="请填写密码"></u--input>
+				</u-form-item>
+			</u--form>
+			<u-code ref="uCode" @change="codeChange" seconds="90" @start="disabled1 = true"
+				@end="disabled1 = false"></u-code>
 			<view class="title_register" @click="goLogin">去登录</view>
 			<view class="card_btn">
-				<u-button type="primary" :disabled="disabled" text="登录" @click="getRegister"></u-button>
+				<u-button type="primary" :disabled="disabled" text="注册" @click="getRegister"></u-button>
 			</view>
 		</view>
 	</view>
@@ -26,15 +39,52 @@
 	export default {
 		data() {
 			return {
+				radiolist: [{
+					name: '私人',
+					value: 1,
+				}, {
+					name: '商户',
+					value: 0,
+				}],
 				formList: {
-					account: '',
+					type: 1,
+					phone: '',
+					verifyCode: '',
 					password: '',
 				},
+				tips: '',
+				disabled1: false,
+				rules: {
+					type: {
+						type: 'string',
+						required: true,
+						message: '请选择用户类型',
+						trigger: ['blur']
+					},
+					phone: {
+						type: 'string',
+						required: true,
+						message: '请填写手机号',
+						trigger: ['blur']
+					},
+					verifyCode: {
+						type: 'string',
+						required: true,
+						message: '请填写验证码',
+						trigger: ['blur']
+					},
+					password: {
+						type: 'string',
+						required: true,
+						message: '请填写密码',
+						trigger: ['blur']
+					},
+				},
 			}
 		},
 		computed: {
 			disabled() {
-				if (this.formList.account == '' || this.formList.password == '') {
+				if (this.formList.phone == '' || this.formList.verifyCode == '' || this.formList.password == '') {
 					return true;
 				} else {
 					return false;
@@ -44,23 +94,57 @@
 		methods: {
 			// 注册
 			getRegister() {
-				uni.showLoading();
-				this.$api.post('/api/login', {
-					type: 1,
-					mobile: true,
-					username: this.formList.account,
-					password: this.formList.password
-				}).then((res) => {
-					if (res.code == 200) {
-						console.log(res, 132)
+				this.$refs.uForm.validate().then(res => {
+					uni.showLoading();
+					this.$api.post('/api/applet/register', {
+						phone: this.formList.phone,
+						password: this.formList.password,
+						verifyCode: this.formList.verifyCode
+					}).then((res) => {
+						if (res.code == 200) {
+							uni.showToast({
+								title: res.msg,
+								icon: 'none'
+							});
+						} else {
+							uni.showToast({
+								title: res.data.msg,
+								icon: 'none'
+							});
+						}
+						uni.hideLoading();
+					})
+				}).catch(errors => {
+					// uni.$u.toast('校验失败')
+				})
+			},
+			getCode() {
+				if (this.$refs.uCode.canGetCode) {
+					// 模拟向后端请求验证码
+					if (this.formList.phone) {
+						uni.showLoading({
+							title: '正在获取验证码'
+						})
+						// 通知验证码组件内部开始倒计时
+						this.$refs.uCode.start();
+						this.$api.get('/api/verify-code', {
+							phone: this.formList.phone,
+						}).then(res => {
+							if (res.code == 200) {
+								uni.hideLoading();
+								// 这里此提示会被this.start()方法中的提示覆盖
+								uni.$u.toast('验证码已发送');
+							}
+						})
 					} else {
-						uni.showToast({
-							title: res.data.msg,
-							icon: 'none'
-						});
+						uni.$u.toast('请先输入手机号');
 					}
-					uni.hideLoading();
-				})
+				} else {
+					uni.$u.toast('倒计时结束后再发送');
+				}
+			},
+			codeChange(text) {
+				this.tips = text;
 			},
 			// 登录
 			goLogin() {
@@ -100,14 +184,11 @@
 		height: 100rpx;
 	}
 
-	.login_input_box {
-		margin-bottom: 30rpx;
-	}
-
 	.title_register {
+		margin-top: 20rpx;
 		display: flex;
 		justify-content: flex-end;
-		font-size: 30rpx;
+		font-size: 28rpx;
 		color: #494949;
 	}
 

+ 0 - 0
unpackage/dist/dev/.automator/app-plus/.automator.json


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/app-plus/__uniappchooselocation.js


BIN
unpackage/dist/dev/app-plus/__uniapperror.png


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/app-plus/__uniappes6.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/app-plus/__uniappopenlocation.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/app-plus/__uniapppicker.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 6 - 0
unpackage/dist/dev/app-plus/__uniappquill.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/app-plus/__uniappquillimageresize.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/app-plus/__uniappscan.js


BIN
unpackage/dist/dev/app-plus/__uniappsuccess.png


+ 25 - 0
unpackage/dist/dev/app-plus/__uniappview.html

@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+
+  <head>
+    <meta charset="UTF-8" />
+    <script>
+      var __UniViewStartTime__ = Date.now();
+      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+        CSS.supports('top: constant(a)'))
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+    </script>
+    <title>View</title>
+    <link rel="stylesheet" href="view.css" />
+  </head>
+
+  <body>
+    <div id="app"></div>
+    <script src="__uniappes6.js"></script>
+    <script src="view.umd.min.js"></script>
+    <script src="app-view.js"></script>
+  </body>
+
+</html>

+ 8 - 0
unpackage/dist/dev/app-plus/app-config-service.js

@@ -0,0 +1,8 @@
+
+var isReady=false;var onReadyCallbacks=[];
+var isServiceReady=false;var onServiceReadyCallbacks=[];
+var __uniConfig = {"pages":["pages/indexRouter","pages/login","pages/register","pages/home/index","pages/index/codeTracing","pages/order/index","pages/information/index","pages/mine/index","pages/mine/password","pages/mine/personal","pages/mine/system","pages/mine/address","pages/mine/addAddress","pages/order/orderDetails","pages/order/securityCheck","pages/order/delivery","pages/order/completionTasks","pages/order/signatureBoard"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"气瓶安全追溯","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8","navigationStyle":"default"},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"gas-cylinder-h5","compilerVersion":"3.99","entryPagePath":"pages/indexRouter","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
+var __uniRoutes = [{"path":"/pages/indexRouter","meta":{"isQuit":true},"window":{"navigationStyle":"custom"}},{"path":"/pages/login","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/register","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/home/index","meta":{},"window":{"navigationBarTitleText":"","enablePullDownRefresh":false,"navigationBarBackgroundColor":"#FFFFFF","titleNView":false}},{"path":"/pages/index/codeTracing","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/order/index","meta":{},"window":{"navigationBarTitleText":"订单","enablePullDownRefresh":false}},{"path":"/pages/information/index","meta":{},"window":{"navigationBarTitleText":"消息中心","enablePullDownRefresh":false}},{"path":"/pages/mine/index","meta":{},"window":{"navigationBarTitleText":"个人中心","enablePullDownRefresh":false,"navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/mine/password","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/mine/personal","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/mine/system","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/mine/address","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/mine/addAddress","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/order/orderDetails","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/order/securityCheck","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/order/delivery","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/order/completionTasks","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/order/signatureBoard","meta":{},"window":{"navigationStyle":"custom"}}];
+__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
+__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
+service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});

+ 154 - 0
unpackage/dist/dev/app-plus/app-config.js

@@ -0,0 +1,154 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// install a JSONP callback for chunk loading
+/******/ 	function webpackJsonpCallback(data) {
+/******/ 		var chunkIds = data[0];
+/******/ 		var moreModules = data[1];
+/******/ 		var executeModules = data[2];
+/******/
+/******/ 		// add "moreModules" to the modules object,
+/******/ 		// then flag all "chunkIds" as loaded and fire callback
+/******/ 		var moduleId, chunkId, i = 0, resolves = [];
+/******/ 		for(;i < chunkIds.length; i++) {
+/******/ 			chunkId = chunkIds[i];
+/******/ 			if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
+/******/ 				resolves.push(installedChunks[chunkId][0]);
+/******/ 			}
+/******/ 			installedChunks[chunkId] = 0;
+/******/ 		}
+/******/ 		for(moduleId in moreModules) {
+/******/ 			if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
+/******/ 				modules[moduleId] = moreModules[moduleId];
+/******/ 			}
+/******/ 		}
+/******/ 		if(parentJsonpFunction) parentJsonpFunction(data);
+/******/
+/******/ 		while(resolves.length) {
+/******/ 			resolves.shift()();
+/******/ 		}
+/******/
+/******/ 		// add entry modules from loaded chunk to deferred list
+/******/ 		deferredModules.push.apply(deferredModules, executeModules || []);
+/******/
+/******/ 		// run deferred modules when all chunks ready
+/******/ 		return checkDeferredModules();
+/******/ 	};
+/******/ 	function checkDeferredModules() {
+/******/ 		var result;
+/******/ 		for(var i = 0; i < deferredModules.length; i++) {
+/******/ 			var deferredModule = deferredModules[i];
+/******/ 			var fulfilled = true;
+/******/ 			for(var j = 1; j < deferredModule.length; j++) {
+/******/ 				var depId = deferredModule[j];
+/******/ 				if(installedChunks[depId] !== 0) fulfilled = false;
+/******/ 			}
+/******/ 			if(fulfilled) {
+/******/ 				deferredModules.splice(i--, 1);
+/******/ 				result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
+/******/ 			}
+/******/ 		}
+/******/
+/******/ 		return result;
+/******/ 	}
+/******/
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// object to store loaded and loading chunks
+/******/ 	// undefined = chunk not loaded, null = chunk preloaded/prefetched
+/******/ 	// Promise = chunk loading, 0 = chunk loaded
+/******/ 	var installedChunks = {
+/******/ 		"app-config": 0
+/******/ 	};
+/******/
+/******/ 	var deferredModules = [];
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/";
+/******/
+/******/ 	var jsonpArray = this["webpackJsonp"] = this["webpackJsonp"] || [];
+/******/ 	var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
+/******/ 	jsonpArray.push = webpackJsonpCallback;
+/******/ 	jsonpArray = jsonpArray.slice();
+/******/ 	for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
+/******/ 	var parentJsonpFunction = oldJsonpFunction;
+/******/
+/******/
+/******/ 	// run deferred modules from other chunks
+/******/ 	checkDeferredModules();
+/******/ })
+/************************************************************************/
+/******/ ([]);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 9 - 0
unpackage/dist/dev/app-plus/app-service.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 504 - 0
unpackage/dist/dev/app-plus/app-view.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/app-plus/manifest.json


+ 539 - 0
unpackage/dist/dev/app-plus/static/fonts/demo.css

@@ -0,0 +1,539 @@
+/* Logo 字体 */
+@font-face {
+  font-family: "iconfont logo";
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
+}
+
+.logo {
+  font-family: "iconfont logo";
+  font-size: 160px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+/* tabs */
+.nav-tabs {
+  position: relative;
+}
+
+.nav-tabs .nav-more {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  height: 42px;
+  line-height: 42px;
+  color: #666;
+}
+
+#tabs {
+  border-bottom: 1px solid #eee;
+}
+
+#tabs li {
+  cursor: pointer;
+  width: 100px;
+  height: 40px;
+  line-height: 40px;
+  text-align: center;
+  font-size: 16px;
+  border-bottom: 2px solid transparent;
+  position: relative;
+  z-index: 1;
+  margin-bottom: -1px;
+  color: #666;
+}
+
+
+#tabs .active {
+  border-bottom-color: #f00;
+  color: #222;
+}
+
+.tab-container .content {
+  display: none;
+}
+
+/* 页面布局 */
+.main {
+  padding: 30px 100px;
+  width: 960px;
+  margin: 0 auto;
+}
+
+.main .logo {
+  color: #333;
+  text-align: left;
+  margin-bottom: 30px;
+  line-height: 1;
+  height: 110px;
+  margin-top: -50px;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.main .logo a {
+  font-size: 160px;
+  color: #333;
+}
+
+.helps {
+  margin-top: 40px;
+}
+
+.helps pre {
+  padding: 20px;
+  margin: 10px 0;
+  border: solid 1px #e7e1cd;
+  background-color: #fffdef;
+  overflow: auto;
+}
+
+.icon_lists {
+  width: 100% !important;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.icon_lists li {
+  width: 100px;
+  margin-bottom: 10px;
+  margin-right: 20px;
+  text-align: center;
+  list-style: none !important;
+  cursor: default;
+}
+
+.icon_lists li .code-name {
+  line-height: 1.2;
+}
+
+.icon_lists .icon {
+  display: block;
+  height: 100px;
+  line-height: 100px;
+  font-size: 42px;
+  margin: 10px auto;
+  color: #333;
+  -webkit-transition: font-size 0.25s linear, width 0.25s linear;
+  -moz-transition: font-size 0.25s linear, width 0.25s linear;
+  transition: font-size 0.25s linear, width 0.25s linear;
+}
+
+.icon_lists .icon:hover {
+  font-size: 100px;
+}
+
+.icon_lists .svg-icon {
+  /* 通过设置 font-size 来改变图标大小 */
+  width: 1em;
+  /* 图标和文字相邻时,垂直对齐 */
+  vertical-align: -0.15em;
+  /* 通过设置 color 来改变 SVG 的颜色/fill */
+  fill: currentColor;
+  /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
+      normalize.css 中也包含这行 */
+  overflow: hidden;
+}
+
+.icon_lists li .name,
+.icon_lists li .code-name {
+  color: #666;
+}
+
+/* markdown 样式 */
+.markdown {
+  color: #666;
+  font-size: 14px;
+  line-height: 1.8;
+}
+
+.highlight {
+  line-height: 1.5;
+}
+
+.markdown img {
+  vertical-align: middle;
+  max-width: 100%;
+}
+
+.markdown h1 {
+  color: #404040;
+  font-weight: 500;
+  line-height: 40px;
+  margin-bottom: 24px;
+}
+
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+  color: #404040;
+  margin: 1.6em 0 0.6em 0;
+  font-weight: 500;
+  clear: both;
+}
+
+.markdown h1 {
+  font-size: 28px;
+}
+
+.markdown h2 {
+  font-size: 22px;
+}
+
+.markdown h3 {
+  font-size: 16px;
+}
+
+.markdown h4 {
+  font-size: 14px;
+}
+
+.markdown h5 {
+  font-size: 12px;
+}
+
+.markdown h6 {
+  font-size: 12px;
+}
+
+.markdown hr {
+  height: 1px;
+  border: 0;
+  background: #e9e9e9;
+  margin: 16px 0;
+  clear: both;
+}
+
+.markdown p {
+  margin: 1em 0;
+}
+
+.markdown>p,
+.markdown>blockquote,
+.markdown>.highlight,
+.markdown>ol,
+.markdown>ul {
+  width: 80%;
+}
+
+.markdown ul>li {
+  list-style: circle;
+}
+
+.markdown>ul li,
+.markdown blockquote ul>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown>ul li p,
+.markdown>ol li p {
+  margin: 0.6em 0;
+}
+
+.markdown ol>li {
+  list-style: decimal;
+}
+
+.markdown>ol li,
+.markdown blockquote ol>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown code {
+  margin: 0 3px;
+  padding: 0 5px;
+  background: #eee;
+  border-radius: 3px;
+}
+
+.markdown strong,
+.markdown b {
+  font-weight: 600;
+}
+
+.markdown>table {
+  border-collapse: collapse;
+  border-spacing: 0px;
+  empty-cells: show;
+  border: 1px solid #e9e9e9;
+  width: 95%;
+  margin-bottom: 24px;
+}
+
+.markdown>table th {
+  white-space: nowrap;
+  color: #333;
+  font-weight: 600;
+}
+
+.markdown>table th,
+.markdown>table td {
+  border: 1px solid #e9e9e9;
+  padding: 8px 16px;
+  text-align: left;
+}
+
+.markdown>table th {
+  background: #F7F7F7;
+}
+
+.markdown blockquote {
+  font-size: 90%;
+  color: #999;
+  border-left: 4px solid #e9e9e9;
+  padding-left: 0.8em;
+  margin: 1em 0;
+}
+
+.markdown blockquote p {
+  margin: 0;
+}
+
+.markdown .anchor {
+  opacity: 0;
+  transition: opacity 0.3s ease;
+  margin-left: 8px;
+}
+
+.markdown .waiting {
+  color: #ccc;
+}
+
+.markdown h1:hover .anchor,
+.markdown h2:hover .anchor,
+.markdown h3:hover .anchor,
+.markdown h4:hover .anchor,
+.markdown h5:hover .anchor,
+.markdown h6:hover .anchor {
+  opacity: 1;
+  display: inline-block;
+}
+
+.markdown>br,
+.markdown>p>br {
+  clear: both;
+}
+
+
+.hljs {
+  display: block;
+  background: white;
+  padding: 0.5em;
+  color: #333333;
+  overflow-x: auto;
+}
+
+.hljs-comment,
+.hljs-meta {
+  color: #969896;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-strong,
+.hljs-emphasis,
+.hljs-quote {
+  color: #df5000;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-type {
+  color: #a71d5d;
+}
+
+.hljs-literal,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-attribute {
+  color: #0086b3;
+}
+
+.hljs-section,
+.hljs-name {
+  color: #63a35c;
+}
+
+.hljs-tag {
+  color: #333333;
+}
+
+.hljs-title,
+.hljs-attr,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+  color: #795da3;
+}
+
+.hljs-addition {
+  color: #55a532;
+  background-color: #eaffea;
+}
+
+.hljs-deletion {
+  color: #bd2c00;
+  background-color: #ffecec;
+}
+
+.hljs-link {
+  text-decoration: underline;
+}
+
+/* 代码高亮 */
+/* PrismJS 1.15.0
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+  color: black;
+  background: none;
+  text-shadow: 0 1px white;
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+  text-align: left;
+  white-space: pre;
+  word-spacing: normal;
+  word-break: normal;
+  word-wrap: normal;
+  line-height: 1.5;
+
+  -moz-tab-size: 4;
+  -o-tab-size: 4;
+  tab-size: 4;
+
+  -webkit-hyphens: none;
+  -moz-hyphens: none;
+  -ms-hyphens: none;
+  hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+@media print {
+
+  code[class*="language-"],
+  pre[class*="language-"] {
+    text-shadow: none;
+  }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+  padding: 1em;
+  margin: .5em 0;
+  overflow: auto;
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+  background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre)>code[class*="language-"] {
+  padding: .1em;
+  border-radius: .3em;
+  white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+  color: slategray;
+}
+
+.token.punctuation {
+  color: #999;
+}
+
+.namespace {
+  opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+  color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+  color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+  color: #9a6e3a;
+  background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+  color: #07a;
+}
+
+.token.function,
+.token.class-name {
+  color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+  color: #e90;
+}
+
+.token.important,
+.token.bold {
+  font-weight: bold;
+}
+
+.token.italic {
+  font-style: italic;
+}
+
+.token.entity {
+  cursor: help;
+}

+ 372 - 0
unpackage/dist/dev/app-plus/static/fonts/demo_index.html

@@ -0,0 +1,372 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8"/>
+  <title>iconfont Demo</title>
+  <link rel="shortcut icon" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg" type="image/x-icon"/>
+  <link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg"/>
+  <link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
+  <link rel="stylesheet" href="demo.css">
+  <link rel="stylesheet" href="iconfont.css">
+  <script src="iconfont.js"></script>
+  <!-- jQuery -->
+  <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
+  <!-- 代码高亮 -->
+  <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>
+  <style>
+    .main .logo {
+      margin-top: 0;
+      height: auto;
+    }
+
+    .main .logo a {
+      display: flex;
+      align-items: center;
+    }
+
+    .main .logo .sub-title {
+      margin-left: 0.5em;
+      font-size: 22px;
+      color: #fff;
+      background: linear-gradient(-45deg, #3967FF, #B500FE);
+      -webkit-background-clip: text;
+      -webkit-text-fill-color: transparent;
+    }
+  </style>
+</head>
+<body>
+  <div class="main">
+    <h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">
+      <img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg">
+      
+    </a></h1>
+    <div class="nav-tabs">
+      <ul id="tabs" class="dib-box">
+        <li class="dib active"><span>Unicode</span></li>
+        <li class="dib"><span>Font class</span></li>
+        <li class="dib"><span>Symbol</span></li>
+      </ul>
+      
+      <a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=4468098" target="_blank" class="nav-more">查看项目</a>
+      
+    </div>
+    <div class="tab-container">
+      <div class="content unicode" style="display: block;">
+          <ul class="icon_lists dib-box">
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe822;</span>
+                <div class="name">默认头像</div>
+                <div class="code-name">&amp;#xe822;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe609;</span>
+                <div class="name">首页</div>
+                <div class="code-name">&amp;#xe609;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe8ae;</span>
+                <div class="name">订单</div>
+                <div class="code-name">&amp;#xe8ae;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe66f;</span>
+                <div class="name">扫一扫</div>
+                <div class="code-name">&amp;#xe66f;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe60e;</span>
+                <div class="name">我的</div>
+                <div class="code-name">&amp;#xe60e;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xeb3f;</span>
+                <div class="name">消息 (3)</div>
+                <div class="code-name">&amp;#xeb3f;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe6e6;</span>
+                <div class="name">扫码查询</div>
+                <div class="code-name">&amp;#xe6e6;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe60c;</span>
+                <div class="name">液化气钢瓶</div>
+                <div class="code-name">&amp;#xe60c;</div>
+              </li>
+          
+          </ul>
+          <div class="article markdown">
+          <h2 id="unicode-">Unicode 引用</h2>
+          <hr>
+
+          <p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>
+          <ul>
+            <li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
+            <li>默认情况下不支持多色,直接添加多色图标会自动去色。</li>
+          </ul>
+          <blockquote>
+            <p>注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)</p>
+          </blockquote>
+          <p>Unicode 使用步骤如下:</p>
+          <h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>
+<pre><code class="language-css"
+>@font-face {
+  font-family: 'iconfont';
+  src: url('iconfont.woff2?t=1710482534145') format('woff2'),
+       url('iconfont.woff?t=1710482534145') format('woff'),
+       url('iconfont.ttf?t=1710482534145') format('truetype');
+}
+</code></pre>
+          <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
+<pre><code class="language-css"
+>.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+</code></pre>
+          <h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
+<pre>
+<code class="language-html"
+>&lt;span class="iconfont"&gt;&amp;#x33;&lt;/span&gt;
+</code></pre>
+          <blockquote>
+            <p>"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
+          </blockquote>
+          </div>
+      </div>
+      <div class="content font-class">
+        <ul class="icon_lists dib-box">
+          
+          <li class="dib">
+            <span class="icon iconfont icon-morentouxiang"></span>
+            <div class="name">
+              默认头像
+            </div>
+            <div class="code-name">.icon-morentouxiang
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-shouye"></span>
+            <div class="name">
+              首页
+            </div>
+            <div class="code-name">.icon-shouye
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-dingdan"></span>
+            <div class="name">
+              订单
+            </div>
+            <div class="code-name">.icon-dingdan
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-saoyisao"></span>
+            <div class="name">
+              扫一扫
+            </div>
+            <div class="code-name">.icon-saoyisao
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-wode"></span>
+            <div class="name">
+              我的
+            </div>
+            <div class="code-name">.icon-wode
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-a-xiaoxi"></span>
+            <div class="name">
+              消息 (3)
+            </div>
+            <div class="code-name">.icon-a-xiaoxi
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-saomachaxun"></span>
+            <div class="name">
+              扫码查询
+            </div>
+            <div class="code-name">.icon-saomachaxun
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-lpg"></span>
+            <div class="name">
+              液化气钢瓶
+            </div>
+            <div class="code-name">.icon-lpg
+            </div>
+          </li>
+          
+        </ul>
+        <div class="article markdown">
+        <h2 id="font-class-">font-class 引用</h2>
+        <hr>
+
+        <p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
+        <p>与 Unicode 使用方式相比,具有如下特点:</p>
+        <ul>
+          <li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
+          <li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
+        </ul>
+        <p>使用步骤如下:</p>
+        <h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
+<pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt;
+</code></pre>
+        <h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
+<pre><code class="language-html">&lt;span class="iconfont icon-xxx"&gt;&lt;/span&gt;
+</code></pre>
+        <blockquote>
+          <p>"
+            iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
+        </blockquote>
+      </div>
+      </div>
+      <div class="content symbol">
+          <ul class="icon_lists dib-box">
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-morentouxiang"></use>
+                </svg>
+                <div class="name">默认头像</div>
+                <div class="code-name">#icon-morentouxiang</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-shouye"></use>
+                </svg>
+                <div class="name">首页</div>
+                <div class="code-name">#icon-shouye</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-dingdan"></use>
+                </svg>
+                <div class="name">订单</div>
+                <div class="code-name">#icon-dingdan</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-saoyisao"></use>
+                </svg>
+                <div class="name">扫一扫</div>
+                <div class="code-name">#icon-saoyisao</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-wode"></use>
+                </svg>
+                <div class="name">我的</div>
+                <div class="code-name">#icon-wode</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-a-xiaoxi"></use>
+                </svg>
+                <div class="name">消息 (3)</div>
+                <div class="code-name">#icon-a-xiaoxi</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-saomachaxun"></use>
+                </svg>
+                <div class="name">扫码查询</div>
+                <div class="code-name">#icon-saomachaxun</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-lpg"></use>
+                </svg>
+                <div class="name">液化气钢瓶</div>
+                <div class="code-name">#icon-lpg</div>
+            </li>
+          
+          </ul>
+          <div class="article markdown">
+          <h2 id="symbol-">Symbol 引用</h2>
+          <hr>
+
+          <p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>
+            这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:</p>
+          <ul>
+            <li>支持多色图标了,不再受单色限制。</li>
+            <li>通过一些技巧,支持像字体那样,通过 <code>font-size</code>, <code>color</code> 来调整样式。</li>
+            <li>兼容性较差,支持 IE9+,及现代浏览器。</li>
+            <li>浏览器渲染 SVG 的性能一般,还不如 png。</li>
+          </ul>
+          <p>使用步骤如下:</p>
+          <h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3>
+<pre><code class="language-html">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;
+</code></pre>
+          <h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>
+<pre><code class="language-html">&lt;style&gt;
+.icon {
+  width: 1em;
+  height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+}
+&lt;/style&gt;
+</code></pre>
+          <h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
+<pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt;
+  &lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt;
+&lt;/svg&gt;
+</code></pre>
+          </div>
+      </div>
+
+    </div>
+  </div>
+  <script>
+  $(document).ready(function () {
+      $('.tab-container .content:first').show()
+
+      $('#tabs li').click(function (e) {
+        var tabContent = $('.tab-container .content')
+        var index = $(this).index()
+
+        if ($(this).hasClass('active')) {
+          return
+        } else {
+          $('#tabs li').removeClass('active')
+          $(this).addClass('active')
+
+          tabContent.hide().eq(index).fadeIn()
+        }
+      })
+    })
+  </script>
+</body>
+</html>

+ 47 - 0
unpackage/dist/dev/app-plus/static/fonts/iconfont.css

@@ -0,0 +1,47 @@
+@font-face {
+  font-family: "iconfont"; /* Project id 4468098 */
+  src: url('@/static/fonts/iconfont.woff2?t=1710482534145') format('woff2'),
+       url('@/static/fonts/iconfont.woff?t=1710482534145') format('woff'),
+       url('@/static/fonts/iconfont.ttf?t=1710482534145') format('truetype');
+}
+
+.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-morentouxiang:before {
+  content: "\e822";
+}
+
+.icon-shouye:before {
+  content: "\e609";
+}
+
+.icon-dingdan:before {
+  content: "\e8ae";
+}
+
+.icon-saoyisao:before {
+  content: "\e66f";
+}
+
+.icon-wode:before {
+  content: "\e60e";
+}
+
+.icon-a-xiaoxi:before {
+  content: "\eb3f";
+}
+
+.icon-saomachaxun:before {
+  content: "\e6e6";
+}
+
+.icon-lpg:before {
+  content: "\e60c";
+}
+

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/app-plus/static/fonts/iconfont.js


+ 65 - 0
unpackage/dist/dev/app-plus/static/fonts/iconfont.json

@@ -0,0 +1,65 @@
+{
+  "id": "4468098",
+  "name": "燃气瓶-h5",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon-",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "1585356",
+      "name": "默认头像",
+      "font_class": "morentouxiang",
+      "unicode": "e822",
+      "unicode_decimal": 59426
+    },
+    {
+      "icon_id": "7352948",
+      "name": "首页",
+      "font_class": "shouye",
+      "unicode": "e609",
+      "unicode_decimal": 58889
+    },
+    {
+      "icon_id": "11372658",
+      "name": "订单",
+      "font_class": "dingdan",
+      "unicode": "e8ae",
+      "unicode_decimal": 59566
+    },
+    {
+      "icon_id": "12097604",
+      "name": "扫一扫",
+      "font_class": "saoyisao",
+      "unicode": "e66f",
+      "unicode_decimal": 58991
+    },
+    {
+      "icon_id": "25214248",
+      "name": "我的",
+      "font_class": "wode",
+      "unicode": "e60e",
+      "unicode_decimal": 58894
+    },
+    {
+      "icon_id": "35567583",
+      "name": "消息 (3)",
+      "font_class": "a-xiaoxi",
+      "unicode": "eb3f",
+      "unicode_decimal": 60223
+    },
+    {
+      "icon_id": "38825662",
+      "name": "扫码查询",
+      "font_class": "saomachaxun",
+      "unicode": "e6e6",
+      "unicode_decimal": 59110
+    },
+    {
+      "icon_id": "13181370",
+      "name": "液化气钢瓶",
+      "font_class": "lpg",
+      "unicode": "e60c",
+      "unicode_decimal": 58892
+    }
+  ]
+}

BIN
unpackage/dist/dev/app-plus/static/fonts/iconfont.ttf


BIN
unpackage/dist/dev/app-plus/static/fonts/iconfont.woff


BIN
unpackage/dist/dev/app-plus/static/fonts/iconfont.woff2


BIN
unpackage/dist/dev/app-plus/static/image/bottle.png


+ 91 - 0
unpackage/dist/dev/app-plus/static/js/announcements.js

@@ -0,0 +1,91 @@
+export const check = () => {
+  return [{
+    id: 'ITEM_1',
+    label: '是否违规在地下室、卫生间或密闭的房间内存放使用瓶装液化气。',
+    value: '0',
+  },{
+    id: 'ITEM_2',
+    label: '液化气瓶、炉具使用或气瓶存放的房间内是否违反规定安床住人。',
+    value: '0',
+  },{
+    id: 'ITEM_3',
+    label: '液化气瓶、炉具使用或存放的房间上方是否搭建阁楼。',
+    value: '0',
+  },{
+    id: 'ITEM_4',
+    label: '液化气瓶、炉具使用或存放的房间内通风是否良好及加装换气装置。',
+    value: '0',
+  },{
+    id: 'ITEM_5',
+    label: '液化气瓶、炉具使用或存放的场所是否配备灭火器。',
+    value: '0',
+  },{
+    id: 'ITEM_6',
+    label: '液化气瓶存放间内是否按照国家规范安装燃气浓度报警仪装置。',
+    value: '0',
+  },{
+    id: 'ITEM_7',
+    label: '液化气瓶、炉具使用或存放处是否堆放易燃物及其它杂物。',
+    value: '0',
+  },{
+    id: 'ITEM_8',
+    label: '液化气瓶、炉具、软管是否放在不易碰撞且易操作检查的地方。',
+    value: '0',
+  },{
+    id: 'ITEM_9',
+    label: '液化气瓶是否摆放在密闭狭小的橱柜内使用。',
+    value: '0',
+  },{
+    id: 'ITEM_10',
+    label: '液化气炉具下方是否密闭及不具备通风条件。',
+    value: '0',
+  },{
+    id: 'ITEM_11',
+    label: '液化气瓶是否完好有效、开关是否正常无泄漏。',
+    value: '0',
+  },{
+    id: 'ITEM_12',
+    label: '燃气炉具工作性能正常,无破损、无泄漏,且开关完好正常。',
+    value: '0',
+  },{
+    id: 'ITEM_13',
+    label: '减压阀是否功能完好无破损,且安装到位无松动、无异常、无泄漏。',
+    value: '0',
+  },{
+    id: 'ITEM_14',
+    label: '连接软管是否完好无老化、龟裂、鼓包、破损、泄漏等现象。',
+    value: '0',
+  },{
+    id: 'ITEM_15',
+    label: '软管与炉具、减压阀连接处是否安装到位且卡子紧固无松动、无泄漏。',
+    value: '0',
+  },{
+    id: 'ITEM_16',
+    label: '连接软管有无加装三通、套管、穿墙或铺设顶棚、埋地等不易检查处。',
+    value: '0',
+  },{
+    id: 'ITEM_17',
+    label: '连接软管是否放置炉具底部靠近明火、高温或电源线路及电器处。',
+    value: '0',
+  },{
+    id: 'ITEM_18',
+    label: '气瓶护罩及气瓶周围是否堆放或悬挂杂物。',
+    value: '0',
+  },{
+    id: 'ITEM_19',
+    label: '气瓶是否与炉具、高温物体保持一定的安全间距。',
+    value: '0',
+  },{
+    id: 'ITEM_20',
+    label: '燃气热水器是否放置在卫生间或其它密闭不通风的房间内使用。',
+    value: '0',
+  },{
+    id: 'ITEM_21',
+    label: '燃气热水器或汤锅桶是否安装排烟管将废气引出室外。',
+    value: '0',
+  },{
+    id: 'ITEM_22',
+    label: '是否明确专人负责具体操作及日常安全巡查管理。',
+    value: '0',
+  },]
+}

+ 176 - 0
unpackage/dist/dev/app-plus/static/js/blockSort.js

@@ -0,0 +1,176 @@
+export const statisticalState = () => {
+  return [{
+      label: '已提交待审批',
+      value: 'inform',
+    },
+    {
+      label: '在用',
+      value: 'using',
+    },
+    {
+      label: '报废',
+      value: 'scrapped',
+    },
+  ]
+}
+export const neurogen = () => {
+  return [{
+      label: '液化石油气',
+      value: 0,
+    },
+    {
+      label: '二甲醚',
+      value: 1,
+    },
+    {
+      label: '氧气',
+      value: 2,
+    },
+    {
+      label: '二氧化碳',
+      value: 3,
+    },
+    {
+      label: '溶解乙炔',
+      value: 4,
+    }
+  ]
+}
+export const attribution = () => {
+  return [{
+      label: '门店',
+      value: '0001',
+    },
+    {
+      label: '气站',
+      value: '0002',
+    },
+    {
+      label: '企业',
+      value: '0003',
+    },
+    {
+      label: '检验机构',
+      value: '0004',
+    },
+    {
+      label: '移动库',
+      value: '005',
+    },
+    {
+      label: '门店',
+      value: '006',
+    }
+  ]
+}
+export const cylinderCondition = () => {
+  return [{
+      label: '新瓶提交',
+      value: 'submit',
+    },
+    {
+      label: '在用(以检验)',
+      value: 'using',
+    },
+    {
+      label: '停用(待检验)',
+      value: 'stop',
+    },
+    {
+      label: '报废',
+      value: 'scrapped',
+    }
+  ]
+}
+
+export const process = () => {
+  return [{
+      label: '商家入库',
+      value: '6',
+    },
+    {
+      label: '门店空瓶出库',
+      value: '10',
+    },
+    {
+      label: '司机确认空瓶装车',
+      value: '11',
+    },
+    {
+      label: '司机运输空瓶到达气站',
+      value: '12',
+    },
+    {
+      label: '气站确认空瓶到达气站',
+      value: '13',
+    },
+    {
+      label: '气站充装空瓶',
+      value: '14',
+    },
+    {
+      label: '气站重瓶出库',
+      value: '15',
+    },
+    {
+      label: '司机将订单退回气站',
+      value: '16',
+    },
+    {
+      label: '司机确认重瓶从气站出库',
+      value: '17',
+    },
+    {
+      label: '司机交付门店',
+      value: '19',
+    },
+    {
+      label: '门店回收空瓶',
+      value: '21',
+    },
+    {
+      label: '气瓶检验',
+      value: '23',
+    },
+    {
+      label: '送气员领重瓶出库',
+      value: '25',
+    },
+    {
+      label: '送气员送达重瓶',
+      value: '26',
+    },
+    {
+      label: '送气员回收空瓶',
+      value: '27',
+    },
+    {
+      label: '门店确认重瓶卸货入库',
+      value: '31',
+    },
+    {
+      label: '门店将重瓶退回司机',
+      value: '33',
+    },
+    {
+      label: '门店取消订单',
+      value: '34',
+    },
+    {
+      label: '门店确认未配送重瓶返库',
+      value: '35',
+    },
+    {
+      label: '送气订单取消',
+      value: '36',
+    },
+    {
+      label: '门店重瓶出库',
+      value: '37',
+    },
+    {
+      label: '上报流程异常信息',
+      value: '1000',
+    }
+  ]
+}

+ 370 - 0
unpackage/dist/dev/app-plus/static/js/districtCode.js

@@ -0,0 +1,370 @@
+export const urbanArea = () => {
+	return [{
+		value: '520100',
+		label: '贵阳市',
+		children: [{
+			value: '520101',
+			label: '高新区',
+		}, {
+			value: '520102',
+			label: '南明区',
+		}, {
+			value: '520103',
+			label: '云岩区',
+		}, {
+			value: '520111',
+			label: '花溪区',
+		}, {
+			value: '520112',
+			label: '乌当区',
+		}, {
+			value: '520113',
+			label: '白云区',
+		}, {
+			value: '520114',
+			label: '国家经济技术开发区',
+		}, {
+			value: '520115',
+			label: '观山湖区',
+		}, {
+			value: '520121',
+			label: '开阳县',
+		}, {
+			value: '520122',
+			label: '息烽县',
+		}, {
+			value: '520123',
+			label: '修文县',
+		}, {
+			value: '520181',
+			label: '清镇市',
+		}, ]
+	}, {
+		value: '520200',
+		label: '六盘水市',
+		children: [{
+			value: '520201',
+			label: '钟山区',
+		}, {
+			value: '520203',
+			label: '六枝特区',
+		}, {
+			value: '520221',
+			label: '水城区',
+		}, {
+			value: '520222',
+			label: '盘县',
+		}, {
+			value: '520223',
+			label: '钟山经济开发区',
+		}, {
+			value: '520224',
+			label: '红果经济开发区',
+		}]
+	}, {
+		value: '520300',
+		label: '遵义市',
+		children: [{
+			value: '520301',
+			label: '汇川区',
+		}, {
+			value: '520302',
+			label: '红花岗区',
+		}, {
+			value: '520321',
+			label: '播州区',
+		}, {
+			value: '520322',
+			label: '桐梓县',
+		}, {
+			value: '520323',
+			label: '绥阳县',
+		}, {
+			value: '520324',
+			label: '正安县',
+		}, {
+			value: '520325',
+			label: '道真县',
+		}, {
+			value: '520326',
+			label: '务川县',
+		}, {
+			value: '520327',
+			label: '凤冈县',
+		}, {
+			value: '520328',
+			label: '湄潭县',
+		}, {
+			value: '520329',
+			label: '余庆县',
+		}, {
+			value: '520330',
+			label: '习水县',
+		}, {
+			value: '520331',
+			label: '遵义国家经济技术开发区',
+		}, {
+			value: '520332',
+			label: '新蒲新区',
+		}, {
+			value: '520333',
+			label: '南部新区',
+		}, {
+			value: '520381',
+			label: '赤水市',
+		}, {
+			value: '520382',
+			label: '仁怀市',
+		}]
+	}, {
+		value: '520400',
+		label: '安顺市',
+		children: [{
+			value: '520201',
+			label: '安顺经济开发区',
+		}, {
+			value: '520402',
+			label: '西秀区',
+		}, {
+			value: '520421',
+			label: '平坝区',
+		}, {
+			value: '520422',
+			label: '普定县',
+		}, {
+			value: '520423',
+			label: '镇宁县',
+		}, {
+			value: '520424',
+			label: '关岭县',
+		}, {
+			value: '520425',
+			label: '紫云县',
+		}, {
+			value: '520427',
+			label: '黄果树风景名胜区',
+		}, {
+			value: '520428',
+			label: '龙宫风景区',
+		}]
+	}, {
+		value: '522200',
+		label: '铜仁市',
+		children: [{
+			value: '520626',
+			label: '德江县',
+		}, {
+			value: '522201',
+			label: '碧江区',
+		}, {
+			value: '522222',
+			label: '江口县',
+		}, {
+			value: '522223',
+			label: '玉屏县',
+		}, {
+			value: '522224',
+			label: '石阡县',
+		}, {
+			value: '522225',
+			label: '思南县',
+		}, {
+			value: '522226',
+			label: '印江县',
+		}, {
+			value: '522228',
+			label: '沿河县',
+		}, {
+			value: '522229',
+			label: '松桃县',
+		}, {
+			value: '522230',
+			label: '万山区',
+		}, {
+			value: '522231',
+			label: '大龙开发区',
+		}, {
+			value: '522232',
+			label: '铜仁高新区',
+		}]
+	}, {
+		value: '522300',
+		label: '黔西南州',
+		children: [{
+			value: '522301',
+			label: '兴义市',
+		}, {
+			value: '522322',
+			label: '兴仁市',
+		}, {
+			value: '522323',
+			label: '普安县',
+		}, {
+			value: '522324',
+			label: '晴隆县',
+		}, {
+			value: '522325',
+			label: '贞丰县',
+		}, {
+			value: '522326',
+			label: '望谟县',
+		}, {
+			value: '522327',
+			label: '册亨县',
+		}, {
+			value: '522328',
+			label: '安龙县',
+		}, {
+			value: '522329',
+			label: '顶效经济开发区',
+		}]
+	}, {
+		value: '522400',
+		label: '毕节市',
+		children: [{
+			value: '522401',
+			label: '七星关区',
+		}, {
+			value: '522422',
+			label: '大方县',
+		}, {
+			value: '522423',
+			label: '黔西县',
+		}, {
+			value: '522424',
+			label: '金沙县',
+		}, {
+			value: '522425',
+			label: '织金县',
+		}, {
+			value: '522426',
+			label: '纳雍县',
+		}, {
+			value: '522428',
+			label: '赫章县',
+		}, {
+			value: '522429',
+			label: '百里杜鹃风景名胜区',
+		}, {
+			value: '522431',
+			label: '金海湖新区',
+		}, {
+			value: '524027',
+			label: '威宁彝族回族苗族自治县',
+		}]
+	}, {
+		value: '522400',
+		label: '黔东南州',
+		children: [{
+			value: '522601',
+			label: '凯里市',
+		}, {
+			value: '522622',
+			label: '黄平县',
+		}, {
+			value: '522623',
+			label: '施秉县',
+		}, {
+			value: '522624',
+			label: '三穗县',
+		}, {
+			value: '522625',
+			label: '镇远县',
+		}, {
+			value: '522626',
+			label: '岑巩县',
+		}, {
+			value: '522627',
+			label: '天柱县',
+		}, {
+			value: '522628',
+			label: '锦屏县',
+		}, {
+			value: '522629',
+			label: '剑河县',
+		}, {
+			value: '522630',
+			label: '台江县',
+		}, {
+			value: '522631',
+			label: '黎平县',
+		}, {
+			value: '522632',
+			label: '榕江县',
+		}, {
+			value: '522633',
+			label: '从江县',
+		}, {
+			value: '522634',
+			label: '雷山县',
+		}, {
+			value: '522635',
+			label: '麻江县',
+		}, {
+			value: '522636',
+			label: '丹寨县',
+		}, {
+			value: '522637',
+			label: '凯里经济开发区',
+		}]
+	}, {
+		value: '522700',
+		label: '黔南州',
+		children: [{
+			value: '522701',
+			label: '都匀市',
+		}, {
+			value: '522702',
+			label: '福泉市',
+		}, {
+			value: '522722',
+			label: '荔波县',
+		}, {
+			value: '522723',
+			label: '贵定县',
+		}, {
+			value: '522725',
+			label: '瓮安县',
+		}, {
+			value: '522726',
+			label: '独山县',
+		}, {
+			value: '522727',
+			label: '平塘县',
+		}, {
+			value: '522728',
+			label: '罗甸县',
+		}, {
+			value: '522729',
+			label: '长顺县',
+		}, {
+			value: '522730',
+			label: '龙里县',
+		}, {
+			value: '522731',
+			label: '惠水县',
+		}, {
+			value: '522732',
+			label: '三都县',
+		}, {
+			value: '522733',
+			label: '都匀经济开发区',
+		}]
+	}, {
+		value: '522800',
+		label: '贵安新区',
+		children: [{
+			value: '522801',
+			label: '党武',
+		}, {
+			value: '522802',
+			label: '湖潮',
+		}, {
+			value: '522803',
+			label: '马场',
+		}, {
+			value: '522804',
+			label: '高峰',
+		}]
+	}]
+}

BIN
unpackage/dist/dev/app-plus/static/logo.png


BIN
unpackage/dist/dev/app-plus/static/portrait.png


BIN
unpackage/dist/dev/app-plus/static/tab/dd.png


BIN
unpackage/dist/dev/app-plus/static/tab/dd_s.png


BIN
unpackage/dist/dev/app-plus/static/tab/sy.png


BIN
unpackage/dist/dev/app-plus/static/tab/sy_s.png


BIN
unpackage/dist/dev/app-plus/static/tab/wd.png


BIN
unpackage/dist/dev/app-plus/static/tab/wd_s.png


BIN
unpackage/dist/dev/app-plus/static/tab/xx.png


BIN
unpackage/dist/dev/app-plus/static/tab/xx_s.png


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/app-plus/view.css


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/app-plus/view.umd.min.js


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.