| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931 | <template>  <div class="app-container">    <el-form      :model="queryParams"      ref="queryForm"      v-show="showSearch"      label-width="100px"      size="mini"    >      <el-row>        <el-col :span="6">          <el-form-item label-width="100px" label="提单号" prop="mblno">            <el-input              v-model="queryParams.mblno"              placeholder="请输入提单号"              clearable              size="small"              @keyup.enter.native="handleQuery"              style="max-width: 187px"            />          </el-form-item>        </el-col>        <el-col :span="6">          <el-form-item label="客户名称" prop="corpId">            <el-select              v-model="queryParams.corpId"              placeholder="请输入客户名称"              clearable              size="small"              filterable            >              <el-option                v-for="(dict, index) in fMblnoOptions"                :key="index.fId"                :label="dict.fName"                :value="dict.fId"              />            </el-select> </el-form-item        ></el-col>        <el-col :span="6">          <el-form-item label-width="100px" label="业务类型" prop="billType">            <el-select              v-model="queryParams.billType"              placeholder="请选择业务类型"              clearable              size="small"            >              <el-option                v-for="(dict, index) in billTypeList"                :key="index.dictValue"                :label="dict.dictLabel"                :value="dict.dictValue"              />            </el-select>          </el-form-item>        </el-col>        <el-col :span="6">          <el-form-item label-width="100px" label="运输方式" prop="transType">            <el-select              v-model="queryParams.transType"              placeholder="请选择运输方式"              clearable              size="small"            >              <el-option                v-for="(dict, index) in transTypeList"                :key="index.dictValue"                :label="dict.dictLabel"                :value="dict.dictValue"              />            </el-select>          </el-form-item>        </el-col>      </el-row>      <el-collapse-transition>        <div v-show="show">          <el-row>            <el-col :span="6">              <el-form-item                label-width="100px"                label="运输性质"                prop="transProp"              >                <el-select                  v-model="queryParams.transProp"                  placeholder="请选择运输性质"                  clearable                  size="small"                >                  <el-option                    v-for="(dict, index) in transPropList"                    :key="index.dictValue"                    :label="dict.dictLabel"                    :value="dict.dictValue"                  />                </el-select>              </el-form-item>            </el-col>            <el-col :span="6">              <el-form-item label-width="100px" label="货品名称" prop="goodsId">                <el-select                  v-model="queryParams.goodsId"                  placeholder="请输入货品名称"                  clearable                  size="small"                  filterable                >                  <el-option                    v-for="(dict, index) in goodsOptions"                    :key="index.fId"                    :label="dict.fName"                    :value="dict.fId"                  />                </el-select>              </el-form-item>            </el-col>            <el-col :span="6">              <el-form-item                label-width="100px"                label="提箱地点"                prop="loadAddr"              >                <el-input                  v-model="queryParams.loadAddr"                  placeholder="请输入提箱地点"                  clearable                  size="small"                  @keyup.enter.native="handleQuery"                  style="max-width: 187px"                />              </el-form-item>            </el-col>            <el-col :span="6">              <el-form-item                label-width="100px"                label="装卸货地点"                prop="mdLoadAddr"              >                <el-input                  v-model="queryParams.mdLoadAddr"                  placeholder="请输入装卸货地点"                  clearable                  size="small"                  @keyup.enter.native="handleQuery"                  style="max-width: 187px"                /> </el-form-item            ></el-col>          </el-row>          <el-row>            <el-col :span="6"              ><el-form-item                label-width="100px"                label="卸箱地点"                prop="unLoadAddr"              >                <el-input                  v-model="queryParams.unLoadAddr"                  placeholder="请输入卸箱地点"                  clearable                  size="small"                  @keyup.enter.native="handleQuery"                  style="max-width: 187px"                /> </el-form-item            ></el-col>          </el-row>        </div>      </el-collapse-transition>    </el-form>    <el-row :gutter="10" class="mb8">      <!-- <el-col :span="1.5">        <el-button          type="primary"          icon="el-icon-plus"          size="mini"          @click="handleAdd"          v-hasPermi="['fleet:ftmsorderbillsplans:add']"          >新增</el-button        >      </el-col> -->      <el-col :span="1.5">        <el-button          type="success"          icon="el-icon-edit"          size="mini"          :disabled="single"          @click="handleUpdate"          v-hasPermi="['fleet:ftmsorderbillsplans:edit']"          >修改</el-button        >      </el-col>      <el-col :span="1.5">        <el-button          type="warning"          icon="el-icon-download"          size="mini"          @click="handleExport"          v-hasPermi="['fleet:ftmsorderbillsplans:export']"          >导出</el-button        >      </el-col>      <div class="tabSetting">        <div style="margin-right: 20px">          <el-button            type="cyan"            icon="el-icon-search"            size="mini"            @click="handleQuery"            >搜索</el-button          >          <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"            >重置</el-button          >          <el-button            v-show="show"            @click="show = !show"            icon="el-icon-arrow-up"            size="mini"            >展开</el-button          >          <el-button            v-show="!show"            @click="show = !show"            icon="el-icon-arrow-down"            size="mini"            >展开</el-button          >        </div>        <right-toolbar          :showSearch.sync="showSearch"          @queryTable="getList"        ></right-toolbar>        <div style="margin: 0 12px">          <el-button            icon="el-icon-setting"            size="mini"            circle            @click="showSetting = !showSetting"          ></el-button>        </div>      </div>    </el-row>    <el-dialog title="自定义列显示" :visible.sync="showSetting" width="700px">      <div>配置排序列数据(拖动调整顺序)</div>      <div style="margin-left: 17px">        <el-checkbox          v-model="allCheck"          label="全选"          @change="allChecked"        ></el-checkbox>      </div>      <div style="padding: 4px; display: flex; justify-content: center">        <draggable          v-model="setRowList"          group="site"          animation="300"          @start="onStart"          @end="onEnd"          handle=".indraggable"        >          <transition-group>            <div              v-for="item in setRowList"              :key="item.surface"              class="listStyle"            >              <div style="width: 500px" class="indraggable">                <div class="progress" :style="{ width: item.width + 'px' }">                  <el-checkbox                    :label="item.name"                    v-model="item.checked"                    :true-label="0"                    :false-label="1"                    >{{ item.name }}                  </el-checkbox>                </div>              </div>              <el-input-number                v-model.number="item.width"                controls-position="right"                :min="1"                :max="500"                size="mini"              ></el-input-number>            </div>          </transition-group>        </draggable>      </div>      <span slot="footer" class="dialog-footer">        <el-button @click="showSetting = false">取 消</el-button>        <el-button @click="delRow" type="danger">重 置</el-button>        <el-button type="primary" @click="save()">确 定</el-button>      </span>    </el-dialog>    <el-table      v-loading="loading"      :data="ftmsorderbillsList"      @selection-change="handleSelectionChange"    >      <el-table-column type="selection" width="55" align="center" />      <el-table-column        label="提单号"        width="180"        align="center"        :show-overflow-tooltip="true"        sortable        fixed="left"      >        <template slot-scope="scope">          <el-link :underline="false" type="primary"            ><div @click="handleUpdate(scope.row)">              {{ scope.row.mblno }}            </div></el-link          >        </template>      </el-table-column>      <el-table-column        v-for="(item, index) in getRowList"        :key="index"        :label="item.name"        :width="item.width"        :prop="item.label"        align="center"        :show-overflow-tooltip="true"        sortable        :fixed="item.fixed"      />      <el-table-column        label="操作"        align="center"        class-name="small-padding fixed-width"        fixed="right"        width="150px"      >        <template slot-scope="scope">          <el-button            size="mini"            type="text"            icon="el-icon-edit"            @click="handleUpdate(scope.row)"            >查看</el-button          >          <!-- <el-button            v-if="scope.row.billStatus != 6"            size="mini"            type="text"            icon="el-icon-edit"            @click="handleUpdate(scope.row)"            v-hasPermi="['fleet:ftmsorderbillsplans:edit']"            >修改</el-button          > -->        </template>      </el-table-column>    </el-table>    <pagination      v-show="total > 0"      :total="total"      :page.sync="queryParams.pageNum"      :limit.sync="queryParams.pageSize"      @pagination="getList"    />    <!-- 新增编辑弹框子组件 -->    <add-or-update      :addOrUpdateVisible="addOrUpdateVisible"      :title="title"      :form="form"      :planList="planList"      :disabled="disabled"      :disabled2="disabled2"      :DList="DList"      :CList="CList"      :schedulingList="schedulingList"      :collapses="collapses"      :relevantAttachments="relevantAttachments"      @changeShow="showAddOrUpdate"      @fixDisabled="fixDisabled"      @fixDisabled2="fixDisabled2"      ref="addOrUpdateRef"    ></add-or-update>  </div></template><script>import AddOrUpdate from "./AddOrUpdate.vue";import {  listFtmsorderbills,  getFtmsorderbills,  delFtmsorderbills,  exportFtmsorderbills,} from "@/api/fleet/ftmsorderbills";import { getFtmsorderbillsplans } from "@/api/fleet/ftmsorderbillsplans";import { listFtmsorderbillscntrs } from "@/api/fleet/ftmsorderbillscntrs";import { listGoods } from "@/api/basicdata/goods";import { listCorps } from "@/api/basicdata/corps";import { addSet, select, resetModule } from "@/api/system/set";import Cookies from "js-cookie";import draggable from "vuedraggable";export default {  name: "plans",  data() {    return {      disabled: false,      disabled2: false,      // 控制新增编辑弹窗的显示与隐藏      addOrUpdateVisible: false,      // 非单个禁用      single: true,      // 非多个禁用      multiple: true,      // 显示搜索条件      showSearch: true,      // 订单主表格数据      ftmsorderbillsList: [],      // 总条数      total: 0,      // 查询参数      queryParams: {        pageNum: 1,        pageSize: 10,        corpId: null,        billType: null,        transType: null,        transProp: null,        goodsId: null,        mblno: null,        loadAddr: null,        mdLoadAddr: null,        unLoadAddr: null,      },      billTypeList: [],      transTypeList: [],      transPropList: [],      relevantAttachments: [],      showSetting: false,      drag: false,      setRowList: [],      getRowList: [],      tableDate: [        {          surface: "1",          label: "corpId",          name: "客户名称",          checked: 0,          width: 100,        },        {          surface: "2",          label: "billNo",          name: "系统编号",          checked: 0,          width: 100,        },        {          surface: "3",          label: "createTime",          name: "制单日期",          checked: 0,          width: 100,        },        {          surface: "4",          label: "loadDate",          name: "提箱日期",          checked: 0,          width: 100,        },        {          surface: "5",          label: "billType",          name: "业务类型",          checked: 0,          width: 100,        },        {          surface: "6",          label: "transType",          name: "运输方式",          checked: 0,          width: 100,        },        {          surface: "7",          label: "transProp",          name: "运输性质",          checked: 0,          width: 100,        },        {          surface: "8",          label: "qtyPlan",          name: "计划件数",          checked: 0,          width: 100,        },        {          surface: "9",          label: "loadAddr",          name: "提箱地点",          checked: 0,          width: 100,        },        {          surface: "10",          label: "mdLoadAddr",          name: "装卸货地点",          checked: 0,          width: 110,        },        {          surface: "11",          label: "unLoadAddr",          name: "卸箱地点",          checked: 0,          width: 100,        },        {          surface: "12",          label: "cntrDesc",          name: "箱型箱量",          checked: 0,          width: 100,        },        {          surface: "13",          label: "qtyDisPatch",          name: "已安排箱量",          checked: 0,          width: 100,        },        {          surface: "14",          label: "billStatus",          name: "状态",          checked: 0,          width: 100,        },        {          surface: "15",          label: "remarks",          name: "备注",          checked: 0,          width: 100,        },      ],      allCheck: false,      title: "",      form: {},      planList: [],      DList: [],      CList: [],      schedulingList: [],      fMblnoOptions: [],      goodsOptions: [],      show: false,      collapses: [],    };  },  // 使用子组件  components: {    AddOrUpdate,    draggable,  },  created() {    this.setRowList = this.tableDate;    this.getRowList = this.tableDate;    this.getList();    this.getDicts("data_billType").then((response) => {      this.billTypeList = response.data;    });    this.getDicts("data_transType").then((response) => {      this.transTypeList = response.data;    });    this.getDicts("data_transProp").then((response) => {      this.transPropList = response.data;    });    listGoods().then((response) => {      this.goodsOptions = response.rows;    });    listCorps().then((response) => {      this.fMblnoOptions = response.rows;    });    this.getRow();  },  methods: {    //列设置全选    allChecked() {      if (this.allCheck == true) {        this.setRowList.map((e) => {          return (e.checked = 0);        });      } else {        this.setRowList.map((e) => {          return (e.checked = 1);        });      }    },    //查询列数据    getRow() {      let that = this;      this.data = {        tableName: "业务调度",        userId: Cookies.get("userName"),      };      select(this.data).then((res) => {        if (res.data.length != 0) {          this.getRowList = res.data.filter((e) => e.checked == 0);          this.setRowList = res.data;          this.setRowList = this.setRowList.reduce((res, item) => {            res.push({              surface: item.surface,              label: item.label,              name: item.name,              checked: item.checked,              width: item.width,              fixed: item.fixed,            });            return res;          }, []);        }      });    },    delRow() {      this.data = {        tableName: "业务调度",        userId: Cookies.get("userName"),      };      resetModule(this.data).then((res) => {        if (res.code == 200) {          this.showSetting = false;          this.setRowList = this.tableDate;          this.getRowList = this.tableDate;        }      });    },    //保存列设置    save() {      this.showSetting = false;      this.data = {        tableName: "业务调度",        userId: Cookies.get("userName"),        sysTableSetList: this.setRowList,      };      addSet(this.data).then((res) => {        if (res.code == 200) {          this.showSetting = false;          this.getRowList = this.setRowList.filter((e) => e.checked == 0);        }      });    },    //开始拖拽事件    onStart() {      this.drag = true;    },    //拖拽结束事件    onEnd() {      this.drag = false;    },    /** 查询订单主列表 */    getList() {      this.loading = true;      // this.queryParams["billStatus"]="40"      listFtmsorderbillscntrs(this.queryParams).then((response) => {        response.rows.map((e) => {          if (e.createTime) {            e.createTime = e.createTime.substring(0, 10);          }          if (e.loadDate) {            e.loadDate = e.loadDate.substring(0, 10);          }          if (e.billStatus == 1) {            e.billStatus = "新建";          }          if (e.billStatus == 2) {            e.billStatus = "计划暂存";          }          if (e.billStatus == 3) {            e.billStatus = "计划撤销";          }          if (e.billStatus == 6) {            e.billStatus = "计划提交";          }          if (e.billStatus == 20) {            e.billStatus = "调度暂存";          }          if (e.billStatus == 30) {            e.billStatus = "调度撤回";          }          if (e.billStatus == 60) {            e.billStatus = "调度提交";          }        });        this.ftmsorderbillsList = response.rows;        this.total = response.total;        this.loading = false;      });    },    /** 新增按钮操作 */    handleAdd() {      this.reset();      this.addOrUpdateVisible = !this.addOrUpdateVisible;      this.title = "添加订单主";    },    // 表单重置    reset() {      this.form = {        id: null,        billNo: null,        actId: null,        corpId: null,        transUserName: null,        planUserName: null,        billType: null,        transType: null,        transProp: null,        ifContracted: null,        contractNo: null,        refNo: null,        accstlType: null,        accdays: null,        goodsId: null,        goodsPrice: null,        goodsLossType: null,        goodsLossStd: null,        mblno: null,        ysl: null,        voy: null,        pol: null,        pod: null,        qtyPlan: null,        qtyDisPatch: null,        weightPlan: null,        cntrDesc: null,        carNoList: null,        loadAddr: null,        loadAttn: null,        loadAttntel: null,        loadDate: null,        mdLoadAddr: null,        mdLoadAttn: null,        mdLoadAttnTel: null,        mdLoadDate: null,        unLoadAddr: null,        unLoadAttn: null,        unLoadAttnTel: null,        unLoadDate: null,        routeId: null,        routeDesc: null,        ifWaybill: null,        ifNeedinvDr: null,        postDate: null,        billStatus: 0,        delFlag: null,        createBy: null,        createTime: null,        updateBy: null,        updateTime: null,        remarks: null,      };      this.resetForm("form");      this.planList = [];      this.DList = [];      this.CList = [];      this.schedulingList = [];      this.disabled = false;      this.disabled2 = false;      this.collapses = ["1", "2"];      this.relevantAttachments = [];    },    // 多选框选中数据    handleSelectionChange(selection) {      this.ids = selection.map((item) => item.id);      this.single = selection.length !== 1;      this.multiple = !selection.length;    },    /** 修改按钮操作 */    handleUpdate(row) {      this.reset();      const id = row.id || this.ids;      getFtmsorderbillsplans(id).then((response) => {        if (response.data.tmsorder.billType) {          response.data.tmsorder.billType = response.data.tmsorder.billType.toString();        }        // if (response.data.tmsorder.polId) {        //   response.data.tmsorder.polId = response.data.tmsorder.polId.toString();        // }        // if (response.data.tmsorder.podId) {        //   response.data.tmsorder.podId = response.data.tmsorder.podId.toString();        // }        if (response.data.scntrs.length != 0) {          response.data.scntrs.map((e) => {            if (e.cntrId) {              e.cntrId = e.cntrId.toString();            }            if (e.priceType) {              e.priceType = e.priceType.toString();            }          });        }        if (response.data.plans.length != 0) {          response.data.plans.map((e) => {            if (e.cntrId) {              e.cntrId = e.cntrId.toString();            }            if (e.billStatus >= 6 || e.billStatus == 3) {              e.disabled = true;            }          });        }        this.disabled = true;        this.title = "查看订单";        if (response.data.tmsorder.billStatus > 6) {          this.disabled2 = true;        }        // this.$refs.addOrUpdateRef.showSure();        this.form = response.data.tmsorder;        this.planList = response.data.scntrs;        if (response.data.fees.length) {          response.data.fees.map((e) => {            if (e.fFeeunitid) {              return (e.fFeeunitid = e.fFeeunitid.toString());            }          });          this.DList = response.data.fees.filter((e) => e.fDc == "D");          this.CList = response.data.fees.filter((e) => e.fDc == "C");        } else {          this.DList = [];          this.CList = [];        }        this.schedulingList = response.data.plans;        this.relevantAttachments = response.data.attach;        this.addOrUpdateVisible = !this.addOrUpdateVisible;      });    },    //获取到保存并复制    getSave(data) {      if (data.data.length != 0) {        data.data.cntrId = data.data.map((e) => {          if (e.cntrId) {            e.cntrId = e.cntrId.toString();          }          if (e.billStatus == 6 || e.billStatus == 3) {            e.disabled = true;          }        });      }      this.schedulingList = data.data;    },    getSave2(data) {      if (data.length != 0) {        data.map((e) => {          if (e.cntrId) {            e.cntrId = e.cntrId.toString();          }          if (e.priceType) {            e.priceType = e.priceType.toString();          }        });      }      this.planList = data;    },    /** 导出按钮操作 */    handleExport() {      const queryParams = this.queryParams;      this.$confirm("是否确认导出所有订单主数据项?", "警告", {        confirmButtonText: "确定",        cancelButtonText: "取消",        type: "warning",      })        .then(function () {          return exportFtmsorderbills(queryParams);        })        .then((response) => {          this.download(response.msg);        });    },    /** 搜索按钮操作 */    handleQuery() {      this.queryParams.pageNum = 1;      this.getList();    },    /** 重置按钮操作 */    resetQuery() {      this.resetForm("queryForm");      this.handleQuery();    },    // 监听 子组件弹窗关闭后触发,有子组件调用    showAddOrUpdate(data) {      if (data === "false") {        this.addOrUpdateVisible = false;        this.disabled = false;      } else {        this.addOrUpdateVisible = true;      }    },    fixDisabled(data) {      if (data === "false") {        this.disabled = false;      }    },    fixDisabled2(data) {      if (data === "false") {        this.disabled2 = false;      }    },  },};</script><style lang="scss" scoped>.tabSetting {  display: flex;  justify-content: flex-end;}.listStyle {  display: flex;  border-top: 1px solid #dcdfe6;  border-left: 1px solid #dcdfe6;  border-right: 1px solid #dcdfe6;}.listStyle:last-child {  border-bottom: 1px solid #dcdfe6;}.progress {  display: flex;  align-items: center;  padding: 2px;  background-color: rgba(0, 0, 0, 0.05);  height: 100%;}</style>
 |