Showing
3 changed files
with
37 additions
and
5 deletions
| ... | @@ -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 | } | ... | ... |
-
Please register or login to post a comment