<template>
  <div>
    <base-page
      :searchParams="searchParams"
      :tableParams="tableParams"
      :tableUrl="tableUrl"
      :addUrl="addUrl"
      :editUrl="editUrl"
      :delUrl="delUrl"
      :editAuth="editAuth"
      :delAuth="delAuth"
      :infoUrl="infoUrl"
      :exportUrl="exportUrl"
      :importUrl="importUrl"
      :mubanUrl="mubanUrl"
      :editParams="editParams"
      :editElseRules="editElseRules"
      :editBtnName="(item) => (!item.latitude ? '待完善' : '修改')"
      idName="articleId"
    ></base-page>
  </div>
</template>

<script>
import basePage from "@/views/modules/cpts/base/index";
import { getItemByIdInCascader, collapse } from "@/utils/cascader";
import { requestPost } from "@/js/dai/request";
import dateFormat from "dai-js/tools/dateFormat.js";

export default {
  props: {},

  data() {
    return {
      searchParams: [
        { field: "活动标题", keyName: "title", type: "input" },
        {
          field: "标签",
          keyName: "tagIds",
          type: "select",
          multiple: true,
          optionUrl: "/gov/voice/tag/taglist",
          optionUrlParams: {},
          optionList: [],
          optionCook(list) {
            return list.map((item) => ({
              label: item.tagName,
              value: item.tagId,
            }));
          },
        },
        {
          field: "状态",
          keyName: "statusFlag",
          value: "",
          type: "select",
          optionUrl: "",
          optionUrlParams: {},
          optionList: [
            {
              label: "全部",
              value: "",
            },
            {
              label: "已发布",
              value: "published",
            },
            {
              label: "已下线",
              value: "offline",
            },
          ],
        },
        {
          field: "发布范围",
          keyName: "publishRangeIds",
          type: "cascader",
          optionUrl: "/gov/org/customeragency/agencygridtree",
          optionUrlParams: {
            agencyId: this.$store.state.user.agencyId,
          },
          optionList: [],
          optionProps: {
            multiple: false,
            value: "agencyId",
            label: "agencyName",
            children: "subAgencyList",
            checkStrictly: true,
          },
          optionCook(obj) {
            return [obj];
          },
          supKeys: ["publishRangeId", "publishRangeType"],
          supValues: ["", ""],
          handleChangeFn(vals, item) {
            const { optionList } = item;
            if (vals.length > 0) {
              item["supValues"][0] = vals[vals.length - 1];
              item["supValues"][1] = getItemByIdInCascader(
                optionList,
                vals,
                "agencyId",
                "subAgencyList"
              )[vals.length - 1]["level"];
            } else {
              item["supValues"][0] = "";
              item["supValues"][1] = "";
            }
          },
        },
        {
          field: "发布时间",
          keyName: "publishTime",
          type: "date-range",
          supKeys: ["startTime", "endTime"],
          supValues: ["", ""],
        },
      ],

      tableParams: [
        { field: "序号", keyName: "", type: "no" },
        { field: "活动标题", keyName: "title", type: "text" },
        {
          field: "标签",
          keyName: "tagNameList",
          type: "array",
          arrayDiv: "、",
        },
        { field: "状态", keyName: "statusFlag", type: "text" },
        { field: "发布单位", keyName: "publisherName", type: "text" },
        { field: "发布时间", keyName: "publishDate", type: "text" },
        {
          field: "发布范围",
          keyName: "publishRangeDesc",
          type: "array",
          arrayDiv: "、",
        },
        { field: "置顶", keyName: "isTopName", type: "text" },
      ],
      tableUrl: "/gov/voice/article/articleListV2",
      mubanUrl: "",
      importUrl: "",
      exportUrl: "",

      addUrl: "/gov/voice/article/addOrSaveDraft",
      editUrl: "",
      infoUrl: "/gov/voice/article/detailV2",
      delUrl: "",
      editAuth(item) {
        return false;
      },
      delAuth(item) {
        return false;
      },

      editParams: [
        {
          field: "文章标题",
          keyName: "title",
          type: "input",
          maxlength: 50,
          editDisabled: true,
          rules: [
            {
              required: true,
              message: "文章标题不能为空",
              trigger: "blur",
            },
          ],
        },
        {
          field: "封面图片",
          keyName: "imgArr",
          type: "upload",
          limit: 1,
          editDisabled: true,
          rules: [],
          value: [],
          supKeys: ["imgUrlArr", "imgUrl"],
          supValues: [[], ""],
          beforeImgUpload(file, item, that) {
            console.log(file);
            const isLt1M = file.size / 1024 / 1024 < 10;
            const srcType = file.type;

            if (!isLt1M) {
              that.$message.error("上传文件大小不能超过 10MB!");
              return false;
            }
            if (srcType.indexOf("image") == -1) {
              that.$message.error("仅限图片格式");
              return false;
            }
            return true;
          },
        },
        {
          field: "发布范围",
          keyName: "gridIdList",
          type: "cascader",
          value: [],
          supKeys: ["publishRangeDesc"],
          supValues: [""],
          optionUrl: "/gov/org/customeragency/agencygridtree",
          optionUrlParams: {
            agencyId: this.$store.state.user.agencyId,
          },
          optionList: [],
          optionProps: {
            multiple: true,
            value: "agencyId",
            label: "agencyName",
            children: "subAgencyList",
            checkStrictly: false,
            emitPath: false,
          },
          optionCook(obj) {
            return [obj];
          },
          handleChangeFn(vals, item, that) {
            console.log("handleChangeFn", vals);
            const { optionList } = item;
            const optionPlaneList = collapse(optionList, "subAgencyList");
            if (vals.length > 0) {
              let selectedList = vals.map(
                (v) =>
                  getItemByIdInCascader(
                    optionPlaneList,
                    [v],
                    "agencyId",
                    "subAgencyList"
                  )[0]
              );
              console.log("handleChangeFn", selectedList);
              let selectedFilterList = selectedList.filter(
                (a) => a.level == "grid"
              );
              that.fmData[item["keyName"]] = selectedFilterList.map(
                (a) => a.agencyId
              );
              that.fmData[item["supKeys"][0]] = selectedFilterList.map(
                (a) => a.agencyName
              );
            } else {
            }
          },
          rules: [
            {
              required: true,
              message: "发布范围不能为空",
              trigger: "blur",
            },
          ],
        },
        {
          field: "发布时间",
          keyName: "publishDate",
          type: "date",
          value: dateFormat(new Date(), "yyyy-MM-dd"),
          rules: [
            {
              required: true,
              message: "发布时间不能为空",
              trigger: "blur",
            },
          ],
        },
        {
          field: "发布单位",
          keyName: "publisher",
          type: "select",
          optionUrl: "/gov/voice/article/publishagencylist",
          optionList: [],
          optionType: "group",
          supKeys: ["publisherName", "publisherType"],
          supValues: ["", ""],
          optionCook(data) {
            let ret = [];
            const { agencyDeptList, agencyGridList, agencyId, agencyName } =
              data;
            if (agencyId) {
              ret.push({
                label: "以组织名义",
                optionList: [
                  {
                    label: agencyId,
                    value: agencyName,
                    type: "agency",
                  },
                ],
              });
            }
            if (Array.isArray(agencyDeptList) && agencyDeptList.length > 0) {
              ret.push({
                label: "以部门名义",
                optionList: [
                  ...agencyDeptList.map((d) => ({
                    label: d.agencyDeptName,
                    value: d.departmentId,
                    type: "department",
                  })),
                ],
              });
            }
            if (Array.isArray(agencyGridList) && agencyGridList.length > 0) {
              ret.push({
                label: "以网格名义",
                optionList: [
                  ...agencyGridList.map((d) => ({
                    label: d.agencyGridName,
                    value: d.gridId,
                    type: "grid",
                  })),
                ],
              });
            }
            return ret;
          },
          handleChangeFn(vals, item, that) {
            const { optionList } = item;
            let opts = [];
            optionList.forEach((g) => {
              opts = [...opts, ...g.optionList];
            });
            let publisher = opts.find((p) => vals == p.value);
            that.fmData[item["supKeys"][0]] = publisher.label;
            that.fmData[item["supKeys"][1]] = publisher.type;
          },
          rules: [
            {
              required: true,
              message: "发布单位不能为空",
              trigger: "blur",
            },
          ],
        },
        {
          field: "文章标签",
          keyName: "tagNameList",
          type: "select",
          multiple: true,
          filterable: true,
          allowCreate: true,
          optionUrl: "/gov/voice/tag/taglist",
          optionUrlParams: {},
          optionList: [],
          optionCook(list) {
            return list.map((item) => ({
              label: item.tagName,
              value: item.tagName,
            }));
          },
        },
        {
          field: "内容",
          keyName: "content",
          type: "rich-text",
          rules: [
            {
              required: true,
              message: "内容不能为空",
              trigger: "blur",
            },
          ],
        },
        {
          field: "置顶",
          keyName: "isTop",
          type: "switch",
          activeValue: "1",
          inactiveValue: "0",
        },
      ],
      editElseRules: {},
    };
  },
  components: { basePage },
  computed: {},
  watch: {},

  async mounted() {},

  methods: {},
};
</script>

<style lang="scss" scoped></style>
