UNPKG

@fmdevui/fm-dev

Version:

Page level components developed based on Element Plus.

137 lines (132 loc) 3.5 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var index = require('../../../api/base/index.js'); const _hoisted_1 = { style: { "font-size": "14px", "line-height": "30px" } }; var _sfc_main = /* @__PURE__ */ vue.defineComponent({ ...{ name: "FmAutocomplete" }, __name: "index", props: /* @__PURE__ */ vue.mergeModels({ placeholder: { type: String, default: "\u8BF7\u8F93\u5165\u5FEB\u901F\u641C\u7D22\u9009\u62E9" }, /** * api service name */ apiService: { type: String, default: "planOrder" }, /** * api service 下的方法 */ apiAction: { type: String, default: "autoQuerySearch" }, top: { type: Number, default: 15 }, /** * 值的属性值 */ fId: { type: String, default: "id" }, /** * 值的属性标签 */ fName: { type: String, default: "name" }, /** * 查询业务表ID */ qId: { type: Number, default: 0 } }, { "name": { required: true, default: "" }, "nameModifiers": {}, "id": { required: true, default: 0 }, "idModifiers": {} }), emits: /* @__PURE__ */ vue.mergeModels(["select", "reset"], ["update:name", "update:id"]), setup(__props, { emit: __emit }) { const autoName = vue.useModel(__props, "name"); const autoId = vue.useModel(__props, "id"); const props = __props; const emit = __emit; const querySearchAsync = async (queryString, cb) => { resetValue(); const res = await index.useBaseApi(props.apiService).post({ top: props.top, keywork: queryString, id: props.qId }, props.apiAction); const data = res.data.result ?? []; if (data.length === 0) { return cb([]); } const results = data.map((item) => ({ ...item, displayText: `${item[props.fName]}` // 自定义展示格式 //fullData: item // 保留原始对象 })); cb(results); }; const handleSelect = (item) => { autoName.value = item[props.fName]; autoId.value = item[props.fId]; emit("select", item); }; const resetValue = () => { autoId.value = 0; emit("reset"); }; return (_ctx, _cache) => { const _component_el_autocomplete = vue.resolveComponent("el-autocomplete"); return vue.openBlock(), vue.createBlock(_component_el_autocomplete, { modelValue: autoName.value, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => autoName.value = $event), debounce: 500, "fetch-suggestions": querySearchAsync, placeholder: props.placeholder, "trigger-on-focus": false, onSelect: handleSelect, style: { "margin-top": "-2px" } }, vue.createSlots({ default: vue.withCtx(({ item }) => [ vue.createElementVNode( "div", _hoisted_1, vue.toDisplayString(item[__props.fName]), 1 /* TEXT */ ) ]), _: 2 /* DYNAMIC */ }, [ _ctx.$slots.append ? { name: "append", fn: vue.withCtx(() => [ vue.renderSlot(_ctx.$slots, "append") ]), key: "0" } : void 0 ]), 1032, ["modelValue", "placeholder"]); }; } }); exports.default = _sfc_main;