马宇豪
2023-06-26 3d81e48c5df05117225726fa06f44c9c33f76861
转库提交
已修改7个文件
已添加6个文件
1098 ■■■■■ 文件已修改
config/dev.env.js 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
config/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/enterprise/enterpriseDetailForm.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/stock/components/addStock.vue 254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/stock/components/deliverUsage.vue 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/stock/components/editStock.vue 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/stock/components/stockDetail.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/stock/components/stockRecords.vue 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/stock/enterprisePurchaseStatistics.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/stock/statePurchaseStatistics.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/stock/stockManage.vue 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/stock/stockSupervision.vue 267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
config/dev.env.js
@@ -14,14 +14,14 @@
  //    BASE_API: '"http://192.168.0.35:8100"',
// 最新
    BASE_API: '"http://39.104.85.193:4105"',
    IMG_API: '"http://39.104.85.193:4105/upload/"',
      //
      // BASE_API: '"http://192.168.0.29:8100"',
      // IMG_API: '"http://192.168.0.29:8100/upload/"',
    // BASE_API: '"http://39.104.85.193:4105"',
    // IMG_API: '"http://39.104.85.193:4105/upload/"',
//
//
//       BASE_API: '"http://192.168.0.31:8100"',
//       IMG_API: '"http://192.168.0.31:8100/upload/"',
    BASE_API: '"http://39.104.85.193:4105"',
    IMG_API: '"http://39.104.85.193:4105/upload/"',
  //    IMG_API: '"http://127.0.0.1:8100/upload/"',
  // IMG_API: '"https://sinanoaq.com:8100/upload/"',
  //   BASE_API: '"http://220.171.99.118:4100"',
config/index.js
@@ -15,7 +15,7 @@
    // can be overwritten by process.env.HOST
    // if you want dev by ip, please set host: '0.0.0.0'
    host: '0.0.0.0',
    host: '192.168.0.65',
    port: 8101, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
    autoOpenBrowser: true,
    errorOverlay: true,
src/router/index.js
@@ -123,6 +123,18 @@
        component: () => import('@/views/dashboard/index'),
        name: 'Dashboard1',
        meta: { title: '首页', icon: 'el-icon-dash', noCache: true, affix: true }
      },
        {
            path: 'stockManage',
            component: () => import('@/views/stock/stockManage'),
            name: 'stockManage',
            meta: { title: '库房管理', icon: 'el-icon-dash', noCache: true, affix: true }
        },
        {
            path: 'stockSupervision',
            component: () => import('@/views/stock/stockSupervision'),
            name: 'stockSupervision',
            meta: { title: '库房监管', icon: 'el-icon-dash', noCache: true, affix: true }
      }
    ],
    hidden: true
src/views/enterprise/enterpriseDetailForm.vue
@@ -286,16 +286,8 @@
                        }
                    }
                }
                else{
                    let updateForm = this.$refs.enterpriseBasicInformation.dataForm
                    if(updateForm.validstarttime == null){
                        this.$notify({
                            title:'警告',
                            message:'请填写许可证期限',
                            type:'warning'
                        })
                    }else {
                    let updateForm = this.$refs.enterpriseBasicInformation.dataForm
                        let res = await updateNewEnterprise(updateForm)
                        if(res.data.code === "200"){
                            this.$emit('getinfo')
@@ -312,8 +304,6 @@
                                message:res.data.message
                            })
                        }
                    }
                }
            }
        },
