<template>
  <Dialog v-model="modelVisible" :title="data ? '修改' : '新增'" width="550px">
    <div class="AddNEditDialog">
      <Form
        v-model="formData"
        class="form"
        ref="FormConfigRef"
        :formList="formList"
        column="1"
        labelWidth="90px"
      />
    </div>

    <template #footer>
      <Button
        style="background-color: rgba(0, 179, 204, 0.3)"
        @click.native="(modelVisible = false), (submitting = false)"
      >
        取消
      </Button>
      <Button @click.native="handleSubmit" :loading="submitting"> 确定 </Button>
    </template>
  </Dialog>
</template>

<script>
import Dialog from "@screen/components/Dialog/index.vue";
import Button from "@screen/components/Buttons/Button.vue";
import Form from "@screen/components/FormConfig";
import {
  addChannels,
  editChannels,
} from "@/api/service/PublishingChannelManagement.js";

export default {
  name: "AddNEditDialog",
  components: {
    Dialog,
    Button,
    Form,
  },
  model: {
    prop: "visible",
    event: "update:value",
  },
  props: {
    visible: Boolean,
    data: Object,
  },
  data() {
    return {
      submitting: false,
      formData: {},
      formList: [
        {
          label: "事件类型:",
          key: "dataCategory",
          type: "select",

          required: true,
          options: {
            disabled: false,
            options: [
              {
                key: 1,
                label: "交通事故",
              },
              {
                key: 2,
                label: "车辆故障",
              },
              {
                key: 3,
                label: "交通管制",
              },
              {
                key: 4,
                label: "交通拥堵",
              },
              {
                key: 5,
                label: "非法上路",
              },
              {
                key: 6,
                label: "路障清除",
              },
              {
                key: 7,
                label: "施工建设",
              },
              {
                key: 8,
                label: "服务区异常",
              },
              {
                key: 9,
                label: "设施设备隐患",
              },
              {
                key: 10,
                label: "异常天气",
              },
              {
                key: 11,
                label: "其他事件",
              },
            ],
          },
        },
        {
          label: "发布渠道:",
          key: "publishChannels",
          type: "CheckboxGroup",
          isAlon: true,
          required: true,
          default: [],
          options: {
            options: [
              { key: "1", label: "手机短信", width: "87px" },
              { key: "2", label: "微信公众号", width: "87px" },
              { key: "3", label: "微博", width: "87px" },
              { key: "4", label: "情报板", width: "87px" },
              { key: "5", label: "服务网站", width: "87px" },
              { key: "6", label: "微信小程序", width: "87px" },
            ],
          },
        },
        {
          label: "信息级别:",
          key: "infoLevel",
          type: "RadioGroup",
          required: true,
          default: 1,
          options: {
            activeColor: "linear-gradient(180deg, #37E7FF 0%, #009BCC 100%)",
            options: [
              {
                key: 1,
                label: "影响通行",
              },
              {
                key: 2,
                label: "不影响通行",
              },
            ],
          },
        },
        // {
        //   label: "审核方式:",
        //   key: "auditMethod",
        //   type: "RadioGroup",
        //   default: 1,
        //   options: {
        //     activeColor: "linear-gradient(180deg, #37E7FF 0%, #009BCC 100%)",
        //     options: [
        //       {
        //         key: 1,
        //         label: "单人审核",
        //       },
        //       {
        //         key: 2,
        //         label: "双人审核",
        //       },
        //     ],
        //   },
        // },
        // {
        //   label: "启用状态:",
        //   key: "enabled",
        //   type: "RadioGroup",
        //   default: "1",
        //   options: {
        //     activeColor: "linear-gradient(180deg, #37E7FF 0%, #009BCC 100%)",
        //     options: [
        //       {
        //         key: "1",
        //         label: "启用",
        //       },
        //       {
        //         key: "2",
        //         label: "停用",
        //       },
        //     ],
        //   },
        // },
        // {
        //   label: "启用日期:",
        //   key: "enableDate",
        //   type: "DatePicker",
        //   required: true,
        // },
      ],
    };
  },
  computed: {
    modelVisible: {
      get() {
        return this.visible;
      },
      set(val) {
        this.$emit("update:value", val);
      },
    },
  },
  watch: {
    modelVisible: {
      handler() {
        this.formData = {
          ...this.data,
        };
        if (this.data.id) {
          this.formList[0].options.disabled = true;
        }

        this.getOptions();
      },
      immediate: true,
      deep: true,
    },
  },
  methods: {
    handleSubmit() {
      if (this.formData && this.formData.publishChannels) {
        this.formData.publishChannels =
          this.formData.publishChannels.toString();
      }
      this.$refs.FormConfigRef.validate().then((data) => {
        this.submitting = true;
        let params = {
          ...this.formData,
          id: this.data.id,
        };
        if (this.data.id) {
          editChannels(params).then((res) => {
            this.modelVisible = false;
            this.submitting = false;
            this.$parent.handleSearch();
          });
        } else {
          addChannels(this.formData).then((res) => {
            this.modelVisible = false;
            this.submitting = false;
            this.$parent.handleSearch();
          });
        }
      });
    },
  },
};
</script>

<style lang="scss" scoped>
.AddNEditDialog {
  width: 450px;
  height: 200px;
  display: flex;
  flex-direction: column;
  gap: 15px;

  .tips {
    font-size: 12px;
  }
}
</style>
