| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812 | <template>  <div class="app-container">    <el-form      :model="queryParams"      ref="queryForm"      :inline="true"      v-show="showSearch"      label-width="68px"    >      <el-form-item label="货权方" prop="fCorpid">        <el-select          v-model="queryParams.fCorpid"          filterable          remote          clearable          size="small"          @keyup.enter.native="handleQuery"          :remote-method="corpsRemoteMethod"          placeholder="请选择货权方"        >          <el-option            v-for="(dict, index) in fMblnoOptions"            :key="index.fId"            :label="dict.fName"            :value="dict.fId"          ></el-option>        </el-select>      </el-form-item>      <el-form-item label="提单号" prop="fMblno">        <el-input          v-model="queryParams.fMblno"          placeholder="请输入提单号"          clearable          size="small"          @keyup.enter.native="handleQuery"        />      </el-form-item>      <el-form-item label="结算单位" prop="fToCorpid">        <el-select          v-model="queryParams.fToCorpid"          placeholder="请选择结算单位"          filterable          remote          clearable          style="width: 200px"          @keyup.enter.native="handleQuery"          :remote-method="corpsRemoteMethod"        >          <el-option            v-for="(dict, index) in fMblnoOptions"            :key="index.fId"            :label="dict.fName"            :value="dict.fId"          ></el-option>        </el-select>      </el-form-item>      <el-form-item label="货物名称" prop="fProductName">        <el-select          v-model="queryParams.fProductName"          filterable          remote          clearable          size="small"          :remote-method="goodsRemoteMethod"          @keyup.enter.native="handleQuery"          placeholder="请选择货物名称"        >          <el-option            v-for="(dict, index) in goodsOptions"            :key="index.fId"            :label="dict.fName"            :value="dict.fName"          ></el-option>        </el-select>      </el-form-item>      <el-form-item label="品牌" prop="fMarks">        <el-input          v-model="queryParams.fMarks"          placeholder="请输入品牌"          clearable          size="small"          @keyup.enter.native="handleQuery"        />      </el-form-item>      <el-form-item label="结算状态" prop="fReconciliation">        <el-select          v-model="queryParams.fReconciliation"          clearable          size="small"          @keyup.enter.native="handleQuery"        >          <el-option label="未收" value="0" />          <el-option label="全部" value="1" />        </el-select>      </el-form-item>      <el-form-item label="费用状态" prop="fBillstatus">        <el-select          v-model="queryParams.fBillstatus"          clearable          size="small"          @keyup.enter.native="handleQuery"        >          <el-option label="录入" value="0" />          <el-option label="审核通过" value="1" />        </el-select>      </el-form-item>      <el-form-item label="审核日期" prop="timeExamine">        <el-date-picker          v-model="queryParams.timeExamine"          type="daterange"          value-format="yyyy-MM-dd"          clearable          range-separator="至"          start-placeholder="开始日期"          end-placeholder="结束日期"          @keyup.enter.native="handleQuery"        >        </el-date-picker>      </el-form-item>      <el-form-item>        <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-form-item>    </el-form>    <el-row :gutter="10" class="mb8">      <div class="tabSetting">        <el-col :span="1.5">          <el-button            type="warning"            icon="el-icon-download"            size="mini"            @click="handleExport"            v-hasPermi="['warehouseBusiness:payable:export']"            >导出</el-button          >        </el-col>        <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="payableList"      show-summary      :summary-method="getSum"      ref="table"      :height="tableHeight"    >      <!-- <el-table-column type="selection" width="55" align="center" /> -->      <el-table-column type="index" label="行号" align="center" width="80" fixed=""/>      <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="货权方"        sortable        align="center"        prop="fName"        width="220"      />      <el-table-column        label="结算单位"        sortable        align="center"        prop="fFeesName"        width="220"      />      <el-table-column        label="提单号"        sortable        align="center"        prop="fMblno"        show-overflow-tooltip        width="216"      />      <el-table-column        label="货物名称"        align="center"        prop="fProductName"        show-overflow-tooltip      />      <el-table-column label="品牌" align="center" prop="fMarks" />      <el-table-column        label="审核日期"        align="center"        prop="fReviewDate"        width="120"      >        <template slot-scope="scope">          <span>{{ parseTime(scope.row.fReviewDate, "{y}-{m}-{d}") }}</span>        </template>      </el-table-column>      <el-table-column label="应付金额" align="center" prop="fAmount" />      <el-table-column label="实付金额" align="center" prop="fStlamount" />      <el-table-column label="未付金额" align="center" prop="nnfinished" /> -->    </el-table>    <pagination      v-show="total > 0"      :total="total"      :page.sync="queryParams.pageNum"      :limit.sync="queryParams.pageSize"      :page-sizes="[50, 100, 200, 500, 1000]"      @pagination="getList"    />    <!-- 添加或修改库存总账对话框 -->    <!--    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>-->    <!--      <el-form ref="form" :model="form" :rules="rules" label-width="80px">-->    <!--        <el-form-item label="原始入库业务编号" prop="fOriginalbillno">-->    <!--          <el-input v-model="form.fOriginalbillno" placeholder="请输入原始入库业务编号" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="上期件数" prop="fPreqty">-->    <!--          <el-input v-model="form.fPreqty" placeholder="请输入上期件数" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="上期毛重,单位为吨,保留6位小数" prop="fPregrossweight">-->    <!--          <el-input v-model="form.fPregrossweight" placeholder="请输入上期毛重,单位为吨,保留6位小数" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="上期净重," prop="fPrenetweight">-->    <!--          <el-input v-model="form.fPrenetweight" placeholder="请输入上期净重," />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="入库件数" prop="fQtyd">-->    <!--          <el-input v-model="form.fQtyd" placeholder="请输入入库件数" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="入库尺码" prop="fVolumnd">-->    <!--          <el-input v-model="form.fVolumnd" placeholder="请输入入库尺码" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="入库毛重" prop="fGrossweightd">-->    <!--          <el-input v-model="form.fGrossweightd" placeholder="请输入入库毛重" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="入库净重" prop="fNetweightd">-->    <!--          <el-input v-model="form.fNetweightd" placeholder="请输入入库净重" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="出口尺码" prop="fVolumnc">-->    <!--          <el-input v-model="form.fVolumnc" placeholder="请输入出口尺码" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="出库件数" prop="fQtyc">-->    <!--          <el-input v-model="form.fQtyc" placeholder="请输入出库件数" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="结余件数" prop="fQtyblc">-->    <!--          <el-input v-model="form.fQtyblc" placeholder="请输入结余件数" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="出库毛重,单位为吨" prop="fGrossweightc">-->    <!--          <el-input v-model="form.fGrossweightc" placeholder="请输入出库毛重,单位为吨" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="出库净重" prop="fNetweightc">-->    <!--          <el-input v-model="form.fNetweightc" placeholder="请输入出库净重" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="结余毛重" prop="fGrossweightblc">-->    <!--          <el-input v-model="form.fGrossweightblc" placeholder="请输入结余毛重" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="结余净重" prop="fNetweightblc">-->    <!--          <el-input v-model="form.fNetweightblc" placeholder="请输入结余净重" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="箱号" prop="fCntrno">-->    <!--          <el-input v-model="form.fCntrno" placeholder="请输入箱号" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="状态,默认 T ,正常T 停用F 下拉选择">-->    <!--          <el-radio-group v-model="form.fStatus">-->    <!--            <el-radio label="1">请选择字典生成</el-radio>-->    <!--          </el-radio-group>-->    <!--        </el-form-item>-->    <!--        <el-form-item label="删除状态" prop="delFlag">-->    <!--          <el-input v-model="form.delFlag" placeholder="请输入删除状态" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="唛头" prop="fMarks">-->    <!--          <el-input v-model="form.fMarks" placeholder="请输入唛头" />-->    <!--        </el-form-item>-->    <!--        <el-form-item label="备注" prop="remark">-->    <!--          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />-->    <!--        </el-form-item>-->    <!--      </el-form>-->    <!--      <div slot="footer" class="dialog-footer">-->    <!--        <el-button type="primary" @click="submitForm">确 定</el-button>-->    <!--        <el-button @click="cancel">取 消</el-button>-->    <!--      </div>-->    <!--    </el-dialog>-->  </div></template><script>import {  listpayable,  addWhgenleg,  updateWhgenleg,  exportWhgenleg,} from "@/api/reportManagement/payable";import { listWarehouse } from "@/api/basicdata/warehouse";import { listArea } from "@/api/basicdata/area";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: "generalLedgerCr",  components: {},  data() {    return {      tableHeight: '0',      payableList: [],      // 货权方(客户数据)      fMblnoOptions: [],      // 贸易方式(数据字典),对应t_trademodels 字典      fTrademodeidOptions: [],      // 货物      goodsOptions: [],      // 仓库(仓库数据)      warehouseOptions: [],      kqhouseOptions: [],      // 遮罩层      loading: true,      // 显示搜索条件      showSearch: true,      // 总条数      total: 0,      // 库存总账表格数据      receivableList: [],      // 弹出层标题      title: "",      // 是否显示弹出层      open: false,      // 查询参数      queryParams: {        pageNum: 1,        pageSize: 50,        fCorpid: null,        fMblno: null,        timeExamine: null,        fToCorpid: null,        fProductName: null,        fMarks: null,        fReconciliation: null,        fBillstatus: null,      },      // 表单参数      form: {},      // 表单校验      rules: {        fMarks: [{ required: true, message: "唛头不能为空", trigger: "blur" }],      },      showSetting: false,      drag: false,      setRowList: [],      getRowList: [],      tableDate: [  {          surface: "1",          label: "fName",          name: "货权方",          checked: 0,          width: 130,        },        {          surface: "2",          label: "fFeesName",          name: "结算单位",          checked: 0,          width: 130,        },        {          surface: "3",          label: "fMblno",          name: "提单号",          checked: 0,          width: 130,        },        {          surface: "4",          label: "fProductName",          name: "货物名称",          checked: 0,          width: 130,        },        {          surface: "5",          label: "fMarks",          name: "品牌",          checked: 0,          width: 130,        },        {          surface: "6",          label: "fReviewDate",          name: "审核日期",          checked: 0,          width: 130,        },        {          surface: "7",          label: "fAmount",          name: "应付金额",          checked: 0,          width: 130,        },        {          surface: "8",          label: "fStlamount",          name: "实付金额",          checked: 0,          width: 130,        },        {          surface: "9",          label: "nnfinished",          name: "未付金额",          checked: 0,          width: 130,        }      ],      allCheck: false,    };  },  created() {    let date = new Date();    let year = parseInt(date.getFullYear())    let month = parseInt(date.getMonth() + 1)    let currentMonth = date.getMonth()    let nextMonth = ++currentMonth    let nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1)  // 下个月的第一天    let oneDay = 1000*60*60*24    let lastTime = new Date(nextMonthFirstDay - oneDay) // 下个月的第一天减去一天,就是上个月的最后一天    let day = lastTime.getDate()    if (day < 10) {      day = '0' + day    }    this.queryParams.timeExamine = [year + '-' + month + '-' + '01 00:00:00', year + '-' + month + '-' + day + ' 23:59:59']    this.setRowList = this.tableDate;    this.getRowList = this.tableDate;    this.getList();    this.getDicts("data_trademodes").then((response) => {      this.fTrademodeidOptions = response.data;    });    this.getRow();  },  mounted() {    this.$nextTick(() => {      // 根据浏览器高度设置初始高度      this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 160      // 监听浏览器高度变化,改变表格高度      window.onresize = () => {        this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 70      }    })  },  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;    },    //合计    getSum(param) {      const { columns, data } = param;      const sums = [];      columns.forEach((column, index) => {        if (index === 0) {          sums[index] = "合计";        } else if (index === 7 || index === 8 || index === 9) {          const values = data.map((item) => Number(item[column.property]));          if (!values.every((value) => isNaN(value))) {            sums[index] = values.reduce((prev, curr) => {              const value = Number(curr);              if (!isNaN(value)) {                return prev + curr;              } else {                return prev;              }            }, 0);          }        }      });      return sums;    },    // 贸易方式(数据字典),对���t_trademodels 字典翻译    fTrademodeidFormat(row, column) {      return this.selectDictLabel(this.fTrademodeidOptions, row.fTrademodeid);    },    /* 远程模糊查询仓库 */    warehouseRemoteMethod(name) {      if (name == null || name === "") {        return false;      }      let queryParams = { pageNum: 1, pageSize: 10, fName: name };      listWarehouse(queryParams).then((response) => {        this.warehouseOptions = response.rows;      });    },    /* 远程模糊查询库区 */    kqhouseRemoteMethod(name) {      if (name == null || name === "") {        return false;      }      if (!this.queryParams.fWarehouseid) {        this.$message.error("请输入仓库!");        return false;      }      let queryParams = {        pageNum: 1,        pageSize: 10,        fWarehouseid: this.queryParams.fWarehouseid,        fName: name,      };      listArea(queryParams).then((response) => {        this.kqhouseOptions = response.rows;      });    },    /* 远程模糊查询商品 */    goodsRemoteMethod(name) {      if (name == null || name === "") {        return false;      }      let queryParams = { pageNum: 1, pageSize: 10, fName: name };      listGoods(queryParams).then((response) => {        this.goodsOptions = response.rows;      });    },    /* 远程模糊查询用户 */    corpsRemoteMethod(name) {      if (name == null || name === "") {        return false;      }      let queryParams = { pageNum: 1, pageSize: 10, fName: name };      listCorps(queryParams).then((response) => {        this.fMblnoOptions = response.rows;        this.KHblnoOptions = response.rows;      });    },    /** 查询库存总账列表 */    getList() {      this.loading = true;      this.getDicts("approval_process").then((response) => {        this.options = response.data;      });      listpayable(this.queryParams).then((response) => {        this.payableList = response.rows;        this.total = response.total;        this.loading = false;      });    },    // 取消按钮    cancel() {      this.open = false;      this.reset();    },    // 表单重置    reset() {      this.form = {        fAccyear: null,        fId: null,        fAccmonth: null,        fCorpid: null,        fMblno: null,        fOriginalbillno: null,        fWarehouseLocationid: null,        fGoodsid: null,        fTrademodeid: null,        fPreqty: null,        fPregrossweight: null,        fPrenetweight: null,        fQtyd: null,        fVolumnd: null,        fGrossweightd: null,        fNetweightd: null,        fVolumnc: null,        fQtyc: null,        fQtyblc: null,        fGrossweightc: null,        fNetweightc: null,        fGrossweightblc: null,        fNetweightblc: null,        fCntrno: null,        fStatus: "0",        delFlag: null,        createBy: null,        fMarks: null,        createTime: null,        updateBy: null,        updateTime: null,        remark: null,      };      this.resetForm("form");    },    /** 搜索按钮操作 */    handleQuery() {      this.queryParams.pageNum = 1;      this.getList();    },    /** 重置按钮操作 */    resetQuery() {      this.resetForm("queryForm");      this.handleQuery();    },    /** 新增按钮操作 */    handleAdd() {      this.reset();      this.open = true;      this.title = "添加库存总账";    },    /** 提交按钮 */    submitForm() {      this.$refs["form"].validate((valid) => {        if (valid) {          if (this.form.fAccyear != null) {            updateWhgenleg(this.form).then((response) => {              this.msgSuccess("修改成功");              this.open = false;              this.getList();            });          } else {            addWhgenleg(this.form).then((response) => {              this.msgSuccess("新增成功");              this.open = false;              this.getList();            });          }        }      });    },    /** 导出按钮操作 */    handleExport() {      const queryParams = this.queryParams;      this.$confirm("是否确认导出所有应付总账数据项?", "警告", {        confirmButtonText: "确定",        cancelButtonText: "取消",        type: "warning",      })        .then(function () {          return exportWhgenleg(queryParams);        })        .then((response) => {          this.download(response.msg);        });    },  },};</script><style lang="scss">.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>
 |