Просмотр исходного кода

Merge branch 'master' of http://git.huaml.com/zhh/front-end into module_s

fuwei 5 лет назад
Родитель
Сommit
29c1784587

+ 3 - 7
ghs/src/admin/billing/index.vue

@@ -189,13 +189,12 @@ export default {
 	}
 	.scroll-middle_bx {
 		flex: 1;
+		display: flex;
 	}
 	.tab-view {
 		height: 100%;
 		width: 170upx;
-		position: fixed;
-		left: 0;
-		z-index: 10;
+		flex-shrink: 0;
 		background-color: #f0f2f6;
 		.tab-bar-item {
 			position: relative;
@@ -240,11 +239,8 @@ export default {
 	}
 	.right-box {
 		height: 100%;
-		width: 100%;
-		position: fixed;
-		padding-left: 170upx;
+		flex: 1;
 		box-sizing: border-box;
-		left: 0;
 	}
 	.item_list_bx {
 		padding: 40px 16px;

+ 134 - 0
ghs/src/admin/warehouse/components/Commodity.vue

@@ -0,0 +1,134 @@
+<template>
+	<view class="item-cmd_bx">
+		<view class="img_bx">
+			<app-img
+				src="https://img.huaml.com/uploads/12358/202005/29/de74c55596d304b85e79154958e8bf57_small.jpeg"
+				alt="商品图"
+				mode="aspectFit"
+				:height="160"
+			/>
+		</view>
+		<view class="cmd-info_bx">
+			<view class="tit">天使美人</view>
+			<view class="kc">B级</view>
+			<view class="num-open_bx">
+				<view class="price">库存19/82</view>
+				<view class="open-bx" v-if="type == COMMODITY_TYPE.COMMON">
+					<i class="iconfont iconjianqu" @click="subtractEvent"></i>
+					<text class="num" @click="customNum">5/2</text>
+					<i class="iconfont icontianjia" @click="addEvent"></i>
+				</view>
+				<view class="open-bx" v-else-if="type == COMMODITY_TYPE.CHANGE">
+					<input class="change-input" type="text" placeholder="自动调价" />
+					<i class="iconfont icondelete" @click="delEvent"></i>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { COMMODITY_TYPE } from "@/utils/declare";
+import AppImg from "@/components/app-img";
+export default {
+	name: "Commodity",
+	components: {
+		AppImg
+	},
+	props: {
+		type: {
+			type: String,
+			default: COMMODITY_TYPE.COMMON
+		}
+	},
+	data() {
+		return {
+			COMMODITY_TYPE
+		};
+	},
+	methods: {
+		customNum() {
+			this.$emit("customNum");
+		},
+		addEvent() {
+			this.$emit("add");
+		},
+		subtractEvent() {
+			this.$emit("subtract");
+		},
+		delEvent() {
+			this.$emit("del");
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.item-cmd_bx {
+	position: relative;
+	margin-bottom: 20px;
+	.img_bx {
+		height: 160px;
+		width: 160px;
+		position: absolute;
+		left: 0px;
+		top: 0px;
+	}
+	.cmd-info_bx {
+		padding-left: 177px;
+		& .tit {
+			font-size: 28px;
+			font-weight: 400;
+			color: #333333;
+			padding-top: 10px;
+		}
+		& .kc {
+			color: #999999;
+			font-size: 24px;
+			padding: 10px 0 24px;
+		}
+		& .num-open_bx {
+			display: flex;
+			align-items: center;
+			& .price {
+				font-size: 28px;
+				color: #999999;
+				flex: 1;
+			}
+			& .open-bx {
+				display: flex;
+				align-items: center;
+				& .iconfont {
+					color: #3385ff;
+					font-size: 40px;
+				}
+				.icondelete {
+					margin: 0 10px 0 30px;
+					color: #ccc;
+					&.edit {
+						color: #3385ff;
+					}
+				}
+				& > .num {
+					display: inline-block;
+					margin: 0 8px;
+					color: #333333;
+					border-radius: 22px;
+					background-color: #f5f5f5;
+					padding: 5px 36px;
+				}
+				.change-input {
+					width: 164px;
+					height: 60px;
+					line-height: 60px;
+					text-align: center;
+					background: #ffffff;
+					border: 1px solid #dddddd;
+					border-radius: 4px;
+					font-size: 28px;
+				}
+			}
+		}
+	}
+}
+</style>

+ 238 - 0
ghs/src/admin/warehouse/inventory/add.vue

@@ -0,0 +1,238 @@
+<template>
+	<view class="ex-page">
+		<view class="main-view overscroll">
+			<view class="space-view ex-info">
+				<form>
+					<view class="module-com input-line-wrap">
+						<TuiListCell
+							class="line-cell"
+							:hover="false"
+							:arrow="false"
+							@click="openAddres"
+						>
+							<view class="tui-title ">仓库</view>
+							<input
+								v-model="form.openTime"
+								placeholder-class="phcolor"
+								class="tui-input"
+								placeholder="请填写"
+								maxlength="50"
+								type="text"
+							/>
+						</TuiListCell>
+						<TuiListCell
+							class="line-cell"
+							:hover="false"
+							:arrow="false"
+							@click="openAddres"
+						>
+							<view class="tui-title ">备注</view>
+							<input
+								v-model="form.openTime"
+								placeholder-class="phcolor"
+								class="tui-input"
+								placeholder="请填写"
+								maxlength="50"
+								type="text"
+							/>
+						</TuiListCell>
+					</view>
+				</form>
+			</view>
+			<view class="space-view ex-table">
+				<Tabel :columns="columns" :dataList="dataList">
+					<template v-slot="{ row, column }">
+						<view v-if="column.custom == 'icon'" class="list-icon">
+							<image
+								class="icon-image"
+								src="https://img.huaml.com/uploads/12358/202005/29/de74c55596d304b85e79154958e8bf57_small.jpeg"
+								alt="商品图"
+							/>
+							<view class="icon-info">
+								<view class="info-name">
+									粉佳人
+								</view>
+								<view class="info-type">
+									B级
+								</view>
+							</view>
+						</view>
+					</template>
+				</Tabel>
+				<template v-if="dataList.length == 0">
+					<view class="empty-view">
+						<button class="admin-button-com blue big" @click="">
+							开始盘点
+						</button>
+					</view>
+				</template>
+			</view>
+		</view>
+		<view class="bar-view">
+			<view class="btn-view">
+				<button :class="['admin-button-com', 'middle', 'default']" @click="">
+					继续盘点
+				</button>
+				<button
+					:class="['admin-button-com', 'middle', 'default', 'disabled']"
+					disabled
+					@click=""
+				>
+					保存导草稿
+				</button>
+				<button
+					:class="['admin-button-com', 'middle', 'disabled']"
+					disabled
+					@click=""
+				>
+					确认
+				</button>
+			</view>
+		</view>
+	</view>
+</template>
+<script>
+import Tabel from "../components/table";
+import TuiListCell from "@/components/plugin/list-cell";
+export default {
+	components: { TuiListCell, Tabel },
+	data() {
+		return {
+			form: {},
+			columns: [
+				{
+					name: "名称",
+					custom: "icon"
+				},
+				{
+					name: "库存",
+					dataIndex: "count",
+					// color: "success",
+					width: 120,
+					align: "center"
+				},
+				{
+					name: "盘点数",
+					dataIndex: "inventoryCount",
+					color: "warn",
+					width: 120,
+					align: "center"
+				},
+				{
+					name: "盈亏数",
+					dataIndex: "profitCount",
+					color: "success",
+					width: 120,
+					align: "center"
+				}
+			],
+			dataList: [
+				// {
+				// 	count: "1",
+				// 	inventoryCount: "2",
+				// 	profitCount: "3"
+				// },
+				// {
+				// 	count: "1",
+				// 	inventoryCount: "2",
+				// 	profitCount: "3"
+				// },
+				// {
+				// 	count: "1",
+				// 	inventoryCount: "2",
+				// 	profitCount: "3"
+				// }
+			]
+		};
+	}
+};
+</script>
+<style lang="scss" scoped>
+.ex-page {
+	height: 100%;
+	display: flex;
+	flex-direction: column;
+	.main-view {
+		flex: 1;
+		background-color: #f9fbfc;
+		.space-view {
+			margin-top: 15upx;
+			background-color: #fff;
+		}
+		.ex-info {
+			// padding: 0 30upx;
+			.module-com {
+				background-color: #fff;
+				margin-bottom: 20px;
+
+				border-radius: 10px;
+				overflow: hidden;
+				.member-wrap {
+					.member-det {
+						font-size: 24px;
+						margin-left: 20px;
+					}
+				}
+				.remark-wrap {
+					align-items: flex-start;
+					.remark {
+						height: 240px;
+					}
+				}
+				// .tui-placeholder,
+				// .tui-input {
+				// 	padding-right: 30px;
+				// 	width: 100%;
+				// 	text-align: right;
+				// }
+			}
+		}
+		.ex-table {
+			/deep/.list-icon {
+				display: flex;
+				.icon-image {
+					width: 80upx;
+					height: 80upx;
+					margin-right: 20upx;
+				}
+				.icon-info {
+					display: flex;
+					flex-direction: column;
+					justify-content: space-around;
+					.info-name {
+						font-size: 28upx;
+						font-weight: bold;
+						color: #333333;
+					}
+					.info-type {
+						font-size: 24upx;
+						color: #666666;
+					}
+				}
+			}
+		}
+		.empty-view {
+			display: flex;
+			justify-content: center;
+			margin: 120upx auto;
+		}
+	}
+	.bar-view {
+		display: flex;
+		justify-content: flex-end;
+		align-items: center;
+		padding: 0 30upx;
+		width: 100%;
+		height: 100upx;
+
+		box-shadow: 0px -1px 6px 0px rgba(4, 0, 0, 0.06);
+
+		.btn-view {
+			display: flex;
+			.admin-button-com {
+				margin: 0 10upx;
+			}
+		}
+	}
+}
+</style>

+ 218 - 0
ghs/src/admin/warehouse/inventory/details.vue

@@ -0,0 +1,218 @@
+<template>
+	<view class="ex-page">
+		<view class="main-view overscroll">
+			<view class="space-view ex-info">
+				<view class="info-cell">
+					<view class="cell-label"> 仓库</view>
+					<view class="cell-value"> 海沧店</view>
+				</view>
+
+				<view class="info-cell">
+					<view class="cell-label"> 制单人</view>
+					<view class="cell-value"> 海沧店</view>
+				</view>
+				<view class="info-cell">
+					<view class="cell-label"> 盘点日期</view>
+					<view class="cell-value"> 2020-01-15</view>
+				</view>
+				<view class="info-cell">
+					<view class="cell-label"> 盘点状态</view>
+					<view class="cell-value"> 待出库</view>
+				</view>
+				<view class="info-cell">
+					<view class="cell-label"> 备注</view>
+					<view class="cell-value">
+						出库送货时给我回个电话
+					</view>
+				</view>
+			</view>
+			<view class="space-view ex-table">
+				<Tabel :columns="columns" :dataList="dataList">
+					<template v-slot="{ row, column }">
+						<view v-if="column.custom == 'icon'" class="list-icon">
+							<image
+								class="icon-image"
+								src="https://img.huaml.com/uploads/12358/202005/29/de74c55596d304b85e79154958e8bf57_small.jpeg"
+								alt="商品图"
+							/>
+							<view class="icon-info">
+								<view class="info-name">
+									粉佳人
+								</view>
+								<view class="info-type">
+									B级
+								</view>
+							</view>
+						</view>
+					</template>
+				</Tabel>
+			</view>
+		</view>
+		<view class="bar-view">
+			<view class="info-view">
+				盈亏合计:
+				<text class="price-item">
+					-3扎
+				</text>
+				<text class="price-item red">
+					¥-18.00
+				</text>
+			</view>
+		</view>
+	</view>
+</template>
+<script>
+import Tabel from "../components/table";
+export default {
+	components: { Tabel },
+	data() {
+		return {
+			columns: [
+				{
+					name: "名称",
+					custom: "icon"
+				},
+				{
+					name: "库存",
+					dataIndex: "count",
+					// color: "success",
+					width: 120,
+					align: "center"
+				},
+				{
+					name: "盘点数",
+					dataIndex: "inventoryCount",
+					color: "warn",
+					width: 120,
+					align: "center"
+				},
+				{
+					name: "盈亏数",
+					dataIndex: "profitCount",
+					color: "success",
+					width: 120,
+					align: "center"
+				}
+			],
+			dataList: [
+				{
+					count: "1",
+					inventoryCount: "2",
+					profitCount: "3"
+				},
+				{
+					count: "1",
+					inventoryCount: "2",
+					profitCount: "3"
+				},
+				{
+					count: "1",
+					inventoryCount: "2",
+					profitCount: "3"
+				},
+				{
+					count: "1",
+					inventoryCount: "2",
+					profitCount: "3"
+				},
+				{
+					count: "1",
+					inventoryCount: "2",
+					profitCount: "3"
+				},
+				{
+					count: "1",
+					inventoryCount: "2",
+					profitCount: "3"
+				}
+			]
+		};
+	}
+};
+</script>
+<style lang="scss" scoped>
+.ex-page {
+	height: 100%;
+	display: flex;
+	flex-direction: column;
+	.main-view {
+		flex: 1;
+		background-color: #f9fbfc;
+		.space-view {
+			margin-top: 15upx;
+			background-color: #fff;
+		}
+		.ex-info {
+			padding: 30upx;
+			.info-cell {
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+				&:not(:first-child) {
+					margin-top: 20upx;
+				}
+				.cell-label {
+					width: 110upx;
+					color: #666666;
+				}
+				.cell-value {
+					margin-left: 40upx;
+					color: #333;
+					&.warning {
+						color: #ffaf1d;
+					}
+				}
+			}
+		}
+		.ex-table {
+			/deep/.list-icon {
+				display: flex;
+				.icon-image {
+					width: 80upx;
+					height: 80upx;
+					margin-right: 20upx;
+				}
+				.icon-info {
+					display: flex;
+					flex-direction: column;
+					justify-content: space-around;
+					.info-name {
+						font-size: 28upx;
+						font-weight: bold;
+						color: #333333;
+					}
+					.info-type {
+						font-size: 24upx;
+						color: #666666;
+					}
+				}
+			}
+		}
+	}
+	.bar-view {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		padding: 0 30upx;
+		width: 100%;
+		height: 100upx;
+
+		box-shadow: 0px -1px 6px 0px rgba(4, 0, 0, 0.06);
+		.info-view {
+			font-size: 26upx;
+			.price-item {
+				margin: 0 10upx;
+			}
+			.red {
+				color: #f51608;
+			}
+		}
+		.btn-view {
+			display: flex;
+			.admin-button-com {
+				margin: 0 10upx;
+			}
+		}
+	}
+}
+</style>

+ 146 - 0
ghs/src/admin/warehouse/inventory/list.vue

@@ -0,0 +1,146 @@
+<template>
+	<view class="allot-ex-page">
+		<view class="tabs">
+			<Tabs :tabs="tabs" :itemWidth="'33.33%'" isAdd addText="新增"></Tabs>
+		</view>
+		<scroll-view scroll-y class="allot-list">
+			<view class="allot-item" v-for="(item, index) in allotList" :key="index">
+				<view class="info">
+					<view class="info-order">{{ item.orderNo }}</view>
+					<view class="info-name">{{ item.name }}</view>
+					<view
+						><text class="info-time">{{ item.dateTime }}</text
+						><text>{{ item.count }}</text
+						>件</view
+					>
+				</view>
+				<view :class="['status', item.status == '01' ? 'primary' : 'gray']">
+					<view
+						:class="[
+							'iconfont',
+							item.status == '01' ? 'iconxuanzhong' : 'iconbianji'
+						]"
+					></view>
+				</view>
+			</view>
+		</scroll-view>
+	</view>
+</template>
+<script>
+import Tabs from "@/components/plugin/tabs";
+export default {
+	components: {
+		Tabs
+	},
+	data() {
+		return {
+			tabs: [
+				{
+					name: "全部",
+					key: ""
+				},
+				{
+					name: "草稿",
+					key: "01"
+				},
+				{
+					name: "已盘点",
+					key: "02"
+				}
+			],
+			allotList: [
+				{
+					orderNo: "PD20201217212800156",
+					name: "小许",
+					dateTime: "2020-7-10 21:50",
+					count: "101",
+					status: "02"
+				},
+				{
+					orderNo: "PD20201217212800156",
+					name: "小许",
+					dateTime: "2020-7-10 21:50",
+					count: "101",
+					status: "02"
+				},
+				{
+					orderNo: "PD20201217212800156",
+					name: "小许",
+					dateTime: "2020-7-10 21:50",
+					count: "101",
+					status: "01"
+				}
+			]
+		};
+	}
+};
+</script>
+<style lang="scss" scoped>
+.allot-ex-page {
+	height: 100%;
+	display: flex;
+	flex-direction: column;
+	background-color: #f9fbfc;
+	.allot-list {
+		margin-top: 20upx;
+		flex: 1;
+		padding-bottom: 150upx;
+		.allot-item {
+			margin-bottom: 1px;
+			padding: 30upx;
+			display: flex;
+			align-items: center;
+			box-shadow: 0px 1px 0px 0px #eeeeee;
+			background-color: #fff;
+			.info {
+				flex: 1;
+				margin-right: 20px;
+				.info-order {
+					font-size: 32upx;
+					font-weight: 600;
+					color: #333333;
+				}
+				.info-name {
+					margin: 40upx 0 20upx;
+					font-size: 28upx;
+					font-weight: 400;
+					color: #666666;
+				}
+				.info-time {
+					margin-right: 30upx;
+					font-size: 28upx;
+					font-weight: 400;
+					color: #666666;
+				}
+			}
+			.status {
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				flex-shrink: 0;
+				width: 100upx;
+				color: #cccccc;
+				.status-name {
+					margin-top: 10upx;
+					font-size: 24upx;
+				}
+				.iconxuanzhong {
+					font-size: 46upx;
+				}
+				.iconbianji {
+					font-size: 36upx;
+				}
+				&.primary {
+					color: #3385ff;
+				}
+				&.gray {
+					color: #cccccc;
+				}
+				&.warn {
+					color: #ffaf1d;
+				}
+			}
+		}
+	}
+}
+</style>

+ 266 - 0
ghs/src/admin/warehouse/inventory/select.vue

@@ -0,0 +1,266 @@
+<template>
+	<view class="billing_box_bg">
+		<view class="input-wrap">
+			<app-search-module
+				placeholder="输入商品名拼音首字母查询"
+				@search="searchFn"
+			/>
+		</view>
+		<view class="scroll-middle_bx">
+			<scroll-view
+				scroll-y
+				scroll-with-animation
+				class="tab-view"
+				:scroll-top="scrollTop"
+			>
+				<div
+					v-for="(item, index) in tabbar"
+					:key="index"
+					class="tab-bar-item"
+					:class="[currentTab == index ? 'active' : '']"
+					:data-current="index"
+					@tap.stop="swichNav($event, item)"
+				>
+					<text>{{ item.categoryName || "暂无" }}</text>
+					<!-- <text class="tag">4/10</text> -->
+				</div>
+			</scroll-view>
+			<block v-for="(item, index) in tabbar" :key="index">
+				<scroll-view scroll-y class="right-box" v-if="currentTab == index">
+					<view class="item_list_bx">
+						<view class="item_list_title">{{ item.categoryName }}</view>
+						<Commondity @customNum="customNum"></Commondity>
+						<Commondity @customNum="customNum"></Commondity>
+					</view>
+
+					<!--内容部分 start -->
+					<!-- v-if="!$util.isEmpty(list.data)" -->
+
+					<!-- <block v-else>
+                    <app-wrapper-empty title="暂无数据" :is-empty="$util.isEmpty(list.data)" />
+                </block> -->
+					<!--内容部分 end -->
+				</scroll-view>
+			</block>
+		</view>
+		<view class="under-bar">
+			<button :class="['admin-button-com', 'middle', 'blue']" @click="">
+				选好了
+			</button>
+		</view>
+		<!-- :maskClosable="false" -->
+		<modal-module
+			:show="isModel"
+			@cancel="modalCancel"
+			@click="affirm"
+			title="花之物语 红色系"
+			color="#333"
+			:size="32"
+			padding="30rpx 30rpx"
+		>
+			<template slot="customContent">
+				<view class="select-cmd_bx">
+					<view class="kc">
+						库存972
+					</view>
+					<view class="num_bx">
+						<input type="number" />扎
+						<input type="number" style="margin-left:24upx" />支
+					</view>
+				</view>
+			</template>
+		</modal-module>
+	</view>
+</template>
+
+<script>
+import AppSearchModule from "@/components/module/app-search";
+import AppWrapperEmpty from "@/components/app-wrapper-empty";
+import Commondity from "../components/Commodity";
+import ModalModule from "@/components/plugin/modal";
+import { COMMODITY_TYPE } from "@/utils/declare";
+export default {
+	name: "select", // 盘点花材
+	components: {
+		AppSearchModule,
+		AppWrapperEmpty,
+		Commondity,
+		ModalModule
+	},
+	data() {
+		return {
+			COMMODITY_TYPE,
+
+			tabbar: [
+				{
+					categoryName: "花束",
+					delStatus: "0",
+					description: "",
+					goodsNum: "0",
+					id: "95",
+					img: "https://img.huaml.com",
+					inTurn: "0",
+					merchantId: "12358",
+					parentId: "0",
+					sold: "0",
+					status: "1"
+				},
+				{
+					categoryName: "花篮",
+					delStatus: "0",
+					description: "",
+					goodsNum: "0",
+					id: "96",
+					img: "https://img.huaml.com",
+					inTurn: "0",
+					merchantId: "12358",
+					parentId: "0",
+					sold: "0",
+					status: "1"
+				}
+			],
+			currentTab: 0,
+			isModel: false
+		};
+	},
+	methods: {
+		//自定义数量
+		customNum() {
+			this.isModel = true;
+		},
+		modalCancel() {
+			this.isModel = false;
+		}, // 取消 确认
+		affirm(val) {
+			if (val.index === 0) {
+				this.modalCancel();
+			} else {
+			}
+		},
+		searchFn() {},
+		scrollTop() {},
+		swichNav(e) {
+			let cur = e.currentTarget.dataset.current;
+			if (this.currentTab == cur) {
+				return false;
+			} else {
+				this.currentTab = cur;
+				// this.form.categoryId = item.id;
+				// this.resetList();
+				// this._list();
+				// this.checkCor()
+			}
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.billing_box_bg {
+	height: 100%;
+	display: flex;
+	flex-direction: column;
+	.input-wrap {
+		padding: 22px 20px 22px 30px;
+	}
+	.scroll-middle_bx {
+		flex: 1;
+		display: flex;
+	}
+	.under-bar {
+		padding: 0 20upx;
+		display: flex;
+
+		flex-shrink: 0;
+		justify-content: flex-end;
+		align-items: center;
+		width: 100%;
+		height: 100upx;
+		background-color: #fff;
+	}
+	.tab-view {
+		height: 100%;
+		width: 170upx;
+		flex-shrink: 0;
+		background-color: #f0f2f6;
+
+		.tab-bar-item {
+			position: relative;
+			width: 170upx;
+			height: 90upx;
+			box-sizing: border-box;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			font-size: 26upx;
+			color: #444;
+			font-weight: 400;
+			.tag {
+				display: flex;
+				padding: 0 20px;
+				align-items: center;
+				position: absolute;
+				right: 0;
+				top: 0;
+				height: 32px;
+				background: #ff2842;
+				border-radius: 16px;
+				color: #fff;
+				font-size: 20px;
+			}
+		}
+
+		.active {
+			position: relative;
+			color: $mainColor;
+			font-size: 26px;
+			background: #fff;
+		}
+
+		.active::before {
+			content: "";
+			position: absolute;
+			border-left: 8upx solid $mainColor;
+			height: 100%;
+			left: 0;
+		}
+	}
+	.right-box {
+		height: 100%;
+		flex: 1;
+		box-sizing: border-box;
+	}
+	.item_list_bx {
+		padding: 40px 16px;
+	}
+	.item_list_title {
+		margin-bottom: 20px;
+		font-size: 24px;
+		font-weight: 600;
+		color: #666666;
+	}
+	.select-cmd_bx {
+		& .kc {
+			color: #999999;
+			font-size: 28px;
+			font-weight: 400;
+			margin-bottom: 60px;
+			text-align: center;
+			margin-top: 10px;
+		}
+		& .num_bx {
+			display: flex;
+			align-items: center;
+			margin-bottom: 80px;
+			& > input {
+				width: 212px;
+				height: 80px;
+				border: 1px solid #dddddd;
+				border-radius: 4px;
+				text-align: center;
+				margin-right: 24px;
+			}
+		}
+	}
+}
+</style>

+ 150 - 0
ghs/src/admin/warehouse/shop/list.vue

@@ -0,0 +1,150 @@
+<template>
+	<view class="shop-page">
+		<scroll-view scroll-y class="shop-list">
+			<view class="shop-item" v-for="(item, index) in shopList" :key="index">
+				<image
+					class="avatar"
+					src="https://img.huaml.com/uploads/12358/202005/29/de74c55596d304b85e79154958e8bf57_small.jpeg"
+					alt="商品图"
+				/>
+				<view class="info">
+					<view class="info-name">{{ item.name }}</view>
+					<view class="info-address">
+						{{ item.dateTime }}
+					</view>
+				</view>
+				<view :class="['edit']">
+					<text class="iconfont iconxinrenlingquanshezhi"> </text>
+					<text class="iconfont iconbianji"> </text>
+					<text class="iconfont iconshanchu1"> </text>
+				</view>
+			</view>
+		</scroll-view>
+		<view class="under-bar">
+			<button :class="['admin-button-com', 'middle', 'blue']" @click="">
+				添加
+			</button>
+		</view>
+	</view>
+</template>
+<script>
+export default {
+	components: {},
+	data() {
+		return {
+			tabs: [
+				{
+					name: "全部",
+					key: ""
+				},
+				{
+					name: "草稿",
+					key: "01"
+				},
+				{
+					name: "已盘点",
+					key: "02"
+				}
+			],
+			shopList: [
+				{
+					orderNo: "PD20201217212800156",
+					name: "小许",
+					dateTime: "2020-7-10 21:50",
+					count: "101",
+					status: "02"
+				},
+				{
+					orderNo: "PD20201217212800156",
+					name: "小许",
+					dateTime: "2020-7-10 21:50",
+					count: "101",
+					status: "02"
+				},
+				{
+					orderNo: "PD20201217212800156",
+					name: "小许",
+					dateTime: "2020-7-10 21:50",
+					count: "101",
+					status: "01"
+				}
+			]
+		};
+	}
+};
+</script>
+<style lang="scss" scoped>
+.shop-page {
+	height: 100%;
+	display: flex;
+	flex-direction: column;
+	background-color: #f9fbfc;
+	.under-bar {
+		padding: 0 20upx;
+		display: flex;
+
+		flex-shrink: 0;
+		justify-content: flex-end;
+		align-items: center;
+		width: 100%;
+		height: 100upx;
+		background-color: #fff;
+	}
+	.shop-list {
+		margin-top: 20upx;
+		flex: 1;
+		padding-bottom: 150upx;
+		.shop-item {
+			margin-bottom: 1px;
+			padding: 30upx;
+			display: flex;
+			align-items: center;
+			box-shadow: 0px 1px 0px 0px #eeeeee;
+			background-color: #fff;
+			.avatar {
+				width: 90upx;
+				height: 90upx;
+				border-radius: 50%;
+				image {
+					width: 100%;
+					height: 100%;
+				}
+			}
+			.info {
+				flex: 1;
+				margin: 0 20px;
+				.info-name {
+					font-size: 30upx;
+					font-weight: 600;
+					color: #333333;
+				}
+				.info-address {
+					margin-top: 15upx;
+					font-size: 24upx;
+					font-weight: 400;
+					color: #999999;
+				}
+			}
+			.edit {
+				display: flex;
+				align-items: center;
+				justify-content: space-around;
+				flex-shrink: 0;
+				.iconfont {
+					margin: 0 20upx;
+				}
+				.iconxinrenlingquanshezhi {
+					font-size: 46upx;
+					color: $mainColor;
+				}
+				.iconbianji {
+					font-size: 40upx;
+				}
+				.iconshanchu1 {
+					font-size: 40upx;
+				}
+			}
+		}
+	}
+}
+</style>

+ 333 - 0
ghs/src/admin/warehouse/shop/update.vue

@@ -0,0 +1,333 @@
+<template>
+	<div class="app-content">
+		<!-- 门店信息 -->
+		<form @submit="formSubmit" @reset="formReset">
+			<!-- <div class="prompt-text">注: 请先关注公众号,绑定后可以在移动端自动登录</div> -->
+			<!-- 登录信息 -->
+			<div class="module-com input-line-wrap">
+				<tui-list-cell class="line-cell" :hover="false">
+					<div class="tui-title required">门店名称</div>
+					<input
+						v-model="form.shopName"
+						placeholder-class="phcolor"
+						class="tui-input"
+						name="shopName"
+						placeholder="请输入名称"
+						maxlength="50"
+						type="text"
+					/>
+				</tui-list-cell>
+				<tui-list-cell class="line-cell" :hover="false">
+					<div class="tui-title required">营业时间</div>
+					<input
+						v-model="form.openTime"
+						placeholder-class="phcolor"
+						class="tui-input"
+						name="openTime"
+						placeholder="请输入营业时间 例如:8:00 - 22:00"
+						maxlength="50"
+						type="text"
+					/>
+				</tui-list-cell>
+				<tui-list-cell class="line-cell" :hover="false">
+					<div class="tui-title required">联系电话</div>
+					<input
+						v-model="form.telephone"
+						placeholder-class="phcolor"
+						class="tui-input"
+						name="telephone"
+						placeholder="请输入联系电话"
+						maxlength="50"
+						type="text"
+					/>
+				</tui-list-cell>
+				<tui-list-cell
+					class="line-cell"
+					:hover="false"
+					:arrow="true"
+					@click="openAddres"
+				>
+					<div class="tui-title required">所在城市</div>
+					<div class="tui-input" v-if="form.province || form.city">
+						{{ form.province + "-" + form.city }}
+					</div>
+					<div class="tui-placeholder" v-else>请选择</div>
+					<input v-model="form.province" name="province" hidden />
+				</tui-list-cell>
+				<tui-list-cell
+					class="line-cell"
+					:hover="false"
+					:arrow="true"
+					@click="selRegionFn"
+				>
+					<div class="tui-title required">地址</div>
+					<div class="tui-input" v-if="form.address">{{ form.address }}</div>
+					<div class="tui-placeholder" v-else>请填写详细地址</div>
+					<input v-model="form.address" name="address" hidden />
+				</tui-list-cell>
+				<tui-list-cell class="line-cell" :hover="false">
+					<div class="tui-title required">门牌号</div>
+					<input
+						v-model="form.floor"
+						placeholder-class="phcolor"
+						class="tui-input"
+						name="floor"
+						placeholder="楼号门牌号(选填)"
+					/>
+				</tui-list-cell>
+				<tui-list-cell class="line-cell remark-wrap" :hover="false">
+					<div class="tui-title">状态</div>
+					<div class="tui-input">
+						<radio-group class="radio-group" @change="radioChange">
+							<label v-for="(item, index) in statusList" :key="item.value">
+								<radio
+									:value="item.value"
+									:checked="item.value === form.status"
+									:color="'#3385FF'"
+								/>
+								<text>{{ item.name }}</text>
+							</label>
+						</radio-group>
+					</div>
+				</tui-list-cell>
+			</div>
+			<!-- 提交 -->
+			<div class="confirm-btn">
+				<button class="admin-button-com big blue" formType="submit">确认</button>
+			</div>
+		</form>
+		<!-- 省市联动 -->
+		<simple-address
+			ref="simpleAddress"
+			:pickerValueDefault="cityPickerValueDefault"
+			@onConfirm="onCityConfirm"
+		></simple-address>
+		<!-- 选择地区 -->
+		<app-area-sel
+			:show.sync="showRegion"
+			:city="form.receiveCity"
+			@change="changeAreaFn"
+		/>
+	</div>
+</template>
+
+<script>
+import TuiListCell from "@/components/plugin/list-cell";
+import AppAvatarModule from "@/components/module/app-avatar";
+import SimpleAddress from "@/components/plugin/simple-address";
+import AppAreaSel from "@/components/app-area-sel";
+const form = require("@/utils/formValidation.js");
+// api
+import { updateShop as update, addShop as add } from "@/api/shop";
+export default {
+	name: "staff-add",
+	components: {
+		TuiListCell,
+		AppAvatarModule,
+		SimpleAddress,
+		AppAreaSel
+	},
+	data() {
+		return {
+			form: {
+				shopName: "",
+				province: "",
+				city: "",
+				address: "",
+				floor: "",
+				openTime: "8:00 - 22:00",
+				introduction: "",
+				telephone: "",
+				status: ""
+			},
+			// 详细地址
+			showRegion: false,
+			region: {
+				lat: 0,
+				long: 0
+			},
+			// 省市联动
+			regionData: [],
+			cityPickerValueDefault: [0, 0],
+			statusList: [
+				{
+					value: "01",
+					name: "正常"
+				},
+				{
+					value: "02",
+					name: "停用"
+				}
+			]
+		};
+	},
+	onLoad() {
+		// this.init()
+	},
+	onShow() {
+		if (this.option.id) {
+			uni.setNavigationBarTitle({
+				title: `修改门店`
+			});
+		} else {
+			uni.setNavigationBarTitle({
+				title: `添加门店`
+			});
+		}
+	},
+	methods: {
+		init() {
+			this._getDet();
+		},
+		// api
+		_getDet() {
+			let data = uni.getStorageSync("modifyShopB");
+			if (this.$util.isEmpty(data)) return;
+			Object.keys(this.form).forEach((i, index) => {
+				// if (i != 'password') {
+				this.form[i] = data[i];
+				// }
+			});
+		},
+		// option
+		// 选择地址
+		selRegionFn() {
+			if (!this.form.city) {
+				this.$msg("请先选择城市!");
+				return false;
+			}
+			this.showRegion = true;
+		},
+		changeAreaFn(e) {
+			console.log("changeAreaFn", e);
+			this.form.address = e.address;
+			this.region.lat = e.location.lat;
+			this.region.long = e.location.lng;
+		},
+		// 省市联动
+		openAddres() {
+			this.$refs.simpleAddress.open();
+		},
+		onCityConfirm(e) {
+			// this.form.receiveAddress = e.label
+			this.form.province = e.provinceName;
+			this.form.city = e.cityName;
+			// this.pickerText = JSON.stringify(e)
+		},
+		radioChange: function(evt) {
+			for (let i = 0; i < this.statusList.length; i++) {
+				if (this.statusList[i].value === evt.target.value) {
+					this.form.status = evt.target.value;
+					break;
+				}
+			}
+		},
+		confirmFn() {
+			let hostFn = this.option.id ? update : add;
+			if (this.option.id) {
+				this.form.id = this.option.id;
+			}
+			hostFn(this.form).then(res => {
+				let promptText = this.option.id ? "修改成功!" : "添加成功!";
+				this.$msg(promptText);
+				uni.removeStorageSync("modifyShopB");
+				setTimeout(() => {
+					this.$util.pageTo("/admin/shop/list");
+				}, 1000);
+			});
+		},
+		// 表单验证
+		formSubmit(e) {
+			// 表单规则
+			let rules = [
+				{
+					name: "shopName",
+					rule: ["required"],
+					msg: ["请输入名称"]
+				},
+				{
+					name: "openTime",
+					rule: ["required"],
+					msg: ["请输入营业时间"]
+				},
+				{
+					name: "telephone",
+					rule: ["required"],
+					msg: ["请输入联系电话"]
+				},
+				{
+					name: "province",
+					rule: ["required"],
+					msg: ["请选择地址"]
+				},
+				{
+					name: "address",
+					rule: ["required"],
+					msg: ["请填写详细地址"]
+				},
+				{
+					name: "floor",
+					rule: ["required"],
+					msg: ["请输入门牌号"]
+				},
+				{
+					name: "status",
+					rule: ["required"],
+					msg: ["请选择状态"]
+				}
+			];
+			// 进行表单检查
+			let formData = e.detail.value;
+			let checkRes = form.validation(formData, rules);
+			// 验证通过!
+			if (!checkRes) {
+				this.confirmFn();
+			} else {
+				this.$msg(checkRes);
+			}
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.app-content {
+	min-height: calc(100vh - 20px);
+	padding-top: 20px;
+}
+.prompt-text {
+	color: $fontColor3;
+	padding-left: 30px;
+	margin-bottom: 30px;
+}
+// ---
+.module-com {
+	margin-bottom: 20px;
+	.member-wrap {
+		.member-det {
+			font-size: 24px;
+			margin-left: 20px;
+		}
+	}
+	.remark-wrap {
+		align-items: flex-start;
+		.remark {
+			height: 240px;
+		}
+	}
+}
+.radio-group {
+	display: flex;
+	label {
+		margin-right: 80upx;
+	}
+}
+// 按钮
+.confirm-btn {
+	width: calc(100% - 60px);
+	margin: 60px 30px 20px;
+	.admin-button-com {
+		width: 100%;
+	}
+}
+</style>

+ 48 - 0
ghs/src/pages.json

@@ -437,6 +437,54 @@
 					}
 				}
 			]
+		},
+		{
+			"root": "admin/warehouse/inventory/",
+			"pages": [
+				{
+					"path": "list",
+					"style": {
+						"navigationBarTitleText": "盘点",
+						"enablePullDownRefresh": true
+					}
+				},
+				{
+					"path": "details",
+					"style": {
+						"navigationBarTitleText": "盘点详情"
+					}
+				},
+				{
+					"path": "add",
+					"style": {
+						"navigationBarTitleText": "新增"
+					}
+				},
+				{
+					"path": "select",
+					"style": {
+						"navigationBarTitleText": "盘点花材"
+					}
+				}
+			]
+		},
+		{
+			"root": "admin/warehouse/shop/",
+			"pages": [
+				{
+					"path": "list",
+					"style": {
+						"navigationBarTitleText": "盘点",
+						"enablePullDownRefresh": true
+					}
+				},
+				{
+					"path": "update",
+					"style": {
+						"navigationBarTitleText": "门店编辑"
+					}
+				}
+			]
 		}
 	],
 	"globalStyle": {