叶松
2023-12-08 8ff8b4dbccd93d4dbc7976b50148088fef77af0b
Merge branch 'master' of http://111.30.93.211:10101/r/supipe
已修改9个文件
224 ■■■■■ 文件已修改
hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/controller/AudioController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/service/AudioService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/service/impl/AudioServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/screen/src/main/resources/mapping/BigScreenMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/GoodManage/MixRatioScreen.vue 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/MixingInfo/messageInfo.vue 117 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/SecureManage/RiskGrad/AreaPolling.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/SecureManage/RiskGrad/components/PollingTask.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/SecureManage/RiskGrad/components/TaskPunchcard.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/controller/AudioController.java
@@ -3,6 +3,7 @@
import com.thhy.general.common.BasicResult;
import com.thhy.screen.modules.biz.audio.entity.AudioDto;
import com.thhy.screen.modules.biz.audio.entity.AudioGroup;
import com.thhy.screen.modules.biz.audio.entity.GroupInfoVo;
import com.thhy.screen.modules.biz.audio.service.AudioService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
@@ -38,7 +39,7 @@
    @RequestMapping("groupInfo")
    public BasicResult groupInfo(@RequestBody AudioDto audioDto){
        audioService.groupInfo(audioDto);
        return BasicResult.success();
        GroupInfoVo infoVo = audioService.groupInfo(audioDto);
        return BasicResult.success(infoVo);
    }
}
hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/service/AudioService.java
@@ -2,6 +2,7 @@
import com.thhy.screen.modules.biz.audio.entity.AudioDto;
import com.thhy.screen.modules.biz.audio.entity.AudioGroup;
import com.thhy.screen.modules.biz.audio.entity.GroupInfoVo;
import java.util.List;
@@ -13,5 +14,5 @@
    void addFile(AudioDto audioDto);
    void groupInfo(AudioDto audioDto);
    GroupInfoVo groupInfo(AudioDto audioDto);
}
hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/audio/service/impl/AudioServiceImpl.java
@@ -36,15 +36,16 @@
        List<AudioFile> fileList = audioDto.getFileList();
        screenMapper.deleteAudioFile(audioDto.getGroupId());
        for(AudioFile audioFile : fileList){
            audioFile.setGroupId(audioFile.getGroupId());
            audioFile.setGroupId(audioDto.getGroupId());
            screenMapper.insertAudioFile(audioFile);
        }
    }
    @Override
    public void groupInfo(AudioDto audioDto) {
    public GroupInfoVo groupInfo(AudioDto audioDto) {
        GroupInfoVo infoVo = screenMapper.queryGroupInfo(audioDto.getGroupId());
        List<AudioFile> fileList = screenMapper.queryFileByGroup(audioDto.getGroupId());
        infoVo.setFileList(fileList);
        return infoVo;
    }
}
hd/pipe/screen/src/main/resources/mapping/BigScreenMapper.xml
@@ -323,7 +323,7 @@
    </update>
    <delete id="deleteAudioFile">
        delete from t_audio_group_file where groupId = #{groupId}
        delete from t_audio_group_file where group_id = #{groupId}
    </delete>
    <select id="queryGroupInfo" resultType="com.thhy.screen.modules.biz.audio.entity.GroupInfoVo">
web/src/views/GoodManage/MixRatioScreen.vue
@@ -110,10 +110,11 @@
        <div style="display: flex;">
          <div style="margin-right: 10px;" v-for="(item, index) in  ruleForm.infos " :key="index">
            <el-form-item :label="index === 0 ? '材料名称' : ''" :prop="`infos.${index}.dictId`">
              <el-select v-model="item.dictId" size="mini" placeholder="请选择材料名称">
              <!-- <el-select v-model="item.dictId" size="mini" placeholder="请选择材料名称">
                <el-option v-for="item in selects.materials" :key="item.value" :label="item.label"
                  :value="item.value"></el-option>
              </el-select>
              </el-select> -->
              <el-input v-model="item.dictId" size="mini" placeholder="请输入" clearable></el-input>
            </el-form-item>
            <el-form-item :label="index === 0 ? '规格型号' : ''" :prop="`infos.${index}.spec`">
              <el-input v-model="item.spec" size="mini" placeholder="请输入" clearable></el-input>
