insterPz.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <template>
  2. <LjDialogNew v-bind="$attrs" class="is-selector" :style="{ padding: 0 }" width="600px" :closed="closed">
  3. <template #header>
  4. <div class="flx-1">
  5. <span class="text-h5-b">产品配置新增</span>
  6. </div>
  7. </template>
  8. <div class="flx-1 h-full">
  9. <LjHeaderMenu :action="defaultAction" />
  10. <el-form class="mr-16" :model="formdata" label-width="140px">
  11. <el-form-item label="项目">
  12. <el-autocomplete
  13. v-model="formdata.itemname"
  14. :fetch-suggestions="(q, c) => querySearch(q, c, itemnameArr)"
  15. clearable
  16. class="inline-input w-50"
  17. placeholder="请输入项目名称"
  18. />
  19. </el-form-item>
  20. <el-form-item label="核价_配置名称">
  21. <el-autocomplete
  22. v-model="formdata.bj_pzname"
  23. :fetch-suggestions="(q, c) => querySearch(q, c, bjPznameArr)"
  24. clearable
  25. class="inline-input w-50"
  26. placeholder="请输入核价配置名称"
  27. />
  28. </el-form-item>
  29. </el-form>
  30. </div>
  31. </LjDialogNew>
  32. </template>
  33. <script lang="ts" setup name="mattressInterfaceDetail_InsterPzDialog">
  34. import { ref, defineEmits, computed } from "vue";
  35. import LjDialogNew from "@/components/LjDialog/index-new.vue";
  36. import { useAuthButtons } from "@/hooks/useAuthButtons";
  37. import LjHeaderMenu from "@/components/LjHeaderMenu/index.vue";
  38. const emits = defineEmits(["cancel", "submit", "closed", "update:modelValue"]);
  39. const { buttonDefault } = useAuthButtons();
  40. interface WidgetProps {
  41. formData: any;
  42. itemnameEnum?: any[];
  43. bjPznameEnum?: any[];
  44. }
  45. const props = withDefaults(defineProps<WidgetProps>(), {
  46. formData: () => ({})
  47. });
  48. const formdata = ref({
  49. ...props.formData
  50. });
  51. const closed = () => {
  52. emits("closed");
  53. };
  54. const defaultAction = [
  55. buttonDefault({
  56. label: "确定",
  57. clickFunc: () => {
  58. emits("submit", formdata.value);
  59. }
  60. }),
  61. buttonDefault({
  62. label: "取消",
  63. clickFunc: () => {
  64. emits("cancel");
  65. }
  66. })
  67. ];
  68. const itemnameArr = computed(() => props.itemnameEnum);
  69. const bjPznameArr = computed(() => props.bjPznameEnum);
  70. const querySearch = (queryString: string, cb: any, arr: any) => {
  71. const results = queryString ? arr.filter(createFilter(queryString)) : arr;
  72. cb(results);
  73. };
  74. const createFilter = (queryString: string) => {
  75. return itm => {
  76. return itm.value.indexOf(queryString.trim()) === 0;
  77. };
  78. };
  79. </script>