jiangping
2025-06-06 a2299a6d4a6f99e9c11132138f5d3e9ec68f03ea
admin/src/views/stock/components/inventoryDetails.vue
@@ -10,62 +10,72 @@
            <div class="list">
                <div class="item">
                    <div class="la">盘点单名称</div>
                    <div class="val">库存盘点20241212</div>
                    <div class="val">{{info.name}}</div>
                </div>
                <div class="item">
                    <div class="la">盘点日期</div>
                    <div class="val">2024-11-17</div>
                    <div class="val">{{info.planDate}}</div>
                </div>
                <div class="item">
                    <div class="la">盘点仓库</div>
                    <div class="val">仓库1</div>
                    <div class="val">{{info.warehouseName}}</div>
                </div>
                <div class="item">
                    <div class="la">盘点员</div>
                    <div class="val">张三</div>
                    <div class="val">{{info.userName}}</div>
                </div>
                <div class="item">
                    <div class="la">盘点状态</div>
                    <div class="val">已完成</div>
                    <div class="val" v-if="info.status === 0">未开始</div>
                    <div class="val" v-if="info.status === 1">进行中</div>
                    <div class="val" v-if="info.status === 2">已完成</div>
                    <div class="val" v-if="info.status === 3">已取消</div>
                </div>
            </div>
            <div class="title">盘点结果</div>
            <div class="list">
                <div class="list_search">
                    <div class="list_search_left">
                        <el-input v-model="input" style="width: 200px; margin-right: 10px;" placeholder="请输入内容"></el-input>
                        <el-select v-model="input" style="width: 200px; margin-right: 10px;" placeholder="请选择">
                            <el-option
                                v-for="item in options"
                                :key="item.value"
                                :label="item.label"
                                :value="item.value">
                            </el-option>
                        <el-input v-model="form.materialCode" style="width: 200px; margin-right: 10px;" placeholder="请输入物料名称/编码"></el-input>
                        <el-select v-model="form.status" style="width: 150px; margin-right: 10px;" placeholder="盘点状态">
                            <el-option label="已盘" :value="1"></el-option>
                            <el-option label="未盘" :value="2"></el-option>
                        </el-select>
                        <el-button type="primary">查询</el-button>
                        <el-button>清空</el-button>
                        <el-button>导出</el-button>
                        <el-select v-model="form.type" style="width: 150px; margin-right: 10px;" placeholder="盘点结果">
                            <el-option label="账实相符" :value="0"></el-option>
                            <el-option label="盘亏" :value="1"></el-option>
                            <el-option label="盘盈" :value="2"></el-option>
                        </el-select>
                        <el-button type="primary" @click="getList">查询</el-button>
                        <el-button @click="clear">清空</el-button>
                        <el-button @click="exportExcel">导出</el-button>
                    </div>
                    <div class="list_search_right">
                        <span>已盘:100</span>
                        <span>未盘:20</span>
                        <span>账实相符:88</span>
                        <span>盘盈:2</span>
                        <span>盘亏:20</span>
                        <span>已盘:{{info.finishAmount || 0}}</span>
                        <span>未盘:{{info.unFinishAmount || 0}}</span>
                        <span>账实相符:{{info.equalAmount || 0}}</span>
                        <span>盘盈:{{info.profitAmount || 0}}</span>
                        <span>盘亏:{{info.lossAmount || 0}}</span>
                    </div>
                </div>
                <div style="width: 100%; margin: 20px 0;">
                    <el-table :data="roomList" stripe>
                        <el-table-column prop="projectName" label="资产编码" show-overflow-tooltip />
                        <el-table-column prop="buildingName" label="资产名称" show-overflow-tooltip />
                        <el-table-column prop="buildingName" label="条码" show-overflow-tooltip />
                        <el-table-column prop="buildingName" label="品牌" show-overflow-tooltip />
                        <el-table-column prop="buildingName" label="规格型号" show-overflow-tooltip />
                        <el-table-column prop="buildingName" label="单位" show-overflow-tooltip />
                        <el-table-column prop="buildingName" label="所在仓库" show-overflow-tooltip />
                        <el-table-column prop="buildingName" label="账面数量" show-overflow-tooltip />
                        <el-table-column prop="buildingName" label="盘点数量" show-overflow-tooltip />
                        <el-table-column prop="buildingName" label="备注" show-overflow-tooltip />
                    <el-table :data="list" stripe>
                        <el-table-column prop="materialCode" label="物料编码" show-overflow-tooltip />
                        <el-table-column prop="materialName" label="物料名称" show-overflow-tooltip />
                        <el-table-column prop="materialQrcode" label="条码" show-overflow-tooltip />
                        <el-table-column prop="materialBrand" label="品牌" show-overflow-tooltip />
                        <el-table-column prop="materialAttr" label="规格型号" show-overflow-tooltip />
                        <el-table-column prop="materialUnitName" label="单位" show-overflow-tooltip />
                        <el-table-column prop="warehouseName" label="所在仓库" show-overflow-tooltip />
                        <el-table-column prop="stock" label="账面数量" show-overflow-tooltip />
                        <el-table-column label="盘点数量" show-overflow-tooltip>
                            <template slot-scope="{row}">
                                <span style="color: green;" v-if="row.type === 1">{{row.actStock}}</span>
                                <span style="color: red;" v-else-if="row.type === 2">{{row.actStock}}</span>
                                <span v-else>{{row.actStock}}</span>
                            </template>
                        </el-table-column>
                        <el-table-column prop="remark" label="备注" show-overflow-tooltip />
                    </el-table>
                </div>
                <div class="list_pagination">
@@ -87,6 +97,7 @@
<script>
  import GlobalWindow from '@/components/common/GlobalWindow'
  import BaseOpera from '@/components/base/BaseOpera'
  import { ywStocktakingRecordPage, getById, exportExcel } from '@/api/ywStocktaking'
  export default {
    name: "inventoryDetails",
    components: {
@@ -95,26 +106,83 @@
    extends: BaseOpera,
    data() {
      return {
        id: null,
        info: {},
        input: '',
        options: [],
        roomList: [],
        list: [],
        form: {
          materialCode: '',
          status: '',
          type: ''
        },
        pageSize: 10,
        total: 0,
        page: 1
      }
    },
    methods: {
      exportExcel () {
        this.$dialog.exportConfirm('确认导出吗?')
          .then(() => {
            exportExcel({
              page: this.page,
              capacity: 1000000,
              model: {
                ...this.form,
                stocktakingId: this.id
              }
            })
              .then(response => {
                this.download(response)
              })
              .catch(e => {
                this.$tip.apiFailed(e)
              })
          })
          .catch(() => {})
      },
      handleSizeChange(size) {
        this.pageSize = size
        this.getList()
      },
      handleCurrentChange(page) {
        this.page = page
        this.getList()
      },
      open (title) {
      open (title, id) {
        this.title = title
        this.visible = true
        this.id = id
        this.getDetails()
        this.getList()
      },
      getDetails() {
        getById(this.id)
            .then(res => {
              this.info = res
            })
      },
      clear() {
        this.form.name = ''
        this.form.status = ''
        this.form.type = ''
        this.form.materialCode = ''
        this.page = 1
        this.getList()
      },
      getList() {
        ywStocktakingRecordPage({
          capacity: this.pageSize,
          page: this.page,
          model: {
            stocktakingId: this.id,
            materialCode: this.form.materialCode,
            status: this.form.status,
            type: this.form.type
          }
        }).then(res => {
          this.list = res.records
          this.total = res.total
        })
      }
    }
  }