searchquery.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <template>
  2. <div>
  3. <div style="display:flex">
  4. <!--<slot v-if="slot" name="slot"></slot>-->
  5. <div style="width: 100%;">
  6. <el-select style="width: 100%" v-model="selectValue" size="small" placeholder="请选择"
  7. :filterable="filterable" :clearable="clearable"
  8. :remote="remote" :remote-method="remoteMethod"
  9. :multiple="multiple" :collapse-tags="collapseTags"
  10. @change="corpChange" >
  11. <el-option
  12. v-for="item in datalist"
  13. :key="item[forParameter.key]"
  14. :label="item[forParameter.label]"
  15. :value="item[forParameter.value]"
  16. :disabled="item[forParameter.disabled] ? item[forParameter.disabled] == disabledStatus : false"
  17. >
  18. </el-option>
  19. </el-select>
  20. </div>
  21. <el-button icon="el-icon-search" size="mini" @click="corpVisible = true"></el-button>
  22. <el-tooltip effect="dark" content="获取最新资料" placement="top-start">
  23. <el-button icon="el-icon-refresh" size="mini" @click="refreshData"
  24. style="margin-left:0px;"></el-button>
  25. </el-tooltip>
  26. </div>
  27. <el-dialog :title="title" :visible.sync="corpVisible" width="80%" top="5vh" append-to-body @closed="closed"
  28. class="el-dialogDeep" :close-on-click-modal="false" v-dialog-drag>
  29. <div>
  30. <el-row>
  31. <!--<el-col :span="4">-->
  32. <!-- <el-scrollbar>-->
  33. <!-- <basic-container>-->
  34. <!-- <avue-tree :option="treeOption" :data="treeData" @node-click="nodeClick" :style="treeStyle" />-->
  35. <!-- </basic-container>-->
  36. <!-- </el-scrollbar>-->
  37. <!--</el-col>-->
  38. <el-col :span="24">
  39. <slot></slot>
  40. </el-col>
  41. </el-row>
  42. </div>
  43. <span slot="footer" class="dialog-footer">
  44. <el-button @click="corpVisible = false">取 消</el-button>
  45. <el-button type="primary" @click="confirm">确 定</el-button>
  46. </span>
  47. </el-dialog>
  48. </div>
  49. </template>
  50. <script>
  51. export default {
  52. data(){
  53. return {
  54. selectValue:null,
  55. // 弹窗关闭
  56. corpVisible:false,
  57. }
  58. },
  59. props:{
  60. // 选择框的数据
  61. datalist:{
  62. type:Array,
  63. default:[]
  64. },
  65. // 选择框数据选择的参数
  66. forParameter:{
  67. type:Object,
  68. default:{
  69. key:'value',
  70. label:'label',
  71. value:'value',
  72. disabled: false,
  73. }
  74. },
  75. // 是否多选
  76. multiple:{
  77. type:Boolean,
  78. default:false
  79. },
  80. // 多选时是否将选中值按文字的形式展示
  81. collapseTags:{
  82. type:Boolean,
  83. default:false
  84. },
  85. // 是否可以搜索
  86. filterable:{
  87. type:Boolean,
  88. default:false
  89. },
  90. // 是否为远程搜索
  91. remote:{
  92. type:Boolean,
  93. default:false
  94. },
  95. // 是否可以清空选择项
  96. clearable:{
  97. type:Boolean,
  98. default:false
  99. },
  100. // 弹窗的标题
  101. title:{
  102. type:String,
  103. default:'选择数据'
  104. },
  105. // 是否禁用
  106. disabledStatus:{
  107. type:Number,
  108. default: 1
  109. },
  110. },
  111. methods:{
  112. // 下拉change
  113. corpChange(value) {
  114. this.$emit('corpChange',value)
  115. },
  116. /* 远程模糊查询操作用户 */
  117. remoteMethod(name) {
  118. console.log(name,103)
  119. if (name == null || name === "") {
  120. return false;
  121. }
  122. this.$emit('remoteMethod',name)
  123. },
  124. // 获取最新数据
  125. refreshData(){
  126. this.$emit('remoteMethod')
  127. },
  128. // 弹窗确认事件
  129. confirm(){
  130. this.corpVisible = false
  131. // this.$emit('')
  132. },
  133. }
  134. }
  135. </script>
  136. <style scoped>
  137. </style>