Commit 2e7486729c502558ed80a317499ec0bc88a985b0

Authored by chenwei
1 parent 0b1c327a
Exists in charge

feat:选择框添加搜索功能

pages/charge/visitsAndFees/createaVisit.vue
@@ -199,12 +199,12 @@ @@ -199,12 +199,12 @@
199 <!-- 字典选择 --> 199 <!-- 字典选择 -->
200 <u-picker :show="pickerShow" :showSearch="currentName === 'vlgOrCmty' || currentName === 'userName'" ref="uPicker" 200 <u-picker :show="pickerShow" :showSearch="currentName === 'vlgOrCmty' || currentName === 'userName'" ref="uPicker"
201 closeOnClickOverlay :columns="columns" @cancel="pickerShow = false" @close="pickerShow = false" keyName="label" 201 closeOnClickOverlay :columns="columns" @cancel="pickerShow = false" @close="pickerShow = false" keyName="label"
202 - @confirm="confirm"></u-picker> 202 + @confirm="confirm" @keywordChange="keywordChange"></u-picker>
203 203
204 <!-- 公司选择 --> 204 <!-- 公司选择 -->
205 <u-picker showSearch :show="gsShow" ref="gsPicker" closeOnClickOverlay :title="gsName" :columns="companyList" 205 <u-picker showSearch :show="gsShow" ref="gsPicker" closeOnClickOverlay :title="gsName" :columns="companyList"
206 - @cancel="gsShow = false" @close="gsShow = false" keyName="label" @confirm="gsConfirm"  
207 - @change="changeHandler"></u-picker> 206 + @cancel="gsShow = false" @close="gsShow = false" keyName="label" @confirm="gsConfirm" placeholder="输入公司名称查询"
  207 + @change="changeHandler" @keywordChange="gsKeyWordChange" @clear="gsKeyWordClear"></u-picker>
