| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- <template>
- <component
- is="a-modal"
- :width="tool.getDevice() === 'mobile' ? '100%' : '600px'"
- v-model:visible="visible"
- :title="title"
- :mask-closable="false"
- :ok-loading="loading"
- @cancel="close"
- @before-ok="submit"
- >
- <!-- 表单信息 start -->
- <a-form
- ref="formRef"
- :model="formData"
- :rules="rules"
- :auto-label-width="true"
- >
- <a-form-item label="媒体ID" field="media_id">
- <a-select
- v-model="formData.media_id"
- :options="mediaOptions"
- placeholder="请选择媒体ID"
- allow-clear
- />
- </a-form-item>
- <a-form-item label="渠道ID" field="agent_id">
- <a-select
- v-model="formData.agent_id"
- :options="agentOptions"
- placeholder="请选择渠道ID"
- allow-clear
- />
- </a-form-item>
- <a-form-item label="负责人ID" field="auth_id">
- <a-select
- v-model="formData.auth_id"
- :options="authOptions"
- placeholder="请选择负责人ID"
- allow-clear
- />
- </a-form-item>
- <a-form-item label="广告位名称" field="name">
- <a-input v-model="formData.name" placeholder="请输入广告位名称" />
- </a-form-item>
- </a-form>
- <!-- 表单信息 end -->
- </component>
- </template>
- <script setup>
- import { ref, reactive, computed } from "vue";
- import tool from "@/utils/tool";
- import { Message, Modal } from "@arco-design/web-vue";
- import api from "../../api/advert/agentSite";
- import advertCommonApi from "../../api/advert/common";
- import { useUserStore } from "@/store";
- const emit = defineEmits(["success"]);
- // 引用定义
- const visible = ref(false);
- const loading = ref(false);
- const formRef = ref();
- const mode = ref("");
- const userStore = useUserStore();
- const mediaOptions = ref([]);
- const authOptions = ref([]);
- const agentOptions = ref([]);
- let title = computed(() => {
- return "广告位" + (mode.value == "add" ? "-新增" : "-编辑");
- });
- // 表单初始值
- const initialFormData = {
- id: null,
- media_id: null,
- agent_id: null,
- auth_id: null,
- name: "",
- };
- // 表单信息
- const formData = reactive({ ...initialFormData });
- // 验证规则
- const rules = {
- media_id: [{ required: true, message: "媒体ID必需填写" }],
- agent_id: [{ required: true, message: "渠道ID必需填写" }],
- auth_id: [{ required: true, message: "负责人ID必需填写" }],
- name: [{ required: true, message: "广告位名称必需填写" }],
- };
- // 获取媒体列表Options
- const getMediaOptions = async () => {
- const res = await advertCommonApi.getMediaOptionsApi();
- if (res.code == 200) {
- mediaOptions.value = res.data;
- }
- };
- // 获取渠道列表Options
- const getAgentOptions = async () => {
- const res = await advertCommonApi.getAgentOptionsApi();
- if (res.code == 200) {
- agentOptions.value = res.data;
- }
- };
- // 获取后台归属人列表
- const getAuthList = async () => {
- const res = await advertCommonApi.getAuthOptionsApi();
- if (res.code == 200) {
- authOptions.value = res.data;
- }
- };
- // 打开弹框
- const open = async (type = "add") => {
- mode.value = type;
- // 重置表单数据
- Object.assign(formData, initialFormData);
- formRef.value.clearValidate();
- visible.value = true;
- if (mode.value === "add") {
- formData.auth_id = userStore.user.id;
- }
- await initPage();
- };
- // 初始化页面数据
- const initPage = async () => {
- await getMediaOptions();
- await getAgentOptions();
- await getAuthList();
- };
- // 设置数据
- const setFormData = async (data) => {
- for (const key in formData) {
- if (data[key] != null && data[key] != undefined) {
- formData[key] = data[key];
- }
- }
- };
- // 数据保存
- const submit = async (done) => {
- const validate = await formRef.value?.validate();
- if (!validate) {
- loading.value = true;
- let data = { ...formData };
- let result = {};
- if (mode.value === "add") {
- // 添加数据
- data.id = undefined;
- result = await api.save(data);
- } else {
- // 修改数据
- result = await api.update(data.id, data);
- }
- if (result.code === 200) {
- Message.success("操作成功");
- emit("success");
- done(true);
- }
- // 防止连续点击提交
- setTimeout(() => {
- loading.value = false;
- }, 500);
- }
- done(false);
- };
- // 关闭弹窗
- const close = () => (visible.value = false);
- defineExpose({ open, setFormData });
- </script>
|