selectOptionWebsit.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import { getWebsit } from '@/api/customerManagement.js'
  2. window.AppVueThis = null
  3. export function setAppVueThis(e) {
  4. AppVueThis = e
  5. }
  6. export default function (pam = {}, option = [], placeholder = '请选择操作网点', errMsg = '请选择操作网点') {
  7. return new Promise((r, j) => {
  8. if (!AppVueThis) {
  9. j({})
  10. return
  11. }
  12. const h = AppVueThis.$createElement
  13. var done_ = null
  14. function tanchuang() {
  15. AppVueThis.$msgbox({
  16. title: placeholder,
  17. message: h(
  18. 'el-select',
  19. {
  20. style: {
  21. width: '100%'
  22. },
  23. props: {
  24. value: '',
  25. filterable: true,
  26. clearable: true,
  27. size: 'mini'
  28. },
  29. ref: 'selectOptionWebsit',
  30. on: {
  31. change: e => {
  32. console.log(AppVueThis)
  33. AppVueThis.$refs.selectOptionWebsit.value = e
  34. }
  35. }
  36. },
  37. [
  38. option.map(it => {
  39. return h('el-option', {
  40. props: {
  41. key: it.websitId,
  42. label: it.name,
  43. value: it.websitId
  44. }
  45. })
  46. })
  47. ]
  48. ),
  49. beforeClose: function (action, instance, done) {
  50. if (action === 'confirm') {
  51. if (AppVueThis?.$refs?.selectOptionWebsit?.value) {
  52. done()
  53. } else {
  54. done_ = done
  55. AppVueThis.$message({
  56. message: errMsg,
  57. type: 'warning'
  58. })
  59. }
  60. } else {
  61. done()
  62. }
  63. },
  64. showCancelButton: true,
  65. closeOnClickModal: false,
  66. confirmButtonText: '确定',
  67. cancelButtonText: '取消'
  68. })
  69. .then(_ => {
  70. if (AppVueThis?.$refs?.selectOptionWebsit?.value) {
  71. r(option?.find(item => item?.websitId === AppVueThis?.$refs?.selectOptionWebsit?.value))
  72. done_?.()
  73. } else {
  74. j()
  75. }
  76. })
  77. .catch(_ => {
  78. j()
  79. })
  80. }
  81. if (option && option.length) {
  82. if (option.length == 1) {
  83. r(option?.[0])
  84. } else if (option.length > 1) {
  85. tanchuang()
  86. }
  87. } else {
  88. getWebsit({ status: true, ...pam }).then(res => {
  89. option = res.data
  90. if (option.length == 1) {
  91. r(option?.[0])
  92. } else if (option.length > 1) {
  93. tanchuang()
  94. }
  95. })
  96. }
  97. })
  98. }