|
@@ -12,9 +12,9 @@
|
|
|
</el-segmented>
|
|
|
</div>
|
|
|
<el-form-item label="" prop="grouping" v-if="activeName === t('marketingConfig.grouping')">
|
|
|
- <el-select v-model="state.ruleForm.groupingTip" :placeholder="t('marketingConfig.groupingTip')"
|
|
|
- clearable>
|
|
|
- <el-option v-for="item in listSelect" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-select multiple collapse-tags collapse-tags-tooltip :max-collapse-tags="5"
|
|
|
+ v-model="state.ruleForm.selectedIds" :placeholder="t('marketingConfig.groupingTip')" clearable>
|
|
|
+ <el-option v-for="item in listSelect" :key="item.id" :label="item.groupName" :value="item.id" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="" prop="domain" v-else>
|
|
@@ -32,49 +32,35 @@
|
|
|
</el-dialog>
|
|
|
</template>
|
|
|
|
|
|
-<script setup name="systemMenuDialog">
|
|
|
+<script setup lang="ts" name="systemMenuDialog">
|
|
|
import { useI18n } from 'vue-i18n';
|
|
|
-import { info, getAppList, save } from '/@/api/marketing/config';
|
|
|
+import { pageListDomain } from '/@/api/marketing/config';
|
|
|
import { useMessage } from '/@/hooks/message';
|
|
|
|
|
|
// 定义子组件向父组件传值/事件
|
|
|
const emit = defineEmits(['update:open', 'onsuccess']);
|
|
|
const { t } = useI18n();
|
|
|
|
|
|
+interface DomainItem {
|
|
|
+ domains: String[];
|
|
|
+ groupName: String;
|
|
|
+ id: String;
|
|
|
+}
|
|
|
+
|
|
|
// 定义变量内容
|
|
|
const loading = ref(false);
|
|
|
const type = ref('add'); // 'add' or 'edit'
|
|
|
const activeName = ref(t('marketingConfig.grouping'));
|
|
|
const dialogFormRef = ref();
|
|
|
-const listSelect = ref([
|
|
|
- {
|
|
|
- value: 'group1',
|
|
|
- label: '分组1',
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'group2',
|
|
|
- label: '分组2',
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'group3',
|
|
|
- label: '分组3',
|
|
|
- },
|
|
|
-]);
|
|
|
+const listSelect = ref<DomainItem[]>([]);
|
|
|
+const selectedObjects = ref<DomainItem[]>([]);
|
|
|
+
|
|
|
// 定义需要的数据
|
|
|
const state = reactive({
|
|
|
ruleForm: {
|
|
|
- list: [''],
|
|
|
- https: [''], // 域名集合
|
|
|
- ips: [''], // ip集合
|
|
|
- // {
|
|
|
- // id: '1',
|
|
|
- // ip: '美国',
|
|
|
- // appId: '1',
|
|
|
- // appUrl: 'www.baidu.com',
|
|
|
- // appName: 'adsa'
|
|
|
- // },
|
|
|
+ selectedIds: [] as String[], // 选中域名分组
|
|
|
+ domain: [],
|
|
|
},
|
|
|
- appList: [], // 应用下拉框列表
|
|
|
});
|
|
|
|
|
|
const props = defineProps({
|
|
@@ -83,7 +69,8 @@ const props = defineProps({
|
|
|
default: false,
|
|
|
},
|
|
|
});
|
|
|
-// // 表单校验规则
|
|
|
+
|
|
|
+// 表单校验规则
|
|
|
const dataRules = reactive({
|
|
|
domain: [
|
|
|
{ required: true, message: '域名不能为空', trigger: 'blur' }
|
|
@@ -94,11 +81,14 @@ const onCancel = () => {
|
|
|
};
|
|
|
// 保存数据
|
|
|
const onSubmit = async () => {
|
|
|
+ selectedObjects.value = [];
|
|
|
try {
|
|
|
loading.value = true;
|
|
|
- // await save(state.ruleForm);
|
|
|
- useMessage().success(t(state.ruleForm.id ? 'common.editSuccessText' : 'common.addSuccessText'));
|
|
|
- emit('onsuccess');
|
|
|
+ console.log(state.ruleForm.selectedIds);
|
|
|
+ selectedObjects.value = listSelect.value.filter(item=>state.ruleForm.selectedIds.includes(item.id));
|
|
|
+ console.log(selectedObjects.value);
|
|
|
+ useMessage().success(t('common.addSuccessText'));
|
|
|
+ emit('onsuccess', selectedObjects.value);
|
|
|
onCancel();
|
|
|
} catch (err) {
|
|
|
useMessage().error(err.msg);
|
|
@@ -106,6 +96,16 @@ const onSubmit = async () => {
|
|
|
loading.value = false;
|
|
|
}
|
|
|
};
|
|
|
+
|
|
|
+const getDomainList = async ()=>{
|
|
|
+ const data = await pageListDomain();
|
|
|
+ listSelect.value = data.data;
|
|
|
+}
|
|
|
+
|
|
|
+onMounted(()=>{
|
|
|
+ getDomainList();
|
|
|
+})
|
|
|
+
|
|
|
</script>
|
|
|
<style scoped>
|
|
|
.apps-loadmore.el-select-dropdown .el-scrollbar__wrap {
|