src/views/stock/components/addStock.vue
对比新文件
@@ -0,0 +1,254 @@
<template>
    <el-dialog :visible.sync="dialogVisible" :modal-append-to-body="false" :close-on-click-modal="false" title="创建库区" center
               width="50%">
        <el-form ref="dataForm" :rules="dataFormRules" :model="dataForm" label-position="right" label-width="150px" element-loading-text="保存中...">
            <div class="part-title">
                <span>库区基本信息填写</span>
            </div>
            <el-divider></el-divider>
            <div>
                <el-row >
                    <el-col :span="22">
                        <el-form-item label="库区名称:" prop="stockName" >
                            <el-input v-model.trim="dataForm.stockName"/>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row >
                    <el-col :span="22">
                        <el-form-item label="所属企业:" prop="companyName" >
                            <el-input v-model.trim="dataForm.companyName"/>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row :gutter="20">
                    <el-col :span="10">
                        <el-form-item label="所属省份:" prop="province">
                            <el-select v-model="dataForm.province" clearable @change="changeArea('province')">
                                <el-option
                                    v-for="item in provinceList"
                                    :key="item.id"
                                    :label="item.name"
                                    :value="item.name"
                                >
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
                    <el-col :span="6">
                        <el-form-item prop="city" class="selector">
                            <el-select v-model="dataForm.city" prop="city" clearable @change="changeArea('city')">
                                <el-option
                                    v-for="item in cityList"
                                    :key="item.id"
                                    :label="item.name"
                                    :value="item.name"
                                >
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
                    <el-col :span="6">
                        <el-form-item prop="district" class="selector">
                            <el-select v-model="dataForm.district" clearable filterable @change="changeArea('district')">
                                <el-option
                                    v-for="item in districtList"
                                    :key="item.id"
                                    :label="item.name"
                                    :value="item.name"
                                >
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row>
                    <el-col :span="22">
                        <el-form-item label="库区地址:" prop="address" >
                            <el-input v-model.trim="dataForm.address"/>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row :gutter="20">
                    <el-col :span="11">
                        <el-form-item label="库区总面积:" prop="totalSize" class="numInput">
                            <el-input type="number" v-model.number="dataForm.totalSize"><template slot="append">㎡</template></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="11">
                        <el-form-item label="有效仓储面积:" prop="totalSize" class="numInput">
                            <el-input type="number" v-model.number="dataForm.actualSize"><template slot="append">㎡</template></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row :gutter="20">
                    <el-col :span="11">
                        <el-form-item label="核定储量:" prop="actualStorage" class="numInput">
                            <el-input type="number" v-model.number="dataForm.actualStorage"><template slot="append">箱</template></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="11">
                        <el-form-item label="核药量:" prop="actualUsage" class="numInput">
                            <el-input type="number" v-model.number="dataForm.actualUsage"><template slot="append">kg</template></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
            </div>
            <div class="part-title">
                <span>库房列表</span>
            </div>
            <el-divider></el-divider>
            <el-table v-loading="listLoading" :data="dataForm.stockList" border fit highlight-current-row style="width: 100%;">
                <el-table-column type="index" label="序号" align="center" width="60"/>
                <el-table-column label="库房名称" prop="name" align="center"></el-table-column>
                <el-table-column label="库房面积" prop="size" align="center"></el-table-column>
                <el-table-column label="有效仓储面积" prop="actualSize" align="center"></el-table-column>
                <el-table-column label="核定储量(箱)" prop="actualStock" align="center"></el-table-column>
                <el-table-column label="等级" prop="level" align="center"></el-table-column>
                <el-table-column label="核药量(kg)" prop="actualUsage" align="center"></el-table-column>
                <el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width" fixed="right">
                    <template slot-scope="scope">
                        <el-button type="text" @click="editItem(scope.row)">编辑</el-button>
                        <el-button type="text" @click="deleteItem(scope.row)">删除</el-button>
                    </template>
                </el-table-column>
            </el-table>
            <el-button type="primary" style="margin-top: 20px" @click="addItem()">新增仓库</el-button>
        </el-form>
        <br>
        <span slot="footer" class="dialog-footer">
            <el-button @click="dialogVisible = false">取 消</el-button>
            <el-button type="primary" @click="dialogVisible = false">保 存</el-button>
        </span>
        <el-dialog :visible.sync="editDialogVisible" append-to-body :title="dialogTitle" center width="600px">
            <el-form ref="editForm" :rules="editFormRules" :model="editForm" label-width="140px" class="editForm">
                <el-form-item label="库房名称:" prop="stockName">
                    <el-input v-model="editForm.stockName"/>
                </el-form-item>
                <el-form-item label="库房面积:" prop="totalSize" class="numInput">
                    <el-input type="number" v-model.number="editForm.totalSize"><template slot="append">㎡</template></el-input>
                </el-form-item>
                <el-form-item label="有效仓储面积:" prop="totalSize" class="numInput">
                    <el-input type="number" v-model.number="editForm.actualSize"><template slot="append">㎡</template></el-input>
                </el-form-item>
                <el-form-item label="核定储量:" prop="actualStorage" class="numInput">
                    <el-input type="number" v-model.number="editForm.actualStorage"><template slot="append">箱</template></el-input>
                </el-form-item>
                <el-form-item label="核药量:" prop="actualUsage" class="numInput">
                    <el-input type="number" v-model.number="editForm.actualUsage"><template slot="append">kg</template></el-input>
                </el-form-item>
                <el-form-item label="等级:" prop="level" class="numInput">
                    <el-input type="number" v-model.number="editForm.level"/>
                </el-form-item>
            </el-form>
            <span slot="footer" class="dialog-footer">
                <el-button @click="editDialogVisible = false">取 消</el-button>
                <el-button type="primary" @click="editDialogVisible = false">保 存</el-button>
            </span>
        </el-dialog>
    </el-dialog>
