12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- var i = 0
- export default function (option, placeholder = '请选择', errMsg = '请先选择数据') {
- return new Promise((r, j) => {
- const h = this.$createElement
- const refName = `selectView${++i}`
- var _this = this
- var done_ = null
- this.$msgbox({
- title: placeholder,
- message: h(
- 'el-select',
- {
- style: {
- width: '100%'
- },
- props: {
- value: '',
- filterable: true,
- clearable: true,
- size: 'mini'
- },
- ref: refName,
- on: {
- change: e => {
- _this.$refs[refName].value = e
- }
- }
- },
- [
- option.map(it => {
- return h('el-option', {
- props: {
- key: it.value,
- label: it.label,
- value: it.value
- }
- })
- })
- ]
- ),
- beforeClose: function (action, instance, done) {
- if (action === 'confirm') {
- if (_this?.$refs?.[refName]?.value) {
- done()
- } else {
- done_ = done
- this.$message({
- message: errMsg,
- type: 'warning'
- })
- }
- } else {
- done()
- }
- },
- showCancelButton: true,
- closeOnClickModal: false,
- confirmButtonText: '确定',
- cancelButtonText: '取消'
- })
- .then(_ => {
- if (_this?.$refs?.[refName]?.value) {
- r(_this?.$refs?.[refName]?.value)
- done_?.()
- } else {
- j()
- }
- })
- .catch(_ => {
- j()
- })
- })
- }
|