hookehuyr

替换数组交集方法

...@@ -31,7 +31,6 @@ declare module '@vue/runtime-core' { ...@@ -31,7 +31,6 @@ declare module '@vue/runtime-core' {
31 NutCell: typeof import('@nutui/nutui-taro')['Cell'] 31 NutCell: typeof import('@nutui/nutui-taro')['Cell']
32 NutCheckbox: typeof import('@nutui/nutui-taro')['Checkbox'] 32 NutCheckbox: typeof import('@nutui/nutui-taro')['Checkbox']
33 NutCheckboxGroup: typeof import('@nutui/nutui-taro')['CheckboxGroup'] 33 NutCheckboxGroup: typeof import('@nutui/nutui-taro')['CheckboxGroup']
34 - NutCol: typeof import('@nutui/nutui-taro')['Col']
35 NutConfigProvider: typeof import('@nutui/nutui-taro')['ConfigProvider'] 34 NutConfigProvider: typeof import('@nutui/nutui-taro')['ConfigProvider']
36 NutDatePicker: typeof import('@nutui/nutui-taro')['DatePicker'] 35 NutDatePicker: typeof import('@nutui/nutui-taro')['DatePicker']
37 NutDialog: typeof import('@nutui/nutui-taro')['Dialog'] 36 NutDialog: typeof import('@nutui/nutui-taro')['Dialog']
...@@ -49,7 +48,6 @@ declare module '@vue/runtime-core' { ...@@ -49,7 +48,6 @@ declare module '@vue/runtime-core' {
49 NutRadio: typeof import('@nutui/nutui-taro')['Radio'] 48 NutRadio: typeof import('@nutui/nutui-taro')['Radio']
50 NutRadioGroup: typeof import('@nutui/nutui-taro')['RadioGroup'] 49 NutRadioGroup: typeof import('@nutui/nutui-taro')['RadioGroup']
51 NutRate: typeof import('@nutui/nutui-taro')['Rate'] 50 NutRate: typeof import('@nutui/nutui-taro')['Rate']
52 - NutRow: typeof import('@nutui/nutui-taro')['Row']
53 NutSignature: typeof import('@nutui/nutui-taro')['Signature'] 51 NutSignature: typeof import('@nutui/nutui-taro')['Signature']
54 NutSwiper: typeof import('@nutui/nutui-taro')['Swiper'] 52 NutSwiper: typeof import('@nutui/nutui-taro')['Swiper']
55 NutSwiperItem: typeof import('@nutui/nutui-taro')['SwiperItem'] 53 NutSwiperItem: typeof import('@nutui/nutui-taro')['SwiperItem']
......
1 <!-- 1 <!--
2 * @Date: 2023-03-24 09:19:27 2 * @Date: 2023-03-24 09:19:27
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2023-04-17 14:09:23 4 + * @LastEditTime: 2023-04-17 14:19:54
5 * @FilePath: /custom_form/src/pages/table/index.vue 5 * @FilePath: /custom_form/src/pages/table/index.vue
6 * @Description: 文件描述 6 * @Description: 文件描述
7 --> 7 -->
...@@ -63,7 +63,7 @@ import { storeToRefs } from 'pinia' ...@@ -63,7 +63,7 @@ import { storeToRefs } from 'pinia'
63 import { mainStore } from '@/stores' 63 import { mainStore } from '@/stores'
64 import { queryFormAPI, postVerifyPasswordAPI } from "@/api/form.js"; 64 import { queryFormAPI, postVerifyPasswordAPI } from "@/api/form.js";
65 import { addFormDataAPI } from "@/api/data.js"; 65 import { addFormDataAPI } from "@/api/data.js";
66 -import { wxInfo, getUrlParams, deepClone } from "@/utils/tools"; 66 +import { wxInfo, getUrlParams, deepClone, intersection } from "@/utils/tools";
67 import { styleColor } from "@/constant.js"; 67 import { styleColor } from "@/constant.js";
68 import { sharePage } from '@/composables/useShare.js' 68 import { sharePage } from '@/composables/useShare.js'
69 // 初始化WX环境 69 // 初始化WX环境
...@@ -399,7 +399,7 @@ const checkRules = () => { ...@@ -399,7 +399,7 @@ const checkRules = () => {
399 condition += `${k}${op}` 399 condition += `${k}${op}`
400 } 400 }
401 if (typeof postData.value[expr['field_name']] === 'object') { // 表单值为数组(多选) 401 if (typeof postData.value[expr['field_name']] === 'object') { // 表单值为数组(多选)
402 - const k = !!(_.intersection(expr['values'], postData.value[expr['field_name']])).length; 402 + const k = !!(intersection(expr['values'], postData.value[expr['field_name']])).length;
403 condition += `${k}${op}` 403 condition += `${k}${op}`
404 } 404 }
405 }); 405 });
......
...@@ -150,6 +150,39 @@ const deepClone = (val) => { ...@@ -150,6 +150,39 @@ const deepClone = (val) => {
150 } 150 }
151 } 151 }
152 152
153 +// 获取交集
154 +const intersection = () => {
155 + const arrays = Array.prototype.slice.call(arguments); // 将参数转换为数组
156 + const result = [];
157 +
158 + if (arrays.length === 0) { // 如果没有参数,则返回空数组
159 + return result;
160 + }
161 +
162 + const firstArray = arrays[0];
163 + for (let i = 0; i < firstArray.length; i++) {
164 + const currentElement = firstArray[i];
165 + if (result.includes(currentElement)) { // 如果当前元素已经在结果中,则跳过
166 + continue;
167 + }
168 +
169 + let foundInAllArrays = true;
170 + for (let j = 1; j < arrays.length; j++) {
171 + const currentArray = arrays[j];
172 + if (!currentArray.includes(currentElement)) { // 如果当前元素不在其中一个数组中,则跳过
173 + foundInAllArrays = false;
174 + break;
175 + }
176 + }
177 +
178 + if (foundInAllArrays) { // 如果当前元素在所有数组中都存在,则添加到结果中
179 + result.push(currentElement);
180 + }
181 + }
182 +
183 + return result;
184 +}
185 +
153 export { 186 export {
154 formatDate, 187 formatDate,
155 wxInfo, 188 wxInfo,
...@@ -160,4 +193,5 @@ export { ...@@ -160,4 +193,5 @@ export {
160 getUrlParams, 193 getUrlParams,
161 stringifyQuery, 194 stringifyQuery,
162 deepClone, 195 deepClone,
196 + intersection,
163 } 197 }
......