소스 검색

feat: 选中人员 新增 选中个数限制

lanceJiang 1 년 전
부모
커밋
a7c8f32a70
1개의 변경된 파일17개의 추가작업 그리고 4개의 파일을 삭제
  1. 17 4
      src/components/scWorkflow/select.vue

+ 17 - 4
src/components/scWorkflow/select.vue

@@ -1,7 +1,7 @@
 <template>
 	<el-dialog
-    class="le-dialog"
 		v-model="dialogVisible"
+		class="le-dialog"
 		:title="titleMap[type - 1]"
 		:width="type == 1 ? 680 : 460"
 		destroy-on-close
@@ -144,7 +144,9 @@ import user from '@/api/system/user'
 import role from '@/api/system/role'
 export default {
 	props: {
-		modelValue: { type: Boolean, default: false }
+		modelValue: { type: Boolean, default: false },
+		minSelected: { type: Number, default: 0 },
+		maxSelected: { type: Number, default: 999999 }
 	},
 	data() {
 		return {
@@ -190,7 +192,7 @@ export default {
 		//打开赋值
 		open(type, data) {
 			this.type = type
-			this.value = data || []
+			this.value = JSON.parse(JSON.stringify(data || []))
 			this.selected = JSON.parse(JSON.stringify(data || []))
 			this.dialogVisible = true
 
@@ -289,7 +291,18 @@ export default {
 			this.selected.map(item => {
 				this.value.push(item)
 			})
-			this.$emit('contentEv', this.value)
+			// 最小限制
+			const minSelected = this.minSelected
+			// 最大限制
+			const maxSelected = this.maxSelected
+			const selected_l = this.selected.length
+			if (selected_l < minSelected) {
+				return this.$message.warning(`选中的数据个数不能小于${minSelected}条`)
+			}
+			if (selected_l > maxSelected) {
+				return this.$message.warning(`选中的数据个数不能大于${maxSelected}条`)
+			}
+			this.$emit('update:selected', this.value)
 			this.dialogVisible = false
 		}
 	}