对比新文件 |
| | |
| | | <template> |
| | | <div class="main"> |
| | | <div class="main_tabs"> |
| | | <el-tabs v-model="activeName" @tab-click="handleClick"> |
| | | <el-tab-pane label="钢筋笼库存" name="first"> |
| | | <reins-invent ref="Invents"></reins-invent> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="成环统计" name="second"> |
| | | <rings-number ref="Rings"></rings-number> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="生产数据统计" name="third"> |
| | | <products-data ref="Products"></products-data> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import ReinsInvent from './components/ReinsInvent.vue'//钢筋笼库存 |
| | | import RingsNumber from './components/RingsNumber.vue'//成环统计 |
| | | import ProductsData from './components/ProductsData.vue'//生产数据统计 |
| | | export default { |
| | | components:{ |
| | | ReinsInvent, |
| | | RingsNumber, |
| | | ProductsData |
| | | }, |
| | | data(){ |
| | | return{ |
| | | activeName:'first' |
| | | } |
| | | }, |
| | | mounted(){ |
| | | this.$refs.Invents.searchButtonInfo(true); |
| | | this.$refs.Invents.getAllProjects(); |
| | | }, |
| | | methods:{ |
| | | //切换界面 |
| | | handleClick(tab){ |
| | | switch(tab.name){ |
| | | case 'second': |
| | | this.$refs.Rings.searchButtonInfo(true); |
| | | this.$refs.Rings.getAllProjects(); |
| | | break; |
| | | case 'third': |
| | | this.$refs.Products.searchSteelProducePlan(); |
| | | break; |
| | | default: |
| | | this.$refs.Invents.searchButtonInfo(true); |
| | | this.$refs.Invents.getAllProjects(); |
| | | } |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped lang="scss"> |
| | | @import'@/style/layout-main.scss'; |
| | | /deep/ .el-tabs__content{ |
| | | position: static; |
| | | } |
| | | |
| | | /deep/.main { |
| | | background: none; |
| | | } |
| | | </style> |
对比新文件 |
| | |
| | | <template> |
| | | <div class="main"> |
| | | <div class="main_header"> |
| | | <div class="header_item"> |
| | | <span class="header_label">项目名称:</span> |
| | | <el-select v-model="search.proId" placeholder="请选择项目名称" clearable @change="changeSizes"> |
| | | <el-option |
| | | v-for="item in optionsProject" |
| | | :key="item.proId" |
| | | :label="item.proName" |
| | | :value="item.proId"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="header_item"> |
| | | <span class="header_label">钢筋笼编号:</span> |
| | | <el-input v-model="search.produceNumber" :size="size" clearable placeholder="请输入钢筋笼编号"></el-input> |
| | | </div> |
| | | <div class="header_item"> |
| | | <span class="header_label">制作人:</span> |
| | | <el-input v-model="search.realName" :size="size" clearable placeholder="请输入制作人"></el-input> |
| | | </div> |
| | | <div class="header_item"> |
| | | <span class="header_label">生产班组:</span> |
| | | <el-select v-model="search.groupId" placeholder="请选择生产班组" clearable filterable> |
| | | <el-option |
| | | v-for="item in optionsDeparts" |
| | | :key="item.groupId" |
| | | :label="item.groupName" |
| | | :value="item.groupId"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="header_item"> |
| | | <span class="header_label">质量标注:</span> |
| | | <el-select v-model="search.isQualified" placeholder="请选择质量标注" clearable> |
| | | <el-option label="合格" value="1"></el-option> |
| | | <el-option label="不合格" value="2"></el-option> |
| | | <el-option label="报废" value="3"></el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="header_item"> |
| | | <span class="header_label">是否入模:</span> |
| | | <el-select v-model="search.isModel" placeholder="请选择是否入模" clearable> |
| | | <el-option label="已入模" value="1"></el-option> |
| | | <el-option label="未入模" value="2"></el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="header_item"> |
| | | <span class="header_label">配筋:</span> |
| | | <el-select v-model="search.reinforcementId" placeholder="请选择配筋" clearable> |
| | | <el-option |
| | | v-for="item in optionsReins" |
| | | :key="item.hasSteel" |
| | | :label="item.has" |
| | | :value="item.hasSteel"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="header_item"> |
| | | <span class="header_label">块号:</span> |
| | | <el-select v-model="search.blockNum" placeholder="请选择块号" clearable> |
| | | <el-option |
| | | v-for="item in optionsBlocks" |
| | | :key="item.blockNum" |
| | | :label="item.blockName" |
| | | :value="item.blockNum"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="header_item"> |
| | | <span class="header_label">打印时间:</span> |
| | | <el-date-picker |
| | | v-model="search.time" |
| | | type="datetimerange" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | :default-time="['00:00:00','23:59:59']" |
| | | range-separator="-" |
| | | start-placeholder="起始时间" |
| | | end-placeholder="结束时间"> |
| | | </el-date-picker> |
| | | </div> |
| | | <div class="header_item"> |
| | | <span class="header_label">质检时间:</span> |
| | | <el-date-picker |
| | | v-model="search.times" |
| | | type="datetimerange" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | :default-time="['00:00:00','23:59:59']" |
| | | range-separator="-" |
| | | start-placeholder="起始时间" |
| | | end-placeholder="结束时间"> |
| | | </el-date-picker> |
| | | </div> |
| | | <div class="header_item"> |
| | | <el-button :size="size" icon="el-icon-search" v-if="showButton('search')" @click="searchButtonInfo(true)">查询</el-button> |
| | | <el-button :size="size" icon="el-icon-upload2" v-if="showButton('export')" @click="exportProp">导出Excel</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="main_content"> |
| | | <el-table |
| | | v-loading="loading" |
| | | :data="dataList" |
| | | height="100%" |
| | | :cell-style="cellStyle"> |
| | | <el-table-column align="center" label="序号" width="60"> |
| | | <template #default="scope"> |
| | | <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="produceNumber" label="钢筋笼编号" align="center" width="180" ></el-table-column> |
| | | <el-table-column prop="proName" label="项目名称" align="center" width="200" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="sizeName" label="尺寸" align="center" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="reinforcementName" label="配筋" align="center"></el-table-column> |
| | | <el-table-column prop="blockName" label="块号" align="center"></el-table-column> |
| | | <el-table-column prop="groupName" label="生产班组" align="center"></el-table-column> |
| | | <el-table-column prop="printTime" label="打印时间" align="center" width="150"></el-table-column> |
| | | <el-table-column prop="realName" label="制作人" align="center" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="qualityUserName" label="质检人" align="center"></el-table-column> |
| | | <el-table-column prop="qualityTime" label="质检时间" align="center" width="150"></el-table-column> |
| | | <el-table-column prop="isQualified" label="质量标注" align="center"> |
| | | <template #default="{row}"> |
| | | <div :class="{'isStand':row.isQualified===2&&row.isModel ===1}">{{row.isQualified===1?'合格':row.isQualified===2?'不合格':row.isQualified===3?'报废':''}}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="isModel" label="是否入模" align="center"> |
| | | <template #default="{row}"> |
| | | <div :class="{'isStand':row.isQualified===2&&row.isModel ===1}">{{row.isModel===1?'已入模':row.isModel===2?'未入模':''}}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" align="center" width="200"> |
| | | <template #default="{ row }"> |
| | | <el-button class="table_btn" size="mini" v-if="showButton('question')&&row.isQualified===2 || row.isQualified===3" @click="updateQuestion(row)">存在问题</el-button> |
| | | <el-button class="table_btn" size="mini" v-if="showButton('trace')" @click="traceInfo(row)">质量追溯</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div class="main_footer"> |
| | | <el-pagination |
| | | background |
| | | @current-change="changePageNum" |
| | | @size-change="changePageSize" |
| | | :current-page="pageNum" |
| | | :page-sizes="[10, 20, 50, 100]" |
| | | :page-size="pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total"> |
| | | </el-pagination> |
| | | </div> |
| | | <el-dialog |
| | | class="prop_dialog" |
| | | :title="asyncTitle ? '存在问题' : '质量追溯'" |
| | | :close-on-click-modal="false" |
| | | :visible.sync="asyncVisible" |
| | | width="58%"> |
| | | <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="auto" class="rule_form" v-if="asyncTitle"> |
| | | <el-form-item label="质检结果:" prop="checkResult"> |
| | | <span style="color:red">{{ruleForm.checkResult ==='1'?'合格':ruleForm.checkResult ==='2'?'不合格':ruleForm.checkResult ==='3'?'报废':''}}</span> |
| | | </el-form-item> |
| | | <el-form-item label="存在问题:" prop="checkFaildReason"> |
| | | <el-input v-model="ruleForm.checkFaildReason" :size="size" type="textarea" :rows="3" :disabled="true" clearable placeholder="请输入盾构单位"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="图片:" v-if="showPhone"> |
| | | <el-image |
| | | style="width:50px;height:50px; cursor: pointer;" |
| | | :src="phoneList[0]" |
| | | :preview-src-list="phoneList" |
| | | fit="contain"> |
| | | <div slot="error" class="image-slot"> |
| | | <img src="https://pipe.thhy-tj.com/group1/M00/00/03/bx5d1GRlfmCAEmAPAAAFoOEW2dU397.png" style="width:50px;height:50px"> |
| | | </div> |
| | | </el-image> |
| | | </el-form-item> |
| | | <el-form-item label="问题处理结果:" prop="execResult"> |
| | | <el-input v-model="ruleForm.execResult" :size="size" type="textarea" :rows="3" clearable placeholder="请输入问题处理结果"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="备注:" prop="remark"> |
| | | <el-input |
| | | v-model="ruleForm.remark" |
| | | :size="size" |
| | | type="textarea" |
| | | :rows="3" |
| | | clearable |
| | | placeholder="请输入备注" |
| | | maxlength="200" |
| | | show-word-limit></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div v-if="!asyncTitle"> |
| | | <div class="reins_info">钢筋笼信息</div> |
| | | <div class="reins_info_content"> |
| | | <div class="reins_info_items"> |
| | | <div class="reins_info_titles">钢筋笼编号</div> |
| | | <div class="reins_info_datas">{{rebarInfos.produceNumber}}</div> |
| | | </div> |
| | | <div class="reins_info_items"> |
| | | <div class="reins_info_titles">项目</div> |
| | | <div class="reins_info_datas">{{rebarInfos.proName}}</div> |
| | | </div> |
| | | <div class="reins_info_items"> |
| | | <div class="reins_info_titles">尺寸</div> |
| | | <div class="reins_info_datas">{{rebarInfos.sizeName}}</div> |
| | | </div> |
| | | <div class="reins_info_items"> |
| | | <div class="reins_info_titles">配筋</div> |
| | | <div class="reins_info_datas">{{rebarInfos.reinforcementName}}</div> |
| | | </div> |
| | | <div class="reins_info_items"> |
| | | <div class="reins_info_titles">块号</div> |
| | | <div class="reins_info_datas">{{rebarInfos.blockName}}</div> |
| | | </div> |
| | | <div class="reins_info_items"> |
| | | <div class="reins_info_titles">制作人</div> |
| | | <div class="reins_info_datas">{{rebarInfos.realName}}</div> |
| | | </div> |
| | | <div class="reins_info_items"> |
| | | <div class="reins_info_titles">质检人</div> |
| | | <div class="reins_info_datas">{{rebarInfos.qualityUserName}}</div> |
| | | </div> |
| | | <div class="reins_info_items"> |
| | | <div class="reins_info_titles">质检时间</div> |
| | | <div class="reins_info_datas">{{rebarInfos.qualityTime}}</div> |
| | | </div> |
| | | <div class="reins_info_items"> |
| | | <div class="reins_info_titles">质检结果</div> |
| | | <div class="reins_info_datas">{{rebarInfos.isQualified===1?'合格':rebarInfos.isQualified===2?'不合格':rebarInfos.isQualified===3?'报废':''}}</div> |
| | | </div> |
| | | <div class="reins_info_items"> |
| | | <div class="reins_info_titles">打印日期</div> |
| | | <div class="reins_info_datas">{{rebarInfos.printTime}}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div slot="footer" v-if="asyncTitle && execFlag!==1"> |
| | | <el-button @click="asyncVisible = false">取 消</el-button> |
| | | <el-button class="submit_btn" @click="asyncTitle ? submitInsert() : submitUpdate()">提 交</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | |
| | | </template> |
| | | |
| | | <script> |
| | | import { buttonPinia } from '../../../pinia/index'; |
| | | import { throttle, changeSize,downFiles } from '../../../plugins/public'; // 导入节流、动态切换组件尺寸方法 |
| | | export default { |
| | | data() { |
| | | return { |
| | | size: changeSize(), // 组件尺寸 |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | steelProduceNum:null, |
| | | showPhone:false,//是否展示报废图片 |
| | | phoneList:[],//展示图片族 |
| | | search:{},//查询条件 |
| | | execFlag:null,//是否提交过存在问题 |
| | | total: 0, |
| | | loading: false, |
| | | dataList: [], //钢筋笼生产信息列表 is_qualified:是否合格 1合格2 不合格 is_model:是否入模 1入模2未入模 |
| | | optionsDeparts:[],//生产班组 |
| | | optionsReins:[],//配筋 |
| | | optionsBlocks:[],//块号 |
| | | asyncTitle: true, // 对话框title 新增:true 修改:false |
| | | asyncVisible: false, // 添加 修改对话框 |
| | | optionsProject:[],//项目名称 |
| | | rebarInfos:null,//质量追溯列表 |
| | | ruleForm: {}, // 按钮表单 |
| | | rules: { |
| | | segmentName: [{ |
| | | required: true, |
| | | message: '请输入标段名称', |
| | | trigger: 'blur' |
| | | }], |
| | | shieldEnp: [{ |
| | | required: true, |
| | | message: '请输入盾构单位', |
| | | trigger: 'blur' |
| | | }], |
| | | station: [{ |
| | | required: true, |
| | | message: '请输入站点', |
| | | trigger: 'blur' |
| | | }], |
| | | proId: [{ |
| | | required: true, |
| | | message: '请选择项目名称', |
| | | trigger: 'change' |
| | | }], |
| | | segmentAdmin: [{ |
| | | required: true, |
| | | message: '请选择需求负责人', |
| | | trigger: 'change' |
| | | }], |
| | | }, |
| | | } |
| | | }, |
| | | watch: { |
| | | asyncVisible(bol) { |
| | | if(!bol) { |
| | | this.ruleForm = {}; |
| | | this.$refs.ruleForm.resetFields(); |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | | const that = this; |
| | | // 根据窗口大小动态修改组件尺寸 |
| | | window.onresize = () => { |
| | | that.size = changeSize(); |
| | | } |
| | | that.searchButtonInfo(true); |
| | | that.getAllDeparts() |
| | | that.getAllProjects() |
| | | }, |
| | | methods: { |
| | | //获得所有项目名称 |
| | | getAllProjects(){ |
| | | let obj = { |
| | | pageNum: 1, |
| | | pageSize: 100000000 |
| | | } |
| | | this.$api.Engineer.searchProjects(obj).then(res=>{ |
| | | if(res.statusMsg === 'ok'){ |
| | | this.optionsProject = res.data.list |
| | | }else{ |
| | | this.$message.warning(res.statusMsg) |
| | | } |
| | | }) |
| | | }, |
| | | cellStyle({row,column}){ |
| | | if(row.isQualified===2&& row.isModel===1 &&column.property =="isQualified"&&column.property =="isModel"){ |
| | | return { |
| | | 'color':'red' |
| | | } |
| | | } |
| | | }, |
| | | //通过选择项目选择尺寸 |
| | | changeSizes(val){ |
| | | this.$api.Reinforce.searchProjectBears({proId:val,pageNum: 1, |
| | | pageSize:1000000}).then(res=>{ |
| | | if(res.statusMsg === 'ok'){ |
| | | this.optionsReins = res.data.hasDtos |
| | | this.optionsBlocks = res.data.blokDtos |
| | | }else{ |
| | | this.$message.warning(res.statusMsg) |
| | | } |
| | | }) |
| | | }, |
| | | //获取生产班组 |
| | | getAllDeparts(){ |
| | | this.$api.Personnerl.GETDEPARTMENTDATA({}).then(res=>{ |
| | | if(res.statusMsg === 'ok'){ |
| | | res.data.forEach(item=>{ |
| | | this.optionsDeparts.push(...item.groups) |
| | | }) |
| | | }else{ |
| | | this.$message.warning(res.statusMsg) |
| | | } |
| | | }) |
| | | }, |
| | | // 查询按钮列表信息 |
| | | searchButtonInfo(bol) { |
| | | if(bol) { |
| | | this.pageNum = 1; |
| | | } |
| | | let params = Object.assign({},this.search,{ |
| | | pageNum: this.pageNum, |
| | | pageSize: this.pageSize |
| | | }) |
| | | params.strTime = this.search.time&&this.search.time[0] |
| | | params.endTime = this.search.time&&this.search.time[1] |
| | | params.strTimes = this.search.times&&this.search.times[0] |
| | | params.endTimes = this.search.times&&this.search.times[1] |
| | | delete params.time |
| | | delete params.times |
| | | this.loading = true; |
| | | this.$api.Reinforce.searchReinforcement(params).then((res) => { |
| | | if(res.statusMsg === 'ok') { |
| | | this.total = res.data.total; |
| | | this.dataList = res.data.list; |
| | | } |
| | | this.loading = false; |
| | | }) |
| | | }, |
| | | // 转圈圈 |
| | | functionLoading() { |
| | | this.loadingView = this.$loading({ |
| | | lock: true, |
| | | text: '请稍后...', |
| | | spinner: 'el-icon-loading', |
| | | background: 'rgba(0, 0, 0, 0.7)' |
| | | }); |
| | | }, |
| | | // 导出按钮信息 |
| | | exportProp() { |
| | | this.functionLoading(); |
| | | let params = Object.assign({},this.search) |
| | | params.strTime = this.search.time&&this.search.time[0] |
| | | params.endTime = this.search.time&&this.search.time[1] |
| | | params.strTimes = this.search.times&&this.search.times[0] |
| | | params.endTimes = this.search.times&&this.search.times[1] |
| | | delete params.time |
| | | delete params.times |
| | | this.$api.Reinforce.exportDatas(params).then(res => { |
| | | downFiles(res, '钢筋笼生产信息', 'xls') |
| | | this.loadingView.close() |
| | | }) |
| | | .catch(() => { |
| | | this.loadingView.close(); |
| | | }) |
| | | }, |
| | | // 存在问题按钮 |
| | | updateQuestion(row) { |
| | | this.steelProduceNum = row.produceNumber |
| | | this.asyncTitle = true; |
| | | this.asyncVisible = true; |
| | | this.$api.Reinforce.searchQuessions({steelProduceId: row.steelProduceId,steelProduceNum:row.produceNumber}).then(res=>{ |
| | | if(res.statusMsg === 'ok'){ |
| | | this.execFlag = res.data[0].execFlag |
| | | if(res.data[0].checkResult==='3'){ |
| | | this.$set(this.ruleForm,'checkFaildReason',res.data[0].remark) |
| | | this.$set(this.ruleForm,'checkResult',res.data[0].checkResult) |
| | | res.data[0].checkFile.map(item=>{ |
| | | this.phoneList.push(`https://pipe.thhy-tj.com/${item}`) |
| | | }) |
| | | this.showPhone = true |
| | | }else{ |
| | | this.showPhone = false |
| | | // this.ruleForm = res.data[0] |
| | | if(res.data[0].checkDtos === null){ |
| | | // this.$set(this.ruleForm,'checkFaildReason',' '+res.data[0].remark) |
| | | }else{ |
| | | let arr ="" |
| | | let arr1 = "" |
| | | let hmark = res.data[0].remark |
| | | res.data[0].checkDtos.map(names=>{ |
| | | arr+=names.reasonName+"," |
| | | return arr |
| | | }) |
| | | arr1 = arr.lastIndexOf(',') |
| | | arr = arr.substring(0,arr1) |
| | | this.$set(this.ruleForm,'checkFaildReason',arr+'。'+hmark) |
| | | } |
| | | } |
| | | }else{ |
| | | this.$message.warning(res.statusMsg) |
| | | } |
| | | }) |
| | | }, |
| | | // 质量追溯按钮 |
| | | traceInfo(row) { |
| | | this.asyncTitle = false; |
| | | this.asyncVisible = true; |
| | | this.$api.Reinforce.detailsReinforcement({steelProduceId:row.steelProduceId}).then(res=>{ |
| | | if(res.statusMsg === 'ok'){ |
| | | this.rebarInfos = res.data |
| | | }else{ |
| | | this.$message.warning(res.statusMsg) |
| | | } |
| | | }) |
| | | }, |
| | | // 提交存在问题按钮 |
| | | submitInsert: throttle(function() { |
| | | this.$refs.ruleForm.validate((valid) => { |
| | | if(valid) { |
| | | const params = Object.assign({}, this.ruleForm); |
| | | params.segmentList = this.needBlocks |
| | | params.steelProduceNum=this.steelProduceNum |
| | | this.$api.Reinforce.submitQuessions(params).then((res) => { |
| | | if(res.statusMsg === 'ok') { |
| | | this.asyncVisible = false; |
| | | this.searchButtonInfo(true); |
| | | this.$message.success('提交成功!'); |
| | | } else { |
| | | this.$message.warning(res.statusMsg); |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, 3000), |
| | | // 提交修改按钮信息 |
| | | submitUpdate: throttle(function() { |
| | | this.$refs.ruleForm.validate((valid) => { |
| | | if(valid) { |
| | | const params = Object.assign({}, this.ruleForm); |
| | | params.segmentList = this.needBlocks |
| | | this.$api.Engineer.updateSegment(params).then((res) => { |
| | | if(res.statusMsg === 'ok') { |
| | | this.asyncVisible = false; |
| | | this.searchButtonInfo(true); |
| | | this.$message.success('添加成功!'); |
| | | } else { |
| | | this.$message.warning(res.statusMsg); |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, 3000), |
| | | // 判断按钮权限信息 |
| | | showButton(str) { |
| | | const pinia = buttonPinia(); |
| | | return pinia.$state.buttonInfo.includes(str); |
| | | }, |
| | | // 切换页数 |
| | | changePageNum(page) { |
| | | this.pageNum = page; |
| | | this.searchButtonInfo(); |
| | | }, |
| | | // 切换每页条数 |
| | | changePageSize(size) { |
| | | this.pageSize = size; |
| | | this.searchButtonInfo(); |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import '../../../style/layout-main.scss'; |
| | | .reins_info{ |
| | | color: #fff; |
| | | font-size: 16px; |
| | | position: relative; |
| | | padding:0px 0px 10px 10px; |
| | | border-bottom: 1px solid #0D5274; |
| | | &::before{ |
| | | content: ''; |
| | | width: 2px; |
| | | height: 18px; |
| | | background-color: #18F6F8; |
| | | position: absolute; |
| | | left: 2px; |
| | | top: 3px; |
| | | } |
| | | } |
| | | .reins_info_content{ |
| | | display: flex; |
| | | margin: 20px 0px; |
| | | padding-right: 10px; |
| | | overflow: auto; |
| | | .reins_info_items{ |
| | | border-top: 1px solid #1CB7E0; |
| | | flex: none; |
| | | .reins_info_titles{ |
| | | border-left: 1px solid #1CB7E0; |
| | | border-right: 1px solid #1CB7E0; |
| | | border-bottom: 1px solid #1CB7E0; |
| | | text-align: center; |
| | | padding: 10px; |
| | | background-color: #082F57; |
| | | color: #0DEAF8; |
| | | } |
| | | .reins_info_datas{ |
| | | height: 40px; |
| | | border-left: 1px solid #1CB7E0; |
| | | border-right: 1px solid #1CB7E0; |
| | | border-bottom: 1px solid #1CB7E0; |
| | | text-align: center; |
| | | padding: 10px; |
| | | background-color: #061C48; |
| | | color: #0DEAF8; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .isStand{ |
| | | color: red; |
| | | } |
| | | |
| | | //滚动条样式 |
| | | ::-webkit-scrollbar { |
| | | width: 4px; |
| | | height: 8px; |
| | | } |
| | | ::-webkit-scrollbar-thumb { |
| | | border-radius: 10px; |
| | | box-shadow: inset 0 0 5px #0DEAF8; |
| | | background: rgba(0,0,0,0.2); |
| | | } |
| | | ::-webkit-scrollbar-track { |
| | | box-shadow: inset 0 0 5px transparent; |
| | | border-radius: 0; |
| | | background: transparent; |
| | | } |
| | | </style> |
对比新文件 |
| | |
| | | <template> |
| | | <div class="main tabs_main" style="height:89%"> |
| | | <div class="main_header"> |
| | | <div class="header_item"> |
| | | <span class="header_label">生产时间:</span> |
| | | <el-date-picker |
| | | v-model="timeData" |
| | | type="monthrange" |
| | | value-format="yyyy-MM-dd" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期"> |
| | | </el-date-picker> |
| | | </div> |
| | | <div class="header_item"> |
| | | <el-button |
| | | v-if="showButton('search')" |
| | | icon="el-icon-search" |
| | | @click="searchSteelProducePlan()"> |
| | | 查询 |
| | | </el-button> |
| | | </div> |
| | | </div> |
| | | <div class="main_content"> |
| | | <div id="first_chart" class="main_content_chart"></div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { buttonPinia } from '../../../../pinia'; |
| | | export default { |
| | | name: 'RebarcageIndex', |
| | | data() { |
| | | return { |
| | | timeData: '', |
| | | } |
| | | }, |
| | | mounted() { |
| | | const dateYear = new Date().getFullYear(); |
| | | this.timeData = [`${dateYear}-01-01`, `${dateYear}-12-01`]; |
| | | // this.searchSteelProducePlan(); |
| | | }, |
| | | methods: { |
| | | // 查询钢筋笼生产统计对比 |
| | | async searchSteelProducePlan() { |
| | | const { data } = await this.$api.Analyse.searchSteelProducePlan({ |
| | | startTime: this.timeData ? this.timeData[0] : '', |
| | | endTime: this.timeData ? this.timeData[1] : '', |
| | | }); |
| | | if(data.length === 0) { |
| | | this.$message.warning('请选择生产时间'); |
| | | return false; |
| | | } |
| | | this.$nextTick(() => { |
| | | this.createCharts('first_chart', data); |
| | | }) |
| | | }, |
| | | // 创建echart图表 |
| | | createCharts(name, data) { |
| | | const labelData = data.map(item => item.month); |
| | | const firstData = data.map(item => item.count ? item.count : 0); |
| | | const secondData = data.map(item => item.rate ? item.rate : 0); |
| | | const chartsImage = this.$echarts.init(document.getElementById(name)); |
| | | const option = { |
| | | tooltip: { |
| | | trigger: "axis", |
| | | formatter: function (params) { |
| | | var relVal = params[0].name; |
| | | for (var i = 0; i < params.length; i++) { |
| | | if (params[i].componentIndex === 0) { |
| | | relVal += |
| | | "<br/>" + |
| | | params[i].marker + |
| | | "月生产量" + |
| | | " : " + |
| | | params[i].value; |
| | | } else { |
| | | relVal += |
| | | "<br/>" + |
| | | params[i].marker + |
| | | "环比增长率" + |
| | | " : " + |
| | | params[i].value + |
| | | "%"; |
| | | } |
| | | } |
| | | return relVal; |
| | | }, |
| | | }, |
| | | grid: { |
| | | top: "15%", |
| | | right: "3%", |
| | | left: "2%", |
| | | bottom: "11%", |
| | | }, |
| | | xAxis: [ |
| | | { |
| | | type: "category", |
| | | data: labelData, |
| | | axisLine: { |
| | | lineStyle: { |
| | | width: 2, |
| | | color: "#B7E4F7", |
| | | }, |
| | | }, |
| | | axisLabel: { |
| | | color: "#B7E4F7", |
| | | }, |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | }, |
| | | ], |
| | | yAxis: [ |
| | | { |
| | | type: "value", |
| | | max: 100, |
| | | splitNumber: 10, |
| | | axisLabel: { |
| | | formatter: "{value}", |
| | | textStyle: { |
| | | color: "#CAD3E0", |
| | | }, |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | width: 2, |
| | | type: "dashed", |
| | | color: "#28477C", |
| | | }, |
| | | }, |
| | | }, |
| | | { |
| | | type: "value", |
| | | max: 100, |
| | | splitNumber: 10, |
| | | axisLabel: { |
| | | formatter: "{value}%", |
| | | textStyle: { |
| | | color: "#B7E4F7", |
| | | }, |
| | | }, |
| | | splitLine: { |
| | | show: false, |
| | | }, |
| | | }, |
| | | ], |
| | | series: [ |
| | | { |
| | | type: "bar", |
| | | data: firstData, |
| | | yAxisIndex: 0, |
| | | itemStyle: { |
| | | normal: { |
| | | color: new this.$echarts.graphic.LinearGradient( 0, 0, 0, 1, |
| | | [ |
| | | { |
| | | offset: 0, |
| | | color: "rgba(15, 106, 134, 1)", // 0% 处的颜色 |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: "rgba(28, 186, 233, 1)", // 100% 处的颜色 |
| | | }, |
| | | ], |
| | | false |
| | | ), |
| | | }, |
| | | }, |
| | | }, |
| | | { |
| | | type: "bar", |
| | | data: secondData, |
| | | yAxisIndex: 1, |
| | | itemStyle: { |
| | | normal: { |
| | | color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, |
| | | [ |
| | | { |
| | | offset: 0, |
| | | color: "rgba(194, 92, 61, 1)", // 0% 处的颜色 |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: "rgba(250, 205, 145, 1)", // 100% 处的颜色 |
| | | }, |
| | | ], |
| | | false |
| | | ), |
| | | }, |
| | | }, |
| | | }, |
| | | ], |
| | | } |
| | | chartsImage.clear(); |
| | | chartsImage.setOption(option); |
| | | window.onresize = () => { |
| | | chartsImage.resize() |
| | | } |
| | | }, |
| | | // 判断按钮权限信息 |
| | | showButton(str) { |
| | | const pinia = buttonPinia(); |
| | | return pinia.$state.buttonInfo.includes(str); |
| | | } |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/style/layout-main.scss"; |
| | | |
| | | .main_content_chart { |
| | | height: 100%; |
| | | } |
| | | </style> |
对比新文件 |
| | |
| | | <template> |
| | | <div class="main tabs_main" style="height:89%"> |
| | | <div class="main_header"> |
| | | <div class="header_item"> |
| | | <span class="header_label">项目名称:</span> |
| | | <el-select v-model="search.proId" placeholder="请选择项目名称" clearable @change="changeSizes"> |
| | | <el-option |
| | | v-for="item in optionsProject" |
| | | :key="item.proId" |
| | | :label="item.proName" |
| | | :value="item.proId"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="header_item"> |
| | | <span class="header_label">尺寸:</span> |
| | | <el-select v-model="search.sizeId" placeholder="请选择尺寸" clearable> |
| | | <el-option |
| | | v-for="item in optionsSize" |
| | | :key="item.sizeId" |
| | | :label="item.sizeName" |
| | | :value="item.sizeId"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="header_item"> |
| | | <span class="header_label">配筋:</span> |
| | | <el-select v-model="search.reinforcementId" placeholder="请选择配筋" clearable> |
| | | <el-option |
| | | v-for="item in optionsReins" |
| | | :key="item.hasSteel" |
| | | :label="item.has" |
| | | :value="item.hasSteel"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="header_item"> |
| | | <span class="header_label">块号:</span> |
| | | <el-select v-model="search.blockId" placeholder="请选择块号" clearable> |
| | | <el-option |
| | | v-for="item in optionsBlocks" |
| | | :key="item.blockNum" |
| | | :label="item.blockName" |
| | | :value="item.blockNum"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="header_item"> |
| | | <el-button :size="size" icon="el-icon-search" v-if="showButton('search')" @click="searchButtonInfo(true)">查询</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="main_content"> |
| | | <el-table |
| | | v-loading="loading" |
| | | :data="dataList" |
| | | height="100%"> |
| | | <el-table-column align="center" label="序号" width="60"> |
| | | <template #default="scope"> |
| | | <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="proName" label="项目名称" align="center" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="sizeName" label="尺寸" align="center" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="reinforcementName" label="配筋" align="center"></el-table-column> |
| | | <el-table-column prop="blockNumName" label="块号" align="center"></el-table-column> |
| | | <el-table-column prop="stock" label="库存数量" align="center"></el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div class="main_footer"> |
| | | <el-pagination |
| | | background |
| | | @current-change="changePageNum" |
| | | @size-change="changePageSize" |
| | | :current-page="pageNum" |
| | | :page-sizes="[10, 20, 50, 100]" |
| | | :page-size="pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { buttonPinia } from '../../../../pinia/index'; |
| | | import { changeSize } from '../../../../plugins/public'; // 导入节流、动态切换组件尺寸方法 |
| | | export default { |
| | | data() { |
| | | return { |
| | | size: changeSize(), // 组件尺寸 |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | timer:null,//定时器 |
| | | search:{},//查询条件 |
| | | total: 0, |
| | | loading: false, |
| | | dataList: [], //钢筋笼库存信息列表 |
| | | optionsReins:[],//配筋 |
| | | optionsBlocks:[],//块号 |
| | | optionsSize:[],//尺寸 |
| | | optionsProject:[],//项目名称 |
| | | } |
| | | }, |
| | | mounted() { |
| | | const that = this; |
| | | // 根据窗口大小动态修改组件尺寸 |
| | | window.onresize = () => { |
| | | that.size = changeSize(); |
| | | } |
| | | // that.searchButtonInfo(true); |
| | | that.timer = setInterval(()=>{ |
| | | that.searchButtonInfo(true); |
| | | },30000) |
| | | // that.getAllTypes() |
| | | // that.getAllProjects() |
| | | }, |
| | | beforeDestroy() { |
| | | clearInterval(this.timer); |
| | | this.timer = null; |
| | | }, |
| | | methods: { |
| | | //获得所有项目名称 |
| | | getAllProjects(){ |
| | | let obj = { |
| | | pageNum: 1, |
| | | pageSize: 100000000 |
| | | } |
| | | this.$api.Engineer.searchProjects(obj).then(res=>{ |
| | | if(res.statusMsg === 'ok'){ |
| | | this.optionsProject = res.data.list |
| | | }else{ |
| | | this.$message.warning(res.statusMsg) |
| | | } |
| | | }) |
| | | }, |
| | | //通过选择项目选择尺寸 |
| | | changeSizes(val){ |
| | | this.$api.Reinforce.searchProjectSize({proId:val,pageNum: 1, |
| | | pageSize:100000000}).then(res=>{ |
| | | if(res.statusMsg === 'ok'){ |
| | | if(this.search.proId ===""){ |
| | | this.optionsSize = [] |
| | | }else{ |
| | | this.optionsSize = res.data.list |
| | | } |
| | | }else{ |
| | | this.$message.warning(res.statusMsg) |
| | | } |
| | | }) |
| | | this.$api.Reinforce.searchProjectBears({proId:val,pageNum: 1, |
| | | pageSize:1000000}).then(res=>{ |
| | | if(res.statusMsg === 'ok'){ |
| | | this.optionsReins = res.data.hasDtos |
| | | this.optionsBlocks = res.data.blokDtos |
| | | }else{ |
| | | this.$message.warning(res.statusMsg) |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | // //获取尺寸配筋转向等信息 |
| | | // getAllTypes(){ |
| | | // let params = { |
| | | // pageNum: 1, |
| | | // pageSize: 100000000 |
| | | // } |
| | | // this.$api.Dictionary.searchDictionary(params).then(res=>{ |
| | | // if(res.statusMsg === 'ok'){ |
| | | // this.optionsSize = res.data.list.filter(item =>item.dictType === '1') |
| | | // this.optionsReins = res.data.list.filter(item =>item.dictType === '2') |
| | | // this.optionsBlocks = res.data.list.filter(item =>item.dictType === '5') |
| | | // }else{ |
| | | // this.$message.warning(res.statusMsg) |
| | | // } |
| | | // }) |
| | | // }, |
| | | // 查询按钮列表信息 |
| | | searchButtonInfo(bol) { |
| | | if(bol) { |
| | | this.pageNum = 1; |
| | | } |
| | | let params = Object.assign({},this.search,{ |
| | | pageNum: this.pageNum, |
| | | pageSize: this.pageSize |
| | | }) |
| | | this.loading = true; |
| | | this.$api.Reinforce.searchInventory(params).then((res) => { |
| | | if(res.statusMsg === 'ok') { |
| | | this.total = res.data.total; |
| | | this.dataList = res.data.list; |
| | | } |
| | | this.loading = false; |
| | | }) |
| | | }, |
| | | // 判断按钮权限信息 |
| | | showButton(str) { |
| | | const pinia = buttonPinia(); |
| | | return pinia.$state.buttonInfo.includes(str); |
| | | }, |
| | | // 切换页数 |
| | | changePageNum(page) { |
| | | this.pageNum = page; |
| | | this.searchButtonInfo(); |
| | | }, |
| | | // 切换每页条数 |
| | | changePageSize(size) { |
| | | this.pageSize = size; |
| | | this.searchButtonInfo(); |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import '../../../../style/layout-main.scss'; |
| | | </style> |
对比新文件 |
| | |
| | | <template> |
| | | <div class="main tabs_main" style="height:93%"> |
| | | <div class="main_header"> |
| | | <div class="header_item"> |
| | | <span class="header_label">项目名称:</span> |
| | | <el-select v-model="search.proId" placeholder="请选择项目名称" clearable @change="changeSizes"> |
| | | <el-option |
| | | v-for="item in optionsProject" |
| | | :key="item.proId" |
| | | :label="item.proName" |
| | | :value="item.proId"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="header_item"> |
| | | <span class="header_label">尺寸:</span> |
| | | <el-select v-model="search.sizeId" placeholder="请选择尺寸" clearable> |
| | | <el-option |
| | | v-for="item in optionsSize" |
| | | :key="item.sizeId" |
| | | :label="item.sizeName" |
| | | :value="item.sizeId"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="header_item"> |
| | | <el-button :size="size" icon="el-icon-search" v-if="showButton('search')" @click="searchButtonInfo(true)">查询</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="main_content" style="display:flex;flex-wrap:wrap;overflow:auto;"> |
| | | <div class="main_content_index" v-for="(item,index) in staticLists" :key="index"> |
| | | <div class="main_content_top"> |
| | | <div class="main_content_title"> |
| | | <div class="main_text">{{item.proName}}</div> |
| | | <div class="main_datas">{{item.sizeName}}</div> |
| | | </div> |
| | | </div> |
| | | <div class="main_content_bottom"> |
| | | <div class="content_top"> |
| | | <div style="border:1px solid #39B5FE;background-color:#042548;border-radius:4px"> |
| | | <img src="../../../../assets/wheel.png" class="bottom_left"> |
| | | </div> |
| | | <div class="bottom_right"> |
| | | <div class="plan_content_items" style="margin-bottom:16px"> |
| | | <div class="plan_content_title">序号</div> |
| | | <div class="plan_content_datas" style="background-color:#052C55;color:#39B5FE" v-for="(its,indexs) in item.hasDtos" :key="indexs">{{indexs+1}}</div> |
| | | </div> |
| | | <div class="plan_content_items" style="margin-bottom:0px;border-bottom:0px solid transparent;"> |
| | | <div class="plan_content_title">管片配筋</div> |
| | | <div class="plan_content_datas" v-for="(iten,idx) in item.hasDtos" :key="idx" :style="{'background': iten.colors || 'none'}">{{iten.has}}</div> |
| | | </div> |
| | | <div class="plan_content_items"> |
| | | <div class="plan_content_title">已成环数(环)</div> |
| | | <div class="plan_content_datas" v-for="(loop,indexs) in item.hasDtos" :key="indexs"> |
| | | {{showLooping(item.looping,loop)}} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="content_bottom"> |
| | | <div class="content_bottom_rows"> |
| | | <div class="content_bottom_text"> |
| | | <span style="position:absolute;top:26px;left:10px;">配筋</span> |
| | | <span style="position:absolute;top:8px;left:65px">块号</span> |
| | | </div> |
| | | <div class="content_bottom_datas" v-for="(block,index) in item.blokDtos" :key="index">{{block.blockName}}</div> |
| | | </div> |
| | | <div class="content_bottom_rebar"> |
| | | <div style="display: flex; flex-direction: column;"> |
| | | <div class="content_bottom_titles" v-for="(iten,index) in item.hasDtos" :key="index">{{iten.has}}</div> |
| | | </div> |
| | | <template v-if="item&&item.info.length !==0"> |
| | | <div style="display: flex; flex-direction: column; flex: 1" |
| | | v-for="(blockItem,blockIndex) in item.blokDtos" |
| | | :key="blockIndex"> |
| | | <div |
| | | class="content_bottom_num" |
| | | :class="{'bottom_nums':showCounts(item.info, hasItem, blockItem) !== 0}" |
| | | v-for="(hasItem,hasIndex) in item.hasDtos" |
| | | :key="hasIndex"> |
| | | {{showCounts(item.info, hasItem, blockItem)}} |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <div v-else class="content_bottom_nodata" style="border-bottom:1px solid #39B5FE;">暂无数据</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="main_footer"> |
| | | <el-pagination |
| | | background |
| | | @current-change="changePageNum" |
| | | @size-change="changePageSize" |
| | | :current-page="pageNum" |
| | | :page-sizes="[10, 20, 50, 100]" |
| | | :page-size="pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { buttonPinia } from '../../../../pinia/index'; |
| | | import { changeSize } from '../../../../plugins/public'; // 导入节流、动态切换组件尺寸方法 |
| | | export default { |
| | | data() { |
| | | return { |
| | | size: changeSize(), // 组件尺寸 |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | search:{},//查询条件 |
| | | total: 0, |
| | | loading: false, |
| | | staticLists: [], //成环统计信息列表 |
| | | optionsSize:[],//尺寸 |
| | | optionsProject:[],//项目名称 |
| | | numLists: [],//已成环数 |
| | | nums:[],//配筋块号对应数量 |
| | | } |
| | | }, |
| | | mounted() { |
| | | const that = this; |
| | | // 根据窗口大小动态修改组件尺寸 |
| | | window.onresize = () => { |
| | | that.size = changeSize(); |
| | | } |
| | | // that.searchButtonInfo(true); |
| | | // that.getAllProjects() |
| | | }, |
| | | methods: { |
| | | //获得所有项目名称 |
| | | getAllProjects(){ |
| | | this.$api.Engineer.getAllProjects({}).then(res=>{ |
| | | if(res.statusMsg === 'ok'){ |
| | | this.optionsProject = res.data |
| | | }else{ |
| | | this.$message.warning(res.statusMsg) |
| | | } |
| | | }) |
| | | }, |
| | | //通过选择项目选择尺寸 |
| | | changeSizes(val){ |
| | | this.$api.Reinforce.searchProjectSize({proId:val,pageNum: 1, |
| | | pageSize:100000000}).then(res=>{ |
| | | if(res.statusMsg === 'ok'){ |
| | | if(this.search.proId ===""){ |
| | | this.optionsSize = [] |
| | | }else{ |
| | | this.optionsSize = res.data.list |
| | | } |
| | | }else{ |
| | | this.$message.warning(res.statusMsg) |
| | | } |
| | | }) |
| | | }, |
| | | async getBlockData(proId) { |
| | | const { data } = await this.$api.Reinforce.searchProjectBears({ |
| | | proId: proId |
| | | }) |
| | | return data |
| | | }, |
| | | async getLoopData(item) { |
| | | const { data } = await this.$api.Reinforce.searchRing({ |
| | | proId:item.proId,sizeId:item.sizeId |
| | | }) |
| | | return data; |
| | | }, |
| | | // 查询按钮列表信息 |
| | | searchButtonInfo(bol) { |
| | | if(bol) { |
| | | this.pageNum = 1; |
| | | } |
| | | let params = Object.assign({},this.search,{ |
| | | pageNum: this.pageNum, |
| | | pageSize: this.pageSize |
| | | }) |
| | | this.loading = true; |
| | | this.$api.Reinforce.searchProjectSize(params).then((res) => { |
| | | if(res.statusMsg === 'ok') { |
| | | this.total = res.data.total; |
| | | this.staticLists = res.data.list.map((item) => { |
| | | this.getBlockData(item.proId).then((data) => { |
| | | this.$set(item, 'blokDtos', data.blokDtos || []); |
| | | this.$set(item, 'hasDtos', data.hasDtos || []); |
| | | }) |
| | | this.getLoopData(item).then((data) => { |
| | | this.$set(item, 'info', data.info || []); |
| | | this.$set(item, 'looping', data.looping || []); |
| | | }) |
| | | return item; |
| | | }); |
| | | } |
| | | this.loading = false; |
| | | }) |
| | | }, |
| | | showLooping(loopData,hasItem){ |
| | | if(loopData){ |
| | | const dataList = loopData.filter(item =>item.reinforcementId === hasItem.hasSteel) |
| | | if(dataList &&dataList[0]){ |
| | | return dataList[0].counts |
| | | }else{ |
| | | return 0 |
| | | } |
| | | }else{ |
| | | return 0 |
| | | } |
| | | }, |
| | | // |
| | | showCounts(infoData, hasItem, blockItem) { |
| | | if(infoData) { |
| | | infoData = infoData.flat(Infinity); |
| | | const dataList = infoData.filter(item => |
| | | item.reinforcementId === hasItem.hasSteel && item.blockNum === blockItem.blockNum |
| | | ) |
| | | if(dataList && dataList[0]) { |
| | | return dataList[0].inventory |
| | | } else { |
| | | return 0; |
| | | } |
| | | } |
| | | }, |
| | | // 判断按钮权限信息 |
| | | showButton(str) { |
| | | const pinia = buttonPinia(); |
| | | return pinia.$state.buttonInfo.includes(str); |
| | | }, |
| | | // 切换页数 |
| | | changePageNum(page) { |
| | | this.pageNum = page; |
| | | this.searchButtonInfo(); |
| | | }, |
| | | // 切换每页条数 |
| | | changePageSize(size) { |
| | | this.pageSize = size; |
| | | this.searchButtonInfo(); |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import '../../../../style/layout-main.scss'; |
| | | .main_content_index{ |
| | | min-width: calc(50% - 16px); |
| | | height: 500px; |
| | | margin: 5px 16px 16px 0px; |
| | | .main_content_top{ |
| | | height: 40px; |
| | | background-color: rgba(57,181,254,0.3); |
| | | border-top-left-radius: 6px; |
| | | border-top-right-radius: 6px; |
| | | |
| | | .main_content_title{ |
| | | height: 40px; |
| | | margin-left: 24px; |
| | | display: flex; |
| | | align-items: center; |
| | | flex-direction: row; |
| | | position: relative; |
| | | &::before{ |
| | | width: 4px; |
| | | height: 20px; |
| | | content: ''; |
| | | position: absolute; |
| | | left: -13px; |
| | | top: 10px; |
| | | background-color: #39B5FE; |
| | | } |
| | | .main_text{ |
| | | color: #39B5FE; |
| | | font-size: 16px; |
| | | font-weight: 500; |
| | | } |
| | | .main_datas{ |
| | | margin-left: 30px; |
| | | color: #39B5FE; |
| | | font-size: 16px; |
| | | font-weight: 500; |
| | | } |
| | | } |
| | | } |
| | | .main_content_bottom{ |
| | | border-bottom-left-radius: 6px; |
| | | border-bottom-right-radius: 6px; |
| | | height: calc(100% - 50px); |
| | | background-color: #02163C; |
| | | padding: 20px; |
| | | overflow: auto; |
| | | |
| | | .content_top{ |
| | | display: flex; |
| | | height: 145px; |
| | | .bottom_left{ |
| | | width: 100%; |
| | | height: 100%; |
| | | margin-left: -7px; |
| | | cursor: pointer; |
| | | &:hover{ |
| | | animation: rotate 3s linear infinite; |
| | | } |
| | | @keyframes rotate { |
| | | 0% { |
| | | transform: rotateY(0deg); |
| | | } |
| | | 100% { |
| | | transform: rotateY(360deg); |
| | | } |
| | | } |
| | | } |
| | | .bottom_right{ |
| | | width: 100%; |
| | | min-width: 400px; |
| | | |
| | | .plan_content_items{ |
| | | display: flex; |
| | | border: 1px solid #39B5FE; |
| | | margin: 0px 0px 8px 15px; |
| | | |
| | | .plan_content_title{ |
| | | width: 145px; |
| | | padding: 12px 0px; |
| | | flex: none; |
| | | color: #39B5FE; |
| | | text-align: center; |
| | | background-color: #052C55; |
| | | } |
| | | .plan_content_datas{ |
| | | flex: 1; |
| | | padding: 12px 0px; |
| | | color: #fff; |
| | | text-align: center; |
| | | border-left: 1px solid #39B5FE; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .content_bottom{ |
| | | width: 100%; |
| | | height: calc(100% - 145px); |
| | | margin-top: 10px; |
| | | border-bottom: 1px solid #063B5B; |
| | | |
| | | .content_bottom_rows{ |
| | | display: flex; |
| | | text-align: center; |
| | | height: 50px; |
| | | border: 1px solid #09607A; |
| | | margin-bottom: 15px; |
| | | .content_bottom_text{ |
| | | span{ |
| | | color: #39B5FE; |
| | | } |
| | | flex: none; |
| | | color: #fff; |
| | | position: relative; |
| | | width: 100px; |
| | | height: 50px; |
| | | background: linear-gradient(to top right,#085A76,#032249); |
| | | &::before{ |
| | | content: ''; |
| | | width: 110%; |
| | | height: 2px; |
| | | background: linear-gradient(to bottom right,#085A76,#032249); |
| | | position: absolute; |
| | | top: 22px; |
| | | left: -6px; |
| | | transform: rotateZ(26deg); |
| | | } |
| | | } |
| | | .content_bottom_datas{ |
| | | display: flex; |
| | | flex: 1; |
| | | align-items: center; |
| | | justify-content: center; |
| | | color: #39B5FE; |
| | | border-left: 1px solid #09607A; |
| | | background: linear-gradient(to bottom,#032048,#09607A); |
| | | // cursor: pointer; |
| | | } |
| | | } |
| | | .content_bottom_rebar{ |
| | | display: flex; |
| | | text-align: center; |
| | | height: calc(100% - 65px); |
| | | border-top: 1px solid #39B5FE; |
| | | border-left: 1px solid #39B5FE; |
| | | border-right: 1px solid #39B5FE; |
| | | |
| | | .content_bottom_nodata{ |
| | | border-left: 1px solid #39B5FE; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | flex: 1; |
| | | color: #fff; |
| | | } |
| | | .content_bottom_titles{ |
| | | color: #39B5FE; |
| | | width: 100px; |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | border-bottom: 1px solid #39B5FE; |
| | | &:last-child{ |
| | | border-bottom-color: #39B5FE; |
| | | } |
| | | } |
| | | .content_bottom_num{ |
| | | border-left: 1px solid #39B5FE; |
| | | display: flex; |
| | | flex: 1; |
| | | align-items: center; |
| | | justify-content: center; |
| | | color: #fff; |
| | | border-bottom: 1px solid #39B5FE; |
| | | &:last-child{ |
| | | border-bottom-color: #39B5FE; |
| | | } |
| | | } |
| | | .bottom_nums{ |
| | | background-color: #014C6E; |
| | | color: #39B5FE; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //滚动条样式 |
| | | ::-webkit-scrollbar { |
| | | width: 4px; |
| | | height: 8px; |
| | | } |
| | | ::-webkit-scrollbar-thumb { |
| | | border-radius: 10px; |
| | | box-shadow: inset 0 0 5px #084E6B; |
| | | background: rgba(0,0,0,0.2); |
| | | } |
| | | ::-webkit-scrollbar-track { |
| | | box-shadow: inset 0 0 5px transparent; |
| | | border-radius: 0; |
| | | background: transparent; |
| | | } |
| | | </style> |