|
@@ -0,0 +1,988 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <transition appear enter-active-class="animated fadeIn">
|
|
|
+ <q-table
|
|
|
+ class="my-sticky-header-column-table shadow-24"
|
|
|
+ :data="table_list"
|
|
|
+ row-key="id"
|
|
|
+ :separator="separator"
|
|
|
+ :loading="loading"
|
|
|
+ :columns="columns"
|
|
|
+ hide-bottom
|
|
|
+ :pagination.sync="pagination"
|
|
|
+ no-data-label="No data"
|
|
|
+ no-results-label="No data you want"
|
|
|
+ :table-style="{ height: height }"
|
|
|
+ flat
|
|
|
+ bordered
|
|
|
+ >
|
|
|
+ <template v-slot:top>
|
|
|
+ <q-btn-group push>
|
|
|
+ <q-btn :label="$t('refresh')" icon="refresh" @click="reFresh()">
|
|
|
+ <q-tooltip
|
|
|
+ content-class="bg-amber text-black shadow-4"
|
|
|
+ :offset="[10, 10]"
|
|
|
+ content-style="font-size: 12px"
|
|
|
+ >{{ $t("refreshtip") }}</q-tooltip
|
|
|
+ >
|
|
|
+ </q-btn>
|
|
|
+ </q-btn-group>
|
|
|
+ <q-space />
|
|
|
+ <div class="flex items-center">
|
|
|
+ <q-input
|
|
|
+ outlined
|
|
|
+ rounded
|
|
|
+ dense
|
|
|
+ debounce="200"
|
|
|
+ color="primary"
|
|
|
+ v-model="filter"
|
|
|
+ :placeholder="'输入单据编号搜索'"
|
|
|
+ @input="getSearchList()"
|
|
|
+ @keyup.enter="getSearchList()"
|
|
|
+ >
|
|
|
+ <template v-slot:append>
|
|
|
+ <q-icon name="search" />
|
|
|
+ </template>
|
|
|
+ </q-input>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template v-slot:body="props">
|
|
|
+ <q-tr :props="props">
|
|
|
+ <template v-if="props.row.id === editid">
|
|
|
+ <q-td key="detail" :props="props">
|
|
|
+ <q-btn
|
|
|
+ round
|
|
|
+ flat
|
|
|
+ push
|
|
|
+ color="black"
|
|
|
+ icon="description"
|
|
|
+ @click="detailData(props.row)"
|
|
|
+ >
|
|
|
+ <q-tooltip
|
|
|
+ content-class="bg-amber text-black shadow-4"
|
|
|
+ :offset="[10, 10]"
|
|
|
+ content-style="font-size: 12px"
|
|
|
+ >{{ "查看单据详情" }}</q-tooltip
|
|
|
+ >
|
|
|
+ </q-btn>
|
|
|
+ </q-td>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="props.row.id !== editid">
|
|
|
+ <q-td key="detail" :props="props">
|
|
|
+ <q-btn
|
|
|
+ round
|
|
|
+ flat
|
|
|
+ push
|
|
|
+ color="black"
|
|
|
+ icon="description"
|
|
|
+ @click="detailData(props.row)"
|
|
|
+ >
|
|
|
+ <q-tooltip
|
|
|
+ content-class="bg-amber text-black shadow-4"
|
|
|
+ :offset="[10, 10]"
|
|
|
+ content-style="font-size: 12px"
|
|
|
+ >{{ "查看批次详情" }}</q-tooltip
|
|
|
+ >
|
|
|
+ </q-btn>
|
|
|
+ </q-td>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-if="props.row.id === editid">
|
|
|
+ <q-td key="billId" :props="props">{{ props.row.billId }}</q-td>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="props.row.id !== editid">
|
|
|
+ <q-td key="billId" :props="props">{{ props.row.billId }}</q-td>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-if="props.row.id === editid">
|
|
|
+ <q-td key="number" :props="props">{{ props.row.number }}</q-td>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="props.row.id !== editid">
|
|
|
+ <q-td key="number" :props="props">{{ props.row.number }}</q-td>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-if="props.row.id === editid">
|
|
|
+ <q-td key="type" :props="props">
|
|
|
+ <q-select
|
|
|
+ dense
|
|
|
+ outlined
|
|
|
+ square
|
|
|
+ v-model="editFormData.type"
|
|
|
+ :label="'单据类型'"
|
|
|
+ autofocus
|
|
|
+ :options="bound_code_type_list"
|
|
|
+ option-label="label"
|
|
|
+ option-value="value"
|
|
|
+ emit-value
|
|
|
+ map-options
|
|
|
+ transition-show="scale"
|
|
|
+ transition-hide="scale"
|
|
|
+ :rules="[(val) => (val && val.length > 0) || error1]"
|
|
|
+ />
|
|
|
+ </q-td>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="props.row.id !== editid">
|
|
|
+ <q-td key="type" :props="props">
|
|
|
+ {{ formatBSType(props.row.type) || props.row.type }}</q-td
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-if="props.row.id === editid">
|
|
|
+ <q-td key="department" :props="props">
|
|
|
+ <q-select
|
|
|
+ dense
|
|
|
+ outlined
|
|
|
+ square
|
|
|
+ v-model="editFormData.department"
|
|
|
+ :label="'部门'"
|
|
|
+ :options="bound_department_list"
|
|
|
+ option-label="label"
|
|
|
+ option-value="value"
|
|
|
+ emit-value
|
|
|
+ map-options
|
|
|
+ transition-show="scale"
|
|
|
+ transition-hide="scale"
|
|
|
+ :rules="[(val) => (val && val.length > 0) || error1]"
|
|
|
+ />
|
|
|
+ </q-td>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="props.row.id !== editid">
|
|
|
+ <q-td key="department" :props="props">
|
|
|
+ {{
|
|
|
+ bound_department_map[props.row.department] ||
|
|
|
+ props.row.department
|
|
|
+ }}</q-td
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-if="props.row.id === editid">
|
|
|
+ <q-td key="date" :props="props">{{ props.row.date }}</q-td>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="props.row.id !== editid">
|
|
|
+ <q-td key="date" :props="props">{{ props.row.date }}</q-td>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-if="props.row.id === editid">
|
|
|
+ <q-td key="creater" :props="props">
|
|
|
+ <q-input
|
|
|
+ dense
|
|
|
+ outlined
|
|
|
+ square
|
|
|
+ v-model.number="editFormData.creater"
|
|
|
+ :label="'经办人'"
|
|
|
+ :rules="[(val) => (val && val > 0) || error1]"
|
|
|
+ />
|
|
|
+ </q-td>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="props.row.id !== editid">
|
|
|
+ <q-td key="creater" :props="props">{{ props.row.creater }}</q-td>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-if="props.row.id === editid">
|
|
|
+ <q-td key="bound_status" :props="props">
|
|
|
+ {{
|
|
|
+ formatStatusType(props.row.bound_status) ||
|
|
|
+ props.row.bound_status
|
|
|
+ }}</q-td
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ <template v-else-if="props.row.id !== editid">
|
|
|
+ <q-td key="bound_status" :props="props">
|
|
|
+ {{
|
|
|
+ formatStatusType(props.row.bound_status) ||
|
|
|
+ props.row.bound_status
|
|
|
+ }}</q-td
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-if="!editMode">
|
|
|
+ <q-td key="action" :props="props" style="width: 100px">
|
|
|
+ <q-btn
|
|
|
+ round
|
|
|
+ flat
|
|
|
+ push
|
|
|
+ color="dark"
|
|
|
+ icon="trolley"
|
|
|
+ @click="change_status(props.row)"
|
|
|
+ >
|
|
|
+ <q-tooltip
|
|
|
+ content-class="bg-amber text-black shadow-4"
|
|
|
+ :offset="[10, 10]"
|
|
|
+ content-style="font-size: 12px"
|
|
|
+ >单据无误</q-tooltip
|
|
|
+ >
|
|
|
+ </q-btn>
|
|
|
+ </q-td>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="editMode">
|
|
|
+ <template v-if="props.row.id === editid">
|
|
|
+ <q-td key="action" :props="props" style="width: 100px">
|
|
|
+ <q-btn
|
|
|
+ round
|
|
|
+ flat
|
|
|
+ push
|
|
|
+ color="secondary"
|
|
|
+ icon="check"
|
|
|
+ @click="editDataSubmit()"
|
|
|
+ >
|
|
|
+ <q-tooltip
|
|
|
+ content-class="bg-amber text-black shadow-4"
|
|
|
+ :offset="[10, 10]"
|
|
|
+ content-style="font-size: 12px"
|
|
|
+ >{{ $t("confirmedit") }}</q-tooltip
|
|
|
+ >
|
|
|
+ </q-btn>
|
|
|
+ <q-btn
|
|
|
+ round
|
|
|
+ flat
|
|
|
+ push
|
|
|
+ color="red"
|
|
|
+ icon="close"
|
|
|
+ @click="editDataCancel()"
|
|
|
+ >
|
|
|
+ <q-tooltip
|
|
|
+ content-class="bg-amber text-black shadow-4"
|
|
|
+ :offset="[10, 10]"
|
|
|
+ content-style="font-size: 12px"
|
|
|
+ >{{ $t("canceledit") }}</q-tooltip
|
|
|
+ >
|
|
|
+ </q-btn>
|
|
|
+ </q-td>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="props.row.id !== editid"></template>
|
|
|
+ </template>
|
|
|
+ </q-tr>
|
|
|
+ </template>
|
|
|
+ </q-table>
|
|
|
+ </transition>
|
|
|
+ <template>
|
|
|
+ <div v-show="max !== 0" class="q-pa-lg flex flex-center">
|
|
|
+ <div>{{ total }}</div>
|
|
|
+ <q-pagination
|
|
|
+ v-model="current"
|
|
|
+ color="black"
|
|
|
+ :max="max"
|
|
|
+ :max-pages="6"
|
|
|
+ boundary-links
|
|
|
+ @click="
|
|
|
+ getSearchList(current);
|
|
|
+ paginationIpt = current;
|
|
|
+ "
|
|
|
+ />
|
|
|
+ <div>
|
|
|
+ <input
|
|
|
+ v-model="paginationIpt"
|
|
|
+ @blur="changePageEnter"
|
|
|
+ @keyup.enter="changePageEnter"
|
|
|
+ style="width: 60px; text-align: center"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-show="max === 0" class="q-pa-lg flex flex-center">
|
|
|
+ <q-btn flat push color="dark" :label="$t('no_data')"></q-btn>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <q-dialog
|
|
|
+ v-model="detailForm"
|
|
|
+ transition-show="jump-down"
|
|
|
+ transition-hide="jump-up"
|
|
|
+ >
|
|
|
+ <q-card style="min-width: 900px; position: relative">
|
|
|
+ <q-bar
|
|
|
+ class="bg-light-blue-10 text-white rounded-borders"
|
|
|
+ style="height: 50px"
|
|
|
+ >
|
|
|
+ <div>
|
|
|
+ {{ "单据信息" }}
|
|
|
+ </div>
|
|
|
+ <q-space></q-space>
|
|
|
+ <q-btn dense flat icon="close" v-close-popup>
|
|
|
+ <q-tooltip
|
|
|
+ content-class="bg-amber text-black shadow-4"
|
|
|
+ :offset="[20, 20]"
|
|
|
+ content-style="font-size: 12px"
|
|
|
+ >
|
|
|
+ {{ $t("index.close") }}</q-tooltip
|
|
|
+ >
|
|
|
+ </q-btn>
|
|
|
+ </q-bar>
|
|
|
+ <q-card-section class="q-pt-md">
|
|
|
+ <q-tabs v-model="activeTab">
|
|
|
+ <q-tab name="tab1" label="单据信息" />
|
|
|
+ <!-- <q-tab name="tab2" label="货物信息" /> -->
|
|
|
+ </q-tabs>
|
|
|
+ </q-card-section>
|
|
|
+ <!-- 选项卡内容 -->
|
|
|
+ <q-tab-panels v-model="activeTab" animated>
|
|
|
+ <q-tab-panel name="tab1" style="height: 70px">
|
|
|
+ <div class="row q-gutter-x-md">
|
|
|
+ <div class="col column q-gutter-y-md">
|
|
|
+ <q-input
|
|
|
+ dense
|
|
|
+ outlined
|
|
|
+ square
|
|
|
+ v-model="table_detail.date"
|
|
|
+ :label="'单据时间'"
|
|
|
+ :readonly="true"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="col column q-gutter-y-md">
|
|
|
+ <q-input
|
|
|
+ dense
|
|
|
+ outlined
|
|
|
+ square
|
|
|
+ v-model="table_detail.number"
|
|
|
+ :label="'单据编码'"
|
|
|
+ :readonly="true"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </q-tab-panel>
|
|
|
+ </q-tab-panels>
|
|
|
+
|
|
|
+ <div
|
|
|
+ style="float: right; padding: 15px 15px 50px 15px; min-width: 100%"
|
|
|
+ flow="row wrap"
|
|
|
+ >
|
|
|
+ <q-card class="q-mb-md" bordered>
|
|
|
+ <q-card-section>
|
|
|
+ <template>
|
|
|
+ <div class="text-h6 q-mb-md">{{ "批次信息" }}</div>
|
|
|
+ <template v-if="batch_detail.length > 0">
|
|
|
+ <div
|
|
|
+ v-for="(item, index) in batch_detail"
|
|
|
+ :key="index"
|
|
|
+ class="row q-col-gutter-md q-mb-sm"
|
|
|
+ >
|
|
|
+ <div class="col">
|
|
|
+ <q-input
|
|
|
+ v-model="item.entryIds"
|
|
|
+ :label="'明细id'"
|
|
|
+ :readonly="onlyread"
|
|
|
+ dense
|
|
|
+ outlined
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="col" style="min-width: 150px">
|
|
|
+ <q-input
|
|
|
+ v-model="item.production_batch"
|
|
|
+ :label="'批次号'"
|
|
|
+ :readonly="onlyread"
|
|
|
+ dense
|
|
|
+ outlined
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="col">
|
|
|
+ <q-input
|
|
|
+ v-model="item.goods_name"
|
|
|
+ :label="'货物名称'"
|
|
|
+ :readonly="onlyread"
|
|
|
+ dense
|
|
|
+ outlined
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="col">
|
|
|
+ <q-input
|
|
|
+ v-model="item.plan_qty"
|
|
|
+ :label="'计划数量'"
|
|
|
+ :readonly="onlyread"
|
|
|
+ dense
|
|
|
+ outlined
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="col">
|
|
|
+ <q-input
|
|
|
+ v-model="item.goods_unit"
|
|
|
+ :label="'单位'"
|
|
|
+ :readonly="onlyread"
|
|
|
+ dense
|
|
|
+ outlined
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ </q-card-section>
|
|
|
+ </q-card>
|
|
|
+ </div>
|
|
|
+ </q-card>
|
|
|
+ </q-dialog>
|
|
|
+ <q-dialog
|
|
|
+ v-model="confirmForm"
|
|
|
+ position="top"
|
|
|
+ transition-show="scale"
|
|
|
+ transition-hide="scale"
|
|
|
+ >
|
|
|
+ <q-card class="shadow-24">
|
|
|
+ <q-card-section style="max-height: 325px; width: 500px" class="scroll">
|
|
|
+ <div class="text-h6 q-mb-md">{{ "确认入库单" }}</div>
|
|
|
+ 确定现场数目与入库汇报{{ choose_bill_code }}单计划数目一致吗?
|
|
|
+ </q-card-section>
|
|
|
+ <div style="float: right; padding: 15px 15px 15px 0">
|
|
|
+ <q-btn
|
|
|
+ color="white"
|
|
|
+ text-color="black"
|
|
|
+ style="margin-right: 25px"
|
|
|
+ @click="confirmForm = false"
|
|
|
+ >{{ $t("cancel") }}</q-btn
|
|
|
+ >
|
|
|
+ <q-btn color="primary" @click="confirm_status">{{
|
|
|
+ $t("submit")
|
|
|
+ }}</q-btn>
|
|
|
+ </div>
|
|
|
+ </q-card>
|
|
|
+ </q-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<router-view />
|
|
|
+
|
|
|
+<script>
|
|
|
+import { getauth, postauth, putauth, deleteauth } from "boot/axios_request";
|
|
|
+
|
|
|
+import { date, exportFile, LocalStorage } from "quasar";
|
|
|
+import { QToggle } from "quasar";
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ QToggle,
|
|
|
+ },
|
|
|
+ name: "Pageasnlist",
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ createDate2: "",
|
|
|
+ date_range: "",
|
|
|
+ proxyDate: "",
|
|
|
+ date: "",
|
|
|
+ goods_code: "",
|
|
|
+ goods_desc: "",
|
|
|
+ openid: "",
|
|
|
+ login_name: "",
|
|
|
+ authin: "0",
|
|
|
+ warehouse_code: "",
|
|
|
+ warehouse_name: "",
|
|
|
+
|
|
|
+ searchUrl: "",
|
|
|
+ pathname: "wms/inboundBills/",
|
|
|
+ pathfilename: "bound/file/",
|
|
|
+
|
|
|
+ pathname_previous: "",
|
|
|
+ pathname_next: "",
|
|
|
+ separator: "cell",
|
|
|
+ loading: false,
|
|
|
+ height: "",
|
|
|
+
|
|
|
+ printObj: {
|
|
|
+ id: "printMe",
|
|
|
+ popTitle: this.$t("inbound.asn"),
|
|
|
+ },
|
|
|
+ table_list: [],
|
|
|
+ table_detail: {},
|
|
|
+ batch_detail: [],
|
|
|
+ bound_code_type_list: [],
|
|
|
+ bound_code_type_map: [],
|
|
|
+ bound_bs_type_list: [],
|
|
|
+ bound_bs_type_map: [],
|
|
|
+ bound_desc_list: [],
|
|
|
+ bound_desc_map: [],
|
|
|
+ bound_department_list: [],
|
|
|
+ bound_department_map: [],
|
|
|
+ bound_status_list: [],
|
|
|
+
|
|
|
+ product_list: [],
|
|
|
+ product_map: [],
|
|
|
+
|
|
|
+ columns: [
|
|
|
+ { name: "detail", label: "详情", field: "detail", align: "center" },
|
|
|
+ { name: "billId", label: "表单序号", field: "billId", align: "center" },
|
|
|
+ { name: "number", label: "单据编号", field: "number", align: "center" },
|
|
|
+ { name: "type", label: "业务类型", field: "type", align: "center" },
|
|
|
+ {
|
|
|
+ name: "department",
|
|
|
+ label: "部门",
|
|
|
+ field: "department",
|
|
|
+ align: "center",
|
|
|
+ },
|
|
|
+ { name: "date", label: "单据日期", field: "date", align: "center" },
|
|
|
+ { name: "creater", label: "经办人", field: "creater", align: "center" },
|
|
|
+ {
|
|
|
+ name: "bound_status",
|
|
|
+ label: "状态",
|
|
|
+ field: "bound_status",
|
|
|
+ align: "center",
|
|
|
+ },
|
|
|
+ { name: "action", label: "操作", align: "center" },
|
|
|
+ ],
|
|
|
+ filter: "",
|
|
|
+ product_filter: "",
|
|
|
+ pagination: {
|
|
|
+ page: 1,
|
|
|
+ rowsPerPage: 11,
|
|
|
+ },
|
|
|
+ newForm: false,
|
|
|
+ newBatchForm: false,
|
|
|
+ newFormData: {},
|
|
|
+ newBatchFormData: {},
|
|
|
+ newDetailFormData: {},
|
|
|
+ editid: 0,
|
|
|
+ editFormData: {},
|
|
|
+ editMode: false,
|
|
|
+ deleteForm: false,
|
|
|
+ detailForm: false,
|
|
|
+ deleteid: 0,
|
|
|
+ detailid: 0,
|
|
|
+ bar_code: "",
|
|
|
+ error1: this.$t("goods.view_goodslist.error1"),
|
|
|
+
|
|
|
+ max: 0,
|
|
|
+ total: 0,
|
|
|
+ paginationIpt: 1,
|
|
|
+ current: 1,
|
|
|
+ onlyread: false,
|
|
|
+ bound_batch_list: [],
|
|
|
+ activeTab: "tab1",
|
|
|
+ confirmForm: false,
|
|
|
+ choose_bill_id: "",
|
|
|
+ choose_bill_code: "",
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ interval() {
|
|
|
+ return (
|
|
|
+ this.$t("download_center.start") +
|
|
|
+ " - " +
|
|
|
+ this.$t("download_center.end")
|
|
|
+ );
|
|
|
+ },
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ formatBSType(type) {
|
|
|
+ switch (type) {
|
|
|
+ case 1:
|
|
|
+ return "生产入库申请";
|
|
|
+ case 2:
|
|
|
+ return "采购入库申请";
|
|
|
+ case 3:
|
|
|
+ return "其他入库";
|
|
|
+ case 4:
|
|
|
+ return "调拨入库";
|
|
|
+
|
|
|
+ default:
|
|
|
+ return "未知";
|
|
|
+ }
|
|
|
+ },
|
|
|
+ formatStatusType(type) {
|
|
|
+ switch (type) {
|
|
|
+ case 0:
|
|
|
+ return "待审核";
|
|
|
+ case 1:
|
|
|
+ return "确认无误";
|
|
|
+ case 3:
|
|
|
+ return "其他入库";
|
|
|
+ case 4:
|
|
|
+ return "调拨入库";
|
|
|
+
|
|
|
+ default:
|
|
|
+ return "未知";
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getList(params = {}) {
|
|
|
+ var _this = this;
|
|
|
+ _this.loading = true;
|
|
|
+ // 合并基础参数
|
|
|
+ const baseParams = {
|
|
|
+ page: _this.current,
|
|
|
+ base_type: "0",
|
|
|
+ page_size: _this.pagination.rowsPerPage,
|
|
|
+ };
|
|
|
+
|
|
|
+ // 创建URLSearchParams处理参数
|
|
|
+ const queryParams = new URLSearchParams({
|
|
|
+ ...baseParams,
|
|
|
+ ...params,
|
|
|
+ });
|
|
|
+ console.log(queryParams);
|
|
|
+ // 过滤空值参数
|
|
|
+ Array.from(queryParams.entries()).forEach(([key, value]) => {
|
|
|
+ if (value === "" || value === null || value === undefined) {
|
|
|
+ queryParams.delete(key);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ getauth(`${_this.pathname}?${queryParams}`)
|
|
|
+ .then((res) => {
|
|
|
+ _this.table_list = res.results;
|
|
|
+
|
|
|
+ _this.total = res.count;
|
|
|
+ _this.max = Math.ceil(res.count / _this.pagination.rowsPerPage) || 0;
|
|
|
+ _this.pathname_previous = res.previous;
|
|
|
+ _this.pathname_next = res.next;
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: err.detail,
|
|
|
+ icon: "close",
|
|
|
+ color: "negative",
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .finally(() => {
|
|
|
+ _this.loading = false;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ changePageEnter() {
|
|
|
+ if (Number(this.paginationIpt) < 1) {
|
|
|
+ this.current = 1;
|
|
|
+ this.paginationIpt = 1;
|
|
|
+ } else if (Number(this.paginationIpt) > this.max) {
|
|
|
+ this.current = this.max;
|
|
|
+ this.paginationIpt = this.max;
|
|
|
+ } else {
|
|
|
+ this.current = Number(this.paginationIpt);
|
|
|
+ }
|
|
|
+ this.getSearchList(this.current);
|
|
|
+ },
|
|
|
+
|
|
|
+ // 带搜索条件加载
|
|
|
+ getSearchList(page = 1) {
|
|
|
+ this.current = page;
|
|
|
+ this.paginationIpt = page;
|
|
|
+ this.getList({
|
|
|
+ number__icontains: this.filter,
|
|
|
+ document_date__range: this.date_range,
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getfileList() {
|
|
|
+ var _this = this;
|
|
|
+ _this.loading = true;
|
|
|
+ const params = {
|
|
|
+ goods_desc__icontains: _this.filter,
|
|
|
+ document_date__range: _this.date_range,
|
|
|
+ };
|
|
|
+ const queryParams = new URLSearchParams({
|
|
|
+ ...params,
|
|
|
+ });
|
|
|
+ console.log(queryParams);
|
|
|
+ // 过滤空值参数
|
|
|
+ Array.from(queryParams.entries()).forEach(([key, value]) => {
|
|
|
+ if (value === "" || value === null || value === undefined) {
|
|
|
+ queryParams.delete(key);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ console.log(`${_this.pathfilename}?${queryParams}`);
|
|
|
+ getauth(`${_this.pathfilename}?${queryParams}`)
|
|
|
+ .then((res) => {
|
|
|
+ var timeStamp = Date.now();
|
|
|
+ var formattedString = date.formatDate(timeStamp, "YYYYMMDDHHmmss");
|
|
|
+ const status = exportFile(
|
|
|
+ _this.pathfilename + "list" + formattedString + ".csv",
|
|
|
+ "\uFEFF" + res,
|
|
|
+ "text/csv"
|
|
|
+ );
|
|
|
+ if (status !== true) {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: "Browser denied file download...",
|
|
|
+ color: "negative",
|
|
|
+ icon: "warning",
|
|
|
+ });
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: err.detail,
|
|
|
+ icon: "close",
|
|
|
+ color: "negative",
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .finally(() => {
|
|
|
+ _this.loading = false;
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ getListPrevious() {
|
|
|
+ var _this = this;
|
|
|
+ if (LocalStorage.has("auth")) {
|
|
|
+ getauth(_this.pathname_previous, {})
|
|
|
+ .then((res) => {
|
|
|
+ _this.table_list = res.results;
|
|
|
+ _this.pathname_previous = res.previous;
|
|
|
+ _this.pathname_next = res.next;
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: err.detail,
|
|
|
+ icon: "close",
|
|
|
+ color: "negative",
|
|
|
+ });
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getListNext() {
|
|
|
+ var _this = this;
|
|
|
+ if (LocalStorage.has("auth")) {
|
|
|
+ getauth(_this.pathname_next, {})
|
|
|
+ .then((res) => {
|
|
|
+ _this.table_list = res.results;
|
|
|
+
|
|
|
+ _this.pathname_previous = res.previous;
|
|
|
+ _this.pathname_next = res.next;
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: err.detail,
|
|
|
+ icon: "close",
|
|
|
+ color: "negative",
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ reFresh() {
|
|
|
+ var _this = this;
|
|
|
+ _this.getSearchList();
|
|
|
+ },
|
|
|
+
|
|
|
+ change_status(e) {
|
|
|
+ var _this = this;
|
|
|
+ // _this.loading = true
|
|
|
+ _this.detailData(e);
|
|
|
+ _this.confirmForm = true;
|
|
|
+ _this.choose_bill_id = e.billId;
|
|
|
+ _this.choose_bill_code = e.number;
|
|
|
+ },
|
|
|
+ confirm_status() {
|
|
|
+ var _this = this;
|
|
|
+ _this.loading = true;
|
|
|
+ const params = {
|
|
|
+ billId: _this.choose_bill_id,
|
|
|
+ };
|
|
|
+ postauth("wms/generateinbound", params)
|
|
|
+ .then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: "入库单生成成功,请到入库管理中查看",
|
|
|
+ icon: "check",
|
|
|
+ color: "green",
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (res.code == 400) {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: res.error,
|
|
|
+ icon: "info",
|
|
|
+ color: "info",
|
|
|
+ });
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .finally(() => {
|
|
|
+ _this.loading = false;
|
|
|
+ _this.confirmForm = false;
|
|
|
+ _this.getSearchList();
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ detailData(e) {
|
|
|
+ var _this = this;
|
|
|
+ _this.detailForm = true;
|
|
|
+ _this.detailid = e.billId;
|
|
|
+ console.log("detail查询的id是:", _this.detailid);
|
|
|
+ getauth(_this.pathname + _this.detailid + "/")
|
|
|
+ .then((res) => {
|
|
|
+ _this.table_detail = res;
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: err.detail,
|
|
|
+ icon: "close",
|
|
|
+ color: "negative",
|
|
|
+ });
|
|
|
+ });
|
|
|
+ console.log("detail查询的结果是:", _this.table_detail);
|
|
|
+
|
|
|
+ getauth("wms/materials/?bound_billId=" + _this.detailid)
|
|
|
+ .then((res) => {
|
|
|
+ _this.batch_detail = res.results;
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: err.detail,
|
|
|
+ icon: "close",
|
|
|
+ color: "negative",
|
|
|
+ });
|
|
|
+ });
|
|
|
+ console.log("batch查询的结果是:", _this.batch_detail);
|
|
|
+ console.log("batch长度查询的结果是:", _this.batch_detail.length);
|
|
|
+ },
|
|
|
+ deleteDataSubmit() {
|
|
|
+ var _this = this;
|
|
|
+ deleteauth(_this.pathname + _this.deleteid + "/")
|
|
|
+ .then((res) => {
|
|
|
+ _this.deleteDataCancel();
|
|
|
+ _this.getSearchList();
|
|
|
+ _this.$q.notify({
|
|
|
+ message: "成功删除数据",
|
|
|
+ icon: "check",
|
|
|
+ color: "green",
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: err.detail,
|
|
|
+ icon: "close",
|
|
|
+ color: "negative",
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ deleteDataCancel() {
|
|
|
+ var _this = this;
|
|
|
+ _this.deleteForm = false;
|
|
|
+ _this.deleteid = 0;
|
|
|
+ },
|
|
|
+
|
|
|
+ updateProxy() {
|
|
|
+ var _this = this;
|
|
|
+ _this.proxyDate = _this.date;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ var _this = this;
|
|
|
+ if (LocalStorage.has("openid")) {
|
|
|
+ _this.openid = LocalStorage.getItem("openid");
|
|
|
+ } else {
|
|
|
+ _this.openid = "";
|
|
|
+ LocalStorage.set("openid", "");
|
|
|
+ }
|
|
|
+ if (LocalStorage.has("warehouse_code")) {
|
|
|
+ _this.warehouse_code = LocalStorage.getItem("warehouse_code");
|
|
|
+ }
|
|
|
+ if (LocalStorage.has("warehouse_name")) {
|
|
|
+ _this.warehouse_name = LocalStorage.getItem("warehouse_name");
|
|
|
+ }
|
|
|
+ if (LocalStorage.has("login_name")) {
|
|
|
+ _this.login_name = LocalStorage.getItem("login_name");
|
|
|
+ } else {
|
|
|
+ _this.login_name = "";
|
|
|
+ LocalStorage.set("login_name", "");
|
|
|
+ }
|
|
|
+ if (LocalStorage.has("auth")) {
|
|
|
+ const timeStamp = Date.now();
|
|
|
+ const formattedString = date.formatDate(timeStamp, "YYYY/MM/DD");
|
|
|
+ _this.date = formattedString;
|
|
|
+ console.log(_this.date);
|
|
|
+ _this.authin = "1";
|
|
|
+ _this.getList();
|
|
|
+ } else {
|
|
|
+ _this.authin = "0";
|
|
|
+ }
|
|
|
+ getauth("warehouse/boundcodetype/", {})
|
|
|
+ .then((res) => {
|
|
|
+ _this.bound_code_type_list = res.results.map((item) => ({
|
|
|
+ label: item.bound_code_type_name,
|
|
|
+ value: item.bound_code_type_code,
|
|
|
+ }));
|
|
|
+ // 编码 → 名称的映射(普通对象,确保响应式)
|
|
|
+ _this.bound_code_type_map = res.results.reduce((acc, item) => {
|
|
|
+ acc[item.bound_code_type_code] = item.bound_code_type_name;
|
|
|
+ return acc;
|
|
|
+ }, {});
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: err.detail,
|
|
|
+ icon: "close",
|
|
|
+ color: "negative",
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ getauth("warehouse/boundtype/", {})
|
|
|
+ .then((res) => {
|
|
|
+ _this.bound_desc_list = res.results.map((item) => ({
|
|
|
+ label: item.bound_type_name,
|
|
|
+ value: item.bound_type_code,
|
|
|
+ }));
|
|
|
+ // 编码 → 名称的映射(普通对象,确保响应式)
|
|
|
+ _this.bound_desc_map = res.results.reduce((acc, item) => {
|
|
|
+ acc[item.bound_type_code] = item.bound_type_name;
|
|
|
+ return acc;
|
|
|
+ }, {});
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: err.detail,
|
|
|
+ icon: "close",
|
|
|
+ color: "negative",
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ getauth("warehouse/department/", {})
|
|
|
+ .then((res) => {
|
|
|
+ _this.bound_department_list = res.results.map((item) => ({
|
|
|
+ label: item.department_name,
|
|
|
+ value: item.department_code,
|
|
|
+ }));
|
|
|
+ _this.bound_department_map = res.results.reduce((acc, item) => {
|
|
|
+ acc[item.department_code] = item.department_name;
|
|
|
+ return acc;
|
|
|
+ }, {});
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: err.detail,
|
|
|
+ icon: "close",
|
|
|
+ color: "negative",
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ getauth("warehouse/boundbusiness/", {})
|
|
|
+ .then((res) => {
|
|
|
+ _this.bound_bs_type_list = res.results.map((item) => ({
|
|
|
+ label: item.bound_bs_name,
|
|
|
+ value: item.bound_bs_code,
|
|
|
+ }));
|
|
|
+ // 编码 → 名称的映射(普通对象,确保响应式)
|
|
|
+ _this.bound_bs_type_map = res.results.reduce((acc, item) => {
|
|
|
+ acc[item.bound_bs_code] = item.bound_bs_name;
|
|
|
+ return acc;
|
|
|
+ }, {});
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: err.detail,
|
|
|
+ icon: "close",
|
|
|
+ color: "negative",
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ mounted() {
|
|
|
+ var _this = this;
|
|
|
+ if (_this.$q.platform.is.electron) {
|
|
|
+ _this.height = String(_this.$q.screen.height - 290) + "px";
|
|
|
+ } else {
|
|
|
+ _this.height = _this.$q.screen.height - 290 + "" + "px";
|
|
|
+ }
|
|
|
+ _this.newFormData.creater = _this.login_name;
|
|
|
+ },
|
|
|
+ updated() {},
|
|
|
+ destroyed() {},
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style scoped>
|
|
|
+/* 添加在 <style> 中 */
|
|
|
+.q-date__calendar-item--selected {
|
|
|
+ transition: all 0.3s ease;
|
|
|
+ background-color: #1976d2 !important;
|
|
|
+}
|
|
|
+
|
|
|
+.q-date__range {
|
|
|
+ background-color: rgba(25, 118, 210, 0.1);
|
|
|
+}
|
|
|
+
|
|
|
+:deep(.q-field__label) {
|
|
|
+ margin-top: 8px;
|
|
|
+ align-self: center;
|
|
|
+}
|
|
|
+
|
|
|
+:deep(.q-field__control-container) {
|
|
|
+ padding-left: 50px;
|
|
|
+ margin-top: -5px;
|
|
|
+}
|
|
|
+</style>
|