208 208
209 <!-- 时间选择 --> 209 <!-- 时间选择 -->
210 <u-datetime-picker :show="datetimeShow" v-model="dataTimeValue" closeOnClickOverlay @confirm="dateConfirm" 210 <u-datetime-picker :show="datetimeShow" v-model="dataTimeValue" closeOnClickOverlay @confirm="dateConfirm"
@@ -255,7 +255,7 @@ @@ -255,7 +255,7 @@
255 userPhone: "", 255 userPhone: "",
256 companyCode: "", 256 companyCode: "",
257 address: "", 257 address: "",
258 - userDetailedAddress: "", 258 + userDetailedAddress: "123",
259 isVisited: "", 259 isVisited: "",
260 isIntent: "", 260 isIntent: "",
261 houseCondition: "", 261 houseCondition: "",
@@ -397,17 +397,20 @@ @@ -397,17 +397,20 @@
397 trigger: ['blur', 'change'] 397 trigger: ['blur', 'change']
398 }], 398 }],
399 userCode: [{ 399 userCode: [{
400 - required: false,  
401 - message: '请填写用户编号',  
402 - trigger: ['blur', 'change']  
403 - },  
404 - // {  
405 - // validator: (rule, value, callback) => {  
406 - // return uni.$u.test.digits(value)  
407 - // },  
408 - // message: '用户编号不正确',  
409 - // trigger: ['change', 'blur'],  
410 - // } 400 + required: false,
  401 + message: '请填写用户编号',
  402 + trigger: ['blur', 'change']
  403 + },
  404 + {
  405 + validator: (rule, value, callback) => {
  406 + if (!value) {
  407 + return true
  408 + }
  409 + return uni.$u.test.enOrNum(value)
  410 + },
  411 + message: '用户编号不正确',
  412 + trigger: ['change', 'blur'],
  413 + }
411 ], 414 ],
412 userIdCard: [{ 415 userIdCard: [{
413 required: true, 416 required: true,
@@ -462,11 +465,16 @@ @@ -462,11 +465,16 @@
462 datetimeShow: false, 465 datetimeShow: false,
463 dataTimeValue: Number(new Date()), 466 dataTimeValue: Number(new Date()),
464 columns: [], 467 columns: [],
  468 + copyColumns: [],
465 gsColumns: [], 469 gsColumns: [],
466 regionName: [], 470 regionName: [],
467 groupName: [], 471 groupName: [],
468 companyName: [], 472 companyName: [],
469 companyCode: [], 473 companyCode: [],
  474 + // 还原类
  475 + regionNames: [],
  476 + groupNames: [],
  477 + companyNames: [],
470 currentName: "", //弹窗后赋值name 478 currentName: "", //弹窗后赋值name
471 companyOption: [], 479 companyOption: [],
472 fileList: [], 480 fileList: [],
@@ -480,6 +488,10 @@ @@ -480,6 +488,10 @@
480 regionLoading: false, 488 regionLoading: false,
481 pickerValue: [0, 0, 0, 0], 489 pickerValue: [0, 0, 0, 0],
482 defaultValue: [11, 1101, 110101, 110101001], 490 defaultValue: [11, 1101, 110101, 110101001],
  491 + defaultRegion: "",
  492 + defaultGroup: "",
  493 + openKeyword: false, //是否输入公司名称查询
  494 + gsChangeIndexs: [],
483 // 基本信息 495 // 基本信息
484 basisData: [{ 496 basisData: [{
485 label: '财年', 497 label: '财年',
@@ -696,7 +708,7 @@ @@ -696,7 +708,7 @@
696 type: "input", 708 type: "input",
697 key: "userCode", 709 key: "userCode",
698 show: true, 710 show: true,
699 - mode: "number", 711 + mode: "text",
700 max: '10' 712 max: '10'
701 }, { 713 }, {
702 label: '身份证号', 714 label: '身份证号',
@@ -953,16 +965,34 @@ @@ -953,16 +965,34 @@
953 }, 965 },
954 async getCompanyCascader() { 966 async getCompanyCascader() {
955 this.companyOption = (await getCompanyCascader()).data; 967 this.companyOption = (await getCompanyCascader()).data;
956 - this.companyOption.forEach(item1 => { 968 + this.companyOption.forEach((item1, index1) => {
957 this.regionName.push(item1); 969 this.regionName.push(item1);
958 - item1.children.forEach(item2 => { 970 + item1.children.forEach((item2, index2) => {
959 this.groupName.push(item2); 971 this.groupName.push(item2);
960 - item2.children.forEach(item3 => { 972 + item2.children.forEach((item3, index3) => {
961 this.companyName.push(item3); 973 this.companyName.push(item3);
962 }); 974 });
963 }); 975 });
964 }); 976 });
  977 +
  978 + this.regionName.map((item1, index1) => {
  979 + item1.index = index1;
  980 + item1.children.map((item2, index2) => {
  981 + item2.index = index2;
  982 + item2.children.map((item3, index3) => {
  983 + item3.index = index3;
  984 + })
  985 + })
  986 + })
  987 + this.regionNames = this.regionName;
  988 + this.groupNames = this.groupName;
  989 + this.companyNames = this.companyName;
  990 + this.defaultRegion = this.regionName[0].label;
  991 + this.defaultGroup = this.groupName[0].label;
965 console.log("当前公司类", this.companyOption); 992 console.log("当前公司类", this.companyOption);
  993 + console.log("区域", this.regionNames);
  994 + console.log("集团", this.groupNames);
  995 + console.log("公司", this.companyNames);
966 }, 996 },
967 // 选择弹出层 997 // 选择弹出层
968 async handleSelect(item) { 998 async handleSelect(item) {
@@ -973,10 +1003,14 @@ @@ -973,10 +1003,14 @@
973 this.currentName = item.key; 1003 this.currentName = item.key;
974 // 项目公司单独弹窗 1004 // 项目公司单独弹窗
975 if (item.key === 'company') { 1005 if (item.key === 'company') {
976 - this.gsColumns = [this.regionName, this.groupName, this.companyName];  
977 - if (this.regionName.length) { 1006 + // this.gsColumns = [this.regionName, this.groupName, this.companyName];
  1007 + if (this.regionName.length || this.regionName) {
978 this.gsName = `${this.regionName[0].label}`; 1008 this.gsName = `${this.regionName[0].label}`;
979 this.gsShow = true; 1009 this.gsShow = true;
  1010 + let defaultIndex = this.defaultIndex[this.currentName];
  1011 + console.log("选择公司默认值", defaultIndex)
  1012 + this.$refs.gsPicker.setIndexs(defaultIndex ? defaultIndex : [0, 0, 0], true)
  1013 + this.$refs.gsPicker.handleClear();
980 } else { 1014 } else {
981 uni.$u.toast('未查询到项目公司'); 1015 uni.$u.toast('未查询到项目公司');
982 } 1016 }
@@ -999,7 +1033,7 @@ @@ -999,7 +1033,7 @@
999 uni.$u.toast('未查询相关小区'); 1033 uni.$u.toast('未查询相关小区');
1000 return 1034 return
1001 } 1035 }
1002 - let col = result.data.map(item => ({ 1036 + let col = result.data.map((item, index) => ({
1003 value: item.vlgOrCmty, 1037 value: item.vlgOrCmty,
1004 label: `${item.vlgOrCmty}(${item.urbRurCls})`, 1038 label: `${item.vlgOrCmty}(${item.urbRurCls})`,
1005 urbRurCls: item.urbRurCls, 1039 urbRurCls: item.urbRurCls,
@@ -1007,9 +1041,11 @@ @@ -1007,9 +1041,11 @@
1007 city: item.city, 1041 city: item.city,
1008 district: item.district, 1042 district: item.district,
1009 street: item.street, 1043 street: item.street,
1010 - address: `${item.province}${item.city}${item.district}${item.street}` 1044 + address: `${item.province}${item.city}${item.district}${item.street}`,
  1045 + index: index
1011 })); 1046 }));
1012 this.columns = [col]; 1047 this.columns = [col];
  1048 + this.copyColumns = this.columns;
1013 } else if (item.key === 'userName') { 1049 } else if (item.key === 'userName') {
1014 if (!this.model.vlgOrCmty) { 1050 if (!this.model.vlgOrCmty) {
1015 uni.$u.toast('请先选择村(小区)'); 1051 uni.$u.toast('请先选择村(小区)');
@@ -1024,12 +1060,14 @@ @@ -1024,12 +1060,14 @@
1024 uni.$u.toast('未查询相关用户'); 1060 uni.$u.toast('未查询相关用户');
1025 return 1061 return
1026 } 1062 }
1027 - let col = result.rows.map(item => ({ 1063 + let col = result.rows.map((item, index) => ({
1028 value: item.userName, 1064 value: item.userName,
1029 label: item.userName, 1065 label: item.userName,
1030 - obj: item 1066 + obj: item,
  1067 + index: index
1031 })); 1068 }));
1032 this.columns = [col]; 1069 this.columns = [col];
  1070 + this.copyColumns = this.columns;
1033 // 省市区单独弹窗 1071 // 省市区单独弹窗
1034 } else if (item.key === 'address') { 1072 } else if (item.key === 'address') {
1035 this.provinces = cityData.sort((left, right) => (Number(left.code) > Number(right.code) ? 1 : -1)); 1073 this.provinces = cityData.sort((left, right) => (Number(left.code) > Number(right.code) ? 1 : -1));
@@ -1041,6 +1079,7 @@ @@ -1041,6 +1079,7 @@
1041 let dict = item.dict; 1079 let dict = item.dict;
1042 let dictArr = this.getDictDatas(dict); 1080 let dictArr = this.getDictDatas(dict);
1043 this.columns = [dictArr]; 1081 this.columns = [dictArr];
  1082 + this.copyColumns = this.columns;
1044 } 1083 }
1045 let defaultIndex = this.defaultIndex[this.currentName]; 1084 let defaultIndex = this.defaultIndex[this.currentName];
1046 console.log("是否有默认值", defaultIndex) 1085 console.log("是否有默认值", defaultIndex)
@@ -1070,11 +1109,123 @@ @@ -1070,11 +1109,123 @@
1070 this.model.userStreet = ""; 1109 this.model.userStreet = "";
1071 this.model.userDetailedAddress = ""; 1110 this.model.userDetailedAddress = "";
1072 }, 1111 },
  1112 + // 关键词搜索
  1113 + keywordChange(keyword) {
  1114 + console.log("关键词", keyword)
  1115 + console.log("columns", this.copyColumns)
  1116 + let data = this.copyColumns[0]
  1117 + let queryData = data.filter(item => item.value && item.value.includes(keyword));
  1118 + console.log("筛选", queryData)
  1119 + this.columns = [queryData];
  1120 + },
  1121 + // 关键词搜索
  1122 + gsKeyWordChange(keyword) {
  1123 + if (!keyword) {
  1124 + this.regionName = this.regionNames;
  1125 + this.groupName = this.groupNames;
  1126 + this.companyName = this.companyNames;
  1127 + this.defaultRegion = this.regionNames[0].label;
  1128 + this.defaultGroup = this.groupNames[0].label;
  1129 + this.openKeyword = false;
  1130 + return;
  1131 + }
  1132 + this.gsChangeIndexs = [];
  1133 + this.openKeyword = true;
  1134 + console.log("公司关键词", keyword);
  1135 + console.log("regionNames", this.regionNames)
  1136 + const hierarchies = this.findCompanyHierarchy(keyword, this.regionNames);
  1137 + console.log("返回结果", hierarchies);
  1138 + if (hierarchies[2].length > 0) { // 如果找到了至少一个公司
  1139 + this.regionName = hierarchies[0];
  1140 + this.groupName = hierarchies[1];
  1141 + this.companyName = hierarchies[2];
  1142 + } else {
  1143 + uni.$u.toast('未查询到该公司');
  1144 + this.regionName = [{
  1145 + value: this.defaultRegion,
  1146 + label: this.defaultRegion
  1147 + }];
  1148 + this.groupName = [{
  1149 + value: this.defaultGroup,
  1150 + label: this.defaultGroup
  1151 + }];
  1152 + // this.companyName = this.companyNames;
  1153 + }
  1154 + },
  1155 + // 关键词清空后
  1156 + gsKeyWordClear() {
  1157 + console.log("清除关键词触发")
  1158 + this.defaultRegion = this.regionNames[0].label
  1159 + this.defaultGroup = this.groupNames[0].label
  1160 + },
  1161 + // 查找公司对应关系
  1162 + findCompanyHierarchy(keyword, nodes = data) {
  1163 + const regionHierarchy = [];
  1164 + const groupHierarchy = [];
  1165 + const companyHierarchy = [];
  1166 + // console.log(1, this.regionNames)
  1167 + // console.log(2, this.groupNames)
  1168 + // console.log(3, this.companyNames)
  1169 + console.log("当前选择区域", this.defaultRegion);
  1170 + console.log("当前选择集团", this.defaultGroup);
  1171 + nodes.forEach(item1 => {
  1172 + item1.children.forEach(item2 => {
  1173 + item2.children.forEach(item3 => {
  1174 + if (item1.label == this.defaultRegion && item2.label == this.defaultGroup) {
  1175 + if (item3.label.includes(keyword)) {
  1176 + if (!regionHierarchy.some(region => region.label === item1.label)) {
  1177 + regionHierarchy.push(item1);
  1178 + }
  1179 + if (!groupHierarchy.some(group => group.label === item2.label)) {
  1180 + groupHierarchy.push(item2);
  1181 + }
  1182 + companyHierarchy.push(item3);
  1183 + }
  1184 + }
  1185 + });
  1186 + });
  1187 + });
  1188 + return [regionHierarchy, groupHierarchy, companyHierarchy];
  1189 + },
  1190 + // 项目公司独立弹窗,防止共用报错
  1191 + gsConfirm(e) {
  1192 + console.log("公司", e);
  1193 + // this.$refs.gsPicker.handleClear();
  1194 + if (this.currentName === 'company') {
  1195 + this.emptyFill(1);
  1196 + this.model[this.currentName] = `${e.value[2].label}`;
  1197 + this.model.regionName = e.value[0]?.value;
  1198 + this.model.groupName = e.value[1]?.value;
  1199 + this.model.companyName = e.value[2]?.label;
  1200 + this.model.companyCode = e.value[2]?.value;
  1201 + // if (this.openKeyword) {
  1202 + // console.log("关键词查询后的原始index", this.gsChangeIndexs)
  1203 + // this.defaultIndex[this.currentName] = this.gsChangeIndexs;
  1204 + // } else {
  1205 + this.defaultIndex[this.currentName] = e.indexs;
  1206 + // }
  1207 + this.regionName = this.regionNames;
  1208 + this.groupName = this.groupNames;
  1209 + this.companyName = this.companyNames;
  1210 + // this.regionName = this.regionNames;
  1211 + // this.groupName = [{
  1212 + // value: e.value[1]?.value,
  1213 + // label: e.value[1]?.value
  1214 + // }];
  1215 + // this.companyName = [{
  1216 + // value: e.value[2]?.value,
  1217 + // label: e.value[2]?.label
  1218 + // }];
  1219 + }
  1220 + this.openKeyword = false;
  1221 + this.gsShow = false;
  1222 + },
1073 handleSFSelect(item) { 1223 handleSFSelect(item) {
1074 this.currentName = item.key; 1224 this.currentName = item.key;
1075 let dict = item.dict; 1225 let dict = item.dict;
1076 let dictArr = this.getDictDatas(dict); 1226 let dictArr = this.getDictDatas(dict);
1077 this.columns = [dictArr]; 1227 this.columns = [dictArr];
  1228 + this.copyColumns = this.columns;
1078 let defaultIndex = this.defaultIndex[this.currentName]; 1229 let defaultIndex = this.defaultIndex[this.currentName];
1079 console.log("是否有默认值", defaultIndex) 1230 console.log("是否有默认值", defaultIndex)
1080 this.$refs.uPicker.setIndexs(defaultIndex ? [defaultIndex] : [0], true) 1231 this.$refs.uPicker.setIndexs(defaultIndex ? [defaultIndex] : [0], true)
@@ -1120,7 +1271,12 @@ @@ -1120,7 +1271,12 @@
1120 } else { 1271 } else {
1121 this.model[this.currentName] = e.value[0].value 1272 this.model[this.currentName] = e.value[0].value
1122 } 1273 }
1123 - this.defaultIndex[this.currentName] = e.indexs[0]; 1274 + if (this.currentName === 'vlgOrCmty' || this.currentName === 'userName') {
  1275 + this.defaultIndex[this.currentName] = e.value[0].index;
  1276 + this.$refs.uPicker.handleClear();
  1277 + } else {
  1278 + this.defaultIndex[this.currentName] = e.indexs[0];
  1279 + }
1124 console.log("默认值", this.defaultIndex) 1280 console.log("默认值", this.defaultIndex)
1125 this.pickerShow = false; 1281 this.pickerShow = false;
1126 }, 1282 },
@@ -1134,21 +1290,25 @@ @@ -1134,21 +1290,25 @@
1134 indexs 1290 indexs
1135 // 微信小程序无法将picker实例传出来,只能通过ref操作 1291 // 微信小程序无法将picker实例传出来,只能通过ref操作
1136 } = e 1292 } = e
1137 - console.log(e); 1293 + console.log("公司切换", e);
1138 // 当第一列值发生变化时,变化第二列(后一列)对应的选项 1294 // 当第一列值发生变化时,变化第二列(后一列)对应的选项
  1295 + // this.gsChangeIndexs = [value[0].index,value[1].index,value[2].index];
