From 3d81e48c5df05117225726fa06f44c9c33f76861 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期一, 26 六月 2023 10:14:51 +0800
Subject: [PATCH] 转库提交
---
src/views/stock/components/addStock.vue | 254 +++++++++++++
src/views/stock/components/stockDetail.vue | 2
src/views/stock/stockManage.vue | 192 ++++++++++
config/index.js | 2
src/views/stock/enterprisePurchaseStatistics.vue | 2
src/views/stock/stockSupervision.vue | 267 ++++++++++++++
src/router/index.js | 14
src/views/enterprise/enterpriseDetailForm.vue | 36 -
src/views/stock/components/stockRecords.vue | 176 +++++++++
src/views/stock/statePurchaseStatistics.vue | 2
config/dev.env.js | 12
src/views/stock/components/editStock.vue | 97 +++++
src/views/stock/components/deliverUsage.vue | 68 +++
13 files changed, 1,090 insertions(+), 34 deletions(-)
diff --git a/config/dev.env.js b/config/dev.env.js
index b493a6e..680a165 100644
--- a/config/dev.env.js
+++ b/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.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/"',
- //
-
- // 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/"',
// IMG_API: '"http://127.0.0.1:8100/upload/"',
// IMG_API: '"https://sinanoaq.com:8100/upload/"',
// BASE_API: '"http://220.171.99.118:4100"',
diff --git a/config/index.js b/config/index.js
index 98cab24..a52ff93 100644
--- a/config/index.js
+++ b/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,
diff --git a/src/router/index.js b/src/router/index.js
index d57f811..4201441 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -123,7 +123,19 @@
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
},
diff --git a/src/views/enterprise/enterpriseDetailForm.vue b/src/views/enterprise/enterpriseDetailForm.vue
index 8e159c0..b56e3d6 100644
--- a/src/views/enterprise/enterpriseDetailForm.vue
+++ b/src/views/enterprise/enterpriseDetailForm.vue
@@ -286,34 +286,24 @@
}
}
- }
- else{
+ } else{
let updateForm = this.$refs.enterpriseBasicInformation.dataForm
- if(updateForm.validstarttime == null){
+ let res = await updateNewEnterprise(updateForm)
+ if(res.data.code === "200"){
+ this.$emit('getinfo')
+ this.dialogVisible = false
this.$notify({
- title:'警告',
- message:'请填写许可证期限',
- type:'warning'
+ type:'success',
+ duration:2000,
+ message:'成功',
+ title:'成功',
})
}else {
- let res = await updateNewEnterprise(updateForm)
- if(res.data.code === "200"){
- this.$emit('getinfo')
- this.dialogVisible = false
- this.$notify({
- type:'success',
- duration:2000,
- message:'成功',
- title:'成功',
- })
- }else {
- this.$message({
- type:'warning',
- message:res.data.message
- })
- }
+ this.$message({
+ type:'warning',
+ message:res.data.message
+ })
}
-
}
}
},
diff --git a/src/views/stock/components/addStock.vue b/src/views/stock/components/addStock.vue
new file mode 100644
index 0000000..9222aa2
--- /dev/null
+++ b/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>
diff --git a/src/views/stock/components/deliverUsage.vue b/src/views/stock/components/deliverUsage.vue
new file mode 100644
index 0000000..0680133
--- /dev/null
+++ b/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>
diff --git a/src/views/stock/components/editStock.vue b/src/views/stock/components/editStock.vue
new file mode 100644
index 0000000..5cf6d5e
--- /dev/null
+++ b/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>
diff --git a/src/views/stock/components/stockDetail.vue b/src/views/stock/components/stockDetail.vue
index 48d17da..35ceca5 100644
--- a/src/views/stock/components/stockDetail.vue
+++ b/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">
diff --git a/src/views/stock/components/stockRecords.vue b/src/views/stock/components/stockRecords.vue
new file mode 100644
index 0000000..a7b57e9
--- /dev/null
+++ b/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>
diff --git a/src/views/stock/enterprisePurchaseStatistics.vue b/src/views/stock/enterprisePurchaseStatistics.vue
index 2ba0d35..cc76fbb 100644
--- a/src/views/stock/enterprisePurchaseStatistics.vue
+++ b/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{
diff --git a/src/views/stock/statePurchaseStatistics.vue b/src/views/stock/statePurchaseStatistics.vue
index 939b587..3a5cd8d 100644
--- a/src/views/stock/statePurchaseStatistics.vue
+++ b/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 {
diff --git a/src/views/stock/stockManage.vue b/src/views/stock/stockManage.vue
new file mode 100644
index 0000000..7a5d2f0
--- /dev/null
+++ b/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>
diff --git a/src/views/stock/stockSupervision.vue b/src/views/stock/stockSupervision.vue
new file mode 100644
index 0000000..8d9bcb7
--- /dev/null
+++ b/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>
--
Gitblit v1.9.2