From 76accdc54aaa7dccce6962d2a284f4e89b278dc1 Mon Sep 17 00:00:00 2001
From: whycq <10027870+whycq@user.noreply.gitee.com>
Date: 星期六, 02 十二月 2023 17:01:52 +0800
Subject: [PATCH] #

---
 uni_modules/riko-combox/package.json                           |   86 ++++++++
 uni_modules/riko-combox/components/riko-combox/riko-combox.vue |  293 +++++++++++++++++++++++++++++
 uni_modules/riko-combox/changelog.md                           |   17 +
 pages/project/pakin/pakin.vue                                  |   25 +-
 static/js/util.js                                              |    2 
 uni_modules/riko-combox/readme.md                              |    7 
 pages/common/mat/matPick.vue                                   |  134 +++++++++++--
 App.vue                                                        |    2 
 8 files changed, 531 insertions(+), 35 deletions(-)

diff --git a/App.vue b/App.vue
index 41c6a63..bcd5738 100644
--- a/App.vue
+++ b/App.vue
@@ -16,7 +16,7 @@
 	/*姣忎釜椤甸潰鍏叡css */
 	body {
 		background-color: #f8fafb;
-		font-family:  Helvetica Neue, Helvetica, sans-serif,'my-font';
+		font-family:  Helvetica, sans-serif,'my-font';
 	}
 
 	@font-face {
diff --git a/pages/common/mat/matPick.vue b/pages/common/mat/matPick.vue
index 077ca63..03807ae 100644
--- a/pages/common/mat/matPick.vue
+++ b/pages/common/mat/matPick.vue
@@ -5,9 +5,24 @@
 				<!-- key -->
 				<view class="item-key">{{item.title}}</view>
 				<!-- value -->
-				<view class="item-val">{{item.value}}</view>
+				<view class="item-text" v-if="item.type == 'text'">{{mat[item.field]}}</view>
+				<!-- <view class="item-text" v-if="item.type == 'text'">{{item.value}}</view> -->
+				<view class="item-input" v-if="item.type == 'input'" :style="'text-align:'+ float">
+					<input type="text" @blur="blur" @focus="focus" v-model="inputData">
+				</view>
+				<view class="item-input" v-if="item.type == 'number-box'">
+					<uni-number-box v-model="numberData" :max="99999999" :step='1' color="#747474" @change="changeValue" />
+				</view>
+				<view class="item-input" v-if="item.type == 'select'">
+					<riko-combox @input="select" :candidates="candidates" :value="city" :inputFlag="true"></riko-combox>
+				</view>
 			</view>
 		</view>
+		
+		<view class="z-floor">
+			<view class="z-primary" @click="back">鎻愬彇</view>
+		</view>
+		
 	</view>
 </template>
 
@@ -15,58 +30,133 @@
 	export default {
 		data() {
 			return {
+				candidates: [{name: 'box',id:1},{name: 'plan',id: 2}],
+				city: null,
 				data: [
 					{
-						title: '鐗╂枡鍚嶇О鐗�',
+						title: '鍟嗗搧鍚嶇О',
 						field: 'maktx',
 						hied: false,
-						value: '123456'
+						value: '123456',
+						type: 'text'
 					},
 					{
-						title: '鐗╂枡缂栧彿',
-						field: 'maktx',
+						title: '鍟嗗搧缂栧彿',
+						field: 'matnr',
 						hied: false,
-						value: '娓╁害銆傜┖璋冪敤鏉ユ帶鍒舵暟鎹腑蹇冪殑娓╁害鍜屾箍搴︼紝鍒跺喎涓庣┖璋�'
+						value: '娓╁害銆傜┖璋�',
+						type: 'text'
 					},
 					{
-						title: '鐗╂枡鍚嶇О鐗╃墿鏂欏悕绉扮墿',
-						field: 'maktx',
+						title: '瑙勬牸',
+						field: 'specs',
 						hied: false,
-						value: '123456'
+						value: '蠁160*45蠁160*45蠁160*45蠁160*45蠁160*45蠁160*45蠁160*45蠁160*45蠁160*45蠁160*45',
+						type: 'text'
 					},
-				]
+					{
+						title: '鎵瑰彿',
+						field: 'batch',
+						hied: false,
+						value: '鐗╂枡鍚嶇О鐗�',
+						type: 'input'
+					},
+					{
+						title: '鏁伴噺',
+						field: 'count',
+						hied: false,
+						value: '鐗╂枡鍚嶇О鐗�',
+						type: 'number-box'
+					},
+					// {
+					// 	title: '璐т富',
+					// 	field: 'maktx',
+					// 	hied: false,
+					// 	value: '鐗╂枡鍚嶇О鐗�',
+					// 	type: 'select'
+					// },
+				],
+				mat: '',
+				float: 'left',
+				inputData: '',
+				numberData: ''
 			}
 		},
+		onLoad(option) {
+			let _this = this
+			const eventChannel = this.getOpenerEventChannel();
+			// 鐩戝惉acceptDataFromOpenerPage浜嬩欢锛岃幏鍙栦笂涓�椤甸潰閫氳繃eventChannel浼犻�佸埌褰撳墠椤甸潰鐨勬暟鎹�
+			eventChannel.on('mat', function(data) {
+				_this.mat = data.mat
+			})
+		},
 		methods: {
-			
+			blur() {
+				this.float = 'right'
+			},
+			focus() {
+				let newData = this.inputData
+				this.inputData = ''
+				this.float = 'left'
+				this.inputData = newData
+			},
+			changeValue() {
+			},
+			select(e){
+				console.log(e);
+			},
+			back() {
+				if (this.mat.anfme === 0) {
+					uni.showToast({title: '璇疯緭鍏ユ暟閲�', icon: "none", position: 'top'});
+					return;
+				}
+				this.getOpenerEventChannel().emit('matList', {data: this.mat});
+				uni.navigateBack({
+					
+				})
+			}
 		}
 	}
 </script>
 
 <style scoped>
 	.box {
-		min-height: 50rpx;
-		background-color: antiquewhite;
+		min-height: 60rpx;
+		/* background-color: #202124; */
+		/* color: #FFF; */
+		background-color: #FFF;
 		margin: 16rpx;
+		padding: 64rpx 32rpx 1rpx 32rpx;
 	}
 	.item {
 		display: flex;
-		align-items: center;
-		margin: 8rpx;
+		min-height: 60rpx;
+		margin: 20rpx 0;
+		border-bottom: 1px solid #efeef2;
+		vertical-align: bottom;
+		padding: 0 10rpx;
+		line-height: 1.3;
+	}
+	.item:last-child {
+		border-bottom: none;
+		margin: 10rpx 0;
 	}
 	.item-key{
-		background-color: #888;
 		min-width: 6em;
 		max-width: 6em;
 		align-self: center;
+		vertical-align: bottom;
+		font-weight: bold;
 	}
