select.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <template>
  2. <LjSelectorSelect
  3. ref="selectStationRef"
  4. v-model:value="props.value"
  5. value-key="springid"
  6. :loading="loading"
  7. v-bind="$attrs"
  8. :remote-method="remoteMethod"
  9. popper-class="lj-select-spring__popper"
  10. @select="handleSelect"
  11. @open-modal="openModal"
  12. >
  13. <template #label v-if="$slots?.label">
  14. <slot name="label"></slot>
  15. </template>
  16. <template #header>
  17. <div class="table-header lj-select__table">
  18. <div class="table-tr">
  19. <div class="table-td pr-4" style="width: 270px">{{ $t("table.u_mtrl_price.name") }}</div>
  20. </div>
  21. </div>
  22. </template>
  23. <el-option
  24. v-for="item in options"
  25. :key="item.springid"
  26. :label="item.springname"
  27. :value="item"
  28. class="lj-select__table pl-10 pr-10"
  29. :class="{
  30. 'w-full': item.label
  31. }"
  32. >
  33. <template v-if="item.label">
  34. <div class="table-tr w-full text-center">{{ item.label }}</div>
  35. </template>
  36. <template v-else>
  37. <div class="table-tr">
  38. <div style="width: 270px" class="table-td pr-4 text-ellipsis-one" :title="item.springname">{{ item.springname }}</div>
  39. </div>
  40. </template>
  41. </el-option>
  42. <!-- <template #footer>
  43. <el-radio-group v-model="isuse" size="small" @change="remoteMethod">
  44. <el-radio-button label="全部" value="全部" />
  45. <el-radio-button label="有效" value="有效" />
  46. <el-radio-button label="无效" value="无效" />
  47. </el-radio-group>
  48. </template> -->
  49. </LjSelectorSelect>
  50. </template>
  51. <script lang="ts" setup name="SelectorSpringSelect">
  52. import { ref, computed } from "vue";
  53. import { CommonDynamicSelect } from "@/api/modules/common";
  54. import { DwnameEnum } from "@/enums/dwnameEnum";
  55. import LjSelectorSelect from "@/components/LjSelector/select.vue";
  56. import { useUserStore } from "@/stores/modules/user";
  57. interface ProTableProps {
  58. value: any;
  59. argHeight?: any;
  60. }
  61. // 默认值
  62. const props = withDefaults(defineProps<ProTableProps>(), {});
  63. const { userInfo } = useUserStore();
  64. const emit = defineEmits(["select", "update:value", "openModal"]);
  65. const loading = ref(false);
  66. const options = ref<any[]>([]);
  67. // const isuse = ref("有效");
  68. // const pricePower = computed(() => {
  69. // return userInfo.rsltFunids.includes(96);
  70. // });
  71. const remoteMethod = async (queryString: string) => {
  72. console.log("remoteMethod props :>> ", props, queryString);
  73. loading.value = true;
  74. let newParams: any = {};
  75. newParams.pageindex = 1;
  76. newParams.pagesize = 5;
  77. newParams.queryParams = {
  78. arg_search: queryString
  79. };
  80. props?.argHeight && (newParams.queryParams.arg_height = props?.argHeight);
  81. newParams.dsname = "web_spring_define_choose";
  82. let result = await CommonDynamicSelect(newParams, DwnameEnum.bednetSpringChoose);
  83. console.log("result.datatable :>> ", result.datatable);
  84. if (result.datatable.length) {
  85. // options.value = result.datatable.map(item => {
  86. // item.label = item.cuscode;
  87. // return item;
  88. // });
  89. options.value = result.datatable;
  90. } else {
  91. options.value = [
  92. {
  93. label: "暂无数据",
  94. disabled: true
  95. }
  96. ];
  97. }
  98. loading.value = false;
  99. };
  100. const handleSelect = (item: any) => {
  101. console.log("handleSelect item :>> ", item);
  102. emit("select", item);
  103. };
  104. const openModal = (e: any) => {
  105. emit("openModal", e);
  106. };
  107. </script>
  108. <style lang="scss">
  109. .lj-select-spring__popper {
  110. max-width: 270px !important;
  111. }
  112. </style>