</template>
<script>
    import {mapGetters} from "vuex";
    import {getCityListData, getProvinceListData} from "../../../api/area";
    export default {
        name: "addStock",
        data() {
            return {
                dialogVisible: false,
                editDialogVisible: false,
                dialogTitle: '新增库房',
                dataForm: {
                    stockName: '',
                    companyName: '',
                    province: '',
                    city: '',
                    district: ''
                },
                editForm: {
                },
                listLoading: false,
                provinceList:[],
                cityList:[],
                districtList:[],
                dataFormRules:{
                    department:[
                        { required: true, message: '请选择行政主管部门', trigger: 'change' },
                    ]
                },
                editFormRules:{}
            }
        },
        created() {
            const t = this
            t.getProvince()
        },
        computed: {
            ...mapGetters([
                'userType',
                'username'
            ])
        },
        methods: {
            open(){
                this.dialogVisible = true;
            },
            addItem(){
              this.editDialogVisible = true
            },
            async getProvince(){
                let res = await getProvinceListData()
                if(res.data.code === "200"){
                    this.provinceList = res.data.result.provinceList
                }
            },
            async changeArea(value) {
                if (value === 'province') {
                    this.dataForm.city = ''
                    this.dataForm.district = ''
                    let res = await getCityListData({type:2, parenttype:1, parentname:this.dataForm.province})
                    if (res.data.code === "200") {
                        this.cityList = res.data.result
                    }
                } else if (value === 'city') {
                    this.dataForm.district = ''
                    let res = await getCityListData({type:3, parenttype:2, parentname:this.dataForm.city})
                    if (res.data.code === "200") {
                        this.districtList = res.data.result
                    }
                }
            }
        }
    }
</script>
<style lang="scss" scoped>
    .part-title{
        font-size: 16px;
        font-weight: bolder;
    }
    .selector{
        /deep/ .el-form-item__content{
            margin-left: 0 !important;
        }
    }
    .editForm{
        .el-form-item{
            display: flex !important;
        }
        /deep/ .el-form-item__content{
            width: 100%;
            margin-left: 0 !important;
        }
    }
    .numInput{
        /deep/ .el-input__inner{
            padding-right: 0;
        }
    }
</style>
src/views/stock/components/deliverUsage.vue
对比新文件
@@ -0,0 +1,68 @@
<template>
    <el-dialog
        :visible.sync="deliverDialog"
        :close-on-click-modal="false"
        width="50%"
        :append-to-body="true"
        :title=stockName
        center
        size="medium"
    >
        <div class="app-container">
            <div class="upTitle">
                请勾选或取消勾选允许使用该仓库的批发企业,您允许使用的企业可将货物入库到该仓库。
            </div>
            <div class="table_content">
                <el-checkbox-group v-model="companyList">
                    <el-checkbox label="公司A" checked border style="display: block"></el-checkbox>
                    <el-checkbox label="公司B" border style="display: block"></el-checkbox>
                    <el-checkbox label="公司C" border disabled style="display: block"></el-checkbox>
                </el-checkbox-group>
            </div>
        </div>
        <span slot="footer" class="dialog-footer">
                <el-button @click="deliverDialog = false">取 消</el-button>
                <el-button type="primary" @click="deliverDialog = false">提 交</el-button>
            </span>
    </el-dialog>
</template>
<script>
    import {computePageCount} from "@/utils";
    export default {
        name: "deliverUsage",
        components: {},
        data(){
            return{
                tableStatus: true,
                tableKey:'',
                stockName: '仓库XXXX使用权分配',
                listLoading:false,
                companyList:[],
                deliverDialog:false,
            }
        },
        created() {
            const t = this
        },
        methods:{
            open(){
                this.deliverDialog = true
            },
        }
    }
</script>
<style lang="scss" scoped>
    .upTitle{
        font-size: 16px;
        margin-bottom: 20px;
    }
    /deep/ .el-checkbox{
        width: 80%;
        margin-left: 0 !important;
        margin-right: 0 !important;
        margin-bottom: 10px !important;
    }
</style>
src/views/stock/components/editStock.vue
对比新文件
@@ -0,0 +1,97 @@
<template>
    <el-dialog :visible.sync="editDialogVisible" :modal-append-to-body="false" :close-on-click-modal="false" title="批发企业盘库(单位:箱)" center
               width="30%">
        <el-form :model="stockInfo" label-width="140px" class="editForm">
            <el-form-item label="当前库区:"><el-input readonly v-model="stockInfo.areaName"/></el-form-item>
            <el-form-item label="当前库房:"><el-input readonly v-model="stockInfo.stockName"/></el-form-item>
            <el-form-item label="当前总库存:"><el-input readonly v-model="stockInfo.stockNum"/></el-form-item>
        </el-form>
        <el-divider></el-divider>
        <el-form ref="editForm" :rules="editFormRules" :model="editForm" label-width="140px" class="editForm">
            <el-form-item label="爆竹类:" prop="baozhu" class="numInput">
                <el-input v-model="editForm.baozhu"/>
            </el-form-item>
            <el-form-item label="喷花类:" prop="penhua" class="numInput">
                <el-input type="number" v-model.number="editForm.penhua"/>
            </el-form-item>
            <el-form-item label="旋转类:" prop="xuanzhuan" class="numInput">
                <el-input type="number" v-model.number="editForm.xuanzhuan"/>
            </el-form-item>
            <el-form-item label="吐珠类:" prop="tuzhu" class="numInput">
                <el-input type="number" v-model.number="editForm.tuzhu"/>
            </el-form-item>
            <el-form-item label="玩具类:" prop="wanju" class="numInput">
                <el-input type="number" v-model.number="editForm.wanju"/>
            </el-form-item>
            <el-form-item label="组合类:" prop="zuhe" class="numInput">
                <el-input type="number" v-model.number="editForm.zuhe"/>
            </el-form-item>
        </el-form>
        <span slot="footer" class="dialog-footer">
            <el-button @click="editDialogVisible = false">取 消</el-button>
            <el-button type="primary" @click="editDialogVisible = false">完 成</el-button>
        </span>
    </el-dialog>
