| | |
| | | // 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"', |
| | |
| | | |
| | | // 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, |
| | |
| | | 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 |
| | | }, |
| | |
| | | } |
| | | } |
| | | |
| | | } |
| | | 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 |
| | | }) |
| | | } |
| | | |
| | | } |
| | | } |
| | | }, |
对比新文件 |
| | |
| | | <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> |
对比新文件 |
| | |
| | | <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> |
对比新文件 |
| | |
| | | <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> |
| | |
| | | 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"> |
对比新文件 |
| | |
| | | <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> |
| | |
| | | import FileSaver from 'file-saver' |
| | | import XLSX from 'xlsx' |
| | | export default { |
| | | name: "enterpriseEntryStatistics", |
| | | name: "enterprisePurchaseStatistics", |
| | | components: {PurchaseDetail}, |
| | | data(){ |
| | | return{ |
| | |
| | | import FileSaver from 'file-saver' |
| | | import XLSX from 'xlsx' |
| | | export default { |
| | | name: "enterpriseEntryStatistics", |
| | | name: "statePurchaseStatistics", |
| | | components: {PurchaseDetail}, |
| | | data() { |
| | | return { |
对比新文件 |
| | |
| | | <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> |
对比新文件 |
| | |
| | | <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> |