|
|
@@ -0,0 +1,1190 @@
|
|
|
+<template>
|
|
|
+ <div class="ele-body">
|
|
|
+ <el-card shadow="never">
|
|
|
+ <div class="page-title">
|
|
|
+ <PageHeader title="入库单修改"> </PageHeader>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <!-- <StatusStep :activeCode="infoData.verifyStatus" /> -->
|
|
|
+ <div class="stepsStatus">
|
|
|
+ <el-steps :active="active" align-center>
|
|
|
+ <el-step title="创建"></el-step>
|
|
|
+ <el-step title="待审核"></el-step>
|
|
|
+ <el-step :title="stepsTitle" :status="stepsStatus"></el-step>
|
|
|
+ </el-steps>
|
|
|
+ </div>
|
|
|
+ <div class="content-detail">
|
|
|
+ <header-title title="基本信息" size="16px"></header-title>
|
|
|
+
|
|
|
+ <div class="mt20">
|
|
|
+ <el-form label-width="120px">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="入库单:">
|
|
|
+ <span>{{ infoData.bizNo }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="入库物品类型:">
|
|
|
+ <span>{{ handleAssetType(extInfo.assetType) }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="入库场景:">
|
|
|
+ <span>{{ getSceneState(infoData.bizType) }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="销售订单:">
|
|
|
+ <span>{{ extInfo.documentSource }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="权属部门:">
|
|
|
+ <span>{{ extInfo.deptName }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="入库登记人:">
|
|
|
+ <span>{{ extInfo.createUserName }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <!-- <el-col :span="8">
|
|
|
+ <el-form-item label="创建时间:">
|
|
|
+ <span>{{ infoData.createTime }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col> -->
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="入库时间:">
|
|
|
+ <span>{{ infoData.createTime }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="状态:">
|
|
|
+ <span>{{ getAuditStatus(infoData.verifyStatus) }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="审核人:">
|
|
|
+ <span>{{ infoData.verifyName }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8" v-if="infoData.bizType == 2">
|
|
|
+ <el-form-item label="客户:">
|
|
|
+ <span>{{ infoData.clientName }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <!-- <el-col :span="8" v-if="infoData.bizType == 2">
|
|
|
+ <el-form-item label="客户代码:">
|
|
|
+ <span>{{ infoData.clientCode }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col> -->
|
|
|
+ <el-col :span="8" v-if="infoData.bizType == 2">
|
|
|
+ <el-form-item label="供应商:">
|
|
|
+ <span>{{ extInfo.supplierName }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <!-- <el-col :span="8" v-if="infoData.bizType != 2">
|
|
|
+ <el-form-item label="供应商代码:">
|
|
|
+ <span>{{ extInfo.supplierCode }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col> -->
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="送货人:">
|
|
|
+ <span>{{ infoData.fromUser }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="送货人联系方式:">
|
|
|
+ <span>{{ extInfo.deliveryPhone }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="附件:">
|
|
|
+ <!-- <el-link
|
|
|
+ type="primary"
|
|
|
+ v-for="(item, index) in infoData.contentImage"
|
|
|
+ @click="contentImageDownload(item)"
|
|
|
+ :key="item.name"
|
|
|
+ >{{ item.name }}</el-link
|
|
|
+ > -->
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="备注:">
|
|
|
+ <span>{{ infoData.remark }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="content-detail mt20">
|
|
|
+ <header-title title="物品信息" size="16px"></header-title>
|
|
|
+ <!-- =={{ warehousingMaterialList }} -->
|
|
|
+ <div class="mt20">
|
|
|
+ <div class="mt10">
|
|
|
+ <el-form
|
|
|
+ ref="warehousingMaterialListRef"
|
|
|
+ :model="{ warehousingMaterialList: warehousingMaterialList }"
|
|
|
+ :show-message="false"
|
|
|
+ >
|
|
|
+ <el-table
|
|
|
+ ref="multipleTable"
|
|
|
+ :data="warehousingMaterialList"
|
|
|
+ tooltip-effect="dark"
|
|
|
+ :key="infoData.assetType"
|
|
|
+ style="width: 100%"
|
|
|
+ stripe
|
|
|
+ :header-cell-style="rowClass"
|
|
|
+ >
|
|
|
+ <el-table-column label="序号" type="index" width="50">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="编码"
|
|
|
+ prop="categoryCode"
|
|
|
+ align="center"
|
|
|
+ width="150"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="名称"
|
|
|
+ align="center"
|
|
|
+ width="170"
|
|
|
+ prop="name"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ v-for="(item, index) in tableHeader"
|
|
|
+ :key="index"
|
|
|
+ align="center"
|
|
|
+ :label="item.label"
|
|
|
+ width="150"
|
|
|
+ :prop="item.prop"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <template v-if="item.formatter">{{
|
|
|
+ item.formatter(row)
|
|
|
+ }}</template>
|
|
|
+ <template v-else>{{ row[item.prop] }}</template>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="批次号"
|
|
|
+ prop="batchNo"
|
|
|
+ width="70"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="最小包装单元"
|
|
|
+ align="center"
|
|
|
+ prop="minPackingCount"
|
|
|
+ width="100"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ label=""
|
|
|
+ prop="minPackingCount"
|
|
|
+ width="100"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row, $index }">
|
|
|
+ <template v-if="true">
|
|
|
+ {{ row.minPackingCount }}
|
|
|
+ </template>
|
|
|
+ <el-form-item
|
|
|
+ v-else
|
|
|
+ :prop="`warehousingMaterialList.${$index}.minPackingCount`"
|
|
|
+ required
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model="row.minPackingCount"
|
|
|
+ @input="
|
|
|
+ (value) =>
|
|
|
+ (row.minPackingCount = value.replace(
|
|
|
+ /^(0+)|[^\d]+/g,
|
|
|
+ ''
|
|
|
+ ))
|
|
|
+ "
|
|
|
+ >
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="" prop="minPackingCount">
|
|
|
+ <template slot-scope="{ row, $index }">
|
|
|
+ {{ handleRowUnit(row) }} /{{ row.packingUnit }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column
|
|
|
+ label="包装数量"
|
|
|
+ prop="packingCount"
|
|
|
+ width="130"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <!-- <template slot-scope="{ row, $index }">
|
|
|
+ {{ row.packingCount }} {{ row.packingUnit }}
|
|
|
+ </template> -->
|
|
|
+ <template slot-scope="{ row, $index }">
|
|
|
+ <template v-if="true">
|
|
|
+ {{ row.packingCount }} {{ row.packingUnit }}
|
|
|
+ </template>
|
|
|
+ <el-form-item
|
|
|
+ v-else
|
|
|
+ :prop="`warehousingMaterialList.${$index}.packingCount`"
|
|
|
+ required
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model="row.packingCount"
|
|
|
+ @input="packNum(row, $event)"
|
|
|
+ >
|
|
|
+ <template slot="append">
|
|
|
+ {{ row.packingUnit ? row.packingUnit : '/' }}
|
|
|
+ </template>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="计量数量"
|
|
|
+ prop="batchNo"
|
|
|
+ width="100"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row, $index }">
|
|
|
+ <template>
|
|
|
+ {{ row.minPackingCount * row.packingCount }}
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="计量单位"
|
|
|
+ prop="batchNo"
|
|
|
+ width="100"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row, $index }">
|
|
|
+ <template>
|
|
|
+ {{ row.measuringUnit }}
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="重量"
|
|
|
+ prop="count"
|
|
|
+ width="100"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row, $index }">
|
|
|
+ {{ row.weight }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="重量单位"
|
|
|
+ prop="count"
|
|
|
+ width="100"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row, $index }">
|
|
|
+ {{ row.weightUnit }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="单价"
|
|
|
+ prop="price"
|
|
|
+ width="190"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row, $index }">
|
|
|
+ <template v-if="true">
|
|
|
+ {{ row.packingCount }} {{ row.packingUnit }}
|
|
|
+ </template>
|
|
|
+ <el-form-item v-else>
|
|
|
+ <el-input
|
|
|
+ v-model="row.price"
|
|
|
+ placeholder="非必填"
|
|
|
+ @input="
|
|
|
+ (value) =>
|
|
|
+ (row.price = value.replace(/[^0-9.]+/g, ''))
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <template slot="append">
|
|
|
+ 元/{{ handleRowUnit(row) }}
|
|
|
+ </template>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column
|
|
|
+ label="金额"
|
|
|
+ align="center"
|
|
|
+ prop="contentImage"
|
|
|
+ :show-overflow-tooltip="true"
|
|
|
+ width="100"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row, $index }">
|
|
|
+ <!-- // calcSum(
|
|
|
+ // row.outInNum,
|
|
|
+ // row.univalenceUnit,
|
|
|
+ // row.univalence,
|
|
|
+ // row
|
|
|
+ // ) -->
|
|
|
+ {{
|
|
|
+ calcSumTotal(
|
|
|
+ row.packingCount,
|
|
|
+ row.minPackingCount,
|
|
|
+ row.price,
|
|
|
+ row
|
|
|
+ )
|
|
|
+ }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column
|
|
|
+ label="货位"
|
|
|
+ prop="position"
|
|
|
+ :show-overflow-tooltip="true"
|
|
|
+ width="200"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row, $index }">
|
|
|
+ <template v-if="row.isSave">
|
|
|
+ {{ row.position }}
|
|
|
+ </template>
|
|
|
+ <el-form-item
|
|
|
+ v-else
|
|
|
+ :prop="`warehousingMaterialList.${$index}.position`"
|
|
|
+ :required="true"
|
|
|
+ >
|
|
|
+ <span @click="handleWareHouse(row, $index)">
|
|
|
+ {{ row.position }}</span
|
|
|
+ >
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="操作"
|
|
|
+ width="200"
|
|
|
+ fixed="right"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row, $index }">
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ v-show="!row.isSave"
|
|
|
+ @click="listSave(row, $index)"
|
|
|
+ >保存</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ v-show="row.isSave"
|
|
|
+ @click="listEdit(row, $index)"
|
|
|
+ >编辑</el-button
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="mt20">
|
|
|
+ <!-- =={{ getDictValue('类型用途', infoData.assetType) }} -->
|
|
|
+ <!-- ${handleAssetType(extInfo.assetType)} -->
|
|
|
+ <header-title :title="`包装明细`" size="16px"></header-title>
|
|
|
+
|
|
|
+ <el-table
|
|
|
+ ref="multipleTable"
|
|
|
+ :data="detailList"
|
|
|
+ tooltip-effect="dark"
|
|
|
+ :header-cell-style="rowClass"
|
|
|
+ style="width: 100%"
|
|
|
+ stripe
|
|
|
+ >
|
|
|
+ <el-table-column label="序号" type="index" width="50">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="编码" prop="categoryCode"></el-table-column>
|
|
|
+ <el-table-column label="名称" prop="name"></el-table-column>
|
|
|
+ <el-table-column label="批次号" prop="batchNo"></el-table-column>
|
|
|
+ <el-table-column label="包装编码" prop="code"></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="包装数量"
|
|
|
+ prop="packingCount"
|
|
|
+ width="80"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="包装单位"
|
|
|
+ prop="packingUnit"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="计量数量"
|
|
|
+ prop="minPackingCount"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="计量单位"
|
|
|
+ prop="measuringUnit"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ v-if="infoData.bizType == 2 || infoData.bizType == 1"
|
|
|
+ label="物料代号"
|
|
|
+ prop="materielCode"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ {{ row.materielCode }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ v-if="infoData.bizType == 2 || infoData.bizType == 1"
|
|
|
+ label="客户代号"
|
|
|
+ prop="clientCode"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ {{ row.clientCode }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <!-- v-if="infoData.bizType == 1" -->
|
|
|
+ <el-table-column label="刻码" prop="engrave">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ {{ row.engrave }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="重量" prop="weight">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ {{ row.weight }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="重量单位" prop="weightUtil">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ {{ row.weightUtil }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column label="日期" prop="createTime" width="200">
|
|
|
+ <template slot="header" slot-scope="scope">
|
|
|
+ {{ dateTypes == 1 ? '采购日期' : '生产日期' }}
|
|
|
+ </template>
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ {{ row.createTime }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ <div class="mt20">
|
|
|
+ <header-title :title="`物料明细`" size="16px"> </header-title>
|
|
|
+ <el-table
|
|
|
+ ref="multipleTable"
|
|
|
+ :data="metailList"
|
|
|
+ tooltip-effect="dark"
|
|
|
+ :header-cell-style="rowClass"
|
|
|
+ style="width: 100%"
|
|
|
+ stripe
|
|
|
+ height="300px"
|
|
|
+ >
|
|
|
+ <el-table-column label="序号" type="index" width="50">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="编码" prop="assetCode"></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="名称"
|
|
|
+ prop="assetName"
|
|
|
+ width="200"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="批次号"
|
|
|
+ prop="batchNo"
|
|
|
+ width="80"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="物料编码"
|
|
|
+ prop="no"
|
|
|
+ width="200"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="计量数量"
|
|
|
+ prop="minPackingCount"
|
|
|
+ width="90"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ width="80"
|
|
|
+ label="计量单位"
|
|
|
+ prop="measuringUnit"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ v-if="infoData.bizType == 2"
|
|
|
+ label="物料代号"
|
|
|
+ prop="materielCode"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ {{ row.materielCode }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ v-if="infoData.bizType == 2 || infoData.bizType == 1"
|
|
|
+ label="客户代号"
|
|
|
+ prop="clientCode"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ {{ row.clientCode }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <!-- v-if="infoData.bizType == 1" -->
|
|
|
+ <el-table-column label="刻码" prop="engrave">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ {{ row.engrave }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="100" label="重量" prop="weight">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ {{ row.weight }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="重量单位" prop="weightUnit">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ {{ row.weightUnit }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="center mt20" style="text-align: center">
|
|
|
+ <el-button type="primary" @click="handleSave" :loading="saveLoading"
|
|
|
+ >保存</el-button
|
|
|
+ >
|
|
|
+ <el-button @click="$router.go(-1)">返回</el-button>
|
|
|
+ </div>
|
|
|
+ <WareHouseDailog
|
|
|
+ ref="wareHouseDailogRef"
|
|
|
+ @houseData="houseData"
|
|
|
+ ></WareHouseDailog>
|
|
|
+ </el-card>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ // import { getInfo } from '@/api/stockManagement';
|
|
|
+ import PageHeader from '@/components/PageHeader';
|
|
|
+ import selectType from '../components/selectType.vue';
|
|
|
+ import WareHouseDailog from '../components/WareHouseDailog.vue';
|
|
|
+ import StatusStep from '@/components/StatusStep/common.vue';
|
|
|
+ // import { fileSystemDownload } from '@/utils';
|
|
|
+ import outin from '@/api/warehouseManagement/outin';
|
|
|
+ import { getTreeByPid } from '@/api/classifyManage';
|
|
|
+
|
|
|
+ import {
|
|
|
+ materialType,
|
|
|
+ warehousingType,
|
|
|
+ useDict,
|
|
|
+ useDictLabel,
|
|
|
+ inputStatus,
|
|
|
+ emergencyState,
|
|
|
+ sceneState
|
|
|
+ } from '@/utils/dict/index';
|
|
|
+ import { auditStatus } from '@/utils/dict/common';
|
|
|
+ // import { batchBarPrint } from '@/api/ledgerAssets/booksList';
|
|
|
+ import { tableHeader } from '../common';
|
|
|
+ import { mapGetters, mapActions } from 'vuex';
|
|
|
+ export default {
|
|
|
+ components: { StatusStep, PageHeader, WareHouseDailog },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ saveLoading: false,
|
|
|
+ metailList: [],
|
|
|
+ dateTypes: 1,
|
|
|
+ detailList: [],
|
|
|
+ extInfo: {},
|
|
|
+ codeList: [],
|
|
|
+ auditStatus,
|
|
|
+ infoData: {},
|
|
|
+ warehousingMaterialList: [],
|
|
|
+ tableData2: [],
|
|
|
+ activeName: 'a',
|
|
|
+ num: 1,
|
|
|
+ openWindows: false, //打印弹窗
|
|
|
+ barCodeConfig: [],
|
|
|
+ stepsTitle: '已完成',
|
|
|
+ stepsStatus: 'success',
|
|
|
+ active: 0,
|
|
|
+
|
|
|
+ // 条码类型枚举
|
|
|
+ codeTypeObj: {
|
|
|
+ 生产设备: 'EQUIPMENT',
|
|
|
+ 舟皿: '',
|
|
|
+ 周转车: 'TURNOVER_CAR',
|
|
|
+ 模具: 'MODE',
|
|
|
+ 库位: 'STORE_LOCAL',
|
|
|
+ 混合料: 'MIX_MATER',
|
|
|
+ 混炼料: 'MIXING_MATER',
|
|
|
+ 破碎料: 'CRUSH_MATER',
|
|
|
+ 货架: 'GOODS_SHELF',
|
|
|
+ 返回料: 'RETURN_MATER',
|
|
|
+ 返工料: 'REWORK_MATER',
|
|
|
+ 备品备件: 'SPARE_PART',
|
|
|
+ 车削料: 'LATHE_MATER',
|
|
|
+ 风管料: 'WIND_PIPE_MATER',
|
|
|
+ 地面料: 'GROUND_MATER'
|
|
|
+ }
|
|
|
+ };
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ 'infoData.verifyStatus': {
|
|
|
+ immediate: true,
|
|
|
+ handler(val) {
|
|
|
+ if (val == 0) {
|
|
|
+ this.active = 1;
|
|
|
+ this.stepsTitle = '未审核';
|
|
|
+ this.stepsStatus = 'wait';
|
|
|
+ } else if (val == 1) {
|
|
|
+ this.active = 2;
|
|
|
+ this.stepsTitle = '审核中';
|
|
|
+ this.stepsStatus = 'process';
|
|
|
+ } else if (val == 2) {
|
|
|
+ this.active = 2;
|
|
|
+ this.stepsTitle = '审核通过';
|
|
|
+ this.stepsStatus = 'success';
|
|
|
+ } else if (val == 3) {
|
|
|
+ this.active = 2;
|
|
|
+ this.stepsTitle = '驳回';
|
|
|
+ this.stepsStatus = 'error';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapGetters(['getDictValue']),
|
|
|
+ curDateType() {
|
|
|
+ if (this.materialCodeReqList) {
|
|
|
+ return this.materialCodeReqList[0].manufactureTime
|
|
|
+ ? 'manufactureTime'
|
|
|
+ : 'procurementTime';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ tableHeader() {
|
|
|
+ return tableHeader(this.infoData.assetType);
|
|
|
+ },
|
|
|
+ emergencyState() {
|
|
|
+ return useDict(emergencyState)(this.infoData.emergencyState);
|
|
|
+ }
|
|
|
+ // 条码信息
|
|
|
+ // materialCodeReqList() {
|
|
|
+ // return this.warehousingMaterialList.warehouseLedgerDetails;
|
|
|
+ // }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.requestDict('类型用途');
|
|
|
+ this._getInfo();
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ houseData(argum, idx) {
|
|
|
+ this.$set(this.warehousingMaterialList[idx], 'houseList', argum);
|
|
|
+ argum.forEach((item) => {
|
|
|
+ item.position = `${item.warehouseName}-${item.areaName}-${item.shelfCode}-${item.cargoSpaceCode}`;
|
|
|
+ item.pathIds = `${item.warehouseId},${item.areaId},${item.shelfId},${item.cargoSpaceId}`;
|
|
|
+ });
|
|
|
+ console.log(argum);
|
|
|
+ this.$set(
|
|
|
+ this.warehousingMaterialList[idx],
|
|
|
+ 'position',
|
|
|
+ argum[0].position
|
|
|
+ );
|
|
|
+ console.log(
|
|
|
+ 'this.warehousingMaterialList',
|
|
|
+ this.warehousingMaterialList
|
|
|
+ );
|
|
|
+ },
|
|
|
+ // 仓库编辑
|
|
|
+ handleWareHouse(row, idx) {
|
|
|
+ const a = row.pathIds.split(',');
|
|
|
+ const b = row.position.split('-');
|
|
|
+ console.log('==', row, a);
|
|
|
+ row.houseList = [
|
|
|
+ {
|
|
|
+ warehouseId: a[0],
|
|
|
+ warehouseNam: b[0] + '-' + b[1],
|
|
|
+ areaId: a[1],
|
|
|
+ areaName: b[2],
|
|
|
+ shelfId: a[2],
|
|
|
+ shelfCode: b[3],
|
|
|
+ cargoSpaceId: a[3],
|
|
|
+ cargoSpaceCode: b[4],
|
|
|
+ num: row.packingCount
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ this.$refs.wareHouseDailogRef.open(row, idx);
|
|
|
+ },
|
|
|
+ async handleSave() {
|
|
|
+ this.saveLoading = true;
|
|
|
+
|
|
|
+ if (this.detailList.length != 0) {
|
|
|
+ let a = this.infoData;
|
|
|
+ let array1 = this.warehousingMaterialList;
|
|
|
+ let array2 = this.detailList;
|
|
|
+ console.log(array1);
|
|
|
+ console.log(array2);
|
|
|
+ // 遍历数组1
|
|
|
+ array1.forEach((item1) => {
|
|
|
+ item1.arr = [];
|
|
|
+ item1.outInDetailRecordUpdatePOList = [];
|
|
|
+ // 遍历数组2
|
|
|
+ array2.forEach((item2) => {
|
|
|
+ if (
|
|
|
+ item1.id == item2.outInDetailId &&
|
|
|
+ item1.batchNo == item2.batchNo &&
|
|
|
+ item1.categoryCode == item2.categoryCode
|
|
|
+ ) {
|
|
|
+ // 判断id、batchNo、categoryId是否相等
|
|
|
+ // 将数组2对象添加到数组1对象的outInDetailRecordVOList中
|
|
|
+ item1.arr.push(item2);
|
|
|
+ } else {
|
|
|
+ console.log(item2);
|
|
|
+ item1.outInDetailRecordUpdatePOList.push({ ...item2 });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ array1.forEach((ele) => {
|
|
|
+ if (ele.outInDetailRecordUpdatePOList.length == ele.arr.length) {
|
|
|
+ delete ele.arr;
|
|
|
+ } else {
|
|
|
+ ele.outInDetailRecordUpdatePOList = ele.arr;
|
|
|
+ delete ele.arr;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ console.log('arr1', array1);
|
|
|
+ array1.forEach((e) => {
|
|
|
+ if (e.hasOwnProperty('houseList')) {
|
|
|
+ e.houseList.forEach((item) => {
|
|
|
+ e.position = `${item.warehouseName}-${item.areaName}-${item.shelfCode}-${item.cargoSpaceCode}`;
|
|
|
+ e.pathIds = `${item.warehouseId},${item.areaId},${item.shelfId},${item.cargoSpaceId}`;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ delete array1.houseList;
|
|
|
+ a.outInDetailUpdatePOList = array1;
|
|
|
+ a.extInfo = this.extInfo;
|
|
|
+ const data = await outin.update(a);
|
|
|
+ // console.log('sss', data);
|
|
|
+ if (data.code == 0) {
|
|
|
+ this.$message.success('修改成功!');
|
|
|
+ this.$router.push('/warehouseManagement/stockManagement');
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.$message.warning('包装明细为空!');
|
|
|
+ }
|
|
|
+ this.saveLoading = false;
|
|
|
+ },
|
|
|
+ packNum(row, value) {
|
|
|
+ console.log(row);
|
|
|
+ const total = {
|
|
|
+ packingCount: Number(row.minPackingCount),
|
|
|
+ outInNum: Number(row.packingCount)
|
|
|
+ };
|
|
|
+ if (row.measuringUnit == row.weightUnit) {
|
|
|
+ row.weight = total.packingCount * 1 * total.outInNum.toFixed(2);
|
|
|
+ } else {
|
|
|
+ const totals = total.packingCount * total.outInNum;
|
|
|
+ row.weight = totals * row.netWeight.toFixed(2);
|
|
|
+ }
|
|
|
+ return (row.outInNum = value.replace(/^(0+)|[^\d]+/g, ''));
|
|
|
+ },
|
|
|
+ listEdit(row) {
|
|
|
+ this.$set(row, 'isSave', false);
|
|
|
+ const list = this.detailList;
|
|
|
+ for (const key in list) {
|
|
|
+ if (
|
|
|
+ list[key].outInDetailId == row.id &&
|
|
|
+ list[key].categoryCode == row.categoryCode &&
|
|
|
+ list[key].batchNo == row.batchNo
|
|
|
+ ) {
|
|
|
+ // this.detailList = [];
|
|
|
+ console.log(list[key]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ listSave(row, index) {
|
|
|
+ console.log(row);
|
|
|
+ const fileds = [
|
|
|
+ // `warehousingMaterialList.${index}.batchNo`,
|
|
|
+ `warehousingMaterialList.${index}.position`
|
|
|
+ ];
|
|
|
+ console.log('==1', this.infoData.bizType);
|
|
|
+ if (this.infoData.bizType != 5) {
|
|
|
+ fileds.push(
|
|
|
+ ...[
|
|
|
+ // `warehousingMaterialList.${index}.packingCount`,
|
|
|
+ // `warehousingMaterialList.${index}.minPackingCount`
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ } else if (
|
|
|
+ this.warehousingMaterialList.some(
|
|
|
+ (i) => !i.outInDetailRecordVOList?.length
|
|
|
+ )
|
|
|
+ ) {
|
|
|
+ this.$message.error('请选择资产编号!');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Promise.all(
|
|
|
+ fileds.map(
|
|
|
+ (item) =>
|
|
|
+ new Promise(async (resolve, rej) => {
|
|
|
+ this.$refs.warehousingMaterialListRef.validateField(
|
|
|
+ item,
|
|
|
+ (err) => {
|
|
|
+ if (err) {
|
|
|
+ rej(err);
|
|
|
+ } else {
|
|
|
+ resolve();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+ })
|
|
|
+ )
|
|
|
+ )
|
|
|
+ .then((res) => {
|
|
|
+ this.$set(row, 'isSave', true);
|
|
|
+ if (this.infoData.bizType != 5) {
|
|
|
+ this.createMaterialCode(row);
|
|
|
+ } else {
|
|
|
+ // 退还
|
|
|
+ // this.createMaterialCodeReturn(row);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ console.log(err);
|
|
|
+ this.$message.error('请填入必填项!');
|
|
|
+ });
|
|
|
+ },
|
|
|
+ async createMaterialCode(row) {
|
|
|
+ const {
|
|
|
+ packingCount,
|
|
|
+ minPackingCount,
|
|
|
+ weight,
|
|
|
+ outInDetailRecordVOList
|
|
|
+ } = row;
|
|
|
+ // console.log(row);
|
|
|
+ // if (row.houseList) {
|
|
|
+ // row.houseList.forEach((item) => {
|
|
|
+ // position = `${item.warehouseName}-${item.areaName}-${item.shelfCode}-${item.cargoSpaceCode}`;
|
|
|
+ // pathIds = `${item.warehouseId},${item.areaId},${item.shelfId},${item.cargoSpaceId}`;
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ const codes = outInDetailRecordVOList[0].code;
|
|
|
+ const index = outInDetailRecordVOList[0].code.indexOf('636');
|
|
|
+ const result = parseInt(codes.substring(index + 3, index + 6));
|
|
|
+ console.log(result);
|
|
|
+ const dataArray = [];
|
|
|
+ for (let i = 0; i < packingCount; i++) {
|
|
|
+ const newData = { ...row };
|
|
|
+ if (outInDetailRecordVOList.length != packingCount) {
|
|
|
+ newData.minPackingCount = row.minPackingCount;
|
|
|
+ newData.packingCount = 1;
|
|
|
+ newData.weight = weight / packingCount;
|
|
|
+ newData.weightUtil = row.weightUnit;
|
|
|
+ newData.outInDetailId = row.id;
|
|
|
+ } else {
|
|
|
+ newData.minPackingCount = row.minPackingCount;
|
|
|
+ newData.weight = weight / packingCount;
|
|
|
+ newData.packingCount = row.packingCount / packingCount;
|
|
|
+ newData.weightUtil = row.weightUnit;
|
|
|
+ newData.outInDetailId = row.id;
|
|
|
+ }
|
|
|
+ dataArray.push(newData);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (let j = 0; j < dataArray.length; j++) {
|
|
|
+ dataArray[j].code =
|
|
|
+ dataArray[j].categoryCode + dataArray[j].batchNo + 0 + (result + j);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.detailList = dataArray;
|
|
|
+ console.log('====>>>>>1', dataArray);
|
|
|
+ },
|
|
|
+ //计算金额
|
|
|
+ calcSumTotal(PackingCount, outInNum, univalence) {
|
|
|
+ //最小包装单元,包装数量,单价
|
|
|
+ const total = {
|
|
|
+ PackingCount: Number(PackingCount),
|
|
|
+ outInNum: Number(outInNum),
|
|
|
+ univalence: Number(univalence == undefined ? 0 : univalence)
|
|
|
+ };
|
|
|
+ return total.PackingCount * total.outInNum * total.univalence;
|
|
|
+ },
|
|
|
+ ...mapActions('dict', ['requestDict']),
|
|
|
+ getAuditStatus: useDictLabel(auditStatus),
|
|
|
+ getMaterialType: useDictLabel(materialType),
|
|
|
+ getInputStatus: useDictLabel(inputStatus),
|
|
|
+ getSceneState: useDictLabel(sceneState),
|
|
|
+ handleRowUnit(row) {
|
|
|
+ return row.measuringUnit;
|
|
|
+ // if (this.extInfo.assetType == 1) {
|
|
|
+ // console.log(row);
|
|
|
+ // return row.weightUnit;
|
|
|
+ // } else if (this.extInfo.assetType == 4) {
|
|
|
+ // return row.measuringUnit;
|
|
|
+ // } else {
|
|
|
+ // return row.measuringUnit;
|
|
|
+ // }
|
|
|
+ },
|
|
|
+ handleAssetType(r) {
|
|
|
+ const code = this.codeList.find((item) => item.dictCode == r);
|
|
|
+ return code?.dictValue;
|
|
|
+ },
|
|
|
+ rowClass({ row, column, rowIndex, columnIndex }) {
|
|
|
+ if (rowIndex === 1) {
|
|
|
+ return {
|
|
|
+ display: 'none',
|
|
|
+ background: '#EEEEEE',
|
|
|
+ border: 'none'
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ return { background: '#EEEEEE', border: 'none' };
|
|
|
+ },
|
|
|
+ async _getInfo() {
|
|
|
+ const res = await outin.getById(this.$route.query.id);
|
|
|
+ console.log('===', res);
|
|
|
+ if (res) {
|
|
|
+ this.infoData = res;
|
|
|
+ this.extInfo = res.extInfo;
|
|
|
+ this.warehousingMaterialList = res.outInDetailVOList.map((item) => {
|
|
|
+ return { ...item, isSave: true };
|
|
|
+ });
|
|
|
+ const arr = [];
|
|
|
+ for (const key in this.warehousingMaterialList) {
|
|
|
+ for (const k in this.warehousingMaterialList[key]
|
|
|
+ .outInDetailRecordVOList) {
|
|
|
+ arr.push({
|
|
|
+ ...this.warehousingMaterialList[key].outInDetailRecordVOList[k],
|
|
|
+ weightUnit: this.warehousingMaterialList[key].weightUnit
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.dateTypes = arr[0].dateType;
|
|
|
+ this.detailList = arr;
|
|
|
+ let iArr = [];
|
|
|
+ arr.forEach((item) => {
|
|
|
+ item.outInDetailRecordMaterialDetailVOList.forEach((ele) => {
|
|
|
+ iArr.push({ ...ele });
|
|
|
+ });
|
|
|
+ });
|
|
|
+ this.metailList = iArr;
|
|
|
+ }
|
|
|
+ const { data } = await getTreeByPid(0);
|
|
|
+ this.codeList = data.map((item) => {
|
|
|
+ return { dictCode: item.id, dictValue: item.name };
|
|
|
+ });
|
|
|
+ },
|
|
|
+ calcSum(a, b, c, row) {
|
|
|
+ if (
|
|
|
+ (Number.isNaN(+a) && a !== '') ||
|
|
|
+ (Number.isNaN(+b) && b !== '') ||
|
|
|
+ (Number.isNaN(+c) && c !== '')
|
|
|
+ ) {
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+
|
|
|
+ return a * b * c + { yuan: '元', wanyuan: '万元' }[row.univalenceUnit];
|
|
|
+ },
|
|
|
+ contentImageDownload(item) {
|
|
|
+ fileSystemDownload(item);
|
|
|
+ },
|
|
|
+ selectActive(num) {
|
|
|
+ this.num = num;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+ ::v-deep .page-title {
|
|
|
+ border-bottom: none;
|
|
|
+ }
|
|
|
+ ::v-deep .page-title-div {
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ .stepsStatus {
|
|
|
+ width: 40%;
|
|
|
+ margin: 0 auto;
|
|
|
+ }
|
|
|
+ .el-form-item {
|
|
|
+ margin-bottom: 10px;
|
|
|
+ }
|
|
|
+ .p20 {
|
|
|
+ padding: 20px;
|
|
|
+ }
|
|
|
+ .flex {
|
|
|
+ display: flex;
|
|
|
+ }
|
|
|
+ .title {
|
|
|
+ justify-content: space-between;
|
|
|
+ border-bottom: 1px solid #ccc;
|
|
|
+ padding-bottom: 5px;
|
|
|
+ span {
|
|
|
+ font-size: 16px;
|
|
|
+ }
|
|
|
+ .col {
|
|
|
+ padding-left: 40px;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #aaaaaa;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .degree {
|
|
|
+ margin-right: 10px;
|
|
|
+ padding: 0px 15px;
|
|
|
+ color: #fff;
|
|
|
+ font-size: 13px;
|
|
|
+ line-height: 23px;
|
|
|
+ border-radius: 23px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ span {
|
|
|
+ width: 5px;
|
|
|
+ height: 5px;
|
|
|
+ border-radius: 100%;
|
|
|
+ margin-right: 6px;
|
|
|
+ background-color: #fff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .red {
|
|
|
+ background-color: rgb(163, 0, 20);
|
|
|
+ }
|
|
|
+ .blue {
|
|
|
+ background-color: #1989fa;
|
|
|
+ }
|
|
|
+ .createdInfo {
|
|
|
+ justify-content: space-around;
|
|
|
+ margin-top: 10px;
|
|
|
+ font-size: 14px;
|
|
|
+ .col {
|
|
|
+ color: #6e6e6e;
|
|
|
+ padding-right: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .mt40 {
|
|
|
+ margin-top: 40px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .custSteps {
|
|
|
+ margin-top: 20px;
|
|
|
+ margin-left: 70px;
|
|
|
+ .box {
|
|
|
+ width: 158px;
|
|
|
+ border: 1px solid #ccc;
|
|
|
+ padding: 10px;
|
|
|
+ flex-direction: row;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ // justify-content: space-between;
|
|
|
+ font-size: 12px;
|
|
|
+ color: #9e9e9e;
|
|
|
+ .x {
|
|
|
+ width: 20px;
|
|
|
+ height: 15px;
|
|
|
+ margin-right: 5px;
|
|
|
+ }
|
|
|
+ .q {
|
|
|
+ background-color: #d0e4d5;
|
|
|
+ }
|
|
|
+ .b {
|
|
|
+ background-color: #1989fa;
|
|
|
+ }
|
|
|
+ .g {
|
|
|
+ background-color: #157a2c;
|
|
|
+ }
|
|
|
+ .r {
|
|
|
+ background-color: #a30014;
|
|
|
+ }
|
|
|
+ .a {
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ }
|
|
|
+ .mr10 {
|
|
|
+ margin-right: 10px;
|
|
|
+ }
|
|
|
+ .mb0 {
|
|
|
+ margin-bottom: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .stepsInfo {
|
|
|
+ // flex: 1;
|
|
|
+ width: 483px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .mt20 {
|
|
|
+ margin-top: 20px;
|
|
|
+ }
|
|
|
+ .content-detail {
|
|
|
+ overflow: hidden;
|
|
|
+ }
|
|
|
+ .executor {
|
|
|
+ font-size: 14px;
|
|
|
+ .col {
|
|
|
+ color: #6e6e6e;
|
|
|
+ padding-right: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .result {
|
|
|
+ justify-content: space-around;
|
|
|
+ }
|
|
|
+ .mr20 {
|
|
|
+ margin-right: 20px;
|
|
|
+ }
|
|
|
+ .details {
|
|
|
+ font-size: 14px;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .customSteps {
|
|
|
+ margin-top: 40px;
|
|
|
+ font-size: 14px;
|
|
|
+ margin-left: 80px;
|
|
|
+ .time {
|
|
|
+ font-size: 12px;
|
|
|
+ color: #6e6e6e;
|
|
|
+ margin-right: 20px;
|
|
|
+ position: relative;
|
|
|
+ &::after {
|
|
|
+ content: '';
|
|
|
+ width: 1px;
|
|
|
+ height: 100%;
|
|
|
+ background-color: #157a2c;
|
|
|
+ position: absolute;
|
|
|
+ right: -26px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .flex:last-child {
|
|
|
+ .time {
|
|
|
+ &::after {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .round {
|
|
|
+ margin-right: 20px;
|
|
|
+ width: 10px;
|
|
|
+ height: 10px;
|
|
|
+ border-radius: 100%;
|
|
|
+ background-color: #157a2c;
|
|
|
+ position: relative;
|
|
|
+ span {
|
|
|
+ position: absolute;
|
|
|
+ top: 50%;
|
|
|
+ left: 50%;
|
|
|
+ width: 4px;
|
|
|
+ height: 4px;
|
|
|
+ background-color: #fff;
|
|
|
+ border-radius: 100%;
|
|
|
+ transform: translate(-2px, -2px);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .text {
|
|
|
+ .info {
|
|
|
+ margin-top: 10px;
|
|
|
+ width: 955px;
|
|
|
+ background-color: #f0f3f3;
|
|
|
+ overflow: hidden;
|
|
|
+ padding: 10px;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .switch_left li {
|
|
|
+ border-right: 1px solid rgba(222, 222, 222, 1);
|
|
|
+ border-left: 1px solid rgba(222, 222, 222, 1);
|
|
|
+ }
|
|
|
+</style>
|