</template>
<script>
    import {mapGetters} from "vuex";
    export default {
        name: "editStock",
        data() {
            return {
                editDialogVisible: false,
                stockInfo:{},
                editForm: {},
                listLoading: false,
                editFormRules:{
                    department:[
                        { required: true, message: '请选择行政主管部门', trigger: 'change' },
                    ]
                }
            }
        },
        created() {
            const t = this
        },
        computed: {
            ...mapGetters([
                'userType',
                'username'
            ])
        },
        methods: {
            open(){
                this.editDialogVisible = true;
            }
        }
    }
</script>
<style lang="scss" scoped>
    .part-title{
        font-size: 16px;
        font-weight: bolder;
    }
    .selector{
        /deep/ .el-form-item__content{
            margin-left: 0 !important;
        }
    }
    .editForm{
        .el-form-item{
            display: flex !important;
        }
        /deep/ .el-form-item__content{
            width: 100%;
            margin-left: 0 !important;
        }
    }
    .numInput{
        /deep/ .el-input__inner{
            padding-right: 0;
        }
    }
</style>
src/views/stock/components/stockDetail.vue
@@ -17,7 +17,7 @@
                  fit
                  highlight-current-row
                  style="width: 100%;">
            <el-table-column type="index" label="" align="center" width="60"/>
            <el-table-column type="index" label="序号" align="center" width="60"/>
            <el-table-column label="产品名称" prop="name" align="center">
            </el-table-column>
            <el-table-column label="流向码" prop="directioncode" align="center">
src/views/stock/components/stockRecords.vue
对比新文件
@@ -0,0 +1,176 @@
<template>
    <el-dialog
        :visible.sync="recordDialog"
        :close-on-click-modal="false"
        width="50%"
        :append-to-body="true"
        :title="tableStatus?'仓库出库记录':'仓库入库记录'"
        center
    >
        <div class="app-container">
            <div class="filter-container">
                <div style="display: flex;justify-content: space-between">
                    <div class="basic_search" style="padding-top: 10px">
                        <span style="font-size: 16px">在</span>
                        <el-date-picker
                            value-format="yyyy-MM-dd HH:mm:ss"
                            v-model="validTime"
                            type="datetimerange"
                            :default-time="['00:00:00','23:59:59']"
                            range-separator="至"
                            start-placeholder="开始日期"
                            end-placeholder="结束日期"
                        >
                        </el-date-picker>
                        <span v-if="tableStatus" style="font-size: 16px">期间总计出库</span>
                        <span v-else style="font-size: 16px">期间总计入库</span>
                        <span style="font-size: 16px">2333</span>
                        <span style="font-size: 16px">箱</span>
                    </div>
                    <div class="basic_search" style="margin-right: 10px;padding-top: 10px">
                        <el-switch
                            v-model="tableStatus"
                            inactive-color="#13ce66"
                            active-text="出库记录"
                            inactive-text="入库记录">
                        </el-switch>
                    </div>
                </div>
            </div>
            <div class="table_content">
                <el-table
                    v-loading="listLoading"
                    :key="tableKey"
                    :data="stockRecords"
                    border
                    fit
                    highlight-current-row
                    style="width: 100%;"
                >
                    <el-table-column label="序号" type="index" align="center" width="60"/>
                    <el-table-column label="入库单号" prop="inCode" align="center"></el-table-column>
                    <el-table-column label="入库企业" prop="name" align="center"></el-table-column>
                    <el-table-column label="创建时间" prop="creatTime" align="center"></el-table-column>
                    <el-table-column label="运输证号" prop="transportNum" align="center"></el-table-column>
                    <el-table-column label="数量(箱)" prop="num" align="center"></el-table-column>
                    <el-table-column label="入库类型" prop="type" align="center">
                        <template slot-scope="scope">
                            <span type="text">{{scope.row.type}}</span>
                        </template>
                    </el-table-column>
                    <el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width" fixed="right">
                        <template slot-scope="scope">
                            <el-button type="text" @click="showDetails(scope.row)">查看</el-button>
                        </template>
                    </el-table-column>
                </el-table>
                <br>
                <el-pagination
                    v-show="recordTotal>0"
                    :current-page="currentPage"
                    :page-sizes="[10, 20, 30, 50]"
                    :page-size="pageSize"
                    :total="recordTotal"
                    layout="total, sizes, prev, pager, next, jumper"
                    background
                    style="float:right;"
                    @size-change="handleSizeChange"
                    @current-change="handleCurrentChange"
                />
                <br>
            </div>
        </div>
    </el-dialog>
