index.vue 10.2 KB
<template>
  <div style="background-color: #ffffff; height: 100%">
    <div class="title">
      <div></div>
      <div>汇总申报信息</div>
    </div>
    <div class="content">
      <el-form
        class="fedexFormStyle fedexFormEditStyle"
        ref="editForm"
        :model="formData"
        :rules="formRules"
        label-position="top"
        size="small"
      >
        <el-row :gutter="5" type="flex" justify="center">
          <el-col :span="10">
            <Formitem label="出口口岸" prop="portCode">
              <el-select
                type="text"
                id="inputInner--portCode"
                v-model="formData.portCode"
                clearable
                filterable
                placeholder=""
                @change="searchUserData"
              >
                <el-option
                  v-for="(item, index) in portInfo"
                  :key="index"
                  :label="item.portCode"
                  :value="item.declarationPortCode"
                ></el-option>
              </el-select>
            </Formitem>
          </el-col>
          <el-col :span="10">
            <Formitem label="清单申报地海关" prop="customsCode">
              <el-select
                type="text"
                id="inputInner--customsCode"
                v-model="formData.customsCode"
                clearable
                placeholder=""
              >
                <el-option
                  v-for="(item, index) in portInfo"
                  :key="index"
                  :label="item.declarationPortCode"
                  :value="item.declarationPortCode"
                ></el-option>
              </el-select>
            </Formitem>
          </el-col>
        </el-row>
        <el-row :gutter="5" type="flex" justify="center">
          <el-col :span="10">
            <Formitem label="申报方式" prop="declareType">
              <el-select
                type="text"
                id="inputInner--declareType"
                v-model="formData.declareType"
                clearable
                placeholder=""
              >
                <el-option
                  v-for="(item, index) in declareType"
                  :key="index"
                  :label="item.itemChineseName"
                  :value="item.itemValue"
                ></el-option>
              </el-select>
            </Formitem>
          </el-col>
          <el-col :span="10">
            <Formitem label="创建时间" prop="time">
              <el-date-picker
                class="inputInner--time"
                id="inputInner--time"
                v-model="formData.time"
                type="datetimerange"
                format="yyyy-MM-dd HH:mm:ss"
                prefix-icon="none"
                value-format="yyyy-MM-dd HH:mm:ss"
                range-separator="至"
                @change="dateChange"
                style="background-color: #f2f2f2"
              />
            </Formitem>
          </el-col>
        </el-row>
        <el-row :gutter="5" type="flex" justify="center">
          <el-col :span="10">
            <Formitem label="电商企业名称" prop="ebpcode">
              <el-select
                type="text"
                id="inputInner--ebpcode"
                v-model="formData.ebpcode"
                clearable
                filterable
                placeholder=""
                @focus.stop="getCustomerList"
              >
                <el-option
                  v-for="(item, index) in ebcDataList"
                  :key="index"
                  :label="item.ecomEntName"
                  :value="item.ecomEntCode"
                ></el-option>
              </el-select>
            </Formitem>
          </el-col>
          <el-col :span="5">
            <Formitem label="发货人汇总" prop="summaryFlag">
              <el-select
                type="text"
                id="inputInner--summaryFlag"
                v-model="formData.summaryFlag"
                clearable
                placeholder=""
              >
                <el-option
                  v-for="(item, index) in summaryFlag"
                  :key="index"
                  :label="item.itemChineseName"
                  :value="item.itemValue"
                ></el-option>
              </el-select>
            </Formitem>
          </el-col>
          <el-col :span="5">
            <Formitem label="商品名汇总" prop="itemNameFlag">
              <el-select
                type="text"
                id="inputInner--itemNameFlag"
                v-model="formData.itemNameFlag"
                clearable
                placeholder=""
              >
                <el-option
                  v-for="(item, index) in itemNameFlag"
                  :key="index"
                  :label="item.itemChineseName"
                  :value="item.itemValue"
                ></el-option>
              </el-select>
            </Formitem>
          </el-col>
        </el-row>
      </el-form>
    </div>
    <!-- 预览弹窗 -->
    <DialogVue
      :outerVisible="outerVisible"
      :selected="selected"
      @close="dialogClose"
    />
    <!--  -->
    <div class="entrySave">
      <el-button class="entrySaveButton" @click="preview">预览</el-button>
      <el-button class="entrySaveButton" @click="submit">提交</el-button>
      <el-button class="entrySaveButton" @click="cancel">取消</el-button>
    </div>
  </div>
</template>

