@bscjc/webui 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es/index.mjs +0 -1
- package/dist/index.css +1 -1
- package/dist/lib/index.cjs +0 -1
- package/package.json +6 -2
- package/dist/es/index.mjs.map +0 -1
- package/dist/lib/index.cjs.map +0 -1
- package/dist/vite.svg +0 -1
package/dist/es/index.mjs
CHANGED
package/dist/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.ak-relative{position:relative}.jc-select-popper{min-width:400px!important}.jc-select-popper .el-select-pop-search-container{
|
|
1
|
+
.ak-relative{position:relative}.jc-select-popper{min-width:400px!important}.jc-select-popper .el-select-pop-search-container{padding:4px 8px;position:relative}.jc-select-popper .el-select-pop-search-container .selcet-icon{color:#a6abb4;height:14px;top:12px;width:14px}.jc-select-popper .el-select-pop-search-container .search-icon{left:10px;line-height:normal;position:absolute}.jc-select-popper .el-select-pop-search-container .circle-icon{line-height:normal;position:absolute;right:14px}.jc-select-popper .el-select-pop-search-container .circle-icon:hover{color:#005bf5;cursor:pointer}.jc-select-popper .el-select-pop__input{border-radius:0;border-style:none none solid;border-bottom:1px solid #d9dbde;box-shadow:none;box-sizing:border-box;height:32px;line-height:32px;overflow:hidden;padding-left:24px;width:100%}.jc-select-popper .el-select-pop__input:hover{border-bottom-color:#888c94}.jc-select-popper .el-select-pop__input:focus{border-bottom-color:#005bf5;outline:0}.jc-select-popper .el-select-dropdown__wrap{max-height:100%!important}.jc-select-popper .el-select-dropdown__wrap .el-select-dropdown__item{box-sizing:border-box;color:#33363c;cursor:pointer;font-size:12px;height:32px;line-height:32px;list-style:none;overflow:hidden;padding:0 12px;text-overflow:ellipsis;white-space:nowrap}.jc-select-popper .el-select-dropdown__wrap .el-select-dropdown__item .el-checkbox{width:100%}.jc-select-popper .el-select-dropdown__wrap .el-select-dropdown__item .el-checkbox .el-checkbox__label{flex:1;overflow:hidden;text-overflow:ellipsis}.jc-select-popper .el-select-dropdown__wrap .el-select-dropdown__item:hover{background-color:#ecf5ff}.jc-select-popper .el-select-dropdown__empty{color:#999;font-size:12px;margin:0;padding:10px 0;text-align:center}.jc-select-popper .custom-multi-footer{align-items:center;display:flex;justify-content:space-between;padding-right:8px}.jc-select-popper .shift-tips{color:#a6abb4;margin-left:8px}.jc-select-popper .counts{margin-left:8px}.jc-select .el-select__wrapper{font-size:12px}.jc-select .el-select__tags{height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jc-date-picker{align-items:center;display:flex;justify-content:flex-start}.jc-date-picker .select-field{display:flex;max-width:100px!important;min-width:60px!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto!important}.jc-date-picker .select-field .el-select__prefix{color:#000;font-size:12px;max-width:50px!important;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}.jc-date-picker .select-field .el-input__inner{width:0}.jc-date-picker .el-date-editor{border-bottom-left-radius:0;border-left:none!important;border-top-left-radius:0;margin-left:-1px}.jc-date-picker .el-select__wrapper{border-bottom-right-radius:0;border-top-right-radius:0;font-size:12px;max-width:100px;padding:4px 12px 4px 8px}.jc-date-picker .el-select__placeholder{font-size:12px}.el-popover.jc-input-pop .popover-body{display:flex;flex-direction:column;height:100%;left:0;position:absolute;top:0;width:100%}.el-popover.jc-input-pop{border:1px solid #e6e8eb;border-radius:4px;box-shadow:0 8px 16px #00000029;height:240px;line-height:18px;max-width:480px;min-width:auto;padding:12px;text-align:left}.el-popover.jc-input-pop .popover-body .popover-textarea{flex:1;min-height:0}.el-popover.jc-input-pop .popover-body .popover-textarea .el-textarea__inner{border:none!important;color:#333;font-size:12px;font-weight:400;height:100%;line-height:20px;outline:0;overflow:auto;padding:12px;resize:none;width:100%}.el-popover.jc-input-pop .popover-body .popover-btn{align-items:center;box-shadow:0 -1px #e6e8eb;display:flex;margin-top:-1px;padding:8px 12px;z-index:999}.el-popover.jc-input-pop .popover-body .popover-btn .popover-btn-right{margin-left:auto}[data-v-99c0d2b1] .el-tag__content{max-height:24px;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;line-clamp:2;display:-webkit-box;-webkit-box-orient:vertical}.popover-btn[data-v-775b8567]{align-items:center;display:flex;padding:4px 4px 0 10px;z-index:999}.popover-btn .popover-btn-right[data-v-775b8567]{margin-left:auto}.moreQuery-pop[data-v-775b8567]{border:1px solid #e6e8eb;border-radius:4px;box-shadow:0 8px 16px 0 rg;line-height:18px;min-width:auto;padding:12px;text-align:left}.jc-input.el-input-group{align-items:flex-start;display:flex}.jc-input{font-size:12px!important}.jc-input .el-input-group__prepend{background-color:var(--el-fill-color-blank);border-bottom-right-radius:0;border-top-right-radius:0;margin-right:0;min-height:auto}.jc-input .el-input-group__prepend .el-select__wrapper{font-size:12px;max-width:100px;padding:4px 8px}.jc-input .el-input-group__prepend .el-input__wrapper{box-shadow:none!important}.jc-input .suffixContent{align-items:center;display:flex;justify-content:center}.jc-input .el-input__icon{box-sizing:border-box;color:#353638;cursor:pointer;display:inline-block;line-height:1;text-align:center}.jc-input .el-icon{font-size:14px;font-weight:600}.jc-input .el-textarea{color:#0b1019;display:inline-block;font-size:12px;position:relative;vertical-align:bottom;width:100%}.jc-input .select-field{display:flex;height:100%;max-width:100px!important;min-width:60px!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto!important}.jc-input .select-field .el-select__prefix{color:#000;font-size:12px;max-width:50px!important;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}.jc-input .select-field .el-input__inner{width:0}
|
package/dist/lib/index.cjs
CHANGED
|
@@ -5,4 +5,3 @@
|
|
|
5
5
|
`),T(),V(f.value,p),t({label:f.value,value:`${I.value}:${p.join(",")}`})}else V(f.value,null),n({label:f.value,value:""});$()},$=()=>{C.value=!1},O=()=>{u.value="",E.value="",h.value="",$()},_=m=>{Object.keys(m).forEach(p=>{a.value=p.replace("List",""),E.value=m[p].join(`
|
|
6
6
|
`),F()})},s=()=>{!k.isEmpty(u.value)&&(u.value!==h.value||a.value!==w.value)?(h.value=u.value,w.value=a.value,T(),V(f.value,null),n({label:f.value,value:""}),V(a.value,u.value.trim())):k.isEmpty(u.value)&&(h.value=u.value,V(a.value,null))};e.watch(()=>i.fieldList,m=>{!k.isEmpty(m)&&k.isEmpty(a.value)&&(a.value=m[0].value,u.value="",E.value="")},{immediate:!0,deep:!0}),e.watch(i.fieldList.flatMap(m=>[()=>z.queryForm[m.value],()=>z.queryForm[m.value+"List"]]),m=>{if(m.findIndex(q=>!k.isEmpty(q))===-1){O();return}let b=!1;i.fieldList.forEach(q=>{var L;const S=q.value+"List";if(E.value=((L=z.queryForm[S])==null?void 0:L.join(`
|
|
7
7
|
`))||"",k.isArray(z.queryForm[S])&&!k.isEmpty(z.queryForm[S])){t({label:S,value:`${q.label}:${z.queryForm[S].join(",")}`});return}else n({label:S,value:""});z.queryForm[q.value]?(b=!0,a.value=q.value,u.value=z.queryForm[q.value]||""):b||(u.value="")})},{deep:!0});const d=e.ref(),g=e.reactive({});return e.onMounted(()=>{var m,p,b,q,S,L,P,R,U,J;d.value&&(g.blur=(m=d.value)==null?void 0:m.blur,g.clear=(p=d.value)==null?void 0:p.clear,g.focus=(b=d.value)==null?void 0:b.focus,g.input=(q=d.value)==null?void 0:q.input,g.ref=(S=d.value)==null?void 0:S.ref,g.resizeTextarea=(L=d.value)==null?void 0:L.resizeTextarea,g.select=(P=d.value)==null?void 0:P.select,g.textarea=(R=d.value)==null?void 0:R.textarea,g.textareaStyle=(U=d.value)==null?void 0:U.textareaStyle,g.isComposing=(J=d.value)==null?void 0:J.isComposing)}),g.setInputValueMult=_,g.setInputByOutside=s,r(g),(m,p)=>(e.openBlock(),e.createBlock(e.unref(y.ElInput),e.mergeProps({ref_key:"inputRef",ref:d,modelValue:u.value,"onUpdate:modelValue":p[5]||(p[5]=b=>u.value=b),modelModifiers:{trim:!0}},m.$attrs,{placeholder:"请输入内容",style:{width:l.width},class:"jc-input jc-input-complex search-input",size:l.size}),{prepend:e.withCtx(()=>[e.createVNode(e.unref(y.ElSelect),{ref:"selectRef",modelValue:a.value,"onUpdate:modelValue":p[0]||(p[0]=b=>a.value=b),size:l.size,class:"select-field",onChange:N},{prefix:e.withCtx(()=>[e.createTextVNode(e.toDisplayString((l.fieldList.find(b=>b.value===a.value)||{}).label),1)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.fieldList,b=>(e.openBlock(),e.createBlock(e.unref(y.ElOption),{key:b.value,label:b.label,value:b.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","size"])]),suffix:e.withCtx(()=>[e.createElementVNode("div",ye,[e.withDirectives(e.createVNode(e.unref(y.ElIcon),{class:"el-input__icon",onClick:M},{default:e.withCtx(()=>[e.createVNode(e.unref(B.Close))]),_:1},512),[[e.vShow,u.value]]),e.createVNode(e.unref(y.ElIcon),{class:"el-input__icon",onClick:Q},{default:e.withCtx(()=>[e.createVNode(e.unref(B.Search))]),_:1}),e.createVNode(e.unref(y.ElPopover),{visible:C.value,"onUpdate:visible":p[4]||(p[4]=b=>C.value=b),placement:"bottom-end",width:"240","show-arrow":!1,"popper-class":"jc-input-pop",trigger:"click"},{reference:e.withCtx(()=>[e.createVNode(e.unref(y.ElIcon),{class:"el-input__icon",title:"多项搜索",style:{"background-color":"#f0f2f5"},onClick:j},{default:e.withCtx(()=>[e.createVNode(e.unref(B.Grid))]),_:1})]),default:e.withCtx(()=>[e.createElementVNode("div",he,[e.createVNode(e.unref(y.ElInput),e.mergeProps({modelValue:E.value,"onUpdate:modelValue":p[1]||(p[1]=b=>E.value=b),type:"textarea"},m.$attrs,{size:l.size,placeholder:"一行一项",class:"popover-textarea",wrap:"off"}),null,16,["modelValue","size"]),e.createElementVNode("div",ge,[e.createVNode(e.unref(y.ElButton),{size:l.size,onClick:p[2]||(p[2]=b=>E.value="")},{default:e.withCtx(()=>p[6]||(p[6]=[e.createTextVNode("清空")])),_:1,__:[6]},8,["size"]),e.createElementVNode("div",xe,[e.createVNode(e.unref(y.ElButton),{size:l.size,link:"",type:"primary",onClick:$},{default:e.withCtx(()=>p[7]||(p[7]=[e.createTextVNode("关闭")])),_:1,__:[7]},8,["size"]),e.createVNode(e.unref(y.ElButton),{type:"primary",size:l.size,onClick:p[3]||(p[3]=b=>F())},{default:e.withCtx(()=>p[8]||(p[8]=[e.createTextVNode("搜索")])),_:1,__:[8]},8,["size"])])])])]),_:1},8,["visible"])])]),_:1},16,["modelValue","style","size"]))}}),Ce=l=>(l.install=r=>{const o=l.name;r.component(o,l)},l),K=Ce(we),Ve={style:{display:"flex","flex-wrap":"wrap",flex:"1","flex-basis":"calc(100% - 50px)","font-size":"12px","margin-top":"4px"}},be=e.defineComponent({name:"jc-tag-query",__name:"index",setup(l){const{state:r,reduceTag:o,reduceAllTag:i}=D();return(v,u)=>(e.openBlock(),e.createElementBlock("div",Ve,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r).tags,(h,a)=>(e.openBlock(),e.createBlock(e.unref(y.ElTag),e.mergeProps({ref_for:!0},v.$attrs,{key:h.label,closable:"",style:[{height:"auto","max-height":"26px","white-space":"normal","text-align":"left","max-width":"1800px",overflow:"hidden","word-break":"break-word","text-overflow":"ellipsis"},{marginLeft:a>0?"4px":"0px"}],onClose:w=>e.unref(o)(h,a)}),{default:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(h.value),1)]),_:2},1040,["style","onClose"]))),128)),e.unref(r).tags.length>1?(e.openBlock(),e.createElementBlock("span",{key:0,style:{"margin-left":"10px","margin-top":"2px",display:"block"},onClick:u[0]||(u[0]=(...h)=>e.unref(i)&&e.unref(i)(...h))},[e.createVNode(e.unref(y.ElIcon),null,{default:e.withCtx(()=>[e.createVNode(e.unref(B.Delete))]),_:1})])):e.createCommentVNode("",!0)]))}}),W=(l,r)=>{const o=l.__vccOpts||l;for(const[i,v]of r)o[i]=v;return o},ke=W(be,[["__scopeId","data-v-99c0d2b1"]]),Ee=l=>(l.install=r=>{const o=l.name;r.component(o,l)},l),X=Ee(ke),Ne={class:"popover-btn"},ze={class:"popover-btn-right"},Se=e.defineComponent({name:"jc-more-query-contain",__name:"index",props:{fieldList:{type:Array,require:!0,default:()=>[]},customTagObj:{type:Object,default:()=>({})},width:{type:Number,default:400},size:{type:String,default:"default",validator:l=>["small","default","large"].includes(l)}},setup(l,{expose:r}){const o=e.ref(!1),i=e.ref({}),v=l,{state:u,setQuery:h,addTag:a,reduceTag:w}=D(),C=()=>{o.value=!o.value,o.value&&v.fieldList.forEach(t=>{i.value[t.value]=u.queryForm[t.value]||null})},f=()=>{i.value={},v.fieldList.forEach(t=>{h(t.value,null),w({label:t.value,value:""})}),o.value=!1},I=(t,n)=>{typeof i.value[t]=="string"||typeof i.value[t]=="number"?a({label:t,value:`${n}:${k.isEmpty(v.customTagObj[t])?i.value[t]:v.customTagObj[t]}`}):a({label:t,value:`${n}:${k.isEmpty(v.customTagObj[t])?i.value[t].join(","):v.customTagObj[t]}`})},E=()=>{for(const t in i.value){h(t,i.value[t]||null);const n=v.fieldList.find(c=>c.value===t);n===void 0&&y.ElMessage.warning("传入的fieldList和表单绑定的字段不匹配"),I(t,n.label)}o.value=!1};e.watch(v.fieldList.map(t=>()=>u.queryForm[t.value]),()=>{v.fieldList.forEach(t=>{i.value[t.value]=u.queryForm[t.value],k.isEmpty(u.queryForm[t.value])?w({label:t.value,value:""}):I(t.value,t.label)})},{deep:!0});const z=e.ref(),V=e.reactive({});return e.onMounted(()=>{var t;z.value&&(V.hide=(t=z.value)==null?void 0:t.hide)}),r(V),(t,n)=>(e.openBlock(),e.createBlock(e.unref(y.ElPopover),e.mergeProps({ref_key:"popoverRef",ref:z},t.$attrs,{visible:o.value,placement:"bottom",width:l.width,"show-arrow":!1,"popper-class":"moreQuery-pop",trigger:"click"}),{reference:e.withCtx(()=>[e.createVNode(e.unref(y.ElButton),{size:l.size,icon:e.unref(B.Operation),onClick:C},null,8,["size","icon"])]),default:e.withCtx(()=>[e.renderSlot(t.$slots,"default",{scopeForm:i.value},void 0,!0),e.createElementVNode("div",Ne,[e.createVNode(e.unref(y.ElButton),{size:l.size,onClick:f},{default:e.withCtx(()=>n[1]||(n[1]=[e.createTextVNode("清空")])),_:1,__:[1]},8,["size"]),e.createElementVNode("div",ze,[e.createVNode(e.unref(y.ElButton),{size:l.size,onClick:n[0]||(n[0]=c=>o.value=!1)},{default:e.withCtx(()=>n[2]||(n[2]=[e.createTextVNode("关闭")])),_:1,__:[2]},8,["size"]),e.createVNode(e.unref(y.ElButton),{type:"primary",size:l.size,onClick:E},{default:e.withCtx(()=>n[3]||(n[3]=[e.createTextVNode("搜索")])),_:1,__:[3]},8,["size"])])])]),_:3},16,["visible","width"]))}}),qe=W(Se,[["__scopeId","data-v-775b8567"]]),Ie=l=>(l.install=r=>{const o=l.name;r.component(o,l)},l),Z=Ie(qe),Le=Object.freeze(Object.defineProperty({__proto__:null,JcDatePicker:H,JcInputComplex:K,JcInputSwitch:G,JcMoreQueryContain:Z,JcSelectQuery:Y,JcTagQuery:X},Symbol.toStringTag,{value:"Module"})),Fe=()=>{const l=e.reactive({queryForm:{},tags:[]}),{state:r,setQuery:o,addTag:i,reduceTag:v,reduceAllTag:u,clearQuery:h}=te(l);return{queryForm:r.queryForm,setQuery:o,addTag:i,reduceTag:v,reduceAllTag:u,clearQuery:h}},Be={install:l=>{for(const r of Object.values(Le))l.use(r)}};exports.JcDatePicker=H;exports.JcInputComplex=K;exports.JcInputSwitch=G;exports.JcMoreQueryContain=Z;exports.JcSelectQuery=Y;exports.JcTagQuery=X;exports.default=Be;exports.reactiveQuery=Fe;
|
|
8
|
-
//# sourceMappingURL=index.cjs.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bscjc/webui",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.5",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/lib/index.cjs",
|
|
7
7
|
"module": "./dist/es/index.mjs",
|
|
@@ -41,8 +41,12 @@
|
|
|
41
41
|
"vue": ">=3.2.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
+
"@types/autoprefixer": "^10.2.4",
|
|
45
|
+
"@types/cssnano": "^5.1.3",
|
|
44
46
|
"@types/node": "^24.0.7",
|
|
47
|
+
"autoprefixer": "^10.4.21",
|
|
48
|
+
"cssnano": "^7.0.7",
|
|
45
49
|
"unplugin-element-plus": "^0.10.0"
|
|
46
50
|
},
|
|
47
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "da095479b7bc771cbcec2f78a0f63da59ee4c8fc"
|
|
48
52
|
}
|
package/dist/es/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/hooks/useQueryStore.ts","../../src/components/JcSelectQuery/index.vue","../../src/components/JcSelectQuery/index.ts","../../src/components/JcDatePicker/index.vue","../../src/components/JcDatePicker/index.ts","../../src/components/JcInputSwitch/index.vue","../../src/components/JcInputSwitch/index.ts","../../src/components/JcInputComplex/index.vue","../../src/components/JcInputComplex/index.ts","../../src/components/JcTagQuery/index.vue","../../src/components/JcTagQuery/index.ts","../../src/components/JcMoreQueryContain/index.vue","../../src/components/JcMoreQueryContain/index.ts","../../src/hooks/useQuery.ts","../../src/index.ts"],"sourcesContent":["import { createInjectionState } from \"@vueuse/shared\";\nimport { isEmpty } from \"lodash-es\";\nimport { reactive } from \"vue\";\n\ntype tagType = {\n label: string;\n value: string;\n};\nexport type QueryAndTagType = {\n queryForm: Record<string, any>;\n tags: Array<tagType>;\n};\n\n// 创建一个全局注入的状态\n\nconst [useProvideQueryStore, useQueryStore] = createInjectionState(\n (initObj: QueryAndTagType) => {\n const state = reactive(initObj);\n\n // 设置查询条件\n function setQuery(key: string, value: any) {\n if (isEmpty(value)) {\n delete state.queryForm[key];\n } else {\n state.queryForm[key] = value;\n }\n }\n\n // 添加标签\n function addTag(tag: any) {\n const index = state.tags.findIndex((item) => item.label === tag.label);\n if (index === -1) {\n state.tags.push(tag);\n } else {\n state.tags.splice(index, 1, tag);\n }\n }\n\n // 减少标签\n function reduceTag(tag: tagType, index?: number) {\n delete state.queryForm[tag.label];\n if (index) {\n state.tags.splice(index, 1);\n } else {\n const i = state.tags.findIndex((item) => item.label === tag.label);\n if (i !== -1) {\n state.tags.splice(i, 1);\n }\n }\n }\n // 删除所有标签\n function reduceAllTag() {\n state.tags.forEach((tag) => {\n delete state.queryForm[tag.label];\n });\n state.tags = [];\n }\n\n // 清除查询\n function clearQuery() {\n Object.keys(state.queryForm).forEach((key) => {\n delete state.queryForm[key];\n });\n state.tags = [];\n }\n\n return { state, setQuery, addTag, reduceTag, reduceAllTag, clearQuery };\n }\n);\n\nexport { useProvideQueryStore, useQueryStore };\n","<template>\n <el-select\n ref=\"selectRef\"\n v-model=\"modelValue\"\n v-bind=\"$attrs\"\n multiple\n clearable\n :show-arrow=\"false\"\n :collapse-tags=\"true\"\n :collapse-tags-tooltip=\"true\"\n :max-collapse-tags=\"1\"\n :size=\"size\"\n :style=\"{ width }\"\n class=\"jc-select\"\n popper-class=\"jc-select-popper\"\n placeholder=\"请选择\"\n @visible-change=\"handleSelectVisible\"\n @remove-tag=\"handleRemoveTag\"\n @change=\"handleSelectChange\"\n >\n <el-option value=\"1\" hidden></el-option>\n <div class=\"el-select-pop-search-container\">\n <Search class=\"selcet-icon search-icon\" />\n <input\n ref=\"searchInputRef\"\n v-model=\"searchValue\"\n class=\"el-select-pop__input\"\n @input=\"handleSerch\"\n />\n <CirclePlus\n v-if=\"allowCreate\"\n class=\"selcet-icon circle-icon\"\n @click=\"addSelect\"\n />\n </div>\n\n <div\n v-show=\"list.length > 0\"\n class=\"el-select-dropdown__wrap virtual-scroll-wrap\"\n >\n <li class=\"check-all ak-relative el-select-dropdown__item\">\n <el-checkbox\n v-model=\"checkAll\"\n :indeterminate=\"isIndeterminate\"\n :size=\"size\"\n @change=\"handleCheckAllChange\"\n >全选</el-checkbox\n >\n </li>\n <el-checkbox-group\n v-model=\"checkedList\"\n @change=\"handleCheckedChange\"\n :size=\"size\"\n >\n <RecycleScroller\n v-slot=\"{ item }\"\n class=\"recycle-scroller\"\n :items=\"list\"\n :item-size=\"30\"\n key-field=\"value\"\n :style=\"{ maxHeight: maxScrollHeight }\"\n >\n <li class=\"el-select-dropdown__item\" :title=\"item.label\">\n <el-checkbox\n :size=\"size\"\n :value=\"item\"\n :label=\"item\"\n :disabled=\"item.disabled\"\n @click=\"hanleItemClick(item)\"\n >\n <slot :scope=\"item\">\n <span>{{ item.label }}</span>\n </slot>\n </el-checkbox>\n </li>\n </RecycleScroller>\n </el-checkbox-group>\n </div>\n <p v-show=\"list.length === 0\" class=\"el-select-dropdown__empty\">无数据</p>\n <template #footer v-if=\"isNeedFooter\">\n <div class=\"custom-multi-footer\">\n <span class=\"shift-tips\"><span>提示:按住Shift可以快速多选</span></span>\n <span class=\"counts\"></span>\n <span>\n <el-button :size=\"size\" link type=\"primary\" @click=\"closePopover\"\n >关闭</el-button\n >\n <el-button type=\"primary\" :size=\"size\" @click=\"handleMultClick\">{{\n footerBtnName\n }}</el-button>\n </span>\n </div>\n </template>\n </el-select>\n</template>\n\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { ref, onMounted, reactive, nextTick, onUnmounted, watch } from \"vue\";\nimport {\n ElSelect,\n ElOption,\n ElCheckboxGroup,\n ElCheckbox,\n ElButton,\n type SelectInstance,\n} from \"element-plus\";\nimport { Search, CirclePlus } from \"@element-plus/icons-vue\";\nimport { cloneDeep, findIndex, isArray, isEmpty } from \"lodash-es\";\nimport type { CheckboxValueType } from \"element-plus\";\nimport { RecycleScroller } from \"vue-virtual-scroller\";\nimport \"vue-virtual-scroller/dist/vue-virtual-scroller.css\";\nimport Fuse from \"fuse.js\";\nimport { useQueryStore } from \"../../hooks/useQueryStore\";\n\ndefineOptions({\n name: \"jc-select-query\",\n});\n\ntype Item = {\n label: string;\n value: string;\n};\n\nconst props = defineProps({\n field: {\n type: String,\n required: true,\n default: \"\",\n },\n options: {\n type: Array as PropType<Array<Item>> | never[],\n default: () => [],\n required: true,\n },\n allowCreate: {\n type: Boolean,\n default: true,\n },\n keyField: {\n type: Array as any,\n default: () => [\"label\", \"value\"],\n },\n width: {\n type: String,\n default: \"160px\",\n },\n size: {\n type: String as PropType<\"small\" | \"default\" | \"large\">,\n default: \"default\",\n validator: (value: string) => [\"small\", \"default\", \"large\"].includes(value),\n },\n footerBtnName: {\n type: String,\n default: \"搜索\",\n },\n maxScrollHeight: {\n type: String,\n default: \"240px\",\n },\n isNeedFooter: {\n type: Boolean,\n default: true,\n },\n});\n\nconst selectRef = ref<SelectInstance>();\nconst modelValue = ref<String[]>([]);\nconst exposedMethods = reactive<Record<string, Function | string | string[]>>(\n {}\n);\nconst searchValue = ref<string>(\"\");\nconst searchInputRef = ref<HTMLInputElement>();\n\nconst sourceList = ref<Array<Item>>([]);\nconst list = ref<Array<Item>>([]);\nconst checkedList = ref<any[]>([]);\nconst checkAll = ref<boolean>(false);\nconst isIndeterminate = ref<boolean>(false);\n\nconst { state, setQuery } = useQueryStore()!;\n\nlet origin = -1; // shift起点\nlet pin = false; // 是否按住shift键\nconst fuse = ref(); // 模糊搜索\n\nconst handleSelectVisible = (val: boolean) => {\n if (val) {\n checkedList.value = modelValue.value;\n searchValue.value = \"\";\n list.value = sourceList.value;\n handleCheckedChange(checkedList.value);\n nextTick(() => {\n searchInputRef.value?.focus();\n });\n }\n};\n\nconst handleRemoveTag = (tag: Item) => {\n checkedList.value = checkedList.value.filter(\n (item) => item.value !== tag.value\n );\n};\n\nconst handleSelectChange = (val: Array<Item>) => {\n setQuery(props.field, val);\n};\n\nconst handleSerch = () => {\n const str = searchValue.value.trim();\n if (str !== \"\") {\n list.value = fuse.value.search(str).map((obj: any) => obj.item);\n } else {\n list.value = sourceList.value;\n }\n};\nconst addSelect = () => {\n if (!isEmpty(searchValue.value)) {\n if (!list.value.map((item) => item.value).includes(searchValue.value)) {\n sourceList.value.unshift({\n label: searchValue.value,\n value: searchValue.value,\n });\n checkedList.value.push({\n label: searchValue.value,\n value: searchValue.value,\n });\n\n modelValue.value = checkedList.value;\n setQuery(props.field, modelValue.value);\n nextTick(() => {\n fuse.value = new Fuse(sourceList.value, {\n keys: props.keyField,\n });\n handleSerch();\n });\n }\n }\n};\n\nconst handleCheckAllChange = (val: CheckboxValueType) => {\n checkedList.value = val ? list.value : [];\n isIndeterminate.value = false;\n if (!props.isNeedFooter) {\n modelValue.value = checkedList.value;\n setQuery(props.field, modelValue.value);\n }\n};\n\nconst handleCheckedChange = (vals: Array<any>) => {\n // 判断是否全选、半选等情况\n if (vals.length === 0) {\n checkAll.value = false;\n isIndeterminate.value = false;\n return;\n }\n const checkedCount = vals.length;\n checkAll.value = checkedCount === list.value.length;\n isIndeterminate.value = checkedCount > 0 && checkedCount < list.value.length;\n\n const { options } = props;\n let endIdx = 0;\n if (vals.length > 0) {\n const endItem = vals[vals.length - 1];\n endIdx = options.findIndex((item) => item.value === endItem.value); // 获取最后一个选中的index\n }\n // 判断是否按住shift且点击的是未选中的box\n if (pin) {\n const sum = Math.abs(origin - endIdx) + 1; // 这里记录终点\n const min = Math.min(origin, endIdx);\n let i = 0;\n while (i < sum) {\n const index = min + i;\n const flagIdx = findIndex(vals, options[index]); // 判断区间内的数据是否已选中\n // 值为-1表示未选中\n if (flagIdx === -1) {\n checkedList.value.push(options[index]);\n }\n i++;\n }\n }\n if (!props.isNeedFooter) {\n modelValue.value = checkedList.value;\n setQuery(props.field, modelValue.value);\n }\n};\n\nconst hanleItemClick = (item: Item) => {\n // 如果没有按住shift,且点击的是没选中的 则将点击的item设为origin\n if (!pin && !checkedList.value.includes(item)) {\n origin = sourceList.value.findIndex((o) => o.value === item.value);\n }\n};\n\nconst closePopover = () => {\n selectRef.value?.blur();\n};\nconst handleMultClick = () => {\n modelValue.value = checkedList.value;\n setQuery(props.field, modelValue.value);\n closePopover();\n};\n\nwatch(\n () => props.options,\n () => {\n if (!isArray(props.options) || props.options?.length === 0) {\n return;\n }\n list.value = props.options;\n sourceList.value = cloneDeep(props.options);\n fuse.value = new Fuse(sourceList.value, {\n keys: props.keyField,\n threshold: 0.1,\n });\n },\n {\n immediate: true,\n deep: true,\n }\n);\n\nwatch(\n () => state.queryForm[props.field],\n (val) => {\n // 重置操作\n if (isEmpty(val)) {\n modelValue.value = [];\n checkedList.value = [];\n } else {\n modelValue.value = isArray(val) ? val : [];\n }\n },\n {\n deep: true,\n }\n);\n\nonMounted(() => {\n window.addEventListener(\"keydown\", (e) => {\n if (e.shiftKey) {\n pin = true;\n }\n });\n\n window.addEventListener(\"keyup\", () => {\n pin = false;\n });\n nextTick(() => {\n // 此操作是为了确保prop的数据已经传过来了\n fuse.value = new Fuse(sourceList.value, {\n keys: props.keyField,\n });\n });\n});\nonUnmounted(() => {\n window.removeEventListener(\"keydown\", (e) => {\n if (e.shiftKey) {\n pin = true;\n }\n });\n window.removeEventListener(\"keyup\", () => {\n pin = false;\n });\n});\n\nonMounted(() => {\n if (selectRef.value) {\n // 显式暴露需要的el-select方法,避免枚举实例属性\n exposedMethods.focus = selectRef.value.focus;\n exposedMethods.blur = selectRef.value.blur;\n exposedMethods.selectedLabel = selectRef.value?.selectedLabel;\n }\n});\n\ndefineExpose(exposedMethods);\n</script>\n\n<style lang=\"scss\">\n.ak-relative {\n position: relative;\n}\n\n.jc-select-popper {\n min-width: 400px !important;\n\n .el-select-pop-search-container {\n position: relative;\n padding: 4px 8px;\n\n .selcet-icon {\n color: #a6abb4;\n width: 14px;\n height: 14px;\n top: 12px;\n }\n\n .search-icon {\n position: absolute;\n left: 10px;\n line-height: initial;\n }\n\n .circle-icon {\n position: absolute;\n right: 14px;\n line-height: initial;\n &:hover {\n color: #005bf5;\n cursor: pointer;\n }\n }\n }\n\n .el-select-pop__input {\n padding-left: 24px;\n border-radius: 0;\n border-style: none none solid;\n border-bottom: 1px solid #d9dbde;\n height: 32px;\n line-height: 32px;\n width: 100%;\n overflow: hidden;\n box-sizing: border-box;\n box-shadow: none;\n &:hover {\n border-bottom-color: #888c94;\n }\n &:focus {\n outline: 0;\n border-bottom-color: #005bf5;\n }\n }\n\n .el-select-dropdown__wrap {\n max-height: 100% !important;\n .el-select-dropdown__item {\n list-style: none;\n font-size: 12px;\n padding: 0 12px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: #33363c;\n height: 32px;\n line-height: 32px;\n box-sizing: border-box;\n cursor: pointer;\n\n .el-checkbox {\n width: 100%;\n\n .el-checkbox__label {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n }\n\n &:hover {\n background-color: rgb(235.9, 245.3, 255);\n }\n }\n }\n\n .el-select-dropdown__empty {\n padding: 10px 0;\n margin: 0;\n text-align: center;\n color: #999;\n font-size: 12px;\n }\n\n .custom-multi-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-right: 8px;\n }\n\n .shift-tips {\n margin-left: 8px;\n color: #a6abb4;\n }\n .counts {\n margin-left: 8px;\n }\n}\n\n.jc-select {\n .el-select__wrapper {\n font-size: 12px;\n }\n .el-select__tags {\n height: 24px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n}\n</style>\n","import component from \"./index.vue\";\nimport type { App, Plugin } from \"vue\";\ntype SFCWithInstall<T> = T & Plugin;\n\nconst withInstall = <T>(comp: T) => {\n (comp as SFCWithInstall<T>).install = (app: App) => {\n const name = (comp as any).name;\n app.component(name, comp as SFCWithInstall<T>);\n };\n return comp as SFCWithInstall<T>;\n};\n\nexport const JcSelectQuery = withInstall(component);\n\nexport default JcSelectQuery;\n","<template>\n <div class=\"jc-date-picker\" :style=\"{ width: width }\">\n <el-select\n v-model=\"inputField\"\n :size=\"size\"\n class=\"select-field\"\n @change=\"fieldChange\"\n >\n <template #prefix>\n {{ (fieldList.find((s) => s.value === inputField) || {}).label }}\n </template>\n <el-option\n v-for=\"item in fieldList\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n <el-date-picker\n ref=\"datePickerRef\"\n v-model=\"inputValue\"\n :type=\"type\"\n v-bind=\"$attrs\"\n range-separator=\"至\"\n start-placeholder=\"开始时间\"\n end-placeholder=\"结束时间\"\n :size=\"size\"\n :value-format=\"type === 'daterange' ? 'YYYY-MM-DD' : 'YYYY-MM'\"\n @change=\"dateChange\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { onMounted, reactive, ref, watch } from \"vue\";\nimport {\n ElDatePicker,\n type DatePickerInstance,\n ElSelect,\n ElOption,\n} from \"element-plus\";\nimport { isEmpty } from \"lodash-es\";\nimport { useQueryStore } from \"../../hooks/useQueryStore\";\n\ndefineOptions({\n name: \"jc-date-picker\",\n});\n\ntype fieldType = {\n label: string;\n value: string;\n};\n\nconst props = defineProps({\n fieldList: {\n type: Array as PropType<Array<fieldType>>,\n require: true,\n default: () => [],\n },\n type: {\n type: String as PropType<\"daterange\" | \"monthrange\">,\n default: \"daterange\",\n validator: (value: string) => [\"daterange\", \"monthrange\"].includes(value),\n },\n size: {\n type: String as PropType<\"small\" | \"default\" | \"large\">,\n default: \"default\",\n validator: (value: string) => [\"small\", \"default\", \"large\"].includes(value),\n },\n width: {\n type: String,\n default: \"320px\",\n },\n});\n\nconst emits = defineEmits([\"fieldChange\"]);\nconst inputValue = ref<string[]>([]);\nconst lastInputValue = ref<string[]>([]);\nconst inputField = ref<string>(\"\");\nconst lastInputField = ref<string>(\"\");\n\nconst { state, setQuery } = useQueryStore()!;\n\nconst clearFieldQuery = () => {\n props.fieldList.forEach((item) => {\n setQuery(item.value, null);\n });\n};\nconst fieldChange = (val: any) => {\n clearFieldQuery();\n setQuery(val, inputValue.value);\n emits(\"fieldChange\", val);\n};\n\nconst dateChange = () => {\n lastInputField.value = inputField.value;\n lastInputValue.value = inputValue.value;\n setQuery(inputField.value, inputValue.value);\n};\n\nwatch(\n () => props.fieldList,\n (newVal) => {\n if (!isEmpty(newVal) && isEmpty(inputField.value)) {\n inputField.value = newVal[0].value;\n inputValue.value = [];\n }\n },\n {\n immediate: true,\n deep: true,\n }\n);\n\nwatch(\n props.fieldList.map((item) => () => state.queryForm[item.value]),\n (arr: any[]) => {\n const index = arr.findIndex((val) => !isEmpty(val));\n if (index === -1) {\n inputField.value = props.fieldList[0].value;\n inputValue.value = [];\n } else {\n inputField.value = props.fieldList[index].value;\n inputValue.value = arr[index] || [];\n }\n },\n {\n deep: true,\n }\n);\n\nconst datePickerRef = ref<DatePickerInstance>();\nconst exposedMethods = reactive<Record<string, Function>>({});\nonMounted(() => {\n if (datePickerRef.value) {\n exposedMethods.focus = datePickerRef.value?.focus;\n exposedMethods.blur = datePickerRef.value?.blur;\n exposedMethods.handleOpen = datePickerRef.value?.handleOpen;\n exposedMethods.handleClose = datePickerRef.value?.handleClose;\n }\n});\n\ndefineExpose(exposedMethods);\n</script>\n\n<style lang=\"scss\">\n.jc-date-picker {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n\n .select-field {\n display: flex;\n min-width: 60px !important;\n width: auto !important;\n max-width: 100px !important;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n .el-select__prefix {\n text-align: left;\n font-size: 12px;\n max-width: 50px !important;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: #000;\n }\n\n .el-input__inner {\n width: 0px;\n }\n }\n\n .el-date-editor {\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n border-left: none !important;\n margin-left: -1px;\n }\n\n .el-select__wrapper {\n border-top-right-radius: 0px;\n border-bottom-right-radius: 0px;\n font-size: 12px;\n max-width: 100px;\n padding: 4px 12px 4px 8px;\n }\n .el-select__placeholder {\n font-size: 12px;\n }\n}\n</style>\n","import component from \"./index.vue\";\nimport type { App, Plugin } from \"vue\";\ntype SFCWithInstall<T> = T & Plugin;\n\nconst withInstall = <T>(comp: T) => {\n (comp as SFCWithInstall<T>).install = (app: App) => {\n const name = (comp as any).name;\n app.component(name, comp as SFCWithInstall<T>);\n };\n return comp as SFCWithInstall<T>;\n};\n\nexport const JcDatePicker = withInstall(component);\n\nexport default JcDatePicker;\n","<template>\n <el-input\n ref=\"inputRef\"\n v-model.trim=\"inputValue\"\n v-bind=\"$attrs\"\n placeholder=\"请输入内容\"\n :style=\"{ width: width }\"\n :size=\"size\"\n class=\"jc-input jc-input-switch\"\n >\n <template #prepend>\n <el-select\n v-model=\"inputField\"\n :size=\"size\"\n class=\"select-field\"\n @change=\"fieldChange\"\n >\n <template #prefix>\n {{ (fieldList.find((s) => s.value === inputField) || {}).label }}\n </template>\n <el-option\n v-for=\"item in fieldList\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n </template>\n <template #suffix>\n <div class=\"suffixContent\">\n <el-icon\n v-show=\"inputValue\"\n class=\"el-input__icon\"\n @click=\"btnClearable\"\n >\n <Close />\n </el-icon>\n <el-icon class=\"el-input__icon\" @click=\"handleIconClick\">\n <Search />\n </el-icon>\n </div>\n </template>\n </el-input>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, type PropType, onMounted, reactive, watch } from \"vue\";\nimport {\n ElInput,\n ElSelect,\n ElOption,\n ElIcon,\n type InputInstance,\n} from \"element-plus\";\nimport { Search, Close } from \"@element-plus/icons-vue\";\nimport { isEmpty } from \"lodash-es\";\nimport { useQueryStore } from \"../../hooks/useQueryStore\";\n\ndefineOptions({\n name: \"jc-input-switch\",\n});\n\ntype fieldType = {\n label: string;\n value: string;\n};\nconst props = defineProps({\n fieldList: {\n type: Array as PropType<Array<fieldType>>,\n required: true,\n default: () => [],\n },\n\n size: {\n type: String as PropType<\"small\" | \"default\" | \"large\">,\n default: \"default\",\n validator: (value: string) => [\"small\", \"default\", \"large\"].includes(value),\n },\n width: {\n type: String,\n default: \"320px\",\n },\n});\n\nconst emits = defineEmits([\"fieldChange\"]);\n\nconst inputValue = ref<string>(\"\");\nconst lastInputValue = ref<string>(\"\");\nconst inputField = ref<string>(\"\");\nconst lastInputField = ref<string>(\"\");\nconst { state, setQuery } = useQueryStore()!;\n\nconst clearFieldQuery = () => {\n props.fieldList.forEach((item) => {\n setQuery(item.value, null);\n });\n};\nconst btnClearable = () => {\n inputValue.value = \"\";\n clearFieldQuery();\n};\n\nconst fieldChange = (val: string) => {\n clearFieldQuery();\n setQuery(val, inputValue.value);\n emits(\"fieldChange\", val);\n};\n\nconst handleIconClick = () => {\n lastInputValue.value = inputValue.value;\n lastInputField.value = inputField.value;\n setQuery(inputField.value, inputValue.value.trim());\n};\n\nwatch(\n () => props.fieldList,\n (newVal) => {\n if (!isEmpty(newVal) && isEmpty(inputField.value)) {\n inputField.value = newVal[0].value;\n inputValue.value = \"\";\n }\n },\n {\n immediate: true,\n deep: true,\n }\n);\n\nwatch(\n props.fieldList.map((item) => () => state.queryForm[item.value]),\n (arr: any[]) => {\n const index = arr.findIndex((val) => !isEmpty(val));\n if (index === -1) {\n inputField.value = props.fieldList[0].value;\n inputValue.value = \"\";\n } else {\n inputField.value = props.fieldList[index].value;\n inputValue.value = arr[index] || \"\";\n }\n },\n {\n deep: true,\n }\n);\n\nconst inputRef = ref<InputInstance>();\nconst exposedMethods = reactive<Record<string, any>>({});\nonMounted(() => {\n if (inputRef.value) {\n exposedMethods.blur = inputRef.value?.blur;\n exposedMethods.clear = inputRef.value?.clear;\n exposedMethods.focus = inputRef.value?.focus;\n exposedMethods.input = inputRef.value?.input;\n exposedMethods.ref = inputRef.value?.ref;\n exposedMethods.resizeTextarea = inputRef.value?.resizeTextarea;\n exposedMethods.select = inputRef.value?.select;\n exposedMethods.textarea = inputRef.value?.textarea;\n exposedMethods.textareaStyle = inputRef.value?.textareaStyle;\n exposedMethods.isComposing = inputRef.value?.isComposing;\n }\n});\n\ndefineExpose(exposedMethods);\n</script>\n\n<style lang=\"scss\"></style>\n","import component from \"./index.vue\";\nimport type { App, Plugin } from \"vue\";\ntype SFCWithInstall<T> = T & Plugin;\n\nconst withInstall = <T>(comp: T) => {\n (comp as SFCWithInstall<T>).install = (app: App) => {\n const name = (comp as any).name;\n app.component(name, comp as SFCWithInstall<T>);\n };\n return comp as SFCWithInstall<T>;\n};\n\nexport const JcInputSwitch = withInstall(component);\n\nexport default JcInputSwitch;\n","<template>\n <el-input\n ref=\"inputRef\"\n v-model.trim=\"inputValue\"\n v-bind=\"$attrs\"\n placeholder=\"请输入内容\"\n :style=\"{ width: width }\"\n class=\"jc-input jc-input-complex search-input\"\n :size=\"size\"\n >\n <template #prepend>\n <el-select\n ref=\"selectRef\"\n v-model=\"inputField\"\n :size=\"size\"\n class=\"select-field\"\n @change=\"fieldChange\"\n >\n <template #prefix>\n {{ (fieldList.find((s) => s.value === inputField) || {}).label }}\n </template>\n\n <el-option\n v-for=\"item in fieldList\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n </template>\n <template #suffix>\n <div class=\"suffixContent\">\n <el-icon\n v-show=\"inputValue\"\n class=\"el-input__icon\"\n @click=\"btnClearable\"\n >\n <Close />\n </el-icon>\n\n <el-icon class=\"el-input__icon\" @click=\"handleIconClick\">\n <Search />\n </el-icon>\n\n <el-popover\n v-model:visible=\"visible\"\n placement=\"bottom-end\"\n width=\"240\"\n :show-arrow=\"false\"\n popper-class=\"jc-input-pop\"\n trigger=\"click\"\n >\n <div class=\"popover-body\">\n <el-input\n v-model=\"inputValueMult\"\n type=\"textarea\"\n v-bind=\"$attrs\"\n :size=\"size\"\n placeholder=\"一行一项\"\n class=\"popover-textarea\"\n wrap=\"off\"\n />\n\n <div class=\"popover-btn\">\n <el-button :size=\"size\" @click=\"inputValueMult = ''\"\n >清空</el-button\n >\n <div class=\"popover-btn-right\">\n <el-button\n :size=\"size\"\n link\n type=\"primary\"\n @click=\"closePopover\"\n >关闭</el-button\n >\n <el-button\n type=\"primary\"\n :size=\"size\"\n @click=\"handleMultClick()\"\n >搜索</el-button\n >\n </div>\n </div>\n </div>\n <template #reference>\n <el-icon\n class=\"el-input__icon\"\n title=\"多项搜索\"\n style=\"background-color: #f0f2f5\"\n @click=\"showInputValueMult\"\n >\n <Grid />\n </el-icon>\n </template>\n </el-popover>\n </div>\n </template>\n </el-input>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n ElInput,\n ElPopover,\n ElSelect,\n ElOption,\n ElIcon,\n ElButton,\n ElMessage,\n type InputInstance,\n} from \"element-plus\";\nimport { Close, Search, Grid } from \"@element-plus/icons-vue\";\nimport { isEmpty, filter, includes, isArray } from \"lodash-es\";\nimport type { PropType } from \"vue\";\nimport { computed, onMounted, reactive, ref, watch } from \"vue\";\nimport { useQueryStore } from \"../../hooks/useQueryStore\";\n\ntype fieldType = {\n label: string;\n value: string;\n};\nconst props = defineProps({\n fieldList: {\n type: Array as PropType<Array<fieldType>>,\n require: true,\n default: () => [],\n },\n size: {\n type: String as PropType<\"small\" | \"default\" | \"large\">,\n default: \"default\",\n validator: (value: string) => [\"small\", \"default\", \"large\"].includes(value),\n },\n width: {\n type: String,\n default: \"320px\",\n },\n});\n\ndefineOptions({\n name: \"jc-input-complex\",\n});\n\nconst emits = defineEmits([\"fieldChange\"]);\n\nconst inputValue = ref<string>(\"\");\nconst lastInputValue = ref<string>(\"\");\nconst inputField = ref<string>(\"\");\nconst lastInputField = ref<string>(\"\");\nconst visible = ref<boolean>(false);\nconst fieldNameList = computed(() => inputField.value + \"List\");\nconst fildNameLabel = computed(\n () => props.fieldList.find((item) => item.value === inputField.value)?.label\n);\nconst inputValueMult = ref<string>(\"\");\n\nconst { state, setQuery, addTag, reduceTag } = useQueryStore()!;\n\nconst singularObj: any = {};\nconst multipleObj: any = {};\nprops.fieldList.forEach((item) => {\n singularObj[item.value] = null;\n multipleObj[item.value + \"List\"] = [];\n});\n\nconst fieldChange = (val: string) => {\n visible.value = false;\n showInputValueMult();\n emits(\"fieldChange\", val);\n};\n\nconst showInputValueMult = () => {\n if (!state.queryForm[fieldNameList.value]) {\n inputValueMult.value = \"\";\n } else {\n inputValueMult.value = state.queryForm[fieldNameList.value].join(\"\\n\");\n }\n};\n\n// 清空单个条件,触发重新查询\nconst btnClearable = () => {\n inputValue.value = \"\";\n setQuery(inputField.value, null);\n handleMultClick();\n};\n\n// 清空单数查询\nconst clearSingular = () => {\n for (const key in singularObj) {\n setQuery(key, null);\n }\n};\n\n// 点击查询图标 进行单数查询;单数查询时,要将对应字段的list查询清空\n// 同一字段,只能选择单数查询,或者多数查询\nconst handleIconClick = () => {\n inputValueMult.value = \"\";\n lastInputValue.value = inputValue.value;\n lastInputField.value = inputField.value;\n clearSingular();\n setQuery(fieldNameList.value, null); // 清除对应的复数查询\n reduceTag({ label: fieldNameList.value, value: \"\" }); // 清除对应的tag\n setQuery(inputField.value, inputValue.value.trim());\n};\n\n// 多数查询\nconst handleMultClick = () => {\n const array = inputValueMult.value\n .split(\"\\n\")\n .filter((item) => !isEmpty(item));\n if (array.length > 0) {\n const result = [...new Set(array)];\n const diffArr = filter(array, (val, i, iteratee) =>\n includes(iteratee, val, i + 1)\n );\n const repeatArr = [...new Set(diffArr)];\n //找出重复的内容 做消息提醒\n if (repeatArr.length > 0) {\n const obj = props.fieldList.find(\n (item) => item.value === inputField.value\n );\n const msg = `搜索条件中包含重复的内容:${obj?.label}:${repeatArr.join(\n \"\\n\"\n )}`;\n ElMessage.warning(msg);\n }\n inputValueMult.value = result.join(\"\\n\");\n clearSingular();\n setQuery(fieldNameList.value, result);\n addTag({\n label: fieldNameList.value,\n value: `${fildNameLabel.value}:${result.join(\",\")}`,\n });\n } else {\n setQuery(fieldNameList.value, null);\n reduceTag({ label: fieldNameList.value, value: \"\" });\n }\n closePopover();\n};\n\nconst closePopover = () => {\n visible.value = false;\n};\n\nconst clearEvent = () => {\n inputValue.value = \"\";\n inputValueMult.value = \"\";\n lastInputValue.value = \"\";\n closePopover();\n};\n\n// 外部传入更新\n// {keyList:[]}\nconst setInputValueMult = (query: any) => {\n Object.keys(query).forEach((key: string) => {\n inputField.value = key.replace(\"List\", \"\");\n inputValueMult.value = query[key].join(\"\\n\");\n handleMultClick();\n });\n};\n\n// 从外部触发一次更新 当输入框上面有值时\nconst setInputByOutside = () => {\n if (\n !isEmpty(inputValue.value) &&\n (inputValue.value !== lastInputValue.value ||\n inputField.value !== lastInputField.value)\n ) {\n lastInputValue.value = inputValue.value;\n lastInputField.value = inputField.value;\n clearSingular();\n setQuery(fieldNameList.value, null); // 清除对应的复数查询\n reduceTag({ label: fieldNameList.value, value: \"\" }); // 清除对应的tag\n setQuery(inputField.value, inputValue.value.trim());\n } else if (isEmpty(inputValue.value)) {\n lastInputValue.value = inputValue.value;\n setQuery(inputField.value, null);\n }\n};\n\nwatch(\n () => props.fieldList,\n (newVal) => {\n if (!isEmpty(newVal) && isEmpty(inputField.value)) {\n inputField.value = newVal[0].value;\n inputValue.value = \"\";\n inputValueMult.value = \"\";\n }\n },\n {\n immediate: true,\n deep: true,\n }\n);\n\nwatch(\n props.fieldList.flatMap((key) => [\n () => state.queryForm[key.value],\n () => state.queryForm[key.value + \"List\"],\n ]),\n (arr: any[]) => {\n const index = arr.findIndex((val) => !isEmpty(val));\n if (index === -1) {\n clearEvent();\n return;\n }\n let isSetFiled = false;\n props.fieldList.forEach((item) => {\n const keyMult = item.value + \"List\";\n inputValueMult.value = state.queryForm[keyMult]?.join(\"\\n\") || \"\";\n if (\n isArray(state.queryForm[keyMult]) &&\n !isEmpty(state.queryForm[keyMult])\n ) {\n addTag({\n label: keyMult,\n value: `${item.label}:${state.queryForm[keyMult].join(\",\")}`,\n });\n return;\n } else {\n reduceTag({ label: keyMult, value: \"\" }); // 清除对应的tag\n }\n\n if (state.queryForm[item.value]) {\n isSetFiled = true;\n inputField.value = item.value;\n inputValue.value = state.queryForm[item.value] || \"\";\n } else if (!isSetFiled) {\n inputValue.value = \"\";\n }\n });\n },\n {\n deep: true,\n }\n);\n\nconst inputRef = ref<InputInstance>();\nconst exposedMethods = reactive<Record<string, any>>({});\nonMounted(() => {\n if (inputRef.value) {\n exposedMethods.blur = inputRef.value?.blur;\n exposedMethods.clear = inputRef.value?.clear;\n exposedMethods.focus = inputRef.value?.focus;\n exposedMethods.input = inputRef.value?.input;\n exposedMethods.ref = inputRef.value?.ref;\n exposedMethods.resizeTextarea = inputRef.value?.resizeTextarea;\n exposedMethods.select = inputRef.value?.select;\n exposedMethods.textarea = inputRef.value?.textarea;\n exposedMethods.textareaStyle = inputRef.value?.textareaStyle;\n exposedMethods.isComposing = inputRef.value?.isComposing;\n }\n});\n\nexposedMethods.setInputValueMult = setInputValueMult;\nexposedMethods.setInputByOutside = setInputByOutside;\n\ndefineExpose(exposedMethods);\n</script>\n\n<style lang=\"scss\"></style>\n\n<style lang=\"scss\">\n.el-popover.jc-input-pop .popover-body {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.el-popover.jc-input-pop {\n height: 240px;\n}\n\n.el-popover.jc-input-pop {\n padding: 12px;\n line-height: 18px;\n min-width: auto;\n text-align: left;\n border-radius: 4px;\n border: 1px solid #e6e8eb;\n max-width: 480px;\n box-shadow: 0 8px 16px 0 rgb(0 0 0 / 16%);\n}\n\n.el-popover.jc-input-pop .popover-body .popover-textarea {\n min-height: 0;\n flex: 1;\n}\n\n.el-popover.jc-input-pop .popover-body .popover-textarea .el-textarea__inner {\n overflow: auto;\n padding: 12px;\n line-height: 20px;\n width: 100%;\n height: 100%;\n color: #333;\n font-size: 12px;\n font-weight: 400;\n border: none !important;\n resize: none;\n outline: 0;\n}\n\n.el-popover.jc-input-pop .popover-body .popover-btn {\n display: flex;\n align-items: center;\n margin-top: -1px;\n padding: 8px 12px;\n box-shadow: 0 -1px 0 0 #e6e8eb;\n z-index: 999;\n}\n\n.el-popover.jc-input-pop .popover-body .popover-btn .popover-btn-right {\n margin-left: auto;\n}\n</style>\n","import component from \"./index.vue\";\nimport type { App, Plugin } from \"vue\";\ntype SFCWithInstall<T> = T & Plugin;\n\nconst withInstall = <T>(comp: T) => {\n (comp as SFCWithInstall<T>).install = (app: App) => {\n const name = (comp as any).name;\n app.component(name, comp as SFCWithInstall<T>);\n };\n return comp as SFCWithInstall<T>;\n};\n\nexport const JcInputComplex = withInstall(component);\n\nexport default JcInputComplex;\n","<template>\n <div\n style=\"\n display: flex;\n flex-wrap: wrap;\n flex: 1;\n flex-basis: calc(100% - 50px);\n font-size: 12px;\n margin-top: 4px;\n \"\n >\n <el-tag\n v-for=\"(tag, index) in state.tags\"\n v-bind=\"$attrs\"\n :key=\"tag.label\"\n closable\n style=\"\n height: auto;\n max-height: 26px;\n white-space: normal;\n text-align: left;\n max-width: 1800px;\n overflow: hidden;\n word-break: break-word;\n text-overflow: ellipsis;\n \"\n :style=\"{ marginLeft: index > 0 ? '4px' : '0px' }\"\n @close=\"reduceTag(tag, index)\"\n >\n <span> {{ tag.value }}</span>\n </el-tag>\n <span\n v-if=\"state.tags.length > 1\"\n style=\"margin-left: 10px; margin-top: 2px; display: block\"\n @click=\"reduceAllTag\"\n >\n <el-icon>\n <Delete />\n </el-icon>\n </span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElTag, ElIcon } from \"element-plus\";\nimport { Delete } from \"@element-plus/icons-vue\";\nimport { useQueryStore } from \"../../hooks/useQueryStore\";\nconst { state, reduceTag, reduceAllTag } = useQueryStore()!;\n\ndefineOptions({\n name: \"jc-tag-query\",\n});\n</script>\n\n<style lang=\"scss\" scoped>\n:deep(.el-tag__content) {\n max-height: 24px;\n overflow: hidden;\n text-overflow: ellipsis;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n}\n</style>\n","import component from \"./index.vue\";\nimport type { App, Plugin } from \"vue\";\ntype SFCWithInstall<T> = T & Plugin;\n\nconst withInstall = <T>(comp: T) => {\n (comp as SFCWithInstall<T>).install = (app: App) => {\n const name = (comp as any).name;\n app.component(name, comp as SFCWithInstall<T>);\n };\n return comp as SFCWithInstall<T>;\n};\n\nexport const JcTagQuery = withInstall(component);\n\nexport default JcTagQuery;\n","<template>\n <el-popover\n ref=\"popoverRef\"\n v-bind=\"$attrs\"\n :visible=\"visible\"\n placement=\"bottom\"\n :width=\"width\"\n :show-arrow=\"false\"\n popper-class=\"moreQuery-pop\"\n trigger=\"click\"\n >\n <template #reference>\n <el-button\n :size=\"size\"\n :icon=\"Operation\"\n @click=\"showPopover\"\n ></el-button>\n </template>\n\n <template #default>\n <slot :scope-form=\"moreQueryForm\"></slot>\n <div class=\"popover-btn\">\n <el-button :size=\"size\" @click=\"clearEvent\">清空</el-button>\n <div class=\"popover-btn-right\">\n <el-button :size=\"size\" @click=\"visible = false\">关闭</el-button>\n <el-button type=\"primary\" :size=\"size\" @click=\"quertEvent\"\n >搜索</el-button\n >\n </div>\n </div>\n </template>\n </el-popover>\n</template>\n\n<script lang=\"ts\" setup>\nimport { type PropType, ref, watch, onMounted, reactive } from \"vue\";\nimport { Operation } from \"@element-plus/icons-vue\";\nimport { useQueryStore } from \"../../hooks/useQueryStore\";\nimport { isEmpty } from \"lodash-es\";\nimport {\n ElMessage,\n ElButton,\n ElPopover,\n type PopoverInstance,\n} from \"element-plus\";\n\ndefineOptions({\n name: \"jc-more-query-contain\",\n});\n\nconst visible = ref(false);\nconst moreQueryForm = ref<any>({});\n\ntype fieldType = {\n label: string;\n value: string;\n};\n\nconst props = defineProps({\n fieldList: {\n type: Array<fieldType>,\n require: true,\n default: () => [],\n },\n customTagObj: {\n type: Object as PropType<{ [key: string]: string }>,\n default: () => ({}),\n },\n width: {\n type: Number,\n default: 400,\n },\n size: {\n type: String as PropType<\"small\" | \"default\" | \"large\">,\n default: \"default\",\n validator: (value: string) => [\"small\", \"default\", \"large\"].includes(value),\n },\n});\nconst { state, setQuery, addTag, reduceTag } = useQueryStore()!;\n\nconst showPopover = () => {\n visible.value = !visible.value;\n if (visible.value) {\n props.fieldList.forEach((item) => {\n moreQueryForm.value[item.value] = state.queryForm[item.value] || null;\n });\n }\n};\nconst clearEvent = () => {\n moreQueryForm.value = {};\n props.fieldList.forEach((item) => {\n setQuery(item.value, null);\n reduceTag({ label: item.value, value: \"\" });\n });\n visible.value = false;\n};\n\n// watch(\n// () => state.queryForm,\n// (newForm) => {\n// if (isEmpty(newForm)) {\n// moreQueryForm.value = {};\n// } else {\n// props.fieldList.forEach((item) => {\n// if (Object.prototype.hasOwnProperty.call(newForm, item.value)) {\n// moreQueryForm.value[item.value] = newForm[item.value];\n// if (!isEmpty(newForm[item.value])) {\n// addTagCustom(item.value, item.label);\n// } else {\n// reduceTag({ label: item.value, value: \"\" });\n// }\n// }\n// });\n// }\n// },\n// {\n// deep: true,\n// }\n// );\n\nconst addTagCustom = (key: string, label: string) => {\n if (\n typeof moreQueryForm.value[key] === \"string\" ||\n typeof moreQueryForm.value[key] === \"number\"\n ) {\n addTag({\n label: key,\n value: `${label}:${\n isEmpty(props.customTagObj[key])\n ? moreQueryForm.value[key]\n : props.customTagObj[key]\n }`,\n });\n } else {\n addTag({\n label: key,\n value: `${label}:${\n isEmpty(props.customTagObj[key])\n ? moreQueryForm.value[key].join(\",\")\n : props.customTagObj[key]\n }`,\n });\n }\n};\n\nconst quertEvent = () => {\n for (const key in moreQueryForm.value) {\n setQuery(key, moreQueryForm.value[key] || null);\n const obj = props.fieldList.find((item) => item.value === key)!;\n if (obj === undefined) {\n ElMessage.warning(\"传入的fieldList和表单绑定的字段不匹配\");\n }\n addTagCustom(key, obj.label);\n }\n visible.value = false;\n};\n\nwatch(\n props.fieldList.map((item) => () => state.queryForm[item.value]),\n () => {\n props.fieldList.forEach((item) => {\n moreQueryForm.value[item.value] = state.queryForm[item.value];\n if (!isEmpty(state.queryForm[item.value])) {\n addTagCustom(item.value, item.label);\n } else {\n reduceTag({ label: item.value, value: \"\" });\n }\n });\n },\n {\n deep: true,\n }\n);\n\nconst popoverRef = ref<PopoverInstance>();\nconst exposedMethods = reactive<Record<string, any>>({});\nonMounted(() => {\n if (popoverRef.value) {\n exposedMethods.hide = popoverRef.value?.hide;\n }\n});\n\ndefineExpose(exposedMethods);\n</script>\n\n<style lang=\"scss\" scoped>\n.popover-btn {\n display: flex;\n align-items: center;\n padding: 4px 4px 0px 10px;\n z-index: 999;\n}\n\n.popover-btn .popover-btn-right {\n margin-left: auto;\n}\n.moreQuery-pop {\n padding: 12px;\n line-height: 18px;\n min-width: auto;\n text-align: left;\n border-radius: 4px;\n border: 1px solid #e6e8eb;\n box-shadow: 0 8px 16px 0 rg;\n}\n</style>\n","import component from \"./index.vue\";\nimport type { App, Plugin } from \"vue\";\ntype SFCWithInstall<T> = T & Plugin;\n\nconst withInstall = <T>(comp: T) => {\n (comp as SFCWithInstall<T>).install = (app: App) => {\n const name = (comp as any).name;\n app.component(name, comp as SFCWithInstall<T>);\n };\n return comp as SFCWithInstall<T>;\n};\n\nexport const JcMoreQueryContain = withInstall(component);\n\nexport default JcMoreQueryContain;\n","import { reactive } from \"vue\";\nimport { useProvideQueryStore, type QueryAndTagType } from \"./useQueryStore\";\n\nexport const reactiveQuery = () => {\n const obj = reactive<QueryAndTagType>({ queryForm: {}, tags: [] });\n const { state, setQuery, addTag, reduceTag, reduceAllTag, clearQuery } =\n useProvideQueryStore(obj);\n\n return {\n queryForm: state.queryForm,\n setQuery,\n addTag,\n reduceTag,\n reduceAllTag,\n clearQuery,\n };\n};\n","import * as components from \"./components/index\";\nexport * from \"./components/index\";\nexport * from \"./hooks/useQuery\";\nexport * from \"./style.scss\";\n\nimport type { App } from \"vue\";\n\nexport default {\n install: (app: App) => {\n for (const component of Object.values(components)) {\n app.use(component);\n }\n },\n};\n"],"names":["reactive","defineComponent","ref","watch","onMounted","nextTick","onUnmounted","createBlock","openBlock","unref","mergeProps","createSlots","withCtx","createVNode","createElementVNode","withDirectives","createCommentVNode","vModelText","createTextVNode","normalizeStyle","renderSlot","toDisplayString","vShow","createElementBlock","Fragment","renderList","computed","ElSelect","ElOption","ElCheckbox","ElCheckboxGroup","ElButton","ElDatePicker","ElInput","ElIcon","ElPopover","ElMessage","ElTag","Search","CirclePlus","Close","Grid","Delete","Operation","isEmpty","isArray","cloneDeep","findIndex","filter","includes","RecycleScroller","Fuse","createInjectionState","useProvideQueryStore","useQueryStore","initObj","state","setQuery","key","value","addTag","tag","index","item","reduceTag","i","reduceAllTag","clearQuery","props","__props","selectRef","modelValue","exposedMethods","searchValue","searchInputRef","sourceList","list","checkedList","checkAll","isIndeterminate","origin","pin","fuse","handleSelectVisible","val","handleCheckedChange","_a","handleRemoveTag","handleSelectChange","handleSerch","str","obj","addSelect","handleCheckAllChange","vals","checkedCount","options","endIdx","endItem","sum","min","hanleItemClick","o","closePopover","handleMultClick","e","__expose","_openBlock","_createBlock","_unref","_mergeProps","$event","$attrs","_createVNode","_createElementVNode","_hoisted_1","_withDirectives","_hoisted_2","_hoisted_3","_cache","_withCtx","_renderSlot","_ctx","_toDisplayString","_vShow","_hoisted_5","_hoisted_6","withInstall","comp","app","name","JcSelectQuery","component","emits","__emit","inputValue","lastInputValue","inputField","lastInputField","clearFieldQuery","fieldChange","dateChange","newVal","arr","datePickerRef","_b","_c","_d","_createElementBlock","s","_Fragment","_renderList","JcDatePicker","btnClearable","handleIconClick","inputRef","_e","_f","_g","_h","_i","_j","JcInputSwitch","visible","fieldNameList","fildNameLabel","inputValueMult","singularObj","multipleObj","showInputValueMult","clearSingular","array","result","diffArr","iteratee","repeatArr","msg","clearEvent","setInputValueMult","query","setInputByOutside","isSetFiled","keyMult","_hoisted_4","JcInputComplex","args","JcTagQuery","moreQueryForm","showPopover","addTagCustom","label","quertEvent","popoverRef","JcMoreQueryContain","components","reactiveQuery"],"mappings":"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"}
|
package/dist/lib/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/hooks/useQueryStore.ts","../../src/components/JcSelectQuery/index.vue","../../src/components/JcSelectQuery/index.ts","../../src/components/JcDatePicker/index.vue","../../src/components/JcDatePicker/index.ts","../../src/components/JcInputSwitch/index.vue","../../src/components/JcInputSwitch/index.ts","../../src/components/JcInputComplex/index.vue","../../src/components/JcInputComplex/index.ts","../../src/components/JcTagQuery/index.vue","../../src/components/JcTagQuery/index.ts","../../src/components/JcMoreQueryContain/index.vue","../../src/components/JcMoreQueryContain/index.ts","../../src/hooks/useQuery.ts","../../src/index.ts"],"sourcesContent":["import { createInjectionState } from \"@vueuse/shared\";\nimport { isEmpty } from \"lodash-es\";\nimport { reactive } from \"vue\";\n\ntype tagType = {\n label: string;\n value: string;\n};\nexport type QueryAndTagType = {\n queryForm: Record<string, any>;\n tags: Array<tagType>;\n};\n\n// 创建一个全局注入的状态\n\nconst [useProvideQueryStore, useQueryStore] = createInjectionState(\n (initObj: QueryAndTagType) => {\n const state = reactive(initObj);\n\n // 设置查询条件\n function setQuery(key: string, value: any) {\n if (isEmpty(value)) {\n delete state.queryForm[key];\n } else {\n state.queryForm[key] = value;\n }\n }\n\n // 添加标签\n function addTag(tag: any) {\n const index = state.tags.findIndex((item) => item.label === tag.label);\n if (index === -1) {\n state.tags.push(tag);\n } else {\n state.tags.splice(index, 1, tag);\n }\n }\n\n // 减少标签\n function reduceTag(tag: tagType, index?: number) {\n delete state.queryForm[tag.label];\n if (index) {\n state.tags.splice(index, 1);\n } else {\n const i = state.tags.findIndex((item) => item.label === tag.label);\n if (i !== -1) {\n state.tags.splice(i, 1);\n }\n }\n }\n // 删除所有标签\n function reduceAllTag() {\n state.tags.forEach((tag) => {\n delete state.queryForm[tag.label];\n });\n state.tags = [];\n }\n\n // 清除查询\n function clearQuery() {\n Object.keys(state.queryForm).forEach((key) => {\n delete state.queryForm[key];\n });\n state.tags = [];\n }\n\n return { state, setQuery, addTag, reduceTag, reduceAllTag, clearQuery };\n }\n);\n\nexport { useProvideQueryStore, useQueryStore };\n","<template>\n <el-select\n ref=\"selectRef\"\n v-model=\"modelValue\"\n v-bind=\"$attrs\"\n multiple\n clearable\n :show-arrow=\"false\"\n :collapse-tags=\"true\"\n :collapse-tags-tooltip=\"true\"\n :max-collapse-tags=\"1\"\n :size=\"size\"\n :style=\"{ width }\"\n class=\"jc-select\"\n popper-class=\"jc-select-popper\"\n placeholder=\"请选择\"\n @visible-change=\"handleSelectVisible\"\n @remove-tag=\"handleRemoveTag\"\n @change=\"handleSelectChange\"\n >\n <el-option value=\"1\" hidden></el-option>\n <div class=\"el-select-pop-search-container\">\n <Search class=\"selcet-icon search-icon\" />\n <input\n ref=\"searchInputRef\"\n v-model=\"searchValue\"\n class=\"el-select-pop__input\"\n @input=\"handleSerch\"\n />\n <CirclePlus\n v-if=\"allowCreate\"\n class=\"selcet-icon circle-icon\"\n @click=\"addSelect\"\n />\n </div>\n\n <div\n v-show=\"list.length > 0\"\n class=\"el-select-dropdown__wrap virtual-scroll-wrap\"\n >\n <li class=\"check-all ak-relative el-select-dropdown__item\">\n <el-checkbox\n v-model=\"checkAll\"\n :indeterminate=\"isIndeterminate\"\n :size=\"size\"\n @change=\"handleCheckAllChange\"\n >全选</el-checkbox\n >\n </li>\n <el-checkbox-group\n v-model=\"checkedList\"\n @change=\"handleCheckedChange\"\n :size=\"size\"\n >\n <RecycleScroller\n v-slot=\"{ item }\"\n class=\"recycle-scroller\"\n :items=\"list\"\n :item-size=\"30\"\n key-field=\"value\"\n :style=\"{ maxHeight: maxScrollHeight }\"\n >\n <li class=\"el-select-dropdown__item\" :title=\"item.label\">\n <el-checkbox\n :size=\"size\"\n :value=\"item\"\n :label=\"item\"\n :disabled=\"item.disabled\"\n @click=\"hanleItemClick(item)\"\n >\n <slot :scope=\"item\">\n <span>{{ item.label }}</span>\n </slot>\n </el-checkbox>\n </li>\n </RecycleScroller>\n </el-checkbox-group>\n </div>\n <p v-show=\"list.length === 0\" class=\"el-select-dropdown__empty\">无数据</p>\n <template #footer v-if=\"isNeedFooter\">\n <div class=\"custom-multi-footer\">\n <span class=\"shift-tips\"><span>提示:按住Shift可以快速多选</span></span>\n <span class=\"counts\"></span>\n <span>\n <el-button :size=\"size\" link type=\"primary\" @click=\"closePopover\"\n >关闭</el-button\n >\n <el-button type=\"primary\" :size=\"size\" @click=\"handleMultClick\">{{\n footerBtnName\n }}</el-button>\n </span>\n </div>\n </template>\n </el-select>\n</template>\n\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { ref, onMounted, reactive, nextTick, onUnmounted, watch } from \"vue\";\nimport {\n ElSelect,\n ElOption,\n ElCheckboxGroup,\n ElCheckbox,\n ElButton,\n type SelectInstance,\n} from \"element-plus\";\nimport { Search, CirclePlus } from \"@element-plus/icons-vue\";\nimport { cloneDeep, findIndex, isArray, isEmpty } from \"lodash-es\";\nimport type { CheckboxValueType } from \"element-plus\";\nimport { RecycleScroller } from \"vue-virtual-scroller\";\nimport \"vue-virtual-scroller/dist/vue-virtual-scroller.css\";\nimport Fuse from \"fuse.js\";\nimport { useQueryStore } from \"../../hooks/useQueryStore\";\n\ndefineOptions({\n name: \"jc-select-query\",\n});\n\ntype Item = {\n label: string;\n value: string;\n};\n\nconst props = defineProps({\n field: {\n type: String,\n required: true,\n default: \"\",\n },\n options: {\n type: Array as PropType<Array<Item>> | never[],\n default: () => [],\n required: true,\n },\n allowCreate: {\n type: Boolean,\n default: true,\n },\n keyField: {\n type: Array as any,\n default: () => [\"label\", \"value\"],\n },\n width: {\n type: String,\n default: \"160px\",\n },\n size: {\n type: String as PropType<\"small\" | \"default\" | \"large\">,\n default: \"default\",\n validator: (value: string) => [\"small\", \"default\", \"large\"].includes(value),\n },\n footerBtnName: {\n type: String,\n default: \"搜索\",\n },\n maxScrollHeight: {\n type: String,\n default: \"240px\",\n },\n isNeedFooter: {\n type: Boolean,\n default: true,\n },\n});\n\nconst selectRef = ref<SelectInstance>();\nconst modelValue = ref<String[]>([]);\nconst exposedMethods = reactive<Record<string, Function | string | string[]>>(\n {}\n);\nconst searchValue = ref<string>(\"\");\nconst searchInputRef = ref<HTMLInputElement>();\n\nconst sourceList = ref<Array<Item>>([]);\nconst list = ref<Array<Item>>([]);\nconst checkedList = ref<any[]>([]);\nconst checkAll = ref<boolean>(false);\nconst isIndeterminate = ref<boolean>(false);\n\nconst { state, setQuery } = useQueryStore()!;\n\nlet origin = -1; // shift起点\nlet pin = false; // 是否按住shift键\nconst fuse = ref(); // 模糊搜索\n\nconst handleSelectVisible = (val: boolean) => {\n if (val) {\n checkedList.value = modelValue.value;\n searchValue.value = \"\";\n list.value = sourceList.value;\n handleCheckedChange(checkedList.value);\n nextTick(() => {\n searchInputRef.value?.focus();\n });\n }\n};\n\nconst handleRemoveTag = (tag: Item) => {\n checkedList.value = checkedList.value.filter(\n (item) => item.value !== tag.value\n );\n};\n\nconst handleSelectChange = (val: Array<Item>) => {\n setQuery(props.field, val);\n};\n\nconst handleSerch = () => {\n const str = searchValue.value.trim();\n if (str !== \"\") {\n list.value = fuse.value.search(str).map((obj: any) => obj.item);\n } else {\n list.value = sourceList.value;\n }\n};\nconst addSelect = () => {\n if (!isEmpty(searchValue.value)) {\n if (!list.value.map((item) => item.value).includes(searchValue.value)) {\n sourceList.value.unshift({\n label: searchValue.value,\n value: searchValue.value,\n });\n checkedList.value.push({\n label: searchValue.value,\n value: searchValue.value,\n });\n\n modelValue.value = checkedList.value;\n setQuery(props.field, modelValue.value);\n nextTick(() => {\n fuse.value = new Fuse(sourceList.value, {\n keys: props.keyField,\n });\n handleSerch();\n });\n }\n }\n};\n\nconst handleCheckAllChange = (val: CheckboxValueType) => {\n checkedList.value = val ? list.value : [];\n isIndeterminate.value = false;\n if (!props.isNeedFooter) {\n modelValue.value = checkedList.value;\n setQuery(props.field, modelValue.value);\n }\n};\n\nconst handleCheckedChange = (vals: Array<any>) => {\n // 判断是否全选、半选等情况\n if (vals.length === 0) {\n checkAll.value = false;\n isIndeterminate.value = false;\n return;\n }\n const checkedCount = vals.length;\n checkAll.value = checkedCount === list.value.length;\n isIndeterminate.value = checkedCount > 0 && checkedCount < list.value.length;\n\n const { options } = props;\n let endIdx = 0;\n if (vals.length > 0) {\n const endItem = vals[vals.length - 1];\n endIdx = options.findIndex((item) => item.value === endItem.value); // 获取最后一个选中的index\n }\n // 判断是否按住shift且点击的是未选中的box\n if (pin) {\n const sum = Math.abs(origin - endIdx) + 1; // 这里记录终点\n const min = Math.min(origin, endIdx);\n let i = 0;\n while (i < sum) {\n const index = min + i;\n const flagIdx = findIndex(vals, options[index]); // 判断区间内的数据是否已选中\n // 值为-1表示未选中\n if (flagIdx === -1) {\n checkedList.value.push(options[index]);\n }\n i++;\n }\n }\n if (!props.isNeedFooter) {\n modelValue.value = checkedList.value;\n setQuery(props.field, modelValue.value);\n }\n};\n\nconst hanleItemClick = (item: Item) => {\n // 如果没有按住shift,且点击的是没选中的 则将点击的item设为origin\n if (!pin && !checkedList.value.includes(item)) {\n origin = sourceList.value.findIndex((o) => o.value === item.value);\n }\n};\n\nconst closePopover = () => {\n selectRef.value?.blur();\n};\nconst handleMultClick = () => {\n modelValue.value = checkedList.value;\n setQuery(props.field, modelValue.value);\n closePopover();\n};\n\nwatch(\n () => props.options,\n () => {\n if (!isArray(props.options) || props.options?.length === 0) {\n return;\n }\n list.value = props.options;\n sourceList.value = cloneDeep(props.options);\n fuse.value = new Fuse(sourceList.value, {\n keys: props.keyField,\n threshold: 0.1,\n });\n },\n {\n immediate: true,\n deep: true,\n }\n);\n\nwatch(\n () => state.queryForm[props.field],\n (val) => {\n // 重置操作\n if (isEmpty(val)) {\n modelValue.value = [];\n checkedList.value = [];\n } else {\n modelValue.value = isArray(val) ? val : [];\n }\n },\n {\n deep: true,\n }\n);\n\nonMounted(() => {\n window.addEventListener(\"keydown\", (e) => {\n if (e.shiftKey) {\n pin = true;\n }\n });\n\n window.addEventListener(\"keyup\", () => {\n pin = false;\n });\n nextTick(() => {\n // 此操作是为了确保prop的数据已经传过来了\n fuse.value = new Fuse(sourceList.value, {\n keys: props.keyField,\n });\n });\n});\nonUnmounted(() => {\n window.removeEventListener(\"keydown\", (e) => {\n if (e.shiftKey) {\n pin = true;\n }\n });\n window.removeEventListener(\"keyup\", () => {\n pin = false;\n });\n});\n\nonMounted(() => {\n if (selectRef.value) {\n // 显式暴露需要的el-select方法,避免枚举实例属性\n exposedMethods.focus = selectRef.value.focus;\n exposedMethods.blur = selectRef.value.blur;\n exposedMethods.selectedLabel = selectRef.value?.selectedLabel;\n }\n});\n\ndefineExpose(exposedMethods);\n</script>\n\n<style lang=\"scss\">\n.ak-relative {\n position: relative;\n}\n\n.jc-select-popper {\n min-width: 400px !important;\n\n .el-select-pop-search-container {\n position: relative;\n padding: 4px 8px;\n\n .selcet-icon {\n color: #a6abb4;\n width: 14px;\n height: 14px;\n top: 12px;\n }\n\n .search-icon {\n position: absolute;\n left: 10px;\n line-height: initial;\n }\n\n .circle-icon {\n position: absolute;\n right: 14px;\n line-height: initial;\n &:hover {\n color: #005bf5;\n cursor: pointer;\n }\n }\n }\n\n .el-select-pop__input {\n padding-left: 24px;\n border-radius: 0;\n border-style: none none solid;\n border-bottom: 1px solid #d9dbde;\n height: 32px;\n line-height: 32px;\n width: 100%;\n overflow: hidden;\n box-sizing: border-box;\n box-shadow: none;\n &:hover {\n border-bottom-color: #888c94;\n }\n &:focus {\n outline: 0;\n border-bottom-color: #005bf5;\n }\n }\n\n .el-select-dropdown__wrap {\n max-height: 100% !important;\n .el-select-dropdown__item {\n list-style: none;\n font-size: 12px;\n padding: 0 12px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: #33363c;\n height: 32px;\n line-height: 32px;\n box-sizing: border-box;\n cursor: pointer;\n\n .el-checkbox {\n width: 100%;\n\n .el-checkbox__label {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n }\n\n &:hover {\n background-color: rgb(235.9, 245.3, 255);\n }\n }\n }\n\n .el-select-dropdown__empty {\n padding: 10px 0;\n margin: 0;\n text-align: center;\n color: #999;\n font-size: 12px;\n }\n\n .custom-multi-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-right: 8px;\n }\n\n .shift-tips {\n margin-left: 8px;\n color: #a6abb4;\n }\n .counts {\n margin-left: 8px;\n }\n}\n\n.jc-select {\n .el-select__wrapper {\n font-size: 12px;\n }\n .el-select__tags {\n height: 24px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n}\n</style>\n","import component from \"./index.vue\";\nimport type { App, Plugin } from \"vue\";\ntype SFCWithInstall<T> = T & Plugin;\n\nconst withInstall = <T>(comp: T) => {\n (comp as SFCWithInstall<T>).install = (app: App) => {\n const name = (comp as any).name;\n app.component(name, comp as SFCWithInstall<T>);\n };\n return comp as SFCWithInstall<T>;\n};\n\nexport const JcSelectQuery = withInstall(component);\n\nexport default JcSelectQuery;\n","<template>\n <div class=\"jc-date-picker\" :style=\"{ width: width }\">\n <el-select\n v-model=\"inputField\"\n :size=\"size\"\n class=\"select-field\"\n @change=\"fieldChange\"\n >\n <template #prefix>\n {{ (fieldList.find((s) => s.value === inputField) || {}).label }}\n </template>\n <el-option\n v-for=\"item in fieldList\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n <el-date-picker\n ref=\"datePickerRef\"\n v-model=\"inputValue\"\n :type=\"type\"\n v-bind=\"$attrs\"\n range-separator=\"至\"\n start-placeholder=\"开始时间\"\n end-placeholder=\"结束时间\"\n :size=\"size\"\n :value-format=\"type === 'daterange' ? 'YYYY-MM-DD' : 'YYYY-MM'\"\n @change=\"dateChange\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { onMounted, reactive, ref, watch } from \"vue\";\nimport {\n ElDatePicker,\n type DatePickerInstance,\n ElSelect,\n ElOption,\n} from \"element-plus\";\nimport { isEmpty } from \"lodash-es\";\nimport { useQueryStore } from \"../../hooks/useQueryStore\";\n\ndefineOptions({\n name: \"jc-date-picker\",\n});\n\ntype fieldType = {\n label: string;\n value: string;\n};\n\nconst props = defineProps({\n fieldList: {\n type: Array as PropType<Array<fieldType>>,\n require: true,\n default: () => [],\n },\n type: {\n type: String as PropType<\"daterange\" | \"monthrange\">,\n default: \"daterange\",\n validator: (value: string) => [\"daterange\", \"monthrange\"].includes(value),\n },\n size: {\n type: String as PropType<\"small\" | \"default\" | \"large\">,\n default: \"default\",\n validator: (value: string) => [\"small\", \"default\", \"large\"].includes(value),\n },\n width: {\n type: String,\n default: \"320px\",\n },\n});\n\nconst emits = defineEmits([\"fieldChange\"]);\nconst inputValue = ref<string[]>([]);\nconst lastInputValue = ref<string[]>([]);\nconst inputField = ref<string>(\"\");\nconst lastInputField = ref<string>(\"\");\n\nconst { state, setQuery } = useQueryStore()!;\n\nconst clearFieldQuery = () => {\n props.fieldList.forEach((item) => {\n setQuery(item.value, null);\n });\n};\nconst fieldChange = (val: any) => {\n clearFieldQuery();\n setQuery(val, inputValue.value);\n emits(\"fieldChange\", val);\n};\n\nconst dateChange = () => {\n lastInputField.value = inputField.value;\n lastInputValue.value = inputValue.value;\n setQuery(inputField.value, inputValue.value);\n};\n\nwatch(\n () => props.fieldList,\n (newVal) => {\n if (!isEmpty(newVal) && isEmpty(inputField.value)) {\n inputField.value = newVal[0].value;\n inputValue.value = [];\n }\n },\n {\n immediate: true,\n deep: true,\n }\n);\n\nwatch(\n props.fieldList.map((item) => () => state.queryForm[item.value]),\n (arr: any[]) => {\n const index = arr.findIndex((val) => !isEmpty(val));\n if (index === -1) {\n inputField.value = props.fieldList[0].value;\n inputValue.value = [];\n } else {\n inputField.value = props.fieldList[index].value;\n inputValue.value = arr[index] || [];\n }\n },\n {\n deep: true,\n }\n);\n\nconst datePickerRef = ref<DatePickerInstance>();\nconst exposedMethods = reactive<Record<string, Function>>({});\nonMounted(() => {\n if (datePickerRef.value) {\n exposedMethods.focus = datePickerRef.value?.focus;\n exposedMethods.blur = datePickerRef.value?.blur;\n exposedMethods.handleOpen = datePickerRef.value?.handleOpen;\n exposedMethods.handleClose = datePickerRef.value?.handleClose;\n }\n});\n\ndefineExpose(exposedMethods);\n</script>\n\n<style lang=\"scss\">\n.jc-date-picker {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n\n .select-field {\n display: flex;\n min-width: 60px !important;\n width: auto !important;\n max-width: 100px !important;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n .el-select__prefix {\n text-align: left;\n font-size: 12px;\n max-width: 50px !important;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: #000;\n }\n\n .el-input__inner {\n width: 0px;\n }\n }\n\n .el-date-editor {\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n border-left: none !important;\n margin-left: -1px;\n }\n\n .el-select__wrapper {\n border-top-right-radius: 0px;\n border-bottom-right-radius: 0px;\n font-size: 12px;\n max-width: 100px;\n padding: 4px 12px 4px 8px;\n }\n .el-select__placeholder {\n font-size: 12px;\n }\n}\n</style>\n","import component from \"./index.vue\";\nimport type { App, Plugin } from \"vue\";\ntype SFCWithInstall<T> = T & Plugin;\n\nconst withInstall = <T>(comp: T) => {\n (comp as SFCWithInstall<T>).install = (app: App) => {\n const name = (comp as any).name;\n app.component(name, comp as SFCWithInstall<T>);\n };\n return comp as SFCWithInstall<T>;\n};\n\nexport const JcDatePicker = withInstall(component);\n\nexport default JcDatePicker;\n","<template>\n <el-input\n ref=\"inputRef\"\n v-model.trim=\"inputValue\"\n v-bind=\"$attrs\"\n placeholder=\"请输入内容\"\n :style=\"{ width: width }\"\n :size=\"size\"\n class=\"jc-input jc-input-switch\"\n >\n <template #prepend>\n <el-select\n v-model=\"inputField\"\n :size=\"size\"\n class=\"select-field\"\n @change=\"fieldChange\"\n >\n <template #prefix>\n {{ (fieldList.find((s) => s.value === inputField) || {}).label }}\n </template>\n <el-option\n v-for=\"item in fieldList\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n </template>\n <template #suffix>\n <div class=\"suffixContent\">\n <el-icon\n v-show=\"inputValue\"\n class=\"el-input__icon\"\n @click=\"btnClearable\"\n >\n <Close />\n </el-icon>\n <el-icon class=\"el-input__icon\" @click=\"handleIconClick\">\n <Search />\n </el-icon>\n </div>\n </template>\n </el-input>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, type PropType, onMounted, reactive, watch } from \"vue\";\nimport {\n ElInput,\n ElSelect,\n ElOption,\n ElIcon,\n type InputInstance,\n} from \"element-plus\";\nimport { Search, Close } from \"@element-plus/icons-vue\";\nimport { isEmpty } from \"lodash-es\";\nimport { useQueryStore } from \"../../hooks/useQueryStore\";\n\ndefineOptions({\n name: \"jc-input-switch\",\n});\n\ntype fieldType = {\n label: string;\n value: string;\n};\nconst props = defineProps({\n fieldList: {\n type: Array as PropType<Array<fieldType>>,\n required: true,\n default: () => [],\n },\n\n size: {\n type: String as PropType<\"small\" | \"default\" | \"large\">,\n default: \"default\",\n validator: (value: string) => [\"small\", \"default\", \"large\"].includes(value),\n },\n width: {\n type: String,\n default: \"320px\",\n },\n});\n\nconst emits = defineEmits([\"fieldChange\"]);\n\nconst inputValue = ref<string>(\"\");\nconst lastInputValue = ref<string>(\"\");\nconst inputField = ref<string>(\"\");\nconst lastInputField = ref<string>(\"\");\nconst { state, setQuery } = useQueryStore()!;\n\nconst clearFieldQuery = () => {\n props.fieldList.forEach((item) => {\n setQuery(item.value, null);\n });\n};\nconst btnClearable = () => {\n inputValue.value = \"\";\n clearFieldQuery();\n};\n\nconst fieldChange = (val: string) => {\n clearFieldQuery();\n setQuery(val, inputValue.value);\n emits(\"fieldChange\", val);\n};\n\nconst handleIconClick = () => {\n lastInputValue.value = inputValue.value;\n lastInputField.value = inputField.value;\n setQuery(inputField.value, inputValue.value.trim());\n};\n\nwatch(\n () => props.fieldList,\n (newVal) => {\n if (!isEmpty(newVal) && isEmpty(inputField.value)) {\n inputField.value = newVal[0].value;\n inputValue.value = \"\";\n }\n },\n {\n immediate: true,\n deep: true,\n }\n);\n\nwatch(\n props.fieldList.map((item) => () => state.queryForm[item.value]),\n (arr: any[]) => {\n const index = arr.findIndex((val) => !isEmpty(val));\n if (index === -1) {\n inputField.value = props.fieldList[0].value;\n inputValue.value = \"\";\n } else {\n inputField.value = props.fieldList[index].value;\n inputValue.value = arr[index] || \"\";\n }\n },\n {\n deep: true,\n }\n);\n\nconst inputRef = ref<InputInstance>();\nconst exposedMethods = reactive<Record<string, any>>({});\nonMounted(() => {\n if (inputRef.value) {\n exposedMethods.blur = inputRef.value?.blur;\n exposedMethods.clear = inputRef.value?.clear;\n exposedMethods.focus = inputRef.value?.focus;\n exposedMethods.input = inputRef.value?.input;\n exposedMethods.ref = inputRef.value?.ref;\n exposedMethods.resizeTextarea = inputRef.value?.resizeTextarea;\n exposedMethods.select = inputRef.value?.select;\n exposedMethods.textarea = inputRef.value?.textarea;\n exposedMethods.textareaStyle = inputRef.value?.textareaStyle;\n exposedMethods.isComposing = inputRef.value?.isComposing;\n }\n});\n\ndefineExpose(exposedMethods);\n</script>\n\n<style lang=\"scss\"></style>\n","import component from \"./index.vue\";\nimport type { App, Plugin } from \"vue\";\ntype SFCWithInstall<T> = T & Plugin;\n\nconst withInstall = <T>(comp: T) => {\n (comp as SFCWithInstall<T>).install = (app: App) => {\n const name = (comp as any).name;\n app.component(name, comp as SFCWithInstall<T>);\n };\n return comp as SFCWithInstall<T>;\n};\n\nexport const JcInputSwitch = withInstall(component);\n\nexport default JcInputSwitch;\n","<template>\n <el-input\n ref=\"inputRef\"\n v-model.trim=\"inputValue\"\n v-bind=\"$attrs\"\n placeholder=\"请输入内容\"\n :style=\"{ width: width }\"\n class=\"jc-input jc-input-complex search-input\"\n :size=\"size\"\n >\n <template #prepend>\n <el-select\n ref=\"selectRef\"\n v-model=\"inputField\"\n :size=\"size\"\n class=\"select-field\"\n @change=\"fieldChange\"\n >\n <template #prefix>\n {{ (fieldList.find((s) => s.value === inputField) || {}).label }}\n </template>\n\n <el-option\n v-for=\"item in fieldList\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n </template>\n <template #suffix>\n <div class=\"suffixContent\">\n <el-icon\n v-show=\"inputValue\"\n class=\"el-input__icon\"\n @click=\"btnClearable\"\n >\n <Close />\n </el-icon>\n\n <el-icon class=\"el-input__icon\" @click=\"handleIconClick\">\n <Search />\n </el-icon>\n\n <el-popover\n v-model:visible=\"visible\"\n placement=\"bottom-end\"\n width=\"240\"\n :show-arrow=\"false\"\n popper-class=\"jc-input-pop\"\n trigger=\"click\"\n >\n <div class=\"popover-body\">\n <el-input\n v-model=\"inputValueMult\"\n type=\"textarea\"\n v-bind=\"$attrs\"\n :size=\"size\"\n placeholder=\"一行一项\"\n class=\"popover-textarea\"\n wrap=\"off\"\n />\n\n <div class=\"popover-btn\">\n <el-button :size=\"size\" @click=\"inputValueMult = ''\"\n >清空</el-button\n >\n <div class=\"popover-btn-right\">\n <el-button\n :size=\"size\"\n link\n type=\"primary\"\n @click=\"closePopover\"\n >关闭</el-button\n >\n <el-button\n type=\"primary\"\n :size=\"size\"\n @click=\"handleMultClick()\"\n >搜索</el-button\n >\n </div>\n </div>\n </div>\n <template #reference>\n <el-icon\n class=\"el-input__icon\"\n title=\"多项搜索\"\n style=\"background-color: #f0f2f5\"\n @click=\"showInputValueMult\"\n >\n <Grid />\n </el-icon>\n </template>\n </el-popover>\n </div>\n </template>\n </el-input>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n ElInput,\n ElPopover,\n ElSelect,\n ElOption,\n ElIcon,\n ElButton,\n ElMessage,\n type InputInstance,\n} from \"element-plus\";\nimport { Close, Search, Grid } from \"@element-plus/icons-vue\";\nimport { isEmpty, filter, includes, isArray } from \"lodash-es\";\nimport type { PropType } from \"vue\";\nimport { computed, onMounted, reactive, ref, watch } from \"vue\";\nimport { useQueryStore } from \"../../hooks/useQueryStore\";\n\ntype fieldType = {\n label: string;\n value: string;\n};\nconst props = defineProps({\n fieldList: {\n type: Array as PropType<Array<fieldType>>,\n require: true,\n default: () => [],\n },\n size: {\n type: String as PropType<\"small\" | \"default\" | \"large\">,\n default: \"default\",\n validator: (value: string) => [\"small\", \"default\", \"large\"].includes(value),\n },\n width: {\n type: String,\n default: \"320px\",\n },\n});\n\ndefineOptions({\n name: \"jc-input-complex\",\n});\n\nconst emits = defineEmits([\"fieldChange\"]);\n\nconst inputValue = ref<string>(\"\");\nconst lastInputValue = ref<string>(\"\");\nconst inputField = ref<string>(\"\");\nconst lastInputField = ref<string>(\"\");\nconst visible = ref<boolean>(false);\nconst fieldNameList = computed(() => inputField.value + \"List\");\nconst fildNameLabel = computed(\n () => props.fieldList.find((item) => item.value === inputField.value)?.label\n);\nconst inputValueMult = ref<string>(\"\");\n\nconst { state, setQuery, addTag, reduceTag } = useQueryStore()!;\n\nconst singularObj: any = {};\nconst multipleObj: any = {};\nprops.fieldList.forEach((item) => {\n singularObj[item.value] = null;\n multipleObj[item.value + \"List\"] = [];\n});\n\nconst fieldChange = (val: string) => {\n visible.value = false;\n showInputValueMult();\n emits(\"fieldChange\", val);\n};\n\nconst showInputValueMult = () => {\n if (!state.queryForm[fieldNameList.value]) {\n inputValueMult.value = \"\";\n } else {\n inputValueMult.value = state.queryForm[fieldNameList.value].join(\"\\n\");\n }\n};\n\n// 清空单个条件,触发重新查询\nconst btnClearable = () => {\n inputValue.value = \"\";\n setQuery(inputField.value, null);\n handleMultClick();\n};\n\n// 清空单数查询\nconst clearSingular = () => {\n for (const key in singularObj) {\n setQuery(key, null);\n }\n};\n\n// 点击查询图标 进行单数查询;单数查询时,要将对应字段的list查询清空\n// 同一字段,只能选择单数查询,或者多数查询\nconst handleIconClick = () => {\n inputValueMult.value = \"\";\n lastInputValue.value = inputValue.value;\n lastInputField.value = inputField.value;\n clearSingular();\n setQuery(fieldNameList.value, null); // 清除对应的复数查询\n reduceTag({ label: fieldNameList.value, value: \"\" }); // 清除对应的tag\n setQuery(inputField.value, inputValue.value.trim());\n};\n\n// 多数查询\nconst handleMultClick = () => {\n const array = inputValueMult.value\n .split(\"\\n\")\n .filter((item) => !isEmpty(item));\n if (array.length > 0) {\n const result = [...new Set(array)];\n const diffArr = filter(array, (val, i, iteratee) =>\n includes(iteratee, val, i + 1)\n );\n const repeatArr = [...new Set(diffArr)];\n //找出重复的内容 做消息提醒\n if (repeatArr.length > 0) {\n const obj = props.fieldList.find(\n (item) => item.value === inputField.value\n );\n const msg = `搜索条件中包含重复的内容:${obj?.label}:${repeatArr.join(\n \"\\n\"\n )}`;\n ElMessage.warning(msg);\n }\n inputValueMult.value = result.join(\"\\n\");\n clearSingular();\n setQuery(fieldNameList.value, result);\n addTag({\n label: fieldNameList.value,\n value: `${fildNameLabel.value}:${result.join(\",\")}`,\n });\n } else {\n setQuery(fieldNameList.value, null);\n reduceTag({ label: fieldNameList.value, value: \"\" });\n }\n closePopover();\n};\n\nconst closePopover = () => {\n visible.value = false;\n};\n\nconst clearEvent = () => {\n inputValue.value = \"\";\n inputValueMult.value = \"\";\n lastInputValue.value = \"\";\n closePopover();\n};\n\n// 外部传入更新\n// {keyList:[]}\nconst setInputValueMult = (query: any) => {\n Object.keys(query).forEach((key: string) => {\n inputField.value = key.replace(\"List\", \"\");\n inputValueMult.value = query[key].join(\"\\n\");\n handleMultClick();\n });\n};\n\n// 从外部触发一次更新 当输入框上面有值时\nconst setInputByOutside = () => {\n if (\n !isEmpty(inputValue.value) &&\n (inputValue.value !== lastInputValue.value ||\n inputField.value !== lastInputField.value)\n ) {\n lastInputValue.value = inputValue.value;\n lastInputField.value = inputField.value;\n clearSingular();\n setQuery(fieldNameList.value, null); // 清除对应的复数查询\n reduceTag({ label: fieldNameList.value, value: \"\" }); // 清除对应的tag\n setQuery(inputField.value, inputValue.value.trim());\n } else if (isEmpty(inputValue.value)) {\n lastInputValue.value = inputValue.value;\n setQuery(inputField.value, null);\n }\n};\n\nwatch(\n () => props.fieldList,\n (newVal) => {\n if (!isEmpty(newVal) && isEmpty(inputField.value)) {\n inputField.value = newVal[0].value;\n inputValue.value = \"\";\n inputValueMult.value = \"\";\n }\n },\n {\n immediate: true,\n deep: true,\n }\n);\n\nwatch(\n props.fieldList.flatMap((key) => [\n () => state.queryForm[key.value],\n () => state.queryForm[key.value + \"List\"],\n ]),\n (arr: any[]) => {\n const index = arr.findIndex((val) => !isEmpty(val));\n if (index === -1) {\n clearEvent();\n return;\n }\n let isSetFiled = false;\n props.fieldList.forEach((item) => {\n const keyMult = item.value + \"List\";\n inputValueMult.value = state.queryForm[keyMult]?.join(\"\\n\") || \"\";\n if (\n isArray(state.queryForm[keyMult]) &&\n !isEmpty(state.queryForm[keyMult])\n ) {\n addTag({\n label: keyMult,\n value: `${item.label}:${state.queryForm[keyMult].join(\",\")}`,\n });\n return;\n } else {\n reduceTag({ label: keyMult, value: \"\" }); // 清除对应的tag\n }\n\n if (state.queryForm[item.value]) {\n isSetFiled = true;\n inputField.value = item.value;\n inputValue.value = state.queryForm[item.value] || \"\";\n } else if (!isSetFiled) {\n inputValue.value = \"\";\n }\n });\n },\n {\n deep: true,\n }\n);\n\nconst inputRef = ref<InputInstance>();\nconst exposedMethods = reactive<Record<string, any>>({});\nonMounted(() => {\n if (inputRef.value) {\n exposedMethods.blur = inputRef.value?.blur;\n exposedMethods.clear = inputRef.value?.clear;\n exposedMethods.focus = inputRef.value?.focus;\n exposedMethods.input = inputRef.value?.input;\n exposedMethods.ref = inputRef.value?.ref;\n exposedMethods.resizeTextarea = inputRef.value?.resizeTextarea;\n exposedMethods.select = inputRef.value?.select;\n exposedMethods.textarea = inputRef.value?.textarea;\n exposedMethods.textareaStyle = inputRef.value?.textareaStyle;\n exposedMethods.isComposing = inputRef.value?.isComposing;\n }\n});\n\nexposedMethods.setInputValueMult = setInputValueMult;\nexposedMethods.setInputByOutside = setInputByOutside;\n\ndefineExpose(exposedMethods);\n</script>\n\n<style lang=\"scss\"></style>\n\n<style lang=\"scss\">\n.el-popover.jc-input-pop .popover-body {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.el-popover.jc-input-pop {\n height: 240px;\n}\n\n.el-popover.jc-input-pop {\n padding: 12px;\n line-height: 18px;\n min-width: auto;\n text-align: left;\n border-radius: 4px;\n border: 1px solid #e6e8eb;\n max-width: 480px;\n box-shadow: 0 8px 16px 0 rgb(0 0 0 / 16%);\n}\n\n.el-popover.jc-input-pop .popover-body .popover-textarea {\n min-height: 0;\n flex: 1;\n}\n\n.el-popover.jc-input-pop .popover-body .popover-textarea .el-textarea__inner {\n overflow: auto;\n padding: 12px;\n line-height: 20px;\n width: 100%;\n height: 100%;\n color: #333;\n font-size: 12px;\n font-weight: 400;\n border: none !important;\n resize: none;\n outline: 0;\n}\n\n.el-popover.jc-input-pop .popover-body .popover-btn {\n display: flex;\n align-items: center;\n margin-top: -1px;\n padding: 8px 12px;\n box-shadow: 0 -1px 0 0 #e6e8eb;\n z-index: 999;\n}\n\n.el-popover.jc-input-pop .popover-body .popover-btn .popover-btn-right {\n margin-left: auto;\n}\n</style>\n","import component from \"./index.vue\";\nimport type { App, Plugin } from \"vue\";\ntype SFCWithInstall<T> = T & Plugin;\n\nconst withInstall = <T>(comp: T) => {\n (comp as SFCWithInstall<T>).install = (app: App) => {\n const name = (comp as any).name;\n app.component(name, comp as SFCWithInstall<T>);\n };\n return comp as SFCWithInstall<T>;\n};\n\nexport const JcInputComplex = withInstall(component);\n\nexport default JcInputComplex;\n","<template>\n <div\n style=\"\n display: flex;\n flex-wrap: wrap;\n flex: 1;\n flex-basis: calc(100% - 50px);\n font-size: 12px;\n margin-top: 4px;\n \"\n >\n <el-tag\n v-for=\"(tag, index) in state.tags\"\n v-bind=\"$attrs\"\n :key=\"tag.label\"\n closable\n style=\"\n height: auto;\n max-height: 26px;\n white-space: normal;\n text-align: left;\n max-width: 1800px;\n overflow: hidden;\n word-break: break-word;\n text-overflow: ellipsis;\n \"\n :style=\"{ marginLeft: index > 0 ? '4px' : '0px' }\"\n @close=\"reduceTag(tag, index)\"\n >\n <span> {{ tag.value }}</span>\n </el-tag>\n <span\n v-if=\"state.tags.length > 1\"\n style=\"margin-left: 10px; margin-top: 2px; display: block\"\n @click=\"reduceAllTag\"\n >\n <el-icon>\n <Delete />\n </el-icon>\n </span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElTag, ElIcon } from \"element-plus\";\nimport { Delete } from \"@element-plus/icons-vue\";\nimport { useQueryStore } from \"../../hooks/useQueryStore\";\nconst { state, reduceTag, reduceAllTag } = useQueryStore()!;\n\ndefineOptions({\n name: \"jc-tag-query\",\n});\n</script>\n\n<style lang=\"scss\" scoped>\n:deep(.el-tag__content) {\n max-height: 24px;\n overflow: hidden;\n text-overflow: ellipsis;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n}\n</style>\n","import component from \"./index.vue\";\nimport type { App, Plugin } from \"vue\";\ntype SFCWithInstall<T> = T & Plugin;\n\nconst withInstall = <T>(comp: T) => {\n (comp as SFCWithInstall<T>).install = (app: App) => {\n const name = (comp as any).name;\n app.component(name, comp as SFCWithInstall<T>);\n };\n return comp as SFCWithInstall<T>;\n};\n\nexport const JcTagQuery = withInstall(component);\n\nexport default JcTagQuery;\n","<template>\n <el-popover\n ref=\"popoverRef\"\n v-bind=\"$attrs\"\n :visible=\"visible\"\n placement=\"bottom\"\n :width=\"width\"\n :show-arrow=\"false\"\n popper-class=\"moreQuery-pop\"\n trigger=\"click\"\n >\n <template #reference>\n <el-button\n :size=\"size\"\n :icon=\"Operation\"\n @click=\"showPopover\"\n ></el-button>\n </template>\n\n <template #default>\n <slot :scope-form=\"moreQueryForm\"></slot>\n <div class=\"popover-btn\">\n <el-button :size=\"size\" @click=\"clearEvent\">清空</el-button>\n <div class=\"popover-btn-right\">\n <el-button :size=\"size\" @click=\"visible = false\">关闭</el-button>\n <el-button type=\"primary\" :size=\"size\" @click=\"quertEvent\"\n >搜索</el-button\n >\n </div>\n </div>\n </template>\n </el-popover>\n</template>\n\n<script lang=\"ts\" setup>\nimport { type PropType, ref, watch, onMounted, reactive } from \"vue\";\nimport { Operation } from \"@element-plus/icons-vue\";\nimport { useQueryStore } from \"../../hooks/useQueryStore\";\nimport { isEmpty } from \"lodash-es\";\nimport {\n ElMessage,\n ElButton,\n ElPopover,\n type PopoverInstance,\n} from \"element-plus\";\n\ndefineOptions({\n name: \"jc-more-query-contain\",\n});\n\nconst visible = ref(false);\nconst moreQueryForm = ref<any>({});\n\ntype fieldType = {\n label: string;\n value: string;\n};\n\nconst props = defineProps({\n fieldList: {\n type: Array<fieldType>,\n require: true,\n default: () => [],\n },\n customTagObj: {\n type: Object as PropType<{ [key: string]: string }>,\n default: () => ({}),\n },\n width: {\n type: Number,\n default: 400,\n },\n size: {\n type: String as PropType<\"small\" | \"default\" | \"large\">,\n default: \"default\",\n validator: (value: string) => [\"small\", \"default\", \"large\"].includes(value),\n },\n});\nconst { state, setQuery, addTag, reduceTag } = useQueryStore()!;\n\nconst showPopover = () => {\n visible.value = !visible.value;\n if (visible.value) {\n props.fieldList.forEach((item) => {\n moreQueryForm.value[item.value] = state.queryForm[item.value] || null;\n });\n }\n};\nconst clearEvent = () => {\n moreQueryForm.value = {};\n props.fieldList.forEach((item) => {\n setQuery(item.value, null);\n reduceTag({ label: item.value, value: \"\" });\n });\n visible.value = false;\n};\n\n// watch(\n// () => state.queryForm,\n// (newForm) => {\n// if (isEmpty(newForm)) {\n// moreQueryForm.value = {};\n// } else {\n// props.fieldList.forEach((item) => {\n// if (Object.prototype.hasOwnProperty.call(newForm, item.value)) {\n// moreQueryForm.value[item.value] = newForm[item.value];\n// if (!isEmpty(newForm[item.value])) {\n// addTagCustom(item.value, item.label);\n// } else {\n// reduceTag({ label: item.value, value: \"\" });\n// }\n// }\n// });\n// }\n// },\n// {\n// deep: true,\n// }\n// );\n\nconst addTagCustom = (key: string, label: string) => {\n if (\n typeof moreQueryForm.value[key] === \"string\" ||\n typeof moreQueryForm.value[key] === \"number\"\n ) {\n addTag({\n label: key,\n value: `${label}:${\n isEmpty(props.customTagObj[key])\n ? moreQueryForm.value[key]\n : props.customTagObj[key]\n }`,\n });\n } else {\n addTag({\n label: key,\n value: `${label}:${\n isEmpty(props.customTagObj[key])\n ? moreQueryForm.value[key].join(\",\")\n : props.customTagObj[key]\n }`,\n });\n }\n};\n\nconst quertEvent = () => {\n for (const key in moreQueryForm.value) {\n setQuery(key, moreQueryForm.value[key] || null);\n const obj = props.fieldList.find((item) => item.value === key)!;\n if (obj === undefined) {\n ElMessage.warning(\"传入的fieldList和表单绑定的字段不匹配\");\n }\n addTagCustom(key, obj.label);\n }\n visible.value = false;\n};\n\nwatch(\n props.fieldList.map((item) => () => state.queryForm[item.value]),\n () => {\n props.fieldList.forEach((item) => {\n moreQueryForm.value[item.value] = state.queryForm[item.value];\n if (!isEmpty(state.queryForm[item.value])) {\n addTagCustom(item.value, item.label);\n } else {\n reduceTag({ label: item.value, value: \"\" });\n }\n });\n },\n {\n deep: true,\n }\n);\n\nconst popoverRef = ref<PopoverInstance>();\nconst exposedMethods = reactive<Record<string, any>>({});\nonMounted(() => {\n if (popoverRef.value) {\n exposedMethods.hide = popoverRef.value?.hide;\n }\n});\n\ndefineExpose(exposedMethods);\n</script>\n\n<style lang=\"scss\" scoped>\n.popover-btn {\n display: flex;\n align-items: center;\n padding: 4px 4px 0px 10px;\n z-index: 999;\n}\n\n.popover-btn .popover-btn-right {\n margin-left: auto;\n}\n.moreQuery-pop {\n padding: 12px;\n line-height: 18px;\n min-width: auto;\n text-align: left;\n border-radius: 4px;\n border: 1px solid #e6e8eb;\n box-shadow: 0 8px 16px 0 rg;\n}\n</style>\n","import component from \"./index.vue\";\nimport type { App, Plugin } from \"vue\";\ntype SFCWithInstall<T> = T & Plugin;\n\nconst withInstall = <T>(comp: T) => {\n (comp as SFCWithInstall<T>).install = (app: App) => {\n const name = (comp as any).name;\n app.component(name, comp as SFCWithInstall<T>);\n };\n return comp as SFCWithInstall<T>;\n};\n\nexport const JcMoreQueryContain = withInstall(component);\n\nexport default JcMoreQueryContain;\n","import { reactive } from \"vue\";\nimport { useProvideQueryStore, type QueryAndTagType } from \"./useQueryStore\";\n\nexport const reactiveQuery = () => {\n const obj = reactive<QueryAndTagType>({ queryForm: {}, tags: [] });\n const { state, setQuery, addTag, reduceTag, reduceAllTag, clearQuery } =\n useProvideQueryStore(obj);\n\n return {\n queryForm: state.queryForm,\n setQuery,\n addTag,\n reduceTag,\n reduceAllTag,\n clearQuery,\n };\n};\n","import * as components from \"./components/index\";\nexport * from \"./components/index\";\nexport * from \"./hooks/useQuery\";\nexport * from \"./style.scss\";\n\nimport type { App } from \"vue\";\n\nexport default {\n install: (app: App) => {\n for (const component of Object.values(components)) {\n app.use(component);\n }\n },\n};\n"],"names":["vue","elementPlus","index_js","lodash_js","vueVirtualScroller","Fuse","index_mjs","useProvideQueryStore","useQueryStore","createInjectionState","initObj","state","reactive","setQuery","key","value","isEmpty","addTag","tag","index","item","reduceTag","i","reduceAllTag","clearQuery","props","__props","selectRef","ref","modelValue","exposedMethods","searchValue","searchInputRef","sourceList","list","checkedList","checkAll","isIndeterminate","origin","pin","fuse","handleSelectVisible","val","handleCheckedChange","nextTick","_a","handleRemoveTag","handleSelectChange","handleSerch","str","obj","addSelect","handleCheckAllChange","vals","checkedCount","options","endIdx","endItem","sum","min","findIndex","hanleItemClick","o","closePopover","handleMultClick","watch","isArray","cloneDeep","onMounted","e","onUnmounted","__expose","_openBlock","_createBlock","_unref","_mergeProps","$event","$attrs","_createVNode","ElOption","_createElementVNode","_hoisted_1","Search","CirclePlus","_withDirectives","_hoisted_2","_hoisted_3","ElCheckbox","_cache","ElCheckboxGroup","RecycleScroller","_withCtx","_renderSlot","_ctx","_toDisplayString","_vShow","_hoisted_5","_hoisted_6","ElButton","withInstall","comp","app","name","JcSelectQuery","component","emits","__emit","inputValue","lastInputValue","inputField","lastInputField","clearFieldQuery","fieldChange","dateChange","newVal","arr","datePickerRef","_b","_c","_d","_createElementBlock","ElSelect","s","_Fragment","_renderList","JcDatePicker","btnClearable","handleIconClick","inputRef","_e","_f","_g","_h","_i","_j","ElIcon","Close","JcInputSwitch","visible","fieldNameList","computed","fildNameLabel","inputValueMult","singularObj","multipleObj","showInputValueMult","clearSingular","array","result","diffArr","filter","iteratee","includes","repeatArr","msg","ElMessage","clearEvent","setInputValueMult","query","setInputByOutside","isSetFiled","keyMult","ElPopover","Grid","_hoisted_4","JcInputComplex","ElTag","args","Delete","JcTagQuery","moreQueryForm","showPopover","addTagCustom","label","quertEvent","popoverRef","Operation","JcMoreQueryContain","components","reactiveQuery"],"mappings":"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"}
|
package/dist/vite.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|