</template>
<script>
    import {computePageCount} from "@/utils";
    export default {
        name: "stockRecords",
        components: {},
        data(){
            return{
                tableStatus: true,
                tableKey:'',
                listLoading:false,
                pageSize: 10,
                recordTotal: 0,
                currentPage: 1,
                validTime: ['', ''],
                stockRecords:[],
                recordDialog:false,
                listQuery: {
                    starttime:'',
                    endtime:'',
                },
            }
        },
        created() {
            const t = this
            t.initValidTime()
        },
        methods:{
            open(){
                this.recordDialog = true
            },
            initValidTime() {
                const end = new Date();
                console.log(end.getDate(),end.getMonth(),end.getFullYear(),'date')
                if (end.getDate() - 1 === 0) {
                    this.validTime[0] = [end.getFullYear(), end.getMonth()-1, this.returnDay(end.getMonth()-1, end.getFullYear())].join("-") + " 00:00:00";
                    this.validTime[1] = [end.getFullYear(), end.getMonth(), this.returnDay(end.getMonth(), end.getFullYear())].join("-") + " 23:59:59";
                } else if (end.getDate() - 1 === 0 && end.getMonth() === 0) {
                    this.validTime[0] = [end.getFullYear() - 1, 11, 30].join("-") + " 00:00:00";
                    this.validTime[1] = [end.getFullYear() - 1, 12, 31].join("-") + " 23:59:59";
                } else {
                    this.validTime[0] = [end.getFullYear(), end.getMonth(), end.getDate() - 1].join("-") + " 00:00:00";
                    this.validTime[1] = [end.getFullYear(), end.getMonth() + 1, end.getDate() - 1].join("-") + " 23:59:59";
                }
            },
            returnDay(value, year) {
                if (value === 1 || value === 3 || value === 5 || value === 7 || value === 8 || value === 10 || value === 12) {
                    return 31
                } else if (value === 2) {
                    if (year % 4 === 0) {
                        return 29
                    } else {
                        return 28
                    }
                } else {
                    return 30
                }
            },
            // async getInStorageDetailList(){
            //     this.listLoading = true
            //     let res = await getSaleDetailListData(this.listQuery)
            //     if(res.data.code === "200"){
            //         this.recordTotal = res.data.result.total
            //         this.pageSize = res.data.result.size
            //         this.currentPage = res.data.result.current
            //         this.stockRecords = res.data.result.records
            //     }else{
            //         this.$message({
            //             type:'warning',
            //             message:res.data.message
            //         })
            //     }
            //     this.listLoading = false
            // },
            handleSizeChange(val) {
                this.listQuery.pageSize = val
                // this.getInStorageDetailList()
            },
            handleCurrentChange(val) {
                this.listQuery.pageIndex = val
                // this.getInStorageDetailList()
            },
        }
    }
</script>
<style scoped>
    .basic_search{
        display:inline-block;
    }
