|
|
@@ -8,11 +8,16 @@
|
|
|
<el-form-item label="卡类型" prop="cardType">
|
|
|
<ie-select v-model="form.cardType" :options="card_type" class="w-[350px]!" clearable />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="卡号段" prop="cardNoRange" required>
|
|
|
+ <el-form-item label="卡号段" prop="cardNoRange" :required="!cardIds || cardIds.length === 0">
|
|
|
<div class="flex items-center gap-x-3">
|
|
|
- <el-input v-model="form.begin" type="text" maxlength="8" v-number class="w-[160px]!" placeholder="请输入开始卡号" />
|
|
|
+ <el-input v-model="form.begin" type="text" maxlength="8" v-number class="w-[160px]!"
|
|
|
+ placeholder="请输入开始卡号" :disabled="cardIds && cardIds.length > 0" />
|
|
|
<span class="text-gray-500">-</span>
|
|
|
- <el-input v-model="form.end" type="text" maxlength="8" v-number class="w-[160px]!" placeholder="请输入结束卡号" />
|
|
|
+ <el-input v-model="form.end" type="text" maxlength="8" v-number class="w-[160px]!"
|
|
|
+ placeholder="请输入结束卡号" :disabled="cardIds && cardIds.length > 0" />
|
|
|
+ </div>
|
|
|
+ <div v-if="cardIds && cardIds.length > 0" class="text-sm text-gray-500 mt-1">
|
|
|
+ 已选择 {{ cardIds.length }} 张卡片,将使用选中的卡片进行分配
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="代理商" prop="agentId" required>
|
|
|
@@ -65,6 +70,7 @@ const {
|
|
|
|
|
|
const modalRef = ref(null);
|
|
|
const formRef = ref(null);
|
|
|
+const cardIds = ref(null) // 选中的卡片ID列表
|
|
|
const defaultForm = {
|
|
|
deptId: null,
|
|
|
agentId: null,
|
|
|
@@ -77,8 +83,14 @@ const defaultForm = {
|
|
|
const form = ref({ ...defaultForm })
|
|
|
// 自定义验证
|
|
|
const validateCardNoRange = (rule, value, callback) => {
|
|
|
+ // 如果有选中的卡片ID,则不需要验证卡号段
|
|
|
+ if (cardIds.value && cardIds.value.length > 0) {
|
|
|
+ callback()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 如果没有选中卡片,则需要验证卡号段
|
|
|
if (!form.value.begin || !form.value.end) {
|
|
|
- callback(new Error('请输入卡号段'))
|
|
|
+ callback(new Error('请输入卡号段或选择卡片'))
|
|
|
} else if (Number(form.value.begin) > Number(form.value.end)) {
|
|
|
callback(new Error('开始卡号不能大于结束卡号'))
|
|
|
} else {
|
|
|
@@ -114,12 +126,15 @@ const rules = ref({
|
|
|
|
|
|
const handleBeforeClose = () => {
|
|
|
form.value = { ...defaultForm };
|
|
|
+ cardIds.value = null;
|
|
|
reset();
|
|
|
}
|
|
|
|
|
|
-const open = () => {
|
|
|
+const open = (selectedCardIds = null) => {
|
|
|
init();
|
|
|
form.value = { ...defaultForm };
|
|
|
+ // 如果传入了选中的卡片ID列表,则使用它
|
|
|
+ cardIds.value = selectedCardIds && selectedCardIds.length > 0 ? selectedCardIds : null;
|
|
|
modalRef.value.open()
|
|
|
}
|
|
|
const close = () => {
|
|
|
@@ -129,12 +144,31 @@ const emit = defineEmits(['refresh'])
|
|
|
const handleConfirm = () => {
|
|
|
formRef.value.validate(async (valid) => {
|
|
|
if (valid) {
|
|
|
- let { cardType, agentId, begin, end, location, assignExamType, schoolId, days } = form.value;
|
|
|
+ let { cardType, agentId, location, assignExamType, schoolId, days } = form.value;
|
|
|
modalRef.value.showLoading()
|
|
|
if (cardType !== '9') {
|
|
|
days = undefined;
|
|
|
}
|
|
|
- assignCard(cardType, agentId, begin, end, location, assignExamType, schoolId, days).then(res => {
|
|
|
+
|
|
|
+ // 构建参数对象
|
|
|
+ const params = {
|
|
|
+ cardType,
|
|
|
+ agentId,
|
|
|
+ location,
|
|
|
+ assignExamType,
|
|
|
+ schoolId,
|
|
|
+ days
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果有选中的卡片ID,使用cardIds;否则使用begin和end
|
|
|
+ if (cardIds.value && cardIds.value.length > 0) {
|
|
|
+ params.cardIds = Array.isArray(cardIds.value) ? cardIds.value.join(",") : cardIds.value
|
|
|
+ } else {
|
|
|
+ params.begin = form.value.begin
|
|
|
+ params.end = form.value.end
|
|
|
+ }
|
|
|
+
|
|
|
+ assignCard(params).then(res => {
|
|
|
proxy.$modal.msgSuccess('分配卡成功')
|
|
|
close();
|
|
|
setTimeout(() => {
|