<script>
import { getCurrUserPortInfo } from "@/api/system/user.js";
import { getNewCustomerList } from "@/api/declareData-api.js";
import { getDictData } from "@/api/system/dict-api.js";
import { declareSummaryApplication } from "@/api/exportSummary-api.js";
import DialogVue from "./dialog.vue";
export default {
  components: {
    DialogVue,
  },
  name: "",
  data() {
    return {
      formRules: {
        portCode: [
          { required: true, message: "请选择出口口岸", trigger: "change" },
        ],
        customsCode: [
          { required: true, message: "请选择申报地海关", trigger: "change" },
        ],
        ebpcode: [
          { required: true, message: "请选择电商企业", trigger: "change" },
        ],
        declareType: [
          { required: true, message: "请选择申报方式", trigger: "change" },
        ],
        time: [
          {
            type: "array",
            required: true,
            message: "请选择完整的日期区间",
            trigger: "change",
          },
        ],
        summaryFlag: [
          { required: true, message: "请选择发货人汇总", trigger: "change" },
        ],
        itemNameFlag: [
          { required: true, message: "请选择商品名汇总", trigger: "change" },
        ],
      },
      formData: {
        portCode: "",
        customsCode: "",
        ebpcode: "",
        declareType: "",
        time: [],
        summaryFlag: "",
        itemNameFlag: "",
      },
      portInfo: [],
      ebcDataList: [],
      summaryFlag: [],
      itemNameFlag: [],
      declareType: [],
      outerVisible: false,
      selected: {},
    };
  },
  created() {
    this.getCurrUserPortInfo();
    this.getCustomerList();
    this.getSummaryFlag();
    this.getItemNameFlag();
  },
  mounted() {
    this.getDeclareType();
  },
  methods: {
    preview() {
      this.$refs.editForm.validate((valid) => {
        if (!valid) {
          return;
        }
        this.selected = JSON.parse(JSON.stringify(this.formData));
        this.outerVisible = true;
      });
    },
    dialogClose() {
      this.outerVisible = false;
    },
    searchUserData(val) {
      this.formData.customsCode = val;
      this.formData.ebpcode = "";
    },
    //获取当前用户的口岸信息
    getCurrUserPortInfo() {
      getCurrUserPortInfo()
        .then((res) => {
          if (res.code === "200") {
            this.portInfo = res.data;
          }
        })
        .catch((err) => {
          console.log(err);
        });
    },
    //获取客户下拉列表数据
    getCustomerList() {
      let params = {
        ...this.formData,
      };
      getNewCustomerList(params)
        .then((res) => {
          if (res.code == 200 && res.data?.[0]) {
            this.ebcDataList = res.data;
          } else {
            this.ebcDataList = [];
          }
        })
        .catch((err) => {
          console.log(err);
        });
    },
    //获取发货人下拉数据
    getSummaryFlag() {
      getDictData({
        doctCode: "SUMMARY_FLAG",
      }).then((res) => {
        if (res.code == 200) {
          this.summaryFlag = res.data;
        } else {
          this.summaryFlag = [];
        }
      });
    },
    //获取发货人下拉数据
    getItemNameFlag() {
      getDictData({
        doctCode: "ITEM_NAME_FLAG",
      }).then((res) => {
        if (res.code == 200) {
          this.itemNameFlag = res.data;
        } else {
          this.itemNameFlag = [];
        }
      });
    },
    cancel() {
      this.$router.push("summaryDataSearch");
    },
    submit() {
      this.$refs.editForm.validate((valid) => {
        if (!valid) {
          return;
        }
        declareSummaryApplication(this.formData).then((response) => {
          if (response.data) {
            this.msgSuccess("汇总申报成功");
            this.$router.push("summaryDataSearch");
          } else {
            this.msgError(response.message);
          }
        });
      });
    },
    dateChange(val) {
      if (val) {
        this.formData.startTime = val[0];
        this.formData.endTime = val[1];
      } else {
        this.formData.startTime = "";
        this.formData.endTime = "";
        this.formData.time = [];
      }
      this.formData.ebpcode = "";
    },
    getDeclareType() {
      getDictData({
        doctCode: "DECLARE_TYPE",
      }).then((res) => {
        if (res.code == 200) {
          this.declareType = res.data;
          console.log(res.data);
          this.formData.declareType = this.declareType[0].itemValue;
          this.$nextTick(() => {
            this.$refs.editForm.clearValidate(["declareType"]);
          });
        } else {
          this.declareType = [];
        }
      });
    },
  },
};
</script>

<style lang="scss" scoped>
.content {
  margin-top: 50px;
}
.title {
  font-size: 23px;
  margin-left: 8%;
  padding-top: 2%;
}
</style>