shop-market-dialog.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <template>
  2. <el-dialog
  3. title="添加供应商"
  4. :visible.sync="visible"
  5. width="1200px"
  6. :close-on-click-modal="false"
  7. :show-close="false"
  8. >
  9. <div class="filter-container">
  10. <div class="filter-control">
  11. <span>供应商名称:</span>
  12. <el-input
  13. v-model="listQuery.shopName"
  14. placeholder="供应商名称"
  15. clearable
  16. style="width: 160px"
  17. @keyup.enter.native="getList"
  18. @clear="getList"
  19. />
  20. </div>
  21. <div class="filter-control">
  22. <el-button type="primary" @click="getList"> 查询 </el-button>
  23. </div>
  24. </div>
  25. <el-table
  26. ref="table"
  27. v-loading="isLoading"
  28. :data="list"
  29. height="400px"
  30. border
  31. @selection-change="handleSelectionChange"
  32. >
  33. <el-table-column type="selection" width="55" :selectable="selectable" />
  34. <el-table-column label="供应商名称" prop="name" align="center" />
  35. <el-table-column label="联系人" prop="linkMan" align="center" />
  36. <el-table-column label="手机号" prop="contractMobile" align="center">
  37. <template slot-scope="{ row }">
  38. {{ row.contractMobile ? row.contractMobile : '---' }}
  39. </template>
  40. </el-table-column>
  41. <el-table-column label="供应商状态" prop="status" align="center">
  42. <template slot-scope="{ row }">
  43. <el-tag v-if="row.status === 90" type="success" size="small">已上线</el-tag>
  44. </template>
  45. </el-table-column>
  46. </el-table>
  47. <!-- 页码 -->
  48. <pagination
  49. :total="total"
  50. :page-sizes="[100, 200]"
  51. :page-size="100"
  52. :page.sync="listQuery.pageNum"
  53. :limit.sync="listQuery.pageSize"
  54. @pagination="getShopList"
  55. />
  56. <div slot="footer">
  57. <el-button @click="handleCanle"> 取 消 </el-button>
  58. <el-button type="primary" :disabled="disabled" @click="handleConfirm"> 确 定 </el-button>
  59. </div>
  60. </el-dialog>
  61. </template>
  62. <script>
  63. import { getMarketShopList } from '@/api/user/customer/customer'
  64. export default {
  65. name: 'ShopDialog',
  66. filters: {
  67. NumFormat(value) {
  68. // 处理金额
  69. return Number(value).toFixed(2)
  70. }
  71. },
  72. data() {
  73. return {
  74. visible: true,
  75. listQuery: {
  76. pageNum: 1, // 页码
  77. pageSize: 100, // 页面数据数
  78. shopName: '' // 供应商公司名称
  79. },
  80. list: [],
  81. total: 0,
  82. shopsRadio: null,
  83. isLoading: true
  84. }
  85. },
  86. computed: {
  87. disabled() {
  88. return this.shopsRadio === null
  89. }
  90. },
  91. created() {
  92. this.getList()
  93. },
  94. methods: {
  95. // 获取所有供应商列表
  96. async getList() {
  97. this.list = []
  98. this.listQuery.pageNum = 1
  99. this.getShopList()
  100. },
  101. // 获取所有供应商列表
  102. async getShopList() {
  103. try {
  104. const res = await getMarketShopList(this.listQuery)
  105. this.list = res.data.results
  106. this.total = res.data.totalRecord
  107. this.isLoading = false
  108. } catch (error) {
  109. console.log(error)
  110. }
  111. },
  112. // 选择供应商
  113. handleSelectionChange(row) {
  114. this.shopsRadio = row
  115. console.log('row', row)
  116. },
  117. // 确认选择供应商
  118. handleConfirm() {
  119. this.$emit('confirm', this.shopsRadio)
  120. },
  121. handleCanle() {
  122. // 取消弹窗
  123. this.$emit('cancel')
  124. },
  125. // 已选择的禁用勾选框
  126. selectable(row) {
  127. if (row.flag) {
  128. return true
  129. } else {
  130. return false
  131. }
  132. },
  133. checkedInput(event, type) {
  134. let pattern = ''
  135. switch (type) {
  136. case 1:
  137. pattern = /[^\d]/g
  138. break
  139. case 2:
  140. pattern = /[^u4E00-u9FA5|d|a-zA-Z|rns,.?!,。?!…—&$=()-+/*{}[]]|s/g
  141. break
  142. }
  143. return event.replace(pattern, '')
  144. }
  145. }
  146. }
  147. </script>
  148. <style lang="scss" scoped></style>