-	.item-val {
+	.item-text {
 		flex: 1;
-		border: 1px solid #999;
-		border-radius: 16rpx;
-		padding: 4rpx;
 		align-self: center;
-		
-		
+		text-align: right;
+		word-break: break-all
+	}
+	.item-input {
+		padding: 4rpx;
+		flex: 1;
+		align-self: center;
 	}
 </style>
diff --git a/pages/project/pakin/pakin.vue b/pages/project/pakin/pakin.vue
index 1d989e4..7673354 100644
--- a/pages/project/pakin/pakin.vue
+++ b/pages/project/pakin/pakin.vue
@@ -113,8 +113,9 @@
 			async getMat(matnr) {
 				let res = await addMat.addMat(matnr)
 				if (res.code === 200 && res.data) {
-					res.data['count'] = 1
-					this.zDataList =  util.matCheck(res.data,this.zDataList)
+					this.matPick(res.data)
+					// res.data['count'] = 1
+					// this.zDataList =  util.matCheck(res.data,this.zDataList)
 					this.matnr = ''
 				} else if (res.code === 200 && !res.data) {
 					let msg = `${this.matnr} 鐗╂枡寮傚父锛岃閲嶈瘯`
@@ -131,24 +132,24 @@
 				}
 			},
 			// 璺宠浆鐗╂枡鎻愬彇椤甸潰
-			matPick() {
+			matPick(mat) {
+				let _this = this
 				uni.navigateTo({
-					url: '/pages/common/data-list/dataDetail',
+					url: '/pages/common/mat/matPick',
 					// 浼�
 					success: function(data) {
-						data.eventChannel.emit('param', {
-							param: param,
-							index: index
+						data.eventChannel.emit('mat', {
+							mat: mat,
 						})
 					},
 					// 鎺�
 					events: {
-						dataList: function(data) {
-							console.log(data);
+						matList: function(data) {
+							data.data['count'] = 1
+							let newList = util.matCheck(data.data,_this.zDataList)
+							_this.zDataList =  ''
+							_this.zDataList = newList
 						},
-						del: function(data) {
-							_this.zDataList.splice(data.data,1)
-						}
 					},
 				})
 			},
diff --git a/static/js/util.js b/static/js/util.js
index 8298586..7e655f6 100644
--- a/static/js/util.js
+++ b/static/js/util.js
@@ -5,6 +5,8 @@
 * 
 */
 function matCheck(mat, matList) {
+	// console.log("matList:" + matList);
+	// console.log("mat:" + JSON.stringify(mat));
 	let newMatList = [],
 		add = true;
 	if (matList.length > 0) {
diff --git a/uni_modules/riko-combox/changelog.md b/uni_modules/riko-combox/changelog.md
new file mode 100644
index 0000000..900d4d6
--- /dev/null
+++ b/uni_modules/riko-combox/changelog.md
@@ -0,0 +1,17 @@
+## 2.0.0锛�2023-04-15锛�
+- 涓汉浼樺寲 By LuckyRiko
+## 1.0.1锛�2021-11-23锛�
+- 浼樺寲 label銆乴abel-width 灞炴��
+## 1.0.0锛�2021-11-19锛�
+- 浼樺寲 缁勪欢UI锛屽苟鎻愪緵璁捐璧勬簮锛岃瑙�:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 鏂囨。杩佺Щ锛岃瑙�:[https://uniapp.dcloud.io/component/uniui/uni-combox](https://uniapp.dcloud.io/component/uniui/uni-combox)
+## 0.1.0锛�2021-07-30锛�
+- 缁勪欢鍏煎 vue3锛屽浣曞垱寤簐ue3椤圭洰锛岃瑙� [uni-app 椤圭洰鏀寔 vue3 浠嬬粛](https://ask.dcloud.net.cn/article/37834)
+## 0.0.6锛�2021-05-12锛�
+- 鏂板 缁勪欢绀轰緥鍦板潃
+## 0.0.5锛�2021-04-21锛�
+- 浼樺寲 娣诲姞渚濊禆 uni-icons, 瀵煎叆鍚庤嚜鍔ㄤ笅杞戒緷璧�
+## 0.0.4锛�2021-02-05锛�
+- 浼樺寲 缁勪欢寮曠敤鍏崇郴锛岄�氳繃uni_modules寮曠敤缁勪欢
+## 0.0.3锛�2021-02-04锛�
+- 璋冩暣涓簎ni_modules鐩綍瑙勮寖
diff --git a/uni_modules/riko-combox/components/riko-combox/riko-combox.vue b/uni_modules/riko-combox/components/riko-combox/riko-combox.vue
new file mode 100644
index 0000000..8013494
--- /dev/null
+++ b/uni_modules/riko-combox/components/riko-combox/riko-combox.vue
@@ -0,0 +1,293 @@
+<template>
+	<view class="uni-combox" :class="border ? '' : 'uni-combox__no-border'">
+		<view v-if="label" class="uni-combox__label" :style="labelStyle">
+			<text>{{label}}</text>
+		</view>
+		<view class="uni-combox__input-box">
+			<input class="uni-combox__input" type="text" :placeholder="placeholder" :disabled="!inputFlag"
+				placeholder-class="uni-combox__input-plac" v-model="inputVal" :focus="showSelector && inputFlag"
+				@click="toggleSelector" />
+			<uni-icons :type="showSelector? 'top' : 'bottom'" size="14" color="#999" @click="toggleSelector">
+			</uni-icons>
+		</view>
+		<view class="uni-combox__selector" v-if="showSelector">
+			<view class="uni-popper__arrow"></view>
+			<scroll-view scroll-y="true" class="uni-combox__selector-scroll">
+				<view class="uni-combox__selector-empty" v-if="filterCandidatesLength === 0">
+					<text>{{emptyTips}}</text>
+				</view>
+
+				<block v-else>
+					<view class="uni-combox__selector-item" @click="onSelectorClick('')">
+						<text style="color: #aeafb1;">娓呴櫎鎵�閫夊唴瀹�</text>
+					</view>
+					<view class="uni-combox__selector-item" v-for="(item,index) in filterCandidates" :key="item.id"
+						@click="onSelectorClick(item.name)">
+						<text>{{item.name}}</text>
+					</view>
+				</block>
+			</scroll-view>
+		</view>
+	</view>
+</template>
+
+<script>
+	/**
+	 * Combox 缁勫悎杈撳叆妗�
+	 * @description 缁勫悎杈撳叆妗嗕竴鑸敤浜庢棦鍙互杈撳叆涔熷彲浠ラ�夋嫨鐨勫満鏅�
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=1261
+	 * @property {String} label 宸︿晶鏂囧瓧
+	 * @property {String} labelWidth 宸︿晶鍐呭瀹藉害
+	 * @property {String} placeholder 杈撳叆妗嗗崰浣嶇
+	 * @property {Array} candidates 鍊欓�夐」鍒楄〃
+	 * @property {String} emptyTips 绛涢�夌粨鏋滀负绌烘椂鏄剧ず鐨勬枃瀛�
+	 * @property {String} value 缁勫悎妗嗙殑鍊�
+	 */
+	export default {
+		name: 'uniCombox',
+		emits: ['input', 'update:modelValue'],
+		props: {
+			inputFlag: {
+				type: Boolean,
+				default: false
+			},
+			border: {
+				type: Boolean,
+				default: true
+			},
+			label: {
+				type: String,
+				default: ''
+			},
+			labelWidth: {
+				type: String,
+				default: 'auto'
+			},
+			placeholder: {
+				type: String,
+				default: ''
+			},
+			candidates: {
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			emptyTips: {
+				type: String,
+				default: '鏃犲尮閰嶉」'
+			},
+			// #ifndef VUE3
+			value: {
+				type: [String, Number],
+				default: ''
+			},
+			// #endif
+			// #ifdef VUE3
+			modelValue: {
+				type: [String, Number],
+				default: ''
+			},
+			// #endif
+		},
+		data() {
+			return {
+				showSelector: false,
+				inputVal: ''
+			}
+		},
+		computed: {
+			labelStyle() {
+				if (this.labelWidth === 'auto') {
+					return ""
+				}
+				return `width: ${this.labelWidth}`
+			},
+			filterCandidates() {
+				// console.log('---this.inputVal---', this.inputVal);
+				if (this.inputVal && this.inputFlag == true) {
+					return this.candidates.filter((item) => {
+						return item.name.indexOf(this.inputVal) > -1;
+					})
+				} else {
+					return this.candidates;
+				}
+			},
+			filterCandidatesLength() {
+				return this.filterCandidates.length
+			}
+		},
+		watch: {
+			// #ifndef VUE3
+			value: {
+				handler(newVal) {
+					this.inputVal = newVal
+				},
+				immediate: true
+			},
+			// #endif
+			// #ifdef VUE3
+			modelValue: {
+				handler(newVal) {
+					this.inputVal = newVal
+				},
+				immediate: true
+			},
+			// #endif
+		},
+		methods: {
+			toggleSelector() {
+				this.showSelector = !this.showSelector;
+				if(this.inputFlag == true && this.showSelector == false){
+					this.onSelectorClick(this.inputVal);
+				}
+			},
+			onSelectorClick(itemName) {
+				let item = '';
+				if (itemName) {
+					item = this.filterCandidates.find(item => item.name === itemName);
+				}
+
+				if (!item) {
+					this.inputVal = ''
+				} else {
+					this.inputVal = itemName
+				}
+
+				this.$emit('input', item)
+				// #ifdef VUE3
+				this.$emit('update:modelValue', item)
+				// #endif
+
+				this.showSelector = false
+			},
+
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.uni-combox {
+		font-size: 14px;
+		border: 1px solid #DCDFE6;
+		border-radius: 4px;
+		padding: 2px 10px;
+		position: relative;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		// height: 40px;
+		flex-direction: row;
+		align-items: center;
+		// border-bottom: solid 1px #DDDDDD;
+	}
+
+	.uni-combox__label {
+		font-size: 16px;
+		line-height: 22px;
+		padding-right: 10px;
+		color: #999999;
+	}
+
+	.uni-combox__input-box {
+		position: relative;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.uni-combox__input {
+		flex: 1;
+		font-size: 14px;
+		height: 22px;
+		line-height: 22px;
+	}
+
+	.uni-combox__input-plac {
+		font-size: 14px;
+		color: #999;
+	}
+
+	.uni-combox__selector {
+		/* #ifndef APP-NVUE */
+		box-sizing: border-box;
+		/* #endif */
+		position: absolute;
+		top: calc(100% + 12px);
+		left: 0;
+		width: 100%;
+		background-color: #FFFFFF;
+		border: 1px solid #EBEEF5;
+		border-radius: 6px;
+		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+		z-index: 2;
+		padding: 4px 0;
+	}
+
+	.uni-combox__selector-scroll {
+		/* #ifndef APP-NVUE */
+		max-height: 200px;
+		box-sizing: border-box;
+		/* #endif */
+	}
+
+	.uni-combox__selector-empty,
+	.uni-combox__selector-item {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		cursor: pointer;
+		/* #endif */
+		line-height: 36px;
+		font-size: 14px;
+		text-align: center;
+		// border-bottom: solid 1px #DDDDDD;
+		padding: 0px 10px;
+	}
+
+	.uni-combox__selector-item:hover {
+		background-color: #f9f9f9;
+	}
+
+	.uni-combox__selector-empty:last-child,
+	.uni-combox__selector-item:last-child {
+		/* #ifndef APP-NVUE */
+		border-bottom: none;
+		/* #endif */
+	}
+
+	// picker 寮瑰嚭灞傞�氱敤鐨勬寚绀哄皬涓夎
+	.uni-popper__arrow,
+	.uni-popper__arrow::after {
+		position: absolute;
+		display: block;
+		width: 0;
+		height: 0;
+		border-color: transparent;
+		border-style: solid;
+		border-width: 6px;
+	}
+
+	.uni-popper__arrow {
+		filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03));
+		top: -6px;
+		left: 10%;
+		margin-right: 3px;
+		border-top-width: 0;
+		border-bottom-color: #EBEEF5;
+	}
+
+	.uni-popper__arrow::after {
+		content: " ";
+		top: 1px;
+		margin-left: -6px;
+		border-top-width: 0;
+		border-bottom-color: #fff;
+	}
+
+	.uni-combox__no-border {
+		border: none;
+	}
+</style>
\ No newline at end of file
diff --git a/uni_modules/riko-combox/package.json b/uni_modules/riko-combox/package.json
new file mode 100644
index 0000000..c261882
--- /dev/null
+++ b/uni_modules/riko-combox/package.json
@@ -0,0 +1,86 @@
+{
+  "id": "riko-combox",
+  "displayName": "riko-combox 涓嬫媺鍗曢�夋",
+  "version": "2.0.0",
+  "description": "鍙互閫夋嫨涔熷彲浠ユ悳绱㈢殑涓嬫媺鍗曢�夋 瀹樻柟榄旀敼鐗� By LuckyRiko",
+  "keywords": [
+    "uni-ui",
+    "uniui",
+    "combox",
+    "缁勫悎妗�",
+    "select"
+],
+  "repository": "",
+"engines": {
+  },
+  "directories": {
+    "example": "../../temps/example_temps"
+  },
+"dcloudext": {
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "鏃�",
+      "data": "鏃�",
+      "permissions": "鏃�"
+    },
+    "npmurl": "",
+    "type": "component-vue"
+  },
+  "uni_modules": {
+    "dependencies": [
+			"uni-scss",
+			"uni-icons"
+		],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "n"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "寰俊娴忚鍣�(Android)": "y",
+          "QQ娴忚鍣�(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "y",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "灏忕▼搴�": {
+          "寰俊": "y",
+          "闃块噷": "y",
+          "鐧惧害": "y",
+          "瀛楄妭璺冲姩": "y",
+          "QQ": "y"
+        },
+        "蹇簲鐢�": {
+          "鍗庝负": "u",
+          "鑱旂洘": "u"
+        },
+        "Vue": {
+            "vue2": "y",
+            "vue3": "y"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/uni_modules/riko-combox/readme.md b/uni_modules/riko-combox/readme.md
new file mode 100644
index 0000000..3310998
--- /dev/null
+++ b/uni_modules/riko-combox/readme.md
@@ -0,0 +1,7 @@
+## Combox 缁勫悎妗�
+> **缁勪欢鍚嶏細riko-combox**
+
+缁勫悎妗嗙粍浠躲��
+
+### [鏌ョ湅鏂囨。](https://uniapp.dcloud.io/component/uniui/uni-combox)
+#### 濡備娇鐢ㄨ繃绋嬩腑鏈変换浣曢棶棰橈紝鎴栬�呮偍瀵箄ni-ui鏈変竴浜涘ソ鐨勫缓璁紝娆㈣繋鍔犲叆 uni-ui 浜ゆ祦缇わ細871950839 
\ No newline at end of file

--
Gitblit v1.9.1