@@ -153,7 +154,7 @@
      times: [], // 时间范围
      selects: {
        screenNames: [], // 配合比屏
        materials: [] // 材料名称
        // materials: [] // 材料名称[先改成输入,,字典表材料不匹配]
      }, // 下拉框状态选择汇总
      tableData: [{
        inType: '', // 录入方式
@@ -166,7 +167,7 @@
        construction: '',  // 施工部位
        mixingConsumeId: '', // 每个材料id
        dataLists: [
          {name: '材料名称', type: 'dictName', value: []}, // 材料名称
          {name: '材料名称', type: 'dictId', value: []}, // 材料名称
          {name: '规格型号', type: 'spec', value: []}, // 规格型号
          {name: '生产厂家', type: 'manufacturer', value: []}, // 生产厂家
          {name: '材料含水率(%)', type: 'watFull', value: []}, // 含水率
@@ -252,7 +253,7 @@
          construction: '',  // 施工部位
          mixingConsumeId: '', // 每个材料id
          dataLists: [
            {name: '材料名称', type: 'dictName', value: []}, // 材料名称
            {name: '材料名称', type: 'dictId', value: []}, // 材料名称
            {name: '规格型号', type: 'spec', value: []}, // 规格型号
            {name: '生产厂家', type: 'manufacturer', value: []}, // 生产厂家
            {name: '材料含水率(%)', type: 'watFull', value: []}, // 含水率
@@ -307,18 +308,18 @@
      })
    },
    //获取字典表材料名称
    async getDicFilteredData() {
      let params = {pageNum: 1, pageSize: 100000000}
      let {data} = await this.$api.Dictionary.searchDictionary(params)
      data.list.forEach(item => {
        if (item.dictType === 'pipe_materials') {
          this.selects.materials.push({
            label: item.dictName,
            value: item.dictId,
          })
        }
      })
    },
    // async getDicFilteredData() {
    //   let params = {pageNum: 1, pageSize: 100000000}
    //   let {data} = await this.$api.Dictionary.searchDictionary(params)
    //   data.list.forEach(item => {
    //     if (item.dictType === 'pipe_materials') {
    //       this.selects.materials.push({
    //         label: item.dictName,
    //         value: item.dictId,
    //       })
    //     }
    //   })
    // },
    // 获取配比屏名称
    async getScreenNames() {
      const params = {pageNum: 1, pageSize: 9999}
@@ -351,9 +352,9 @@
        if (!this.isRenderDialog) {
          this.isRenderDialog = true
        }
        if (!this.selects.materials.length) {
          await this.getDicFilteredData()
        }
        // if (!this.selects.materials.length) {
        //   await this.getDicFilteredData()
        // }
        this.asyncVisible = true
        this.$nextTick(() => {
          resolve()
@@ -372,7 +373,6 @@
      this.submitMode = 'update'
      this.showDialog().then(() => {
        const {mixingSignboardId, proName, constructionUnit, saveStamp, construction, dataListFlat} = this.tableData[i]
        console.log(constructionUnit)
        this.ruleForm = Object.assign(this.ruleForm, {
          mixingSignboardId,
          proName,
@@ -543,8 +543,11 @@
          justify-content: center;
          align-items: center;
          flex: 1;
          padding: 0 4px;
          line-height: 24px;
          margin: -1px -1px -1px 0;
          border: 1px solid #01B3EF;
          word-break: break-all;
        }
      }
    }
web/src/views/MixingInfo/messageInfo.vue
@@ -6,34 +6,37 @@
        <div class="mixing_main">
            <div class="mixing_left">
                <div class="mixing_left_num">
                    <div class="">{{mixingList&&mixingList.tableNum}}</div>
                    <div class="">{{ mixingList && mixingList.tableNum }}</div>
                </div>
                <div class="mixing_left_name">{{mixingList&&mixingList.materialName}}</div>
                <div class="mixing_left_name">{{ mixingList && mixingList.materialName }}</div>
            </div>
            <div class="mixing_right">
                <div class="mixing_rows">
                    <div class="mixing_rows_titles">产地名称:</div>
                    <div class="mixing_rows_datas">{{mixingList&&mixingList.nameOfOrigin}}</div>
                    <div class="mixing_rows_datas">{{ mixingList && mixingList.nameOfOrigin }}</div>
                </div>
                <div class="mixing_rows">
                    <div class="mixing_rows_titles">进场数量:</div>
                    <div class="mixing_rows_datas">{{mixingList&&mixingList.incomingQuantity}} t</div>
                    <div class="mixing_rows_datas">{{ mixingList && mixingList.incomingQuantity }} t</div>
                </div>
                <div class="mixing_rows">
                    <div class="mixing_rows_titles">进场日期:</div>
                    <div class="mixing_rows_datas">{{mixingList&&mixingList.inTime}}</div>
                    <div class="mixing_rows_datas">{{ mixingList && mixingList.inTime }}</div>
                </div>
                <div class="mixing_rows">
                    <div class="mixing_rows_titles">检验日期:</div>
                    <div class="mixing_rows_datas">{{mixingList&&mixingList.inspectionDate}}</div>
                    <div class="mixing_rows_datas">{{ mixingList && mixingList.inspectionDate }}</div>
                </div>
                <div class="mixing_rows">
                    <div class="mixing_rows_titles">检验状态:</div>
                    <div class="mixing_rows_datas"  :class="{'standardStyle':mixingList.status===1,'notStandardStyle':mixingList.status!==1}">{{mixingList&&mixingList.status===1?'合格':mixingList&&mixingList.status===2?'待检':''}}</div>
                    <div class="mixing_rows_datas"
                        :class="{ 'standardStyle': mixingList.status === 1, 'notStandardStyle': mixingList.status !== 1 }">
                        {{ mixingList && mixingList.status === 1 ? '合格' : mixingList && mixingList.status === 2 ? '待检' : ''
                        }}</div>
                </div>
                <div class="mixing_rows">
                    <div class="mixing_rows_titles">报告编号:</div>
                    <div class="mixing_rows_datas">{{mixingList&&mixingList.reportNumber}}</div>
                    <div class="mixing_rows_datas">{{ mixingList && mixingList.reportNumber }}</div>
                </div>
            </div>
        </div>
@@ -41,21 +44,21 @@
</template>
<script>
export default {
    data(){
        return{
            timer:null,//定时器
            mixingList:null,//展示数据
    data() {
        return {
            timer: null,//定时器
            mixingList: [],//展示数据
        }
    },
    created(){
    created() {
        this.searchMixingInfos()
    },
    mounted(){
    mounted() {
        const that = this;
        // that.searchMixingInfos()
        that.timer = setInterval(()=>{
        that.timer = setInterval(() => {
            that.searchMixingInfos()
        },60000 * 10)
        }, 60000 * 10)
        let width = document.getElementsByClassName('mixing_index')[0].clientWidth
        let $html = document.getElementsByTagName('html')[0]
@@ -71,15 +74,15 @@
        clearInterval(this.timer);
        this.timer = null;
    },
    methods:{
        searchMixingInfos(){
            let params={
                tableNum:window.location.href.split('/')[5].split('=')[1]
    methods: {
        searchMixingInfos() {
            let params = {
                tableNum: window.location.href.split('/')[5].split('=')[1]
            }
            this.$api.Infos.showHmixings(params).then(res=>{
                if(res.statusMsg==='ok'){
                    this.mixingList = res.data===null?[]:res.data
                }else{
            this.$api.Infos.showHmixings(params).then(res => {
                if (res.statusMsg === 'ok') {
                    this.mixingList = res.data === null ? [] : res.data
                } else {
                    this.$message.warning('请检查网络或联系管理员!!!')
                }
            })
@@ -88,18 +91,18 @@
}
</script>
<style scoped lang="scss">
.mixing_index{
.mixing_index {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
    padding: 5px;
    padding: 0.4rem;
    background: url("../../assets/mixing/mixing_bg3.png") no-repeat;
    background-size: 100% 100%;
    background-position: center center;
    .mixing_header{
    .mixing_header {
        width: 100%;
        height: 3.2rem;
        position: relative;
@@ -107,8 +110,8 @@
        display: flex;
        justify-content: center;
        align-items: center;
        span{
        span {
            position: absolute;
            font-size: 5rem;
            font-weight: bold;
@@ -120,7 +123,7 @@
        }
    }
    .mixing_main{
    .mixing_main {
        overflow: hidden;
        flex: 1;
        width: 100%;
@@ -128,17 +131,17 @@
        padding: 6rem;
        display: flex;
        .mixing_left{
        .mixing_left {
            display: flex;
            flex-direction: column;
            width: 45%;
            margin-right: 15px;
            flex: 1;
            margin-right: 3rem;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: space-between;
            .mixing_left_num{
            .mixing_left_num {
                position: relative;
                overflow: hidden;
                padding: 1rem;
@@ -146,7 +149,8 @@
                width: 100%;
                background: url("../../assets/mixing/mixing_left_bg.png") no-repeat;
                background-size: 100% 100%;
                >div{
                > div {
                    display: flex;
                    justify-content: center;
                    align-items: center;
@@ -158,51 +162,58 @@
                    background-color: rgba(37, 129, 255, 0.29);
                }
            }
            .mixing_left_name{
            .mixing_left_name {
                flex: 1;
                width: 100%;
                display: flex;
                justify-content: center;
                align-items: center;
                text-shadow: 5px 7px 0px rgba(0,66,255,0.2), 16px 23px 16px rgba(14,19,48,0.15);
                background: linear-gradient(to bottom,#FFFFFF 0%,rgba(140, 186, 255, 0.88) 100%);
                text-shadow: 5px 7px 0px rgba(0, 66, 255, 0.2), 16px 23px 16px rgba(14, 19, 48, 0.15);
                background: linear-gradient(to bottom, #FFFFFF 0%, rgba(140, 186, 255, 0.88) 100%);
                background-clip: text;
                -webkit-background-clip: text;
                text-fill-color: transparent;
                -webkit-text-fill-color: transparent;
                color: #FFFFFF;
                font-size: 9rem;
                font-weight: 500;
            }
        }
        .mixing_right{
            width: calc(55% - 100px);
            background: linear-gradient(to right,#0D3776 0%,#041A40 100%);
        .mixing_right {
            flex: 1.2;
            background: linear-gradient(to right, #0D3776 0%, #041A40 100%);
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            .mixing_rows{
                padding: 10px 20px;
            padding: 2rem 4rem;
            .mixing_rows {
                overflow: hidden;
                display: flex;
                .mixing_rows_titles{
                .mixing_rows_titles {
                    flex: none;
                    color: #FFFFFF;
                    font-weight: 400;
                    font-size: 5rem;
                }
                .mixing_rows_datas{
                .mixing_rows_datas {
                    flex: none;
                    color: #FFFFFF;
                    font-weight: 400;
                    font-size: 5rem;
                }
                .standardStyle{
                    color:#15EF48;
                    font-size:8rem;
                .standardStyle {
                    color: #15EF48;
                    font-size: 8rem;
                }
                .notStandardStyle{
                    color:rgba(255, 102, 0, 1);
                    font-size:8rem;
                .notStandardStyle {
                    color: rgba(255, 102, 0, 1);
                    font-size: 8rem;
                }
            }
        }
web/src/views/SecureManage/RiskGrad/AreaPolling.vue
@@ -7,7 +7,9 @@
                <el-tab-pane label="任务打卡" name="second"></el-tab-pane>
            </el-tabs>
        </div>
        <component :is="cpns[activeName]"></component>
        <div class="content">
            <component :is="cpns[activeName]"></component>
        </div>
    </div>
</template>
<script>
@@ -32,4 +34,13 @@
<style lang="scss" scoped>
@import '@/style/layout-main.scss';
.main {
    display: flex;
    .content {
        overflow: hidden;
        flex: 1;
    }
}
</style>
web/src/views/SecureManage/RiskGrad/components/PollingTask.vue
@@ -1,6 +1,6 @@
<!-- 安全管理 ==> 风险分级管控 => 区域巡检(巡检任务)-->
<template>
    <div>
    <div class="wrap">
        <div class="main_header">
            <div class="header_item">
                <span class="header_label">巡检任务:</span>
@@ -385,6 +385,17 @@
<style lang="scss" scoped>
@import '@/style/layout-main.scss';
.wrap {
    display: flex;
    flex-direction: column;
    height: 100%;
    .main_content {
        overflow: hidden;
        flex: 1;
    }
}
.divider {
    position: relative;
    margin-bottom: 30px;
web/src/views/SecureManage/RiskGrad/components/TaskPunchcard.vue
@@ -1,6 +1,6 @@
<!-- 安全管理 ==> 风险分级管控 => 区域巡检(任务打卡)-->
<template>
    <div>
    <div class="wrap">
        <div class="main_header">
            <div class="header_item">
                <span class="header_label">巡检人:</span>
@@ -8,7 +8,7 @@
            </div>
            <div class="header_item">
                <span class="header_label">巡检状态:</span>
                <el-select size="mini" v-model="queryInfo.status">
                <el-select size="mini" v-model="queryInfo.status" clearable>
                    <el-option v-for="item in queryStatus" :key="item.value" :label="item.label" :value="item.value"
                        placeholder="请选择巡检状态"></el-option>
                </el-select>
@@ -72,8 +72,6 @@
                    <el-image class="image" v-for="(item, index) in regionInfos.img" :key="index" :src="item" fit="contain"
                        :preview-src-list="regionInfos.img"></el-image>
                </el-form-item>
                <el-form-item label="获取当前位置:">{{ regionInfos.location }}</el-form-item>
            </el-form>
        </el-dialog>
    </div>
@@ -120,7 +118,6 @@
                region: '', // 巡检区域
                res: '', // 巡检结果
                img: '', // 上传的图片
                location: '', // 位置
            }
        }
    },
@@ -230,13 +227,12 @@
                    this.regionInfos.time = res.data.inspectionTime
                    this.regionInfos.region = res.data.region
                    this.regionInfos.res = res.data.result
                    this.regionInfos.location = res.data.location
                    this.regionInfos.img = []
                    if (res.data.imgPaths) {
                        let arr = []
                        res.data.imgPaths.split(',').forEach(item => {
                            arr.push(process.env.VUE_APP_BASE_URL + '/' + item)
                            arr.push('https://szpipe.thhy-tj.com/' + item) // 是生产地址
                        })
                        this.regionInfos.img.push(...arr)
                    }
@@ -265,6 +261,17 @@
<style lang="scss" scoped>
@import '@/style/layout-main.scss';
.wrap {
    display: flex;
    flex-direction: column;
    height: 100%;
    .main_content {
        overflow: hidden;
        flex: 1;
    }
}
.rule_form {
    color: #fff;