From 8428bf7e11fe22cdccbe2c9ccf76cf090c05996c Mon Sep 17 00:00:00 2001
From: 叶松 <2217086471@qq.com>
Date: 星期三, 29 十一月 2023 15:41:58 +0800
Subject: [PATCH] 钢筋笼材料标识牌书写
---
web/src/views/MixingInfo/workShop.vue | 187 ++++++++++++++++++
web/src/views/GoodManage/BearSignboard.vue | 373 +++++++++++++++++++++++++++++++++++++
web/src/assets/work_shop.png | 0
web/src/router/index.js | 8
web/src/api/modules/materials.js | 15 +
5 files changed, 583 insertions(+), 0 deletions(-)
diff --git a/web/src/api/modules/materials.js b/web/src/api/modules/materials.js
index fcf8f95..8fa250e 100644
--- a/web/src/api/modules/materials.js
+++ b/web/src/api/modules/materials.js
@@ -152,6 +152,21 @@
detailStockInfos: params =>
axios.get('/materials/suMaterialWarehouse/selectInfo', {params}),
+ /**
+ * 钢筋笼材料标识牌
+ */
+ //钢筋笼材料标识牌列表
+ searchSignBoardLists: (params) =>
+ axios.post('/materials/suSteelCageMaterialLabel/selectPageList', params),
+ //钢筋笼材料标识牌添加/修改
+ addSignBoardInfos: (params) =>
+ axios.post('/materials/suSteelCageMaterialLabel/insertAndUpdate', params),
+ // 删除钢筋笼材料标识牌信息
+ deleteSignBoardInfos: params =>
+ axios.get('/materials/suSteelCageMaterialLabel/delete', {params}),
+ // 钢筋笼材料标识牌信息
+ detailSignBoardInfos: params =>
+ axios.get('/materials/suSteelCageMaterialLabel/selectInfo', {params}),
/* 预埋件管理 */
diff --git a/web/src/assets/work_shop.png b/web/src/assets/work_shop.png
new file mode 100644
index 0000000..b5104a2
--- /dev/null
+++ b/web/src/assets/work_shop.png
Binary files differ
diff --git a/web/src/router/index.js b/web/src/router/index.js
index 0488d44..7fdb36d 100644
--- a/web/src/router/index.js
+++ b/web/src/router/index.js
@@ -111,6 +111,14 @@
component: () => import('../views/MixingInfo/messageInfo.vue'),
},
{
+ path: `/workShop/num=1`,
+ name: 'workShop',
+ meta: {
+ title: '钢筋材料标识牌'
+ },
+ component: () => import('../views/MixingInfo/workShop.vue'),
+ },
+ {
path: '/ScanBear',
name: 'ScanBear',
meta: {
diff --git a/web/src/views/GoodManage/BearSignboard.vue b/web/src/views/GoodManage/BearSignboard.vue
new file mode 100644
index 0000000..45988f6
--- /dev/null
+++ b/web/src/views/GoodManage/BearSignboard.vue
@@ -0,0 +1,373 @@
+<template>
+ <div class="main">
+ <div class="main_header">
+ <div class="header_item">
+ <span class="header_label">区域:</span>
+ <el-select v-model="search.region" placeholder="请选择区域" clearable>
+ <el-option
+ v-for="item in 24"
+ :key="item"
+ :label="item"
+ :value="item">
+ </el-option>
+ </el-select>
+ </div>
+ <div class="header_item">
+ <span class="header_label">录入方式:</span>
+ <el-select v-model="search.type" placeholder="请选择录入方式" clearable>
+ <el-option
+ v-for="item in optionsIncome"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ </div>
+ <div class="header_item">
+ <span class="header_label">创建时间:</span>
+ <el-date-picker
+ v-model="search.time"
+ type="daterange"
+ 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 icon="el-icon-search" v-if="showButton('search')" @click="searchButtonInfo(true)">查询</el-button>
+ <el-button class="search_btn" icon="el-icon-plus" v-if="showButton('insert')" @click="insertProp">新增</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="region" label="区域" align="center" width="120"></el-table-column>
+ <el-table-column prop="createTime" label="创建时间" align="center" width="150"></el-table-column>
+ <el-table-column prop="materialName" label="材料名称" align="center" width="120"></el-table-column>
+ <el-table-column prop="manufacturer" label="生产厂家" align="center" width="120"></el-table-column>
+ <el-table-column prop="specifications" label="规格型号" align="center" width="150"></el-table-column>
+ <el-table-column prop="heatNumber" label="炉(批)号" align="center" width="150" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="inNumber" label="进场数量" align="center" width="120" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="reportTime" label="报检日期" align="center" width="150" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="reportNum" label="报告编号" align="center" width="150" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="status" label="检验状态" align="center" width="150">
+ <template #default="{row}">
+ {{optionsCheckstatus&&optionsCheckstatus[row.status-1].label}}
+ </template>
+ </el-table-column>
+ <el-table-column prop="type" label="录入方式" align="center">
+ <template #default="{row}">
+ {{optionsIncome&&optionsIncome[row.type].label}}
+ </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('update')" @click="updateProp(row)">修改</el-button>
+ <el-button class="delete_btn" size="mini" v-if="showButton('delete')" @click="deleteInfo(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="35%">
+ <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="auto" class="rule_form">
+ <el-form-item label="区域:" prop="region">
+ <el-select v-model="ruleForm.region" placeholder="请选择区域">
+ <el-option
+ v-for="item in 24"
+ :key="item"
+ :label="item"
+ :value="item">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="材料名称:" prop="materialName">
+ <el-input v-model="ruleForm.materialName" :size="size" clearable placeholder="请输入材料名称"></el-input>
+ </el-form-item>
+ <el-form-item label="生产厂家:" prop="manufacturer">
+ <el-input v-model="ruleForm.manufacturer" :size="size" clearable placeholder="请输入生产厂家"></el-input>
+ </el-form-item>
+ <el-form-item label="规格型号:" prop="specifications">
+ <el-input v-model="ruleForm.specifications" :size="size" clearable placeholder="请输入规格型号"></el-input>
+ </el-form-item>
+ <el-form-item label="炉(批)号:" prop="heatNumber">
+ <el-input v-model="ruleForm.heatNumber" :size="size" type="textarea" :rows="5" clearable placeholder="请输入炉(批)号"></el-input>
+ </el-form-item>
+ <el-form-item label="进场数量:" prop="inNumber">
+ <el-input v-model="ruleForm.inNumber" :size="size" type="textarea" :rows="5" clearable placeholder="请输入进场数量"></el-input>
+ </el-form-item>
+ <el-form-item label="报检日期:" prop="reportTime">
+ <el-input v-model="ruleForm.reportTime" :size="size" type="textarea" :rows="5" clearable placeholder="请输入报检日期"></el-input>
+ </el-form-item>
+ <el-form-item label="报告编号:" prop="reportNum">
+ <el-input v-model="ruleForm.reportNum" :size="size" type="textarea" :rows="5" clearable placeholder="请输入报告编号"></el-input>
+ </el-form-item>
+ <el-form-item label="检验状态:" prop="status">
+ <el-select v-model="ruleForm.status" placeholder="请选择检验状态">
+ <el-option
+ v-for="item in optionsCheckstatus"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-form>
+ <div slot="footer">
+ <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 } from '../../plugins/public'; // 导入节流、动态切换组件尺寸方法
+ export default {
+ data() {
+ return {
+ size: changeSize(), // 组件尺寸
+ pageNum: 1,
+ pageSize: 10,
+ search:{},//查询条件
+ total: 0,
+ loading: false,
+ dataList: [], //钢筋材料管理信息列表
+ asyncTitle: true, // 对话框title 新增:true 修改:false
+ asyncVisible: false, // 添加 修改对话框
+ ruleForm: {
+ }, // 按钮表单
+ rules: {
+ reportNum: [{
+ required: true,
+ message: '请输入报告编号',
+ trigger: 'blur'
+ }],
+ status: [{
+ required: true,
+ message: '请选择检验状态',
+ trigger: 'change'
+ }],
+ region: [{
+ required: true,
+ message: '请选择区域',
+ trigger: 'change'
+ }],
+ reportTime: [{
+ required: true,
+ message: '请输入检验日期',
+ trigger: 'blur'
+ }],
+ inNumber: [{
+ required: true,
+ message: '请输入进场数量',
+ trigger: 'blur'
+ }],
+ manufacturer: [{
+ required: true,
+ message: '请输入生产厂家',
+ trigger: 'blur'
+ }],
+ specifications: [{
+ required: true,
+ message: '请输入规格型号',
+ trigger: 'blur'
+ }],
+ heatNumber: [{
+ required: true,
+ message: '请输入炉(批)号',
+ trigger: 'blur'
+ }],
+ materialName: [{
+ required: true,
+ message: '请输入材料名称',
+ trigger: 'blur'
+ }],
+ },
+ optionsIncome:[
+ {
+ label:'自动',
+ value:"0"
+ },
+ {
+ label:'手动',
+ value:'1'
+ }
+ ],
+ optionsCheckstatus:[
+ {
+ label:'合格',
+ value:1
+ },
+ {
+ label:'待检',
+ value:2
+ }
+ ],
+ }
+ },
+ watch: {
+ asyncVisible(bol) {
+ if(!bol) {
+ this.ruleForm = {};
+ this.$refs.ruleForm.resetFields();
+ }
+ }
+ },
+ mounted() {
+ const that = this;
+ // 根据窗口大小动态修改组件尺寸
+ window.onresize = () => {
+ that.size = changeSize();
+ }
+ that.searchButtonInfo(true);
+ },
+ methods: {
+ // 查询按钮列表信息
+ searchButtonInfo(bol) {
+ if(bol) {
+ this.pageNum = 1;
+ }
+ let params = Object.assign({},this.search,{
+ pageNum: this.pageNum,
+ pageSize: this.pageSize
+ })
+ params.startTime=this.search.time&&this.search.time[0],
+ params.endTime=this.search.time&&this.search.time[1]
+ delete params.time
+ this.loading = true;
+ this.$api.Materials.searchSignBoardLists(params).then((res) => {
+ if(res.statusMsg === 'ok') {
+ this.total = res.data.total;
+ this.dataList = res.data.list;
+ }
+ this.loading = false;
+ })
+ },
+ // 新增按钮信息
+ insertProp() {
+ this.asyncTitle = true;
+ this.asyncVisible = true;
+ },
+ // 修改按钮信息
+ updateProp(row) {
+ this.asyncTitle = false;
+ this.asyncVisible = true;
+ this.$api.Materials.detailSignBoardInfos({id: row.id}).then(res=>{
+ if(res.statusMsg === 'ok'){
+ this.ruleForm = res.data
+ let projectArr = []
+ res.data.supplierPros.forEach(item=>{
+ projectArr.push(item.proId)
+ })
+ this.$set(this.ruleForm,'proIds',projectArr)
+ }else{
+ this.$message.warning(res.statusMsg)
+ }
+ })
+ },
+ // 删除按钮信息
+ deleteInfo(row) {
+ this.$confirm("该操作将删除该信息,是否继续删除?", "提示", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ this.$api.Materials.deleteSignBoardInfos({id: row.id})
+ .then(res => {
+ if(res.statusMsg === 'ok') {
+ this.searchButtonInfo(true);
+ this.$message.success("删除成功!");
+ } else {
+ this.$message.warning(res.statusMsg);
+ }
+ })
+ })
+ .catch(() => {
+ this.$message.warning("您已取消");
+ })
+ },
+ // 提交添加按钮信息
+ submitInsert: throttle(function() {
+ this.$refs.ruleForm.validate((valid) => {
+ if(valid) {
+ const params = Object.assign({}, this.ruleForm);
+ params.type = 1
+ this.$api.Materials.addSignBoardInfos(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);
+ this.$api.Materials.addSignBoardInfos(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="sass" scoped>
+@import '../../style/layout-main.scss';
+</style>
\ No newline at end of file
diff --git a/web/src/views/MixingInfo/workShop.vue b/web/src/views/MixingInfo/workShop.vue
new file mode 100644
index 0000000..ca295cf
--- /dev/null
+++ b/web/src/views/MixingInfo/workShop.vue
@@ -0,0 +1,187 @@
+<template>
+ <div class="work_index">
+ <div class="work_headers">
+ <div class="header_title">材料标识牌</div>
+ <div class="header_area">
+ <div class="header_area_text">区域:</div>
+ <div class="header_area_data">{{workList&&workList.region}}号</div>
+ </div>
+ </div>
+ <div class="work_main">
+ <div class="work_rows">
+ <div class="work_items">
+ <div class="work_items_text">材料名称</div>
+ <div class="work_items_data" style="border-right: 3px solid #001982;">{{workList&&workList.materialName}}</div>
+ </div>
+ <div class="work_items">
+ <div class="work_items_text">生产厂家</div>
+ <div class="work_items_data" >{{workList&&workList.manufacturer}}</div>
+ </div>
+ </div>
+ <div class="work_rows">
+ <div class="work_items">
+ <div class="work_items_text">规格型号</div>
+ <div class="work_items_data" style="border-right: 3px solid #001982;">{{workList&&workList.specifications}}</div>
+ </div>
+ <div class="work_items">
+ <div class="work_items_text">炉(批)号</div>
+ <div class="work_items_data" style="font-size:1.2rem">{{workList&&workList.heatNumber}}</div>
+ </div>
+ </div>
+ <div class="work_rows">
+ <div class="work_items">
+ <div class="work_items_text">进场数量</div>
+ <div class="work_items_data" style="border-right: 3px solid #001982;">{{workList&&workList.inNumber}}</div>
+ </div>
+ <div class="work_items">
+ <div class="work_items_text">报检日期</div>
+ <div class="work_items_data" >{{workList&&workList.reportTime}}</div>
+ </div>
+ </div>
+ <div class="work_rows">
+ <div class="work_items">
+ <div class="work_items_text">报告编号</div>
+ <div class="work_items_data" style="border-right: 3px solid #001982;">{{workList&&workList.reportNum}}</div>
+ </div>
+ <div class="work_items">
+ <div class="work_items_text">检验状态</div>
+ <div class="work_items_data" >{{workList&&workList.status===1?'合格':workList&&workList.status===2?'待检':''}}</div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+export default {
+ data(){
+ return{
+ timer:null,//定时器
+ workList:null,//展示数据
+ }
+ },
+ created(){
+ this.searchWorkInfos()
+ },
+ mounted(){
+ // const that = this;
+ // that.timer = setInterval(()=>{
+ // that.searchWorkInfos()
+ // },300000)
+ },
+ beforeDestroy() {
+ // clearInterval(this.timer);
+ // this.timer = null;
+ },
+ methods:{
+ searchWorkInfos(){
+ let params={
+ region:window.location.href.split('/')[5].split('=')[1]
+ }
+ this.$api.Materials.detailSignBoardInfos(params).then(res=>{
+ if(res.statusMsg==='ok'){
+ this.workList = res.data===null?[]:res.data
+ }else{
+ this.$message.warning('请检查网络或联系管理员!!!')
+ }
+ })
+ },
+ }
+}
+</script>
+<style scoped lang="scss">
+.work_index{
+ width: 100%;
+ height: 100%;
+ background: url("../../assets/work_shop.png") no-repeat;
+ background-size: 100% 100%;
+ overflow: auto;
+
+ .work_headers{
+ height: 206px;
+ padding-top: 120px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+
+ .header_title{
+ font-size: 4.5rem;
+ font-weight: 600;
+ background: linear-gradient(to bottom,#24A5ED,#1976CE,#145DBE,#071C94);
+ background-clip: text;
+ -webkit-background-clip: text;
+ color: transparent;
+ }
+ .header_area{
+ display: flex;
+ position: absolute;
+ right: 100px;
+
+ .header_area_text{
+ font-size: 3.2rem;
+ font-weight: 600;
+ background: linear-gradient(to bottom,#24A5ED,#1976CE,#145DBE,#071C94);
+ background-clip: text;
+ -webkit-background-clip: text;
+ color: transparent;
+ }
+ .header_area_data{
+ font-size: 3.2rem;
+ font-weight: 600;
+ background: linear-gradient(to bottom,#24A5ED,#1976CE,#145DBE,#071C94);
+ background-clip: text;
+ -webkit-background-clip: text;
+ color: transparent;
+ }
+ }
+ }
+ .work_main{
+ // height: calc(100% - 200px);
+ border: 3px solid #001982;
+ margin: 20px 100px;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ .work_rows{
+ width: 100%;
+ line-height: 60px;
+ display: flex;
+
+ .work_items{
+ width: 50%;
+ display: flex;
+
+ .work_items_text{
+ font-size: 3rem;
+ font-weight: 500;
+ padding: 30px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex: none;
+ width: 240px;
+ border-bottom: 1px solid #001982;
+ border-right: 1px solid #001982;
+ background: linear-gradient(to bottom,#AEDEF9,#1E87D9,#1D87D9,#2265C0,#145DBE,#082296);
+ background-clip: text;
+ -webkit-background-clip: text;
+ color: transparent;
+ }
+ .work_items_data{
+ color: #11299F;
+ padding: 10px;
+ font-size: 2rem;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex: 1;
+ width: calc(50% - 200px);
+ border-bottom: 1px solid #001982;
+ word-break: break-all;
+ // word-wrap: break-word;
+ }
+ }
+ }
+ }
+}
+</style>
\ No newline at end of file
--
Gitblit v1.9.3