1139 let [regionIndex, groupIndex, companyIndex] = indexs; 1296 let [regionIndex, groupIndex, companyIndex] = indexs;
1140 if (columnIndex === 0) { 1297 if (columnIndex === 0) {
1141 this.gsName = value[0].label; 1298 this.gsName = value[0].label;
1142 - console.log(0, this.regionName) 1299 + // console.log(0, this.regionName)
1143 // this.regionName = this.regionName[index]?.children || []; 1300 // this.regionName = this.regionName[index]?.children || [];
1144 this.groupName = this.regionName[index]?.children || []; 1301 this.groupName = this.regionName[index]?.children || [];
1145 this.companyName = this.groupName[0]?.children || []; 1302 this.companyName = this.groupName[0]?.children || [];
1146 - console.log(1, this.regionName)  
1147 - console.log(2, this.groupName)  
1148 - console.log(3, this.companyName) 1303 + this.defaultRegion = this.regionName[index].label;
  1304 + this.defaultGroup = this.groupName[0].label;
  1305 + // console.log(1, this.regionName)
  1306 + // console.log(2, this.groupName)
  1307 + // console.log(3, this.companyName)
1149 this.$refs.gsPicker.setIndexs([index, 0, 0], true) 1308 this.$refs.gsPicker.setIndexs([index, 0, 0], true)
1150 } else if (columnIndex === 1) { 1309 } else if (columnIndex === 1) {
1151 this.gsName = value[1].label; 1310 this.gsName = value[1].label;
  1311 + this.defaultGroup = this.regionName[index].label;
1152 this.groupName = this.regionName[index]?.children || []; 1312 this.groupName = this.regionName[index]?.children || [];
1153 this.companyName = this.groupName[0]?.children || []; 1313 this.companyName = this.groupName[0]?.children || [];
1154 this.$refs.gsPicker.setIndexs(indexs, true) 1314 this.$refs.gsPicker.setIndexs(indexs, true)
@@ -1159,20 +1319,7 @@ @@ -1159,20 +1319,7 @@
1159 // let data3 = data2[0].children; 1319 // let data3 = data2[0].children;
1160 // picker为选择器this实例,变化第二列对应的选项 1320 // picker为选择器this实例,变化第二列对应的选项
1161 // this.gsColumns = [this.regionName, data2, data3] 1321 // this.gsColumns = [this.regionName, data2, data3]
1162 - console.log("选择后", this.gsColumns);  
1163 - },  
1164 - // 项目公司独立弹窗,防止共用报错  
1165 - gsConfirm(e) {  
1166 - console.log("公司", e);  
1167 - if (this.currentName === 'company') {  
1168 - this.emptyFill(1);  
1169 - this.model[this.currentName] = `${e.value[2].label}`;  
1170 - this.model.regionName = e.value[0]?.value;  
1171 - this.model.groupName = e.value[1]?.value;  
1172 - this.model.companyName = e.value[2]?.label;  
1173 - this.model.companyCode = e.value[2]?.value;  
1174 - }  
1175 - this.gsShow = false; 1322 + // console.log("选择后", this.gsColumns);
1176 }, 1323 },
1177 // 设置默认省市区街道 1324 // 设置默认省市区街道
1178 handlePickValueDefault() { 1325 handlePickValueDefault() {
uni_modules/uview-ui/components/u-picker/props.js
@@ -10,6 +10,15 @@ export default { @@ -10,6 +10,15 @@ export default {
10 type: Boolean, 10 type: Boolean,
11 default: uni.$u.props.picker.showToolbar 11 default: uni.$u.props.picker.showToolbar
12 }, 12 },
  13 + placeholder:{
  14 + type: String,
  15 + default: '输入关键词可自动查询'
  16 + },
  17 + // 是否展示顶部的搜索栏
  18 + showSearch: {
  19 + type: Boolean,
  20 + default: uni.$u.props.picker.showSearch
  21 + },
13 // 顶部标题 22 // 顶部标题
14 title: { 23 title: {
15 type: String, 24 type: String,
uni_modules/uview-ui/components/u-picker/u-picker.vue
@@ -14,6 +14,9 @@ @@ -14,6 +14,9 @@
14 @cancel="cancel" 14 @cancel="cancel"
15 @confirm="confirm" 15 @confirm="confirm"
16 ></u-toolbar> 16 ></u-toolbar>
  17 + <u-search style="margin: 10px;" :showAction="false" v-model="keyword" @change="handleChange"
  18 + @custom="handleCustom" :clearabled="true" :placeholder="placeholder"
  19 + @clear="handleClear" v-if="showSearch"></u-search>
17 <picker-view 20 <picker-view
18 class="u-picker__view" 21 class="u-picker__view"
19 :indicatorStyle="`height: ${$u.addUnit(itemHeight)}`" 22 :indicatorStyle="`height: ${$u.addUnit(itemHeight)}`"
@@ -58,6 +61,7 @@ @@ -58,6 +61,7 @@
58 * @description 选择器 61 * @description 选择器
59 * @property {Boolean} show 是否显示picker弹窗(默认 false ) 62 * @property {Boolean} show 是否显示picker弹窗(默认 false )
60 * @property {Boolean} showToolbar 是否显示顶部的操作栏(默认 true ) 63 * @property {Boolean} showToolbar 是否显示顶部的操作栏(默认 true )
  64 + * @property {Boolean} showToolbar 是否显示顶部的搜索栏(默认 false )
61 * @property {String} title 顶部标题 65 * @property {String} title 顶部标题
62 * @property {Array} columns 对象数组,设置每一列的数据 66 * @property {Array} columns 对象数组,设置每一列的数据
63 * @property {Boolean} loading 是否显示加载中状态(默认 false ) 67 * @property {Boolean} loading 是否显示加载中状态(默认 false )
@@ -90,6 +94,8 @@ export default { @@ -90,6 +94,8 @@ export default {
90 innerColumns: [], 94 innerColumns: [],
91 // 上一次的变化列索引 95 // 上一次的变化列索引
92 columnIndex: 0, 96 columnIndex: 0,
  97 + // 搜索关键词
  98 + keyword:"",
93 } 99 }
94 }, 100 },
95 watch: { 101 watch: {
@@ -228,7 +234,17 @@ export default { @@ -228,7 +234,17 @@ export default {
228 await uni.$u.sleep() 234 await uni.$u.sleep()
229 })() 235 })()
230 return this.innerColumns.map((item, index) => item[this.innerIndex[index]]) 236 return this.innerColumns.map((item, index) => item[this.innerIndex[index]])
231 - } 237 + },
  238 + handleChange(e){
  239 + this.$emit("keywordChange",e)
  240 + },
  241 + handleCustom(e){
  242 + this.$emit("keywordChange",e)
  243 + },
  244 + handleClear(){
  245 + this.keyword = "";
  246 + this.$emit('clear')
  247 + }
232 }, 248 },
233 } 249 }
234 </script> 250 </script>