</style>
src/views/stock/enterprisePurchaseStatistics.vue
@@ -133,7 +133,7 @@
    import FileSaver from 'file-saver'
    import XLSX from 'xlsx'
    export default {
        name: "enterpriseEntryStatistics",
        name: "enterprisePurchaseStatistics",
        components: {PurchaseDetail},
        data(){
            return{
src/views/stock/statePurchaseStatistics.vue
@@ -130,7 +130,7 @@
import FileSaver from 'file-saver'
import XLSX from 'xlsx'
export default {
    name: "enterpriseEntryStatistics",
    name: "statePurchaseStatistics",
    components: {PurchaseDetail},
    data() {
        return {
src/views/stock/stockManage.vue
对比新文件
@@ -0,0 +1,192 @@
<template>
    <div class="app-container">
        <div class="filter-container">
            <div style="display: block;">
                <div class="basic_search" style="margin-right: 10px;padding-top: 10px">
                    <el-button style="margin-left: 10px;" type="primary" @click="addStock()">创建库区</el-button>
                </div>
            </div>
        </div>
        <div class="table_content">
            <el-table
                v-loading="listLoading"
                :key="tableKey"
                :data="stateStockData"
                :span-method="objectSpanMethod" :cell-class-name="tableRowClassName" @cell-mouse-leave="cellMouseLeave"  @cell-mouse-enter="cellMouseEnter"
                border
                fit
                highlight-current-row
                style="width: 100%;"
            >
                <el-table-column label="区域" align="center">
                    <template slot-scope="scope">
                        <el-link type="primary" @click="digDetail(scope.row)">{{ scope.row.region }}</el-link>
                    </template>
                </el-table-column>
                <el-table-column label="库区名称" prop="" align="center"></el-table-column>
                <el-table-column label="所属企业" prop="" align="center"></el-table-column>
                <el-table-column label="库区面积" prop="" align="center"></el-table-column>
                <el-table-column label="有效存储总面积" prop="" align="center"></el-table-column>
                <el-table-column label="核药量" prop="" align="center"></el-table-column>
                <el-table-column label="地址" prop="" align="center"></el-table-column>
                <el-table-column label="库房名称" prop="" align="center">
                    <template slot-scope="scope">
                        <el-link type="primary" @click="openRecord(scope.row)"></el-link>
                    </template>
                </el-table-column>
                <el-table-column label="库房面积" prop="" align="center"></el-table-column>
                <el-table-column label="有效存储面积" prop="" align="center"></el-table-column>
                <el-table-column label="等级" prop="" align="center"></el-table-column>
                <el-table-column label="库容量" prop="" align="center"></el-table-column>
                <el-table-column label="核药量" prop="" align="center"></el-table-column>
                <el-table-column label="当前总库存" prop="" align="center"></el-table-column>
                <el-table-column label="本公司库存" prop="" align="center"></el-table-column>
                <el-table-column label="爆竹类(箱)" prop="baozhuCount" align="center"></el-table-column>
                <el-table-column label="喷花类(箱)" prop="penhuaCount" align="center"></el-table-column>
                <el-table-column label="旋转类(箱)" prop="xuanzhuanCount" align="center"></el-table-column>
                <el-table-column label="吐珠类(箱)" prop="tuzhuCount" align="center"></el-table-column>
                <el-table-column label="玩具类(箱)" prop="wanjuCount" align="center"></el-table-column>
                <el-table-column label="组合烟花类(箱)" prop="zuheCount" align="center"></el-table-column>
                <el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width" fixed="right">
                    <template slot-scope="scope">
                        <el-button type="text" @click="showEnterprises(scope.row)">存货企业</el-button>
                        <el-button type="text" @click="deliverUsage(scope.row)">分配使用权</el-button>
                    </template>
                </el-table-column>
                <el-table-column label="是否允许盘库" align="center" width="120" class-name="small-padding fixed-width" fixed="right">
                    <template slot-scope="scope">
                        <span type="text">否</span>
                        <el-button type="text" @click="stockEdit(scope.row)">允许盘库</el-button>
                    </template>
                </el-table-column>
            </el-table>
            <br>
            <add-stock ref="addStock"></add-stock>
            <deliver-usage ref="deliverUsage"></deliver-usage>
            <stock-records ref="stockRecords"></stock-records>
            <edit-stock ref="editStock"></edit-stock>
        </div>
    </div>
</template>
<script>
import {computePageCount} from "../../utils";
import {getCityListData, getProvinceListData} from "../../api/area"
import {regionPifaBox} from "../../api/stock"
import addStock from "./components/addStock"
import deliverUsage from "./components/deliverUsage"
import stockRecords from "./components/stockRecords"
import editStock from "./components/editStock"
import Cookies from "js-cookie"
export default {
    name: "stockManage",
    components: {addStock,deliverUsage,stockRecords,editStock},
    data() {
        return {
            tableKey: '',
            provinceList: [],
            cityList: [],
            districtList: [],
            Cookies: Cookies,
            listLoading: false,
            stateStockData: [],
        }
    },
    created() {
        const t = this
        setTimeout(()=>{
            t.$refs.deliverUsage.open()
        },1000)
    },
    mounted() {
    },
    watch: {},
    methods: {
        addStock(){
            const t = this
            t.$refs.addStock.open()
        },
        openRecord(row){
            const t = this
            t.$refs.stockRecords.open()
        },
        deliverUsage(row){
            const t = this
            t.$refs.stockRecords.open()
        },
        // async getRegionPifaBox() {
        //     let res = await regionPifaBox()
        //     if (res.data.code === "200") {
                // const stateStockData = res.data.result || []
                // if(Array.isArray(stateStockData)){
                //     stateStockData.map(item=>{
                //         if(Array.isArray(item.enterprises)){
                //             item.enterprises.map((subRes, subIndex)=>{
                //                 let content = {}
                //                 content = subRes
                //                 content['area'] = item.area
                //                 content['enterpriseNum'] = item.enterpriseNum
                //                 // 重点!赋值合并的行数数值,只需要取子循环的第一个数赋值待合并的行数即可
                //                 if(subIndex == 0){
                //                     content['rowNum'] = item.enterprises.length
                //                 }
                //                 t.tableRowData.push(content)
                //             })
                //         }
                //     })
                // }
        //     } else {
        //         this.$message({
        //             type: 'warning',
        //             message: res.data.message
        //         })
        //     }
        //     this.listLoading = false
        // },
        digDetail(row){
        },
        stockEdit(row){
            const t = this
            t.$refs.editStock.open()
        },
        objectSpanMethod({ row, column, rowIndex, columnIndex }) {
            // columnIndex 代表列数,从0开始计数,我们要合并的字段属于第一列,取0
            if(columnIndex <=7){
                return {
                    rowspan: row.rowNum, // 待合并行数 -- 合并的行数长度就等于之前赋值的子数据的长度;未赋值的即表示0,不显示
                    colspan: row.rowNum>0?1:0  // 待合并列数 -- 合并的列数自身占一列,被合并的要返回0,表示不显示
                };
            }
        },
        tableRowClassName({row,rowIndex}) {
            let arr = this.hoverOrderArr
            for (let i = 0; i < arr.length; i++) {
                if (rowIndex == arr[i]) {
                    return 'hovered-row'
                }
            }
        },
        cellMouseEnter(row, column, cell, event) {
            this.rowIndex = row.rowIndex;
            this.hoverOrderArr = [];
            this.OrderIndexArr.forEach(element => {
                if (element.indexOf(this.rowIndex) >= 0) {
                    this.hoverOrderArr = element
                }
            })
        },
        cellMouseLeave(row, column, cell, event) {
            this.rowIndex = '-1'
            this.hoverOrderArr = [];
        },
    },
}
</script>
<style scoped>
.basic_search {
    display: inline-block;
}
</style>
src/views/stock/stockSupervision.vue
对比新文件
@@ -0,0 +1,267 @@
<template>
    <div class="app-container">
        <div class="filter-container">
            <div style="display: block;">
                <div class="basic_search">
                    <span>区域:</span>
                    <el-select v-model="listQuery.province" clearable filterable @change="changeArea('province')">
                        <el-option
                            v-for="item in provinceList"
                            :key="item.id"
                            :label="item.name"
                            :value="item.name"
                        >
                        </el-option>
                    </el-select>
                </div>
                <div class="basic_search">
                    <el-select v-model="listQuery.city" prop="city" clearable filterable @change="changeArea('city')">
                        <el-option
                            v-for="item in cityList"
                            :key="item.id"
                            :label="item.name"
                            :value="item.name"
                        >
                        </el-option>
                    </el-select>
                </div>
                <div class="basic_search">
                    <el-select v-model="listQuery.district" clearable filterable @change="changeArea('district')">
                        <el-option
                            v-for="item in districtList"
                            :key="item.id"
                            :label="item.name"
                            :value="item.name"
                        >
                        </el-option>
                    </el-select>
                </div>
                <div class="basic_search">
                    <span>企业名称:</span>
                    <el-input filterable clearable v-model="listQuery.companyName" style="width:200px">
                    </el-input>
                </div>
                <div class="basic_search">
                    <span>库区名称:</span>
                    <el-input filterable clearable v-model="listQuery.stockName" style="width:200px">
                    </el-input>
                </div>
                <div class="basic_search" style="margin-right: 10px">
                    <el-button style="margin-left: 10px;" type="primary" @click="reset()">重置</el-button>
                    <el-button style="margin-left: 10px;" type="primary" icon="el-icon-search" @click="searchData()">查询</el-button>
                </div>
            </div>
        </div>
        <div class="table_content">
            <el-table
                v-loading="listLoading"
                :key="tableKey"
                :data="stateStockData"
                show-summary
                :span-method="objectSpanMethod" :cell-class-name="tableRowClassName" @cell-mouse-leave="cellMouseLeave"  @cell-mouse-enter="cellMouseEnter"
                border
                fit
                highlight-current-row
                style="width: 100%;"
            >
                <el-table-column label="库区" prop="" align="center"></el-table-column>
                <el-table-column label="所属地区" align="center">
                    <template slot-scope="scope">
                        <el-link type="primary" @click="digDetail(scope.row)">{{ scope.row.region }}</el-link>
                    </template>
                </el-table-column>
                <el-table-column label="所属企业" prop="" align="center"></el-table-column>
                <el-table-column label="地址" prop="" align="center"></el-table-column>
                <el-table-column label="库区总面积" prop="" align="center"></el-table-column>
                <el-table-column label="有效存储总面积" prop="" align="center"></el-table-column>
                <el-table-column label="总库容量" prop="" align="center"></el-table-column>
                <el-table-column label="总核药量" prop="" align="center"></el-table-column>
                <el-table-column label="库房名称" prop="" align="center">
                    <template slot-scope="scope">
                        <el-link type="primary" @click="openRecord(scope.row)"></el-link>
                    </template>
                </el-table-column>
                <el-table-column label="总库存" prop="" align="center"></el-table-column>
                <el-table-column label="库房面积" prop="" align="center"></el-table-column>
                <el-table-column label="有效存储面积" prop="" align="center"></el-table-column>
                <el-table-column label="库容量" prop="" align="center"></el-table-column>
                <el-table-column label="核药量" prop="" align="center"></el-table-column>
                <el-table-column label="爆竹类(箱)" prop="baozhuCount" align="center"></el-table-column>
                <el-table-column label="喷花类(箱)" prop="penhuaCount" align="center"></el-table-column>
                <el-table-column label="旋转类(箱)" prop="xuanzhuanCount" align="center"></el-table-column>
                <el-table-column label="吐珠类(箱)" prop="tuzhuCount" align="center"></el-table-column>
                <el-table-column label="玩具类(箱)" prop="wanjuCount" align="center"></el-table-column>
                <el-table-column label="组合烟花类(箱)" prop="zuheCount" align="center"></el-table-column>
                <el-table-column label="是否超量" prop="" align="center">
                    <template slot-scope="scope">
                        <span></span>
                    </template>
                </el-table-column>
                <el-table-column label="是否允许盘库" prop="" align="center">
                    <template slot-scope="scope">
                        <el-switch v-model="scope.row.tableStatus"></el-switch>
                    </template>
                </el-table-column>
                <el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width" fixed="right">
                    <template slot-scope="scope">
                        <el-button type="text" @click="digDetail(scope.row)">查看详情</el-button>
                        <el-button type="text" @click="deleteData(scope.row)">删除</el-button>
                    </template>
                </el-table-column>
            </el-table>
            <br>
            <add-stock ref="addStock"></add-stock>
            <stock-records ref="stockRecords"></stock-records>
        </div>
    </div>
</template>
<script>
import {computePageCount} from "../../utils";
import {getCityListData, getProvinceListData} from "../../api/area"
import {regionPifaBox} from "../../api/stock"
import addStock from "./components/addStock"
import stockRecords from "./components/stockRecords"
import Cookies from "js-cookie"
export default {
    name: "stockSupervision",
    components: {addStock,stockRecords},
    data() {
        return {
            tableKey: '',
            provinceList: [],
            cityList: [],
            districtList: [],
            Cookies: Cookies,
            listLoading: false,
            stateStockData: [],
            listQuery: {
                province: '',
                city: '',
                district: '',
                companyName: '',
                stockName: '',
            },
        }
    },
    created() {
        const t = this
        t.getProvince()
        setTimeout(()=>{
        },1000)
    },
    mounted() {
    },
    watch: {},
    methods: {
        openRecord(row){
            const t = this
            t.$refs.stockRecords.open()
        },
        // async getRegionPifaBox() {
        //     this.listLoading = true
        //     let res = await regionPifaBox(this.listQuery)
        //     if (res.data.code === "200") {
                // const stateStockData = res.data.result || []
                // if(Array.isArray(stateStockData)){
                //     stateStockData.map(item=>{
                //         if(Array.isArray(item.enterprises)){
                //             item.enterprises.map((subRes, subIndex)=>{
                //                 let content = {}
                //                 content = subRes
                //                 content['area'] = item.area
                //                 content['enterpriseNum'] = item.enterpriseNum
                //                 // 重点!赋值合并的行数数值,只需要取子循环的第一个数赋值待合并的行数即可
                //                 if(subIndex == 0){
                //                     content['rowNum'] = item.enterprises.length
                //                 }
                //                 t.tableRowData.push(content)
                //             })
                //         }
                //     })
                // }
        //     } else {
        //         this.$message({
        //             type: 'warning',
        //             message: res.data.message
        //         })
        //     }
        //     this.listLoading = false
        // },
        digDetail(row){
            const t = this
            t.$refs.addStock.open()
        },
        async getProvince() {
            let res = await getProvinceListData()
            if (res.data.code === "200") {
                this.provinceList = res.data.result.provinceList
            }
        },//获取省
        async changeArea(value) {
            if (value === 'province') {
                this.listQuery.city = ''
                this.listQuery.district = ''
                this.areaListQuery = {
                    type: 2,
                    parenttype: 1,
                    parentname: this.listQuery.province,
                }
                let res = await getCityListData(this.areaListQuery)
                if (res.data.code === "200") {
                    this.cityList = res.data.result
                }
            } else if (value === 'city') {
                this.listQuery.district = ''
                this.areaListQuery = {
                    type: 3,
                    parenttype: 2,
                    parentname: this.listQuery.city,
                }
                let res = await getCityListData(this.areaListQuery)
                if (res.data.code === "200") {
                    this.districtList = res.data.result
                }
            }
        },
        objectSpanMethod({ row, column, rowIndex, columnIndex }) {
            // columnIndex 代表列数,从0开始计数,我们要合并的字段属于第一列,取0
            if(columnIndex <=8){
                return {
                    rowspan: row.rowNum, // 待合并行数 -- 合并的行数长度就等于之前赋值的子数据的长度;未赋值的即表示0,不显示
                    colspan: row.rowNum>0?1:0  // 待合并列数 -- 合并的列数自身占一列,被合并的要返回0,表示不显示
                };
            }
        },
        tableRowClassName({row,rowIndex}) {
            let arr = this.hoverOrderArr
            for (let i = 0; i < arr.length; i++) {
                if (rowIndex == arr[i]) {
                    return 'hovered-row'
                }
            }
        },
        cellMouseEnter(row, column, cell, event) {
            this.rowIndex = row.rowIndex;
            this.hoverOrderArr = [];
            this.OrderIndexArr.forEach(element => {
                if (element.indexOf(this.rowIndex) >= 0) {
                    this.hoverOrderArr = element
                }
            })
        },
        cellMouseLeave(row, column, cell, event) {
            this.rowIndex = '-1'
            this.hoverOrderArr = [];
        },
    },
}
</script>
<style scoped>
.basic_search {
    display: inline-block;
}
</style>