فهرست منبع

裂解炉炉管测温H109-H130

wangggziwen 1 سال پیش
والد
کامیت
4d986d1cbc

+ 16 - 16
ui/src/views/production/temperature/H109.vue

@@ -232,82 +232,82 @@
           <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
         </el-form-item>
       </el-form>
-      <el-descriptions title="PASS1" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS1出口左" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass1[index]"/>
         </el-descriptions-item>
       </el-descriptions><br/>
-      <el-descriptions title="PASS2" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS1出口右" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass2[index]"/>
         </el-descriptions-item>
       </el-descriptions><br/>
-      <el-descriptions title="PASS3" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS2出口左" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass3[index]"/>
         </el-descriptions-item>
       </el-descriptions><br/>
-      <el-descriptions title="PASS4" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS2出口右" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass4[index]"/>
         </el-descriptions-item>
       </el-descriptions><br/>
-      <el-descriptions title="PASS5" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS3出口左" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass5[index]"/>
         </el-descriptions-item>
       </el-descriptions><br/>
-      <el-descriptions title="PASS6" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS3出口右" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass6[index]"/>
         </el-descriptions-item>
       </el-descriptions><br/>
-      <el-descriptions title="PASS7" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS4出口左" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass7[index]"/>
         </el-descriptions-item>
       </el-descriptions><br/>
-      <el-descriptions title="PASS8" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS4出口右" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass8[index]"/>
         </el-descriptions-item>
       </el-descriptions><br/>
-      <el-descriptions title="PASS9" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS5出口左" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass9[index]"/>
         </el-descriptions-item>
       </el-descriptions><br/>
-      <el-descriptions title="PASS10" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS5出口右" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass10[index]"/>
         </el-descriptions-item>
       </el-descriptions><br/>
-      <el-descriptions title="PASS11" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS6出口左" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass11[index]"/>
         </el-descriptions-item>
       </el-descriptions><br/>
-      <el-descriptions title="PASS12" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS6出口右" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass12[index]"/>
         </el-descriptions-item>
       </el-descriptions><br/>
-      <el-descriptions title="PASS13" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS7出口左" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass13[index]"/>
         </el-descriptions-item>
       </el-descriptions><br/>
-      <el-descriptions title="PASS14" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS7出口右" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass14[index]"/>
         </el-descriptions-item>
       </el-descriptions><br/>
-      <el-descriptions title="PASS15" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS8出口左" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass15[index]"/>
         </el-descriptions-item>
       </el-descriptions><br/>
-      <el-descriptions title="PASS16" direction="vertical" :column="7" border>
+      <el-descriptions title="PASS8出口右" direction="vertical" :column="7" border>
         <el-descriptions-item v-for="(item, index) in 14" :label="(index+1).toString()">
           <el-input v-model="pass16[index]"/>
         </el-descriptions-item>

+ 583 - 0
ui/src/views/production/temperature/H110.vue

@@ -0,0 +1,583 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="巡检日期" prop="recordTime">
+        <el-date-picker
+          v-model="queryParams.recordTime"
+          type="month"
+          value-format="yyyy-MM"
+          placeholder="选择巡检日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['production:temperature:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['production:temperature:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['production:temperature:remove']"
+        >删除</el-button>
+      </el-col>
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="info"-->
+          <!--icon="el-icon-upload2"-->
+          <!--size="mini"-->
+          <!--@click="handleImport"-->
+          <!--v-hasPermi="['production:temperature:edit']"-->
+        <!--&gt;导入</el-button>-->
+      <!--</el-col>-->
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="warning"-->
+          <!--icon="el-icon-download"-->
+          <!--size="mini"-->
+          <!--@click="handleExport"-->
+          <!--v-hasPermi="['production:temperature:export']"-->
+        <!--&gt;导出</el-button>-->
+      <!--</el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="temperatureList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="裂解炉名称" align="center" prop="furnanceName" :show-overflow-tooltip="true" width="100"/>
+      <el-table-column label="巡检日期" align="center" prop="recordTime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="PASS1出口" align="center" prop="pass1" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="((index+1).toString()).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass1[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS2出口" align="center" prop="pass2" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass2[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS3出口" align="center" prop="pass3" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass3[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS4出口" align="center" prop="pass4" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass4[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS5出口" align="center" prop="pass5" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass5[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS6出口" align="center" prop="pass6" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass6[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS7出口" align="center" prop="pass7" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass7[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS8出口" align="center" prop="pass8" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass8[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['production:temperature:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['production:temperature:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改裂解炉炉管测温对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="裂解炉名称" prop="furnanceName">
+          <el-input v-model="form.furnanceName" placeholder="请输入裂解炉名称" />
+        </el-form-item>
+        <el-form-item label="巡检日期" prop="recordTime">
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.recordTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择巡检日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="归属部门" prop="deptId">
+          <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
+        </el-form-item>
+      </el-form>
+      <el-descriptions title="PASS1出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass1[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS2出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass2[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS3出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass3[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS4出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass4[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS5出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass5[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS6出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass6[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS7出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass7[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS8出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass8[index]"/>
+        </el-descriptions-item>
+      </el-descriptions>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { listTemperature, getTemperature, delTemperature, addTemperature, updateTemperature, exportTemperature, importTemplate} from "@/api/production/temperature";
+  import { treeselect } from "@/api/system/dept";
+  import { getToken } from "@/utils/auth";
+  import Treeselect from "@riophae/vue-treeselect";
+  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+  export default {
+    name: "Temperature",
+    components: { Treeselect },
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 裂解炉炉管测温表格数据
+        temperatureList: [],
+        // 弹出层标题
+        title: "",
+        // 部门树选项
+        deptOptions: undefined,
+        clientHeight:300,
+        // 是否显示弹出层
+        open: false,
+        // 用户导入参数
+        upload: {
+          // 是否显示弹出层(用户导入)
+          open: false,
+          // 弹出层标题(用户导入)
+          title: "",
+          // 是否禁用上传
+          isUploading: false,
+          // 是否更新已经存在的用户数据
+          updateSupport: 0,
+          // 设置上传的请求头部
+          headers: { Authorization: "Bearer " + getToken() },
+          // 上传的地址
+          url: process.env.VUE_APP_BASE_API + "/production/temperature/importData"
+        },
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 20,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+        },
+        recordTime: null,
+        // 表单参数
+        form: {},
+        pass1:[],
+        pass2:[],
+        pass3:[],
+        pass4:[],
+        pass5:[],
+        pass6:[],
+        pass7:[],
+        pass8:[],
+        pass9:[],
+        pass10:[],
+        pass11:[],
+        pass12:[],
+        pass13:[],
+        pass14:[],
+        pass15:[],
+        pass16:[],
+        // 表单校验
+        rules: {
+          id: [
+            { required: true, message: "主键id不能为空", trigger: "blur" }
+          ],
+        }
+      };
+    },
+    watch: {
+      // 根据名称筛选部门树
+      deptName(val) {
+        this.$refs.tree.filter(val);
+      }
+    },
+    created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+        this.clientHeight = document.body.clientHeight -250
+      })
+      this.getList();
+      this.getTreeselect();
+    },
+    methods: {
+      /** 查询裂解炉炉管测温列表 */
+      getList() {
+        this.loading = true;
+        this.queryParams.furnanceName = "H110";
+        console.log(this.queryParams)
+        listTemperature(this.queryParams).then(response => {
+          for (let i = 0; i< response.rows.length; i++) {
+            if (response.rows[i].pass1 == null) { response.rows[i].pass1 = []; } else { response.rows[i].pass1 = response.rows[i].pass1.split(','); }
+            if (response.rows[i].pass2 == null) { response.rows[i].pass2 = []; } else { response.rows[i].pass2 = response.rows[i].pass2.split(','); }
+            if (response.rows[i].pass3 == null) { response.rows[i].pass3 = []; } else { response.rows[i].pass3 = response.rows[i].pass3.split(','); }
+            if (response.rows[i].pass4 == null) { response.rows[i].pass4 = []; } else { response.rows[i].pass4 = response.rows[i].pass4.split(','); }
+            if (response.rows[i].pass5 == null) { response.rows[i].pass5 = []; } else { response.rows[i].pass5 = response.rows[i].pass5.split(','); }
+            if (response.rows[i].pass6 == null) { response.rows[i].pass6 = []; } else { response.rows[i].pass6 = response.rows[i].pass6.split(','); }
+            if (response.rows[i].pass7 == null) { response.rows[i].pass7 = []; } else { response.rows[i].pass7 = response.rows[i].pass7.split(','); }
+            if (response.rows[i].pass8 == null) { response.rows[i].pass8 = []; } else { response.rows[i].pass8 = response.rows[i].pass8.split(','); }
+          }
+          this.temperatureList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      /** 查询部门下拉树结构 */
+      getTreeselect() {
+        treeselect().then(response => {
+          this.deptOptions = response.data;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          id: null,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+          delFlag: null,
+          createBy: null,
+          createTime: null,
+          updateBy: null,
+          updateTime: null,
+        };
+        this.pass1 = [];
+        this.pass2 = [];
+        this.pass3 = [];
+        this.pass4 = [];
+        this.pass5 = [];
+        this.pass6 = [];
+        this.pass7 = [];
+        this.pass8 = [];
+        this.pass9 = [];
+        this.pass10 = [];
+        this.pass11 = [];
+        this.pass12 = [];
+        this.pass13 = [];
+        this.pass14 = [];
+        this.pass15 = [];
+        this.pass16 = [];
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset();
+        this.form.furnanceName = "H110";
+        this.open = true;
+        this.title = "添加裂解炉炉管测温";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+        const id = row.id || this.ids
+        getTemperature(id).then(response => {
+          this.form = response.data;
+          if (response.data.pass1 == null) { this.pass1 = []; } else { this.pass1 = response.data.pass1.split(','); }
+          if (response.data.pass2 == null) { this.pass2 = []; } else { this.pass2 = response.data.pass2.split(','); }
+          if (response.data.pass3 == null) { this.pass3 = []; } else { this.pass3 = response.data.pass3.split(','); }
+          if (response.data.pass4 == null) { this.pass4 = []; } else { this.pass4 = response.data.pass4.split(','); }
+          if (response.data.pass5 == null) { this.pass5 = []; } else { this.pass5 = response.data.pass5.split(','); }
+          if (response.data.pass6 == null) { this.pass6 = []; } else { this.pass6 = response.data.pass6.split(','); }
+          if (response.data.pass7 == null) { this.pass7 = []; } else { this.pass7 = response.data.pass7.split(','); }
+          if (response.data.pass8 == null) { this.pass8 = []; } else { this.pass8 = response.data.pass8.split(','); }
+          this.open = true;
+          this.title = "修改裂解炉炉管测温";
+        });
+      },
+      /** 提交按钮 */
+      submitForm() {
+        this.form.pass1 = this.pass1.join(",");
+        this.form.pass2 = this.pass2.join(",");
+        this.form.pass3 = this.pass3.join(",");
+        this.form.pass4 = this.pass4.join(",");
+        this.form.pass5 = this.pass5.join(",");
+        this.form.pass6 = this.pass6.join(",");
+        this.form.pass7 = this.pass7.join(",");
+        this.form.pass8 = this.pass8.join(",");
+        this.form.pass9 = this.pass9.join(",");
+        this.form.pass10 = this.pass10.join(",");
+        this.form.pass11 = this.pass11.join(",");
+        this.form.pass12 = this.pass12.join(",");
+        this.form.pass13 = this.pass13.join(",");
+        this.form.pass14 = this.pass14.join(",");
+        this.form.pass15 = this.pass15.join(",");
+        this.form.pass16 = this.pass16.join(",");
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            if (this.form.id != null) {
+              updateTemperature(this.form).then(response => {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              });
+            } else {
+              addTemperature(this.form).then(response => {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              });
+            }
+          }
+        });
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        const ids = row.id || this.ids;
+        this.$confirm('是否确认删除?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delTemperature(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        const queryParams = this.queryParams;
+        this.$confirm('是否确认导出所有裂解炉炉管测温数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportTemperature(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+      },
+      /** 导入按钮操作 */
+      handleImport() {
+        this.upload.title = "用户导入";
+        this.upload.open = true;
+      },
+      /** 下载模板操作 */
+      importTemplate() {
+        importTemplate().then(response => {
+          this.download(response.msg);
+        });
+      },
+      // 文件上传中处理
+      handleFileUploadProgress(event, file, fileList) {
+        this.upload.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccess(response, file, fileList) {
+        this.upload.open = false;
+        this.upload.isUploading = false;
+        this.$refs.upload.clearFiles();
+        this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+        this.getList();
+      },
+      // 提交上传文件
+      submitFileForm() {
+        this.$refs.upload.submit();
+      }
+    }
+  };
+</script>

+ 583 - 0
ui/src/views/production/temperature/H111.vue

@@ -0,0 +1,583 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="巡检日期" prop="recordTime">
+        <el-date-picker
+          v-model="queryParams.recordTime"
+          type="month"
+          value-format="yyyy-MM"
+          placeholder="选择巡检日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['production:temperature:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['production:temperature:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['production:temperature:remove']"
+        >删除</el-button>
+      </el-col>
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="info"-->
+          <!--icon="el-icon-upload2"-->
+          <!--size="mini"-->
+          <!--@click="handleImport"-->
+          <!--v-hasPermi="['production:temperature:edit']"-->
+        <!--&gt;导入</el-button>-->
+      <!--</el-col>-->
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="warning"-->
+          <!--icon="el-icon-download"-->
+          <!--size="mini"-->
+          <!--@click="handleExport"-->
+          <!--v-hasPermi="['production:temperature:export']"-->
+        <!--&gt;导出</el-button>-->
+      <!--</el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="temperatureList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="裂解炉名称" align="center" prop="furnanceName" :show-overflow-tooltip="true" width="100"/>
+      <el-table-column label="巡检日期" align="center" prop="recordTime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="PASS1出口" align="center" prop="pass1" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="((index+1).toString()).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass1[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS2出口" align="center" prop="pass2" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass2[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS3出口" align="center" prop="pass3" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass3[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS4出口" align="center" prop="pass4" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass4[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS5出口" align="center" prop="pass5" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass5[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS6出口" align="center" prop="pass6" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass6[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS7出口" align="center" prop="pass7" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass7[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS8出口" align="center" prop="pass8" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass8[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['production:temperature:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['production:temperature:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改裂解炉炉管测温对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="裂解炉名称" prop="furnanceName">
+          <el-input v-model="form.furnanceName" placeholder="请输入裂解炉名称" />
+        </el-form-item>
+        <el-form-item label="巡检日期" prop="recordTime">
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.recordTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择巡检日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="归属部门" prop="deptId">
+          <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
+        </el-form-item>
+      </el-form>
+      <el-descriptions title="PASS1出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass1[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS2出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass2[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS3出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass3[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS4出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass4[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS5出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass5[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS6出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass6[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS7出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass7[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS8出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass8[index]"/>
+        </el-descriptions-item>
+      </el-descriptions>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { listTemperature, getTemperature, delTemperature, addTemperature, updateTemperature, exportTemperature, importTemplate} from "@/api/production/temperature";
+  import { treeselect } from "@/api/system/dept";
+  import { getToken } from "@/utils/auth";
+  import Treeselect from "@riophae/vue-treeselect";
+  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+  export default {
+    name: "Temperature",
+    components: { Treeselect },
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 裂解炉炉管测温表格数据
+        temperatureList: [],
+        // 弹出层标题
+        title: "",
+        // 部门树选项
+        deptOptions: undefined,
+        clientHeight:300,
+        // 是否显示弹出层
+        open: false,
+        // 用户导入参数
+        upload: {
+          // 是否显示弹出层(用户导入)
+          open: false,
+          // 弹出层标题(用户导入)
+          title: "",
+          // 是否禁用上传
+          isUploading: false,
+          // 是否更新已经存在的用户数据
+          updateSupport: 0,
+          // 设置上传的请求头部
+          headers: { Authorization: "Bearer " + getToken() },
+          // 上传的地址
+          url: process.env.VUE_APP_BASE_API + "/production/temperature/importData"
+        },
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 20,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+        },
+        recordTime: null,
+        // 表单参数
+        form: {},
+        pass1:[],
+        pass2:[],
+        pass3:[],
+        pass4:[],
+        pass5:[],
+        pass6:[],
+        pass7:[],
+        pass8:[],
+        pass9:[],
+        pass10:[],
+        pass11:[],
+        pass12:[],
+        pass13:[],
+        pass14:[],
+        pass15:[],
+        pass16:[],
+        // 表单校验
+        rules: {
+          id: [
+            { required: true, message: "主键id不能为空", trigger: "blur" }
+          ],
+        }
+      };
+    },
+    watch: {
+      // 根据名称筛选部门树
+      deptName(val) {
+        this.$refs.tree.filter(val);
+      }
+    },
+    created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+        this.clientHeight = document.body.clientHeight -250
+      })
+      this.getList();
+      this.getTreeselect();
+    },
+    methods: {
+      /** 查询裂解炉炉管测温列表 */
+      getList() {
+        this.loading = true;
+        this.queryParams.furnanceName = "H111";
+        console.log(this.queryParams)
+        listTemperature(this.queryParams).then(response => {
+          for (let i = 0; i< response.rows.length; i++) {
+            if (response.rows[i].pass1 == null) { response.rows[i].pass1 = []; } else { response.rows[i].pass1 = response.rows[i].pass1.split(','); }
+            if (response.rows[i].pass2 == null) { response.rows[i].pass2 = []; } else { response.rows[i].pass2 = response.rows[i].pass2.split(','); }
+            if (response.rows[i].pass3 == null) { response.rows[i].pass3 = []; } else { response.rows[i].pass3 = response.rows[i].pass3.split(','); }
+            if (response.rows[i].pass4 == null) { response.rows[i].pass4 = []; } else { response.rows[i].pass4 = response.rows[i].pass4.split(','); }
+            if (response.rows[i].pass5 == null) { response.rows[i].pass5 = []; } else { response.rows[i].pass5 = response.rows[i].pass5.split(','); }
+            if (response.rows[i].pass6 == null) { response.rows[i].pass6 = []; } else { response.rows[i].pass6 = response.rows[i].pass6.split(','); }
+            if (response.rows[i].pass7 == null) { response.rows[i].pass7 = []; } else { response.rows[i].pass7 = response.rows[i].pass7.split(','); }
+            if (response.rows[i].pass8 == null) { response.rows[i].pass8 = []; } else { response.rows[i].pass8 = response.rows[i].pass8.split(','); }
+          }
+          this.temperatureList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      /** 查询部门下拉树结构 */
+      getTreeselect() {
+        treeselect().then(response => {
+          this.deptOptions = response.data;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          id: null,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+          delFlag: null,
+          createBy: null,
+          createTime: null,
+          updateBy: null,
+          updateTime: null,
+        };
+        this.pass1 = [];
+        this.pass2 = [];
+        this.pass3 = [];
+        this.pass4 = [];
+        this.pass5 = [];
+        this.pass6 = [];
+        this.pass7 = [];
+        this.pass8 = [];
+        this.pass9 = [];
+        this.pass10 = [];
+        this.pass11 = [];
+        this.pass12 = [];
+        this.pass13 = [];
+        this.pass14 = [];
+        this.pass15 = [];
+        this.pass16 = [];
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset();
+        this.form.furnanceName = "H111";
+        this.open = true;
+        this.title = "添加裂解炉炉管测温";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+        const id = row.id || this.ids
+        getTemperature(id).then(response => {
+          this.form = response.data;
+          if (response.data.pass1 == null) { this.pass1 = []; } else { this.pass1 = response.data.pass1.split(','); }
+          if (response.data.pass2 == null) { this.pass2 = []; } else { this.pass2 = response.data.pass2.split(','); }
+          if (response.data.pass3 == null) { this.pass3 = []; } else { this.pass3 = response.data.pass3.split(','); }
+          if (response.data.pass4 == null) { this.pass4 = []; } else { this.pass4 = response.data.pass4.split(','); }
+          if (response.data.pass5 == null) { this.pass5 = []; } else { this.pass5 = response.data.pass5.split(','); }
+          if (response.data.pass6 == null) { this.pass6 = []; } else { this.pass6 = response.data.pass6.split(','); }
+          if (response.data.pass7 == null) { this.pass7 = []; } else { this.pass7 = response.data.pass7.split(','); }
+          if (response.data.pass8 == null) { this.pass8 = []; } else { this.pass8 = response.data.pass8.split(','); }
+          this.open = true;
+          this.title = "修改裂解炉炉管测温";
+        });
+      },
+      /** 提交按钮 */
+      submitForm() {
+        this.form.pass1 = this.pass1.join(",");
+        this.form.pass2 = this.pass2.join(",");
+        this.form.pass3 = this.pass3.join(",");
+        this.form.pass4 = this.pass4.join(",");
+        this.form.pass5 = this.pass5.join(",");
+        this.form.pass6 = this.pass6.join(",");
+        this.form.pass7 = this.pass7.join(",");
+        this.form.pass8 = this.pass8.join(",");
+        this.form.pass9 = this.pass9.join(",");
+        this.form.pass10 = this.pass10.join(",");
+        this.form.pass11 = this.pass11.join(",");
+        this.form.pass12 = this.pass12.join(",");
+        this.form.pass13 = this.pass13.join(",");
+        this.form.pass14 = this.pass14.join(",");
+        this.form.pass15 = this.pass15.join(",");
+        this.form.pass16 = this.pass16.join(",");
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            if (this.form.id != null) {
+              updateTemperature(this.form).then(response => {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              });
+            } else {
+              addTemperature(this.form).then(response => {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              });
+            }
+          }
+        });
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        const ids = row.id || this.ids;
+        this.$confirm('是否确认删除?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delTemperature(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        const queryParams = this.queryParams;
+        this.$confirm('是否确认导出所有裂解炉炉管测温数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportTemperature(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+      },
+      /** 导入按钮操作 */
+      handleImport() {
+        this.upload.title = "用户导入";
+        this.upload.open = true;
+      },
+      /** 下载模板操作 */
+      importTemplate() {
+        importTemplate().then(response => {
+          this.download(response.msg);
+        });
+      },
+      // 文件上传中处理
+      handleFileUploadProgress(event, file, fileList) {
+        this.upload.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccess(response, file, fileList) {
+        this.upload.open = false;
+        this.upload.isUploading = false;
+        this.$refs.upload.clearFiles();
+        this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+        this.getList();
+      },
+      // 提交上传文件
+      submitFileForm() {
+        this.$refs.upload.submit();
+      }
+    }
+  };
+</script>

+ 583 - 0
ui/src/views/production/temperature/H112.vue

@@ -0,0 +1,583 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="巡检日期" prop="recordTime">
+        <el-date-picker
+          v-model="queryParams.recordTime"
+          type="month"
+          value-format="yyyy-MM"
+          placeholder="选择巡检日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['production:temperature:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['production:temperature:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['production:temperature:remove']"
+        >删除</el-button>
+      </el-col>
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="info"-->
+          <!--icon="el-icon-upload2"-->
+          <!--size="mini"-->
+          <!--@click="handleImport"-->
+          <!--v-hasPermi="['production:temperature:edit']"-->
+        <!--&gt;导入</el-button>-->
+      <!--</el-col>-->
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="warning"-->
+          <!--icon="el-icon-download"-->
+          <!--size="mini"-->
+          <!--@click="handleExport"-->
+          <!--v-hasPermi="['production:temperature:export']"-->
+        <!--&gt;导出</el-button>-->
+      <!--</el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="temperatureList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="裂解炉名称" align="center" prop="furnanceName" :show-overflow-tooltip="true" width="100"/>
+      <el-table-column label="巡检日期" align="center" prop="recordTime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="PASS1出口" align="center" prop="pass1" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="((index+1).toString()).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass1[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS2出口" align="center" prop="pass2" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass2[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS3出口" align="center" prop="pass3" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass3[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS4出口" align="center" prop="pass4" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass4[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS5出口" align="center" prop="pass5" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass5[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS6出口" align="center" prop="pass6" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass6[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS7出口" align="center" prop="pass7" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass7[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS8出口" align="center" prop="pass8" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass8[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['production:temperature:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['production:temperature:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改裂解炉炉管测温对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="裂解炉名称" prop="furnanceName">
+          <el-input v-model="form.furnanceName" placeholder="请输入裂解炉名称" />
+        </el-form-item>
+        <el-form-item label="巡检日期" prop="recordTime">
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.recordTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择巡检日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="归属部门" prop="deptId">
+          <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
+        </el-form-item>
+      </el-form>
+      <el-descriptions title="PASS1出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass1[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS2出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass2[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS3出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass3[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS4出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass4[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS5出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass5[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS6出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass6[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS7出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass7[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS8出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass8[index]"/>
+        </el-descriptions-item>
+      </el-descriptions>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { listTemperature, getTemperature, delTemperature, addTemperature, updateTemperature, exportTemperature, importTemplate} from "@/api/production/temperature";
+  import { treeselect } from "@/api/system/dept";
+  import { getToken } from "@/utils/auth";
+  import Treeselect from "@riophae/vue-treeselect";
+  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+  export default {
+    name: "Temperature",
+    components: { Treeselect },
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 裂解炉炉管测温表格数据
+        temperatureList: [],
+        // 弹出层标题
+        title: "",
+        // 部门树选项
+        deptOptions: undefined,
+        clientHeight:300,
+        // 是否显示弹出层
+        open: false,
+        // 用户导入参数
+        upload: {
+          // 是否显示弹出层(用户导入)
+          open: false,
+          // 弹出层标题(用户导入)
+          title: "",
+          // 是否禁用上传
+          isUploading: false,
+          // 是否更新已经存在的用户数据
+          updateSupport: 0,
+          // 设置上传的请求头部
+          headers: { Authorization: "Bearer " + getToken() },
+          // 上传的地址
+          url: process.env.VUE_APP_BASE_API + "/production/temperature/importData"
+        },
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 20,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+        },
+        recordTime: null,
+        // 表单参数
+        form: {},
+        pass1:[],
+        pass2:[],
+        pass3:[],
+        pass4:[],
+        pass5:[],
+        pass6:[],
+        pass7:[],
+        pass8:[],
+        pass9:[],
+        pass10:[],
+        pass11:[],
+        pass12:[],
+        pass13:[],
+        pass14:[],
+        pass15:[],
+        pass16:[],
+        // 表单校验
+        rules: {
+          id: [
+            { required: true, message: "主键id不能为空", trigger: "blur" }
+          ],
+        }
+      };
+    },
+    watch: {
+      // 根据名称筛选部门树
+      deptName(val) {
+        this.$refs.tree.filter(val);
+      }
+    },
+    created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+        this.clientHeight = document.body.clientHeight -250
+      })
+      this.getList();
+      this.getTreeselect();
+    },
+    methods: {
+      /** 查询裂解炉炉管测温列表 */
+      getList() {
+        this.loading = true;
+        this.queryParams.furnanceName = "H112";
+        console.log(this.queryParams)
+        listTemperature(this.queryParams).then(response => {
+          for (let i = 0; i< response.rows.length; i++) {
+            if (response.rows[i].pass1 == null) { response.rows[i].pass1 = []; } else { response.rows[i].pass1 = response.rows[i].pass1.split(','); }
+            if (response.rows[i].pass2 == null) { response.rows[i].pass2 = []; } else { response.rows[i].pass2 = response.rows[i].pass2.split(','); }
+            if (response.rows[i].pass3 == null) { response.rows[i].pass3 = []; } else { response.rows[i].pass3 = response.rows[i].pass3.split(','); }
+            if (response.rows[i].pass4 == null) { response.rows[i].pass4 = []; } else { response.rows[i].pass4 = response.rows[i].pass4.split(','); }
+            if (response.rows[i].pass5 == null) { response.rows[i].pass5 = []; } else { response.rows[i].pass5 = response.rows[i].pass5.split(','); }
+            if (response.rows[i].pass6 == null) { response.rows[i].pass6 = []; } else { response.rows[i].pass6 = response.rows[i].pass6.split(','); }
+            if (response.rows[i].pass7 == null) { response.rows[i].pass7 = []; } else { response.rows[i].pass7 = response.rows[i].pass7.split(','); }
+            if (response.rows[i].pass8 == null) { response.rows[i].pass8 = []; } else { response.rows[i].pass8 = response.rows[i].pass8.split(','); }
+          }
+          this.temperatureList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      /** 查询部门下拉树结构 */
+      getTreeselect() {
+        treeselect().then(response => {
+          this.deptOptions = response.data;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          id: null,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+          delFlag: null,
+          createBy: null,
+          createTime: null,
+          updateBy: null,
+          updateTime: null,
+        };
+        this.pass1 = [];
+        this.pass2 = [];
+        this.pass3 = [];
+        this.pass4 = [];
+        this.pass5 = [];
+        this.pass6 = [];
+        this.pass7 = [];
+        this.pass8 = [];
+        this.pass9 = [];
+        this.pass10 = [];
+        this.pass11 = [];
+        this.pass12 = [];
+        this.pass13 = [];
+        this.pass14 = [];
+        this.pass15 = [];
+        this.pass16 = [];
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset();
+        this.form.furnanceName = "H112";
+        this.open = true;
+        this.title = "添加裂解炉炉管测温";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+        const id = row.id || this.ids
+        getTemperature(id).then(response => {
+          this.form = response.data;
+          if (response.data.pass1 == null) { this.pass1 = []; } else { this.pass1 = response.data.pass1.split(','); }
+          if (response.data.pass2 == null) { this.pass2 = []; } else { this.pass2 = response.data.pass2.split(','); }
+          if (response.data.pass3 == null) { this.pass3 = []; } else { this.pass3 = response.data.pass3.split(','); }
+          if (response.data.pass4 == null) { this.pass4 = []; } else { this.pass4 = response.data.pass4.split(','); }
+          if (response.data.pass5 == null) { this.pass5 = []; } else { this.pass5 = response.data.pass5.split(','); }
+          if (response.data.pass6 == null) { this.pass6 = []; } else { this.pass6 = response.data.pass6.split(','); }
+          if (response.data.pass7 == null) { this.pass7 = []; } else { this.pass7 = response.data.pass7.split(','); }
+          if (response.data.pass8 == null) { this.pass8 = []; } else { this.pass8 = response.data.pass8.split(','); }
+          this.open = true;
+          this.title = "修改裂解炉炉管测温";
+        });
+      },
+      /** 提交按钮 */
+      submitForm() {
+        this.form.pass1 = this.pass1.join(",");
+        this.form.pass2 = this.pass2.join(",");
+        this.form.pass3 = this.pass3.join(",");
+        this.form.pass4 = this.pass4.join(",");
+        this.form.pass5 = this.pass5.join(",");
+        this.form.pass6 = this.pass6.join(",");
+        this.form.pass7 = this.pass7.join(",");
+        this.form.pass8 = this.pass8.join(",");
+        this.form.pass9 = this.pass9.join(",");
+        this.form.pass10 = this.pass10.join(",");
+        this.form.pass11 = this.pass11.join(",");
+        this.form.pass12 = this.pass12.join(",");
+        this.form.pass13 = this.pass13.join(",");
+        this.form.pass14 = this.pass14.join(",");
+        this.form.pass15 = this.pass15.join(",");
+        this.form.pass16 = this.pass16.join(",");
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            if (this.form.id != null) {
+              updateTemperature(this.form).then(response => {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              });
+            } else {
+              addTemperature(this.form).then(response => {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              });
+            }
+          }
+        });
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        const ids = row.id || this.ids;
+        this.$confirm('是否确认删除?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delTemperature(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        const queryParams = this.queryParams;
+        this.$confirm('是否确认导出所有裂解炉炉管测温数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportTemperature(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+      },
+      /** 导入按钮操作 */
+      handleImport() {
+        this.upload.title = "用户导入";
+        this.upload.open = true;
+      },
+      /** 下载模板操作 */
+      importTemplate() {
+        importTemplate().then(response => {
+          this.download(response.msg);
+        });
+      },
+      // 文件上传中处理
+      handleFileUploadProgress(event, file, fileList) {
+        this.upload.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccess(response, file, fileList) {
+        this.upload.open = false;
+        this.upload.isUploading = false;
+        this.$refs.upload.clearFiles();
+        this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+        this.getList();
+      },
+      // 提交上传文件
+      submitFileForm() {
+        this.$refs.upload.submit();
+      }
+    }
+  };
+</script>

+ 583 - 0
ui/src/views/production/temperature/H113.vue

@@ -0,0 +1,583 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="巡检日期" prop="recordTime">
+        <el-date-picker
+          v-model="queryParams.recordTime"
+          type="month"
+          value-format="yyyy-MM"
+          placeholder="选择巡检日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['production:temperature:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['production:temperature:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['production:temperature:remove']"
+        >删除</el-button>
+      </el-col>
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="info"-->
+          <!--icon="el-icon-upload2"-->
+          <!--size="mini"-->
+          <!--@click="handleImport"-->
+          <!--v-hasPermi="['production:temperature:edit']"-->
+        <!--&gt;导入</el-button>-->
+      <!--</el-col>-->
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="warning"-->
+          <!--icon="el-icon-download"-->
+          <!--size="mini"-->
+          <!--@click="handleExport"-->
+          <!--v-hasPermi="['production:temperature:export']"-->
+        <!--&gt;导出</el-button>-->
+      <!--</el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="temperatureList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="裂解炉名称" align="center" prop="furnanceName" :show-overflow-tooltip="true" width="100"/>
+      <el-table-column label="巡检日期" align="center" prop="recordTime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="PASS1出口" align="center" prop="pass1" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="((index+1).toString()).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass1[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS2出口" align="center" prop="pass2" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass2[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS3出口" align="center" prop="pass3" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass3[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS4出口" align="center" prop="pass4" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass4[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS5出口" align="center" prop="pass5" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass5[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS6出口" align="center" prop="pass6" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass6[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS7出口" align="center" prop="pass7" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass7[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS8出口" align="center" prop="pass8" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass8[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['production:temperature:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['production:temperature:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改裂解炉炉管测温对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="裂解炉名称" prop="furnanceName">
+          <el-input v-model="form.furnanceName" placeholder="请输入裂解炉名称" />
+        </el-form-item>
+        <el-form-item label="巡检日期" prop="recordTime">
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.recordTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择巡检日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="归属部门" prop="deptId">
+          <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
+        </el-form-item>
+      </el-form>
+      <el-descriptions title="PASS1出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass1[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS2出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass2[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS3出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass3[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS4出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass4[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS5出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass5[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS6出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass6[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS7出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass7[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS8出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass8[index]"/>
+        </el-descriptions-item>
+      </el-descriptions>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { listTemperature, getTemperature, delTemperature, addTemperature, updateTemperature, exportTemperature, importTemplate} from "@/api/production/temperature";
+  import { treeselect } from "@/api/system/dept";
+  import { getToken } from "@/utils/auth";
+  import Treeselect from "@riophae/vue-treeselect";
+  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+  export default {
+    name: "Temperature",
+    components: { Treeselect },
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 裂解炉炉管测温表格数据
+        temperatureList: [],
+        // 弹出层标题
+        title: "",
+        // 部门树选项
+        deptOptions: undefined,
+        clientHeight:300,
+        // 是否显示弹出层
+        open: false,
+        // 用户导入参数
+        upload: {
+          // 是否显示弹出层(用户导入)
+          open: false,
+          // 弹出层标题(用户导入)
+          title: "",
+          // 是否禁用上传
+          isUploading: false,
+          // 是否更新已经存在的用户数据
+          updateSupport: 0,
+          // 设置上传的请求头部
+          headers: { Authorization: "Bearer " + getToken() },
+          // 上传的地址
+          url: process.env.VUE_APP_BASE_API + "/production/temperature/importData"
+        },
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 20,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+        },
+        recordTime: null,
+        // 表单参数
+        form: {},
+        pass1:[],
+        pass2:[],
+        pass3:[],
+        pass4:[],
+        pass5:[],
+        pass6:[],
+        pass7:[],
+        pass8:[],
+        pass9:[],
+        pass10:[],
+        pass11:[],
+        pass12:[],
+        pass13:[],
+        pass14:[],
+        pass15:[],
+        pass16:[],
+        // 表单校验
+        rules: {
+          id: [
+            { required: true, message: "主键id不能为空", trigger: "blur" }
+          ],
+        }
+      };
+    },
+    watch: {
+      // 根据名称筛选部门树
+      deptName(val) {
+        this.$refs.tree.filter(val);
+      }
+    },
+    created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+        this.clientHeight = document.body.clientHeight -250
+      })
+      this.getList();
+      this.getTreeselect();
+    },
+    methods: {
+      /** 查询裂解炉炉管测温列表 */
+      getList() {
+        this.loading = true;
+        this.queryParams.furnanceName = "H113";
+        console.log(this.queryParams)
+        listTemperature(this.queryParams).then(response => {
+          for (let i = 0; i< response.rows.length; i++) {
+            if (response.rows[i].pass1 == null) { response.rows[i].pass1 = []; } else { response.rows[i].pass1 = response.rows[i].pass1.split(','); }
+            if (response.rows[i].pass2 == null) { response.rows[i].pass2 = []; } else { response.rows[i].pass2 = response.rows[i].pass2.split(','); }
+            if (response.rows[i].pass3 == null) { response.rows[i].pass3 = []; } else { response.rows[i].pass3 = response.rows[i].pass3.split(','); }
+            if (response.rows[i].pass4 == null) { response.rows[i].pass4 = []; } else { response.rows[i].pass4 = response.rows[i].pass4.split(','); }
+            if (response.rows[i].pass5 == null) { response.rows[i].pass5 = []; } else { response.rows[i].pass5 = response.rows[i].pass5.split(','); }
+            if (response.rows[i].pass6 == null) { response.rows[i].pass6 = []; } else { response.rows[i].pass6 = response.rows[i].pass6.split(','); }
+            if (response.rows[i].pass7 == null) { response.rows[i].pass7 = []; } else { response.rows[i].pass7 = response.rows[i].pass7.split(','); }
+            if (response.rows[i].pass8 == null) { response.rows[i].pass8 = []; } else { response.rows[i].pass8 = response.rows[i].pass8.split(','); }
+          }
+          this.temperatureList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      /** 查询部门下拉树结构 */
+      getTreeselect() {
+        treeselect().then(response => {
+          this.deptOptions = response.data;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          id: null,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+          delFlag: null,
+          createBy: null,
+          createTime: null,
+          updateBy: null,
+          updateTime: null,
+        };
+        this.pass1 = [];
+        this.pass2 = [];
+        this.pass3 = [];
+        this.pass4 = [];
+        this.pass5 = [];
+        this.pass6 = [];
+        this.pass7 = [];
+        this.pass8 = [];
+        this.pass9 = [];
+        this.pass10 = [];
+        this.pass11 = [];
+        this.pass12 = [];
+        this.pass13 = [];
+        this.pass14 = [];
+        this.pass15 = [];
+        this.pass16 = [];
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset();
+        this.form.furnanceName = "H113";
+        this.open = true;
+        this.title = "添加裂解炉炉管测温";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+        const id = row.id || this.ids
+        getTemperature(id).then(response => {
+          this.form = response.data;
+          if (response.data.pass1 == null) { this.pass1 = []; } else { this.pass1 = response.data.pass1.split(','); }
+          if (response.data.pass2 == null) { this.pass2 = []; } else { this.pass2 = response.data.pass2.split(','); }
+          if (response.data.pass3 == null) { this.pass3 = []; } else { this.pass3 = response.data.pass3.split(','); }
+          if (response.data.pass4 == null) { this.pass4 = []; } else { this.pass4 = response.data.pass4.split(','); }
+          if (response.data.pass5 == null) { this.pass5 = []; } else { this.pass5 = response.data.pass5.split(','); }
+          if (response.data.pass6 == null) { this.pass6 = []; } else { this.pass6 = response.data.pass6.split(','); }
+          if (response.data.pass7 == null) { this.pass7 = []; } else { this.pass7 = response.data.pass7.split(','); }
+          if (response.data.pass8 == null) { this.pass8 = []; } else { this.pass8 = response.data.pass8.split(','); }
+          this.open = true;
+          this.title = "修改裂解炉炉管测温";
+        });
+      },
+      /** 提交按钮 */
+      submitForm() {
+        this.form.pass1 = this.pass1.join(",");
+        this.form.pass2 = this.pass2.join(",");
+        this.form.pass3 = this.pass3.join(",");
+        this.form.pass4 = this.pass4.join(",");
+        this.form.pass5 = this.pass5.join(",");
+        this.form.pass6 = this.pass6.join(",");
+        this.form.pass7 = this.pass7.join(",");
+        this.form.pass8 = this.pass8.join(",");
+        this.form.pass9 = this.pass9.join(",");
+        this.form.pass10 = this.pass10.join(",");
+        this.form.pass11 = this.pass11.join(",");
+        this.form.pass12 = this.pass12.join(",");
+        this.form.pass13 = this.pass13.join(",");
+        this.form.pass14 = this.pass14.join(",");
+        this.form.pass15 = this.pass15.join(",");
+        this.form.pass16 = this.pass16.join(",");
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            if (this.form.id != null) {
+              updateTemperature(this.form).then(response => {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              });
+            } else {
+              addTemperature(this.form).then(response => {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              });
+            }
+          }
+        });
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        const ids = row.id || this.ids;
+        this.$confirm('是否确认删除?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delTemperature(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        const queryParams = this.queryParams;
+        this.$confirm('是否确认导出所有裂解炉炉管测温数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportTemperature(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+      },
+      /** 导入按钮操作 */
+      handleImport() {
+        this.upload.title = "用户导入";
+        this.upload.open = true;
+      },
+      /** 下载模板操作 */
+      importTemplate() {
+        importTemplate().then(response => {
+          this.download(response.msg);
+        });
+      },
+      // 文件上传中处理
+      handleFileUploadProgress(event, file, fileList) {
+        this.upload.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccess(response, file, fileList) {
+        this.upload.open = false;
+        this.upload.isUploading = false;
+        this.$refs.upload.clearFiles();
+        this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+        this.getList();
+      },
+      // 提交上传文件
+      submitFileForm() {
+        this.$refs.upload.submit();
+      }
+    }
+  };
+</script>

+ 583 - 0
ui/src/views/production/temperature/H114.vue

@@ -0,0 +1,583 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="巡检日期" prop="recordTime">
+        <el-date-picker
+          v-model="queryParams.recordTime"
+          type="month"
+          value-format="yyyy-MM"
+          placeholder="选择巡检日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['production:temperature:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['production:temperature:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['production:temperature:remove']"
+        >删除</el-button>
+      </el-col>
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="info"-->
+          <!--icon="el-icon-upload2"-->
+          <!--size="mini"-->
+          <!--@click="handleImport"-->
+          <!--v-hasPermi="['production:temperature:edit']"-->
+        <!--&gt;导入</el-button>-->
+      <!--</el-col>-->
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="warning"-->
+          <!--icon="el-icon-download"-->
+          <!--size="mini"-->
+          <!--@click="handleExport"-->
+          <!--v-hasPermi="['production:temperature:export']"-->
+        <!--&gt;导出</el-button>-->
+      <!--</el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="temperatureList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="裂解炉名称" align="center" prop="furnanceName" :show-overflow-tooltip="true" width="100"/>
+      <el-table-column label="巡检日期" align="center" prop="recordTime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="PASS1出口" align="center" prop="pass1" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="((index+1).toString()).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass1[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS2出口" align="center" prop="pass2" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass2[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS3出口" align="center" prop="pass3" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass3[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS4出口" align="center" prop="pass4" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass4[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS5出口" align="center" prop="pass5" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass5[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS6出口" align="center" prop="pass6" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass6[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS7出口" align="center" prop="pass7" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass7[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS8出口" align="center" prop="pass8" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass8[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['production:temperature:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['production:temperature:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改裂解炉炉管测温对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="裂解炉名称" prop="furnanceName">
+          <el-input v-model="form.furnanceName" placeholder="请输入裂解炉名称" />
+        </el-form-item>
+        <el-form-item label="巡检日期" prop="recordTime">
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.recordTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择巡检日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="归属部门" prop="deptId">
+          <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
+        </el-form-item>
+      </el-form>
+      <el-descriptions title="PASS1出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass1[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS2出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass2[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS3出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass3[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS4出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass4[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS5出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass5[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS6出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass6[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS7出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass7[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS8出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass8[index]"/>
+        </el-descriptions-item>
+      </el-descriptions>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { listTemperature, getTemperature, delTemperature, addTemperature, updateTemperature, exportTemperature, importTemplate} from "@/api/production/temperature";
+  import { treeselect } from "@/api/system/dept";
+  import { getToken } from "@/utils/auth";
+  import Treeselect from "@riophae/vue-treeselect";
+  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+  export default {
+    name: "Temperature",
+    components: { Treeselect },
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 裂解炉炉管测温表格数据
+        temperatureList: [],
+        // 弹出层标题
+        title: "",
+        // 部门树选项
+        deptOptions: undefined,
+        clientHeight:300,
+        // 是否显示弹出层
+        open: false,
+        // 用户导入参数
+        upload: {
+          // 是否显示弹出层(用户导入)
+          open: false,
+          // 弹出层标题(用户导入)
+          title: "",
+          // 是否禁用上传
+          isUploading: false,
+          // 是否更新已经存在的用户数据
+          updateSupport: 0,
+          // 设置上传的请求头部
+          headers: { Authorization: "Bearer " + getToken() },
+          // 上传的地址
+          url: process.env.VUE_APP_BASE_API + "/production/temperature/importData"
+        },
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 20,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+        },
+        recordTime: null,
+        // 表单参数
+        form: {},
+        pass1:[],
+        pass2:[],
+        pass3:[],
+        pass4:[],
+        pass5:[],
+        pass6:[],
+        pass7:[],
+        pass8:[],
+        pass9:[],
+        pass10:[],
+        pass11:[],
+        pass12:[],
+        pass13:[],
+        pass14:[],
+        pass15:[],
+        pass16:[],
+        // 表单校验
+        rules: {
+          id: [
+            { required: true, message: "主键id不能为空", trigger: "blur" }
+          ],
+        }
+      };
+    },
+    watch: {
+      // 根据名称筛选部门树
+      deptName(val) {
+        this.$refs.tree.filter(val);
+      }
+    },
+    created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+        this.clientHeight = document.body.clientHeight -250
+      })
+      this.getList();
+      this.getTreeselect();
+    },
+    methods: {
+      /** 查询裂解炉炉管测温列表 */
+      getList() {
+        this.loading = true;
+        this.queryParams.furnanceName = "H114";
+        console.log(this.queryParams)
+        listTemperature(this.queryParams).then(response => {
+          for (let i = 0; i< response.rows.length; i++) {
+            if (response.rows[i].pass1 == null) { response.rows[i].pass1 = []; } else { response.rows[i].pass1 = response.rows[i].pass1.split(','); }
+            if (response.rows[i].pass2 == null) { response.rows[i].pass2 = []; } else { response.rows[i].pass2 = response.rows[i].pass2.split(','); }
+            if (response.rows[i].pass3 == null) { response.rows[i].pass3 = []; } else { response.rows[i].pass3 = response.rows[i].pass3.split(','); }
+            if (response.rows[i].pass4 == null) { response.rows[i].pass4 = []; } else { response.rows[i].pass4 = response.rows[i].pass4.split(','); }
+            if (response.rows[i].pass5 == null) { response.rows[i].pass5 = []; } else { response.rows[i].pass5 = response.rows[i].pass5.split(','); }
+            if (response.rows[i].pass6 == null) { response.rows[i].pass6 = []; } else { response.rows[i].pass6 = response.rows[i].pass6.split(','); }
+            if (response.rows[i].pass7 == null) { response.rows[i].pass7 = []; } else { response.rows[i].pass7 = response.rows[i].pass7.split(','); }
+            if (response.rows[i].pass8 == null) { response.rows[i].pass8 = []; } else { response.rows[i].pass8 = response.rows[i].pass8.split(','); }
+          }
+          this.temperatureList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      /** 查询部门下拉树结构 */
+      getTreeselect() {
+        treeselect().then(response => {
+          this.deptOptions = response.data;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          id: null,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+          delFlag: null,
+          createBy: null,
+          createTime: null,
+          updateBy: null,
+          updateTime: null,
+        };
+        this.pass1 = [];
+        this.pass2 = [];
+        this.pass3 = [];
+        this.pass4 = [];
+        this.pass5 = [];
+        this.pass6 = [];
+        this.pass7 = [];
+        this.pass8 = [];
+        this.pass9 = [];
+        this.pass10 = [];
+        this.pass11 = [];
+        this.pass12 = [];
+        this.pass13 = [];
+        this.pass14 = [];
+        this.pass15 = [];
+        this.pass16 = [];
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset();
+        this.form.furnanceName = "H114";
+        this.open = true;
+        this.title = "添加裂解炉炉管测温";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+        const id = row.id || this.ids
+        getTemperature(id).then(response => {
+          this.form = response.data;
+          if (response.data.pass1 == null) { this.pass1 = []; } else { this.pass1 = response.data.pass1.split(','); }
+          if (response.data.pass2 == null) { this.pass2 = []; } else { this.pass2 = response.data.pass2.split(','); }
+          if (response.data.pass3 == null) { this.pass3 = []; } else { this.pass3 = response.data.pass3.split(','); }
+          if (response.data.pass4 == null) { this.pass4 = []; } else { this.pass4 = response.data.pass4.split(','); }
+          if (response.data.pass5 == null) { this.pass5 = []; } else { this.pass5 = response.data.pass5.split(','); }
+          if (response.data.pass6 == null) { this.pass6 = []; } else { this.pass6 = response.data.pass6.split(','); }
+          if (response.data.pass7 == null) { this.pass7 = []; } else { this.pass7 = response.data.pass7.split(','); }
+          if (response.data.pass8 == null) { this.pass8 = []; } else { this.pass8 = response.data.pass8.split(','); }
+          this.open = true;
+          this.title = "修改裂解炉炉管测温";
+        });
+      },
+      /** 提交按钮 */
+      submitForm() {
+        this.form.pass1 = this.pass1.join(",");
+        this.form.pass2 = this.pass2.join(",");
+        this.form.pass3 = this.pass3.join(",");
+        this.form.pass4 = this.pass4.join(",");
+        this.form.pass5 = this.pass5.join(",");
+        this.form.pass6 = this.pass6.join(",");
+        this.form.pass7 = this.pass7.join(",");
+        this.form.pass8 = this.pass8.join(",");
+        this.form.pass9 = this.pass9.join(",");
+        this.form.pass10 = this.pass10.join(",");
+        this.form.pass11 = this.pass11.join(",");
+        this.form.pass12 = this.pass12.join(",");
+        this.form.pass13 = this.pass13.join(",");
+        this.form.pass14 = this.pass14.join(",");
+        this.form.pass15 = this.pass15.join(",");
+        this.form.pass16 = this.pass16.join(",");
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            if (this.form.id != null) {
+              updateTemperature(this.form).then(response => {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              });
+            } else {
+              addTemperature(this.form).then(response => {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              });
+            }
+          }
+        });
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        const ids = row.id || this.ids;
+        this.$confirm('是否确认删除?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delTemperature(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        const queryParams = this.queryParams;
+        this.$confirm('是否确认导出所有裂解炉炉管测温数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportTemperature(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+      },
+      /** 导入按钮操作 */
+      handleImport() {
+        this.upload.title = "用户导入";
+        this.upload.open = true;
+      },
+      /** 下载模板操作 */
+      importTemplate() {
+        importTemplate().then(response => {
+          this.download(response.msg);
+        });
+      },
+      // 文件上传中处理
+      handleFileUploadProgress(event, file, fileList) {
+        this.upload.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccess(response, file, fileList) {
+        this.upload.open = false;
+        this.upload.isUploading = false;
+        this.$refs.upload.clearFiles();
+        this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+        this.getList();
+      },
+      // 提交上传文件
+      submitFileForm() {
+        this.$refs.upload.submit();
+      }
+    }
+  };
+</script>

+ 583 - 0
ui/src/views/production/temperature/H115.vue

@@ -0,0 +1,583 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="巡检日期" prop="recordTime">
+        <el-date-picker
+          v-model="queryParams.recordTime"
+          type="month"
+          value-format="yyyy-MM"
+          placeholder="选择巡检日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['production:temperature:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['production:temperature:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['production:temperature:remove']"
+        >删除</el-button>
+      </el-col>
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="info"-->
+          <!--icon="el-icon-upload2"-->
+          <!--size="mini"-->
+          <!--@click="handleImport"-->
+          <!--v-hasPermi="['production:temperature:edit']"-->
+        <!--&gt;导入</el-button>-->
+      <!--</el-col>-->
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="warning"-->
+          <!--icon="el-icon-download"-->
+          <!--size="mini"-->
+          <!--@click="handleExport"-->
+          <!--v-hasPermi="['production:temperature:export']"-->
+        <!--&gt;导出</el-button>-->
+      <!--</el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="temperatureList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="裂解炉名称" align="center" prop="furnanceName" :show-overflow-tooltip="true" width="100"/>
+      <el-table-column label="巡检日期" align="center" prop="recordTime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="PASS1出口" align="center" prop="pass1" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="((index+1).toString()).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass1[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS2出口" align="center" prop="pass2" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass2[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS3出口" align="center" prop="pass3" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass3[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS4出口" align="center" prop="pass4" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass4[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS5出口" align="center" prop="pass5" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass5[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS6出口" align="center" prop="pass6" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass6[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS7出口" align="center" prop="pass7" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass7[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS8出口" align="center" prop="pass8" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass8[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['production:temperature:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['production:temperature:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改裂解炉炉管测温对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="裂解炉名称" prop="furnanceName">
+          <el-input v-model="form.furnanceName" placeholder="请输入裂解炉名称" />
+        </el-form-item>
+        <el-form-item label="巡检日期" prop="recordTime">
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.recordTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择巡检日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="归属部门" prop="deptId">
+          <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
+        </el-form-item>
+      </el-form>
+      <el-descriptions title="PASS1出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass1[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS2出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass2[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS3出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass3[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS4出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass4[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS5出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass5[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS6出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass6[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS7出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass7[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS8出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass8[index]"/>
+        </el-descriptions-item>
+      </el-descriptions>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { listTemperature, getTemperature, delTemperature, addTemperature, updateTemperature, exportTemperature, importTemplate} from "@/api/production/temperature";
+  import { treeselect } from "@/api/system/dept";
+  import { getToken } from "@/utils/auth";
+  import Treeselect from "@riophae/vue-treeselect";
+  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+  export default {
+    name: "Temperature",
+    components: { Treeselect },
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 裂解炉炉管测温表格数据
+        temperatureList: [],
+        // 弹出层标题
+        title: "",
+        // 部门树选项
+        deptOptions: undefined,
+        clientHeight:300,
+        // 是否显示弹出层
+        open: false,
+        // 用户导入参数
+        upload: {
+          // 是否显示弹出层(用户导入)
+          open: false,
+          // 弹出层标题(用户导入)
+          title: "",
+          // 是否禁用上传
+          isUploading: false,
+          // 是否更新已经存在的用户数据
+          updateSupport: 0,
+          // 设置上传的请求头部
+          headers: { Authorization: "Bearer " + getToken() },
+          // 上传的地址
+          url: process.env.VUE_APP_BASE_API + "/production/temperature/importData"
+        },
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 20,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+        },
+        recordTime: null,
+        // 表单参数
+        form: {},
+        pass1:[],
+        pass2:[],
+        pass3:[],
+        pass4:[],
+        pass5:[],
+        pass6:[],
+        pass7:[],
+        pass8:[],
+        pass9:[],
+        pass10:[],
+        pass11:[],
+        pass12:[],
+        pass13:[],
+        pass14:[],
+        pass15:[],
+        pass16:[],
+        // 表单校验
+        rules: {
+          id: [
+            { required: true, message: "主键id不能为空", trigger: "blur" }
+          ],
+        }
+      };
+    },
+    watch: {
+      // 根据名称筛选部门树
+      deptName(val) {
+        this.$refs.tree.filter(val);
+      }
+    },
+    created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+        this.clientHeight = document.body.clientHeight -250
+      })
+      this.getList();
+      this.getTreeselect();
+    },
+    methods: {
+      /** 查询裂解炉炉管测温列表 */
+      getList() {
+        this.loading = true;
+        this.queryParams.furnanceName = "H115";
+        console.log(this.queryParams)
+        listTemperature(this.queryParams).then(response => {
+          for (let i = 0; i< response.rows.length; i++) {
+            if (response.rows[i].pass1 == null) { response.rows[i].pass1 = []; } else { response.rows[i].pass1 = response.rows[i].pass1.split(','); }
+            if (response.rows[i].pass2 == null) { response.rows[i].pass2 = []; } else { response.rows[i].pass2 = response.rows[i].pass2.split(','); }
+            if (response.rows[i].pass3 == null) { response.rows[i].pass3 = []; } else { response.rows[i].pass3 = response.rows[i].pass3.split(','); }
+            if (response.rows[i].pass4 == null) { response.rows[i].pass4 = []; } else { response.rows[i].pass4 = response.rows[i].pass4.split(','); }
+            if (response.rows[i].pass5 == null) { response.rows[i].pass5 = []; } else { response.rows[i].pass5 = response.rows[i].pass5.split(','); }
+            if (response.rows[i].pass6 == null) { response.rows[i].pass6 = []; } else { response.rows[i].pass6 = response.rows[i].pass6.split(','); }
+            if (response.rows[i].pass7 == null) { response.rows[i].pass7 = []; } else { response.rows[i].pass7 = response.rows[i].pass7.split(','); }
+            if (response.rows[i].pass8 == null) { response.rows[i].pass8 = []; } else { response.rows[i].pass8 = response.rows[i].pass8.split(','); }
+          }
+          this.temperatureList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      /** 查询部门下拉树结构 */
+      getTreeselect() {
+        treeselect().then(response => {
+          this.deptOptions = response.data;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          id: null,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+          delFlag: null,
+          createBy: null,
+          createTime: null,
+          updateBy: null,
+          updateTime: null,
+        };
+        this.pass1 = [];
+        this.pass2 = [];
+        this.pass3 = [];
+        this.pass4 = [];
+        this.pass5 = [];
+        this.pass6 = [];
+        this.pass7 = [];
+        this.pass8 = [];
+        this.pass9 = [];
+        this.pass10 = [];
+        this.pass11 = [];
+        this.pass12 = [];
+        this.pass13 = [];
+        this.pass14 = [];
+        this.pass15 = [];
+        this.pass16 = [];
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset();
+        this.form.furnanceName = "H115";
+        this.open = true;
+        this.title = "添加裂解炉炉管测温";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+        const id = row.id || this.ids
+        getTemperature(id).then(response => {
+          this.form = response.data;
+          if (response.data.pass1 == null) { this.pass1 = []; } else { this.pass1 = response.data.pass1.split(','); }
+          if (response.data.pass2 == null) { this.pass2 = []; } else { this.pass2 = response.data.pass2.split(','); }
+          if (response.data.pass3 == null) { this.pass3 = []; } else { this.pass3 = response.data.pass3.split(','); }
+          if (response.data.pass4 == null) { this.pass4 = []; } else { this.pass4 = response.data.pass4.split(','); }
+          if (response.data.pass5 == null) { this.pass5 = []; } else { this.pass5 = response.data.pass5.split(','); }
+          if (response.data.pass6 == null) { this.pass6 = []; } else { this.pass6 = response.data.pass6.split(','); }
+          if (response.data.pass7 == null) { this.pass7 = []; } else { this.pass7 = response.data.pass7.split(','); }
+          if (response.data.pass8 == null) { this.pass8 = []; } else { this.pass8 = response.data.pass8.split(','); }
+          this.open = true;
+          this.title = "修改裂解炉炉管测温";
+        });
+      },
+      /** 提交按钮 */
+      submitForm() {
+        this.form.pass1 = this.pass1.join(",");
+        this.form.pass2 = this.pass2.join(",");
+        this.form.pass3 = this.pass3.join(",");
+        this.form.pass4 = this.pass4.join(",");
+        this.form.pass5 = this.pass5.join(",");
+        this.form.pass6 = this.pass6.join(",");
+        this.form.pass7 = this.pass7.join(",");
+        this.form.pass8 = this.pass8.join(",");
+        this.form.pass9 = this.pass9.join(",");
+        this.form.pass10 = this.pass10.join(",");
+        this.form.pass11 = this.pass11.join(",");
+        this.form.pass12 = this.pass12.join(",");
+        this.form.pass13 = this.pass13.join(",");
+        this.form.pass14 = this.pass14.join(",");
+        this.form.pass15 = this.pass15.join(",");
+        this.form.pass16 = this.pass16.join(",");
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            if (this.form.id != null) {
+              updateTemperature(this.form).then(response => {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              });
+            } else {
+              addTemperature(this.form).then(response => {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              });
+            }
+          }
+        });
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        const ids = row.id || this.ids;
+        this.$confirm('是否确认删除?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delTemperature(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        const queryParams = this.queryParams;
+        this.$confirm('是否确认导出所有裂解炉炉管测温数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportTemperature(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+      },
+      /** 导入按钮操作 */
+      handleImport() {
+        this.upload.title = "用户导入";
+        this.upload.open = true;
+      },
+      /** 下载模板操作 */
+      importTemplate() {
+        importTemplate().then(response => {
+          this.download(response.msg);
+        });
+      },
+      // 文件上传中处理
+      handleFileUploadProgress(event, file, fileList) {
+        this.upload.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccess(response, file, fileList) {
+        this.upload.open = false;
+        this.upload.isUploading = false;
+        this.$refs.upload.clearFiles();
+        this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+        this.getList();
+      },
+      // 提交上传文件
+      submitFileForm() {
+        this.$refs.upload.submit();
+      }
+    }
+  };
+</script>

+ 583 - 0
ui/src/views/production/temperature/H116.vue

@@ -0,0 +1,583 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="巡检日期" prop="recordTime">
+        <el-date-picker
+          v-model="queryParams.recordTime"
+          type="month"
+          value-format="yyyy-MM"
+          placeholder="选择巡检日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['production:temperature:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['production:temperature:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['production:temperature:remove']"
+        >删除</el-button>
+      </el-col>
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="info"-->
+          <!--icon="el-icon-upload2"-->
+          <!--size="mini"-->
+          <!--@click="handleImport"-->
+          <!--v-hasPermi="['production:temperature:edit']"-->
+        <!--&gt;导入</el-button>-->
+      <!--</el-col>-->
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="warning"-->
+          <!--icon="el-icon-download"-->
+          <!--size="mini"-->
+          <!--@click="handleExport"-->
+          <!--v-hasPermi="['production:temperature:export']"-->
+        <!--&gt;导出</el-button>-->
+      <!--</el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="temperatureList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="裂解炉名称" align="center" prop="furnanceName" :show-overflow-tooltip="true" width="100"/>
+      <el-table-column label="巡检日期" align="center" prop="recordTime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="PASS1出口" align="center" prop="pass1" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="((index+1).toString()).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass1[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS2出口" align="center" prop="pass2" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass2[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS3出口" align="center" prop="pass3" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass3[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS4出口" align="center" prop="pass4" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass4[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS5出口" align="center" prop="pass5" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass5[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS6出口" align="center" prop="pass6" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass6[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS7出口" align="center" prop="pass7" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass7[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS8出口" align="center" prop="pass8" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass8[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['production:temperature:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['production:temperature:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改裂解炉炉管测温对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="裂解炉名称" prop="furnanceName">
+          <el-input v-model="form.furnanceName" placeholder="请输入裂解炉名称" />
+        </el-form-item>
+        <el-form-item label="巡检日期" prop="recordTime">
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.recordTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择巡检日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="归属部门" prop="deptId">
+          <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
+        </el-form-item>
+      </el-form>
+      <el-descriptions title="PASS1出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass1[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS2出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass2[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS3出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass3[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS4出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass4[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS5出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass5[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS6出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass6[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS7出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass7[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS8出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass8[index]"/>
+        </el-descriptions-item>
+      </el-descriptions>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { listTemperature, getTemperature, delTemperature, addTemperature, updateTemperature, exportTemperature, importTemplate} from "@/api/production/temperature";
+  import { treeselect } from "@/api/system/dept";
+  import { getToken } from "@/utils/auth";
+  import Treeselect from "@riophae/vue-treeselect";
+  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+  export default {
+    name: "Temperature",
+    components: { Treeselect },
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 裂解炉炉管测温表格数据
+        temperatureList: [],
+        // 弹出层标题
+        title: "",
+        // 部门树选项
+        deptOptions: undefined,
+        clientHeight:300,
+        // 是否显示弹出层
+        open: false,
+        // 用户导入参数
+        upload: {
+          // 是否显示弹出层(用户导入)
+          open: false,
+          // 弹出层标题(用户导入)
+          title: "",
+          // 是否禁用上传
+          isUploading: false,
+          // 是否更新已经存在的用户数据
+          updateSupport: 0,
+          // 设置上传的请求头部
+          headers: { Authorization: "Bearer " + getToken() },
+          // 上传的地址
+          url: process.env.VUE_APP_BASE_API + "/production/temperature/importData"
+        },
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 20,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+        },
+        recordTime: null,
+        // 表单参数
+        form: {},
+        pass1:[],
+        pass2:[],
+        pass3:[],
+        pass4:[],
+        pass5:[],
+        pass6:[],
+        pass7:[],
+        pass8:[],
+        pass9:[],
+        pass10:[],
+        pass11:[],
+        pass12:[],
+        pass13:[],
+        pass14:[],
+        pass15:[],
+        pass16:[],
+        // 表单校验
+        rules: {
+          id: [
+            { required: true, message: "主键id不能为空", trigger: "blur" }
+          ],
+        }
+      };
+    },
+    watch: {
+      // 根据名称筛选部门树
+      deptName(val) {
+        this.$refs.tree.filter(val);
+      }
+    },
+    created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+        this.clientHeight = document.body.clientHeight -250
+      })
+      this.getList();
+      this.getTreeselect();
+    },
+    methods: {
+      /** 查询裂解炉炉管测温列表 */
+      getList() {
+        this.loading = true;
+        this.queryParams.furnanceName = "H116";
+        console.log(this.queryParams)
+        listTemperature(this.queryParams).then(response => {
+          for (let i = 0; i< response.rows.length; i++) {
+            if (response.rows[i].pass1 == null) { response.rows[i].pass1 = []; } else { response.rows[i].pass1 = response.rows[i].pass1.split(','); }
+            if (response.rows[i].pass2 == null) { response.rows[i].pass2 = []; } else { response.rows[i].pass2 = response.rows[i].pass2.split(','); }
+            if (response.rows[i].pass3 == null) { response.rows[i].pass3 = []; } else { response.rows[i].pass3 = response.rows[i].pass3.split(','); }
+            if (response.rows[i].pass4 == null) { response.rows[i].pass4 = []; } else { response.rows[i].pass4 = response.rows[i].pass4.split(','); }
+            if (response.rows[i].pass5 == null) { response.rows[i].pass5 = []; } else { response.rows[i].pass5 = response.rows[i].pass5.split(','); }
+            if (response.rows[i].pass6 == null) { response.rows[i].pass6 = []; } else { response.rows[i].pass6 = response.rows[i].pass6.split(','); }
+            if (response.rows[i].pass7 == null) { response.rows[i].pass7 = []; } else { response.rows[i].pass7 = response.rows[i].pass7.split(','); }
+            if (response.rows[i].pass8 == null) { response.rows[i].pass8 = []; } else { response.rows[i].pass8 = response.rows[i].pass8.split(','); }
+          }
+          this.temperatureList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      /** 查询部门下拉树结构 */
+      getTreeselect() {
+        treeselect().then(response => {
+          this.deptOptions = response.data;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          id: null,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+          delFlag: null,
+          createBy: null,
+          createTime: null,
+          updateBy: null,
+          updateTime: null,
+        };
+        this.pass1 = [];
+        this.pass2 = [];
+        this.pass3 = [];
+        this.pass4 = [];
+        this.pass5 = [];
+        this.pass6 = [];
+        this.pass7 = [];
+        this.pass8 = [];
+        this.pass9 = [];
+        this.pass10 = [];
+        this.pass11 = [];
+        this.pass12 = [];
+        this.pass13 = [];
+        this.pass14 = [];
+        this.pass15 = [];
+        this.pass16 = [];
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset();
+        this.form.furnanceName = "H116";
+        this.open = true;
+        this.title = "添加裂解炉炉管测温";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+        const id = row.id || this.ids
+        getTemperature(id).then(response => {
+          this.form = response.data;
+          if (response.data.pass1 == null) { this.pass1 = []; } else { this.pass1 = response.data.pass1.split(','); }
+          if (response.data.pass2 == null) { this.pass2 = []; } else { this.pass2 = response.data.pass2.split(','); }
+          if (response.data.pass3 == null) { this.pass3 = []; } else { this.pass3 = response.data.pass3.split(','); }
+          if (response.data.pass4 == null) { this.pass4 = []; } else { this.pass4 = response.data.pass4.split(','); }
+          if (response.data.pass5 == null) { this.pass5 = []; } else { this.pass5 = response.data.pass5.split(','); }
+          if (response.data.pass6 == null) { this.pass6 = []; } else { this.pass6 = response.data.pass6.split(','); }
+          if (response.data.pass7 == null) { this.pass7 = []; } else { this.pass7 = response.data.pass7.split(','); }
+          if (response.data.pass8 == null) { this.pass8 = []; } else { this.pass8 = response.data.pass8.split(','); }
+          this.open = true;
+          this.title = "修改裂解炉炉管测温";
+        });
+      },
+      /** 提交按钮 */
+      submitForm() {
+        this.form.pass1 = this.pass1.join(",");
+        this.form.pass2 = this.pass2.join(",");
+        this.form.pass3 = this.pass3.join(",");
+        this.form.pass4 = this.pass4.join(",");
+        this.form.pass5 = this.pass5.join(",");
+        this.form.pass6 = this.pass6.join(",");
+        this.form.pass7 = this.pass7.join(",");
+        this.form.pass8 = this.pass8.join(",");
+        this.form.pass9 = this.pass9.join(",");
+        this.form.pass10 = this.pass10.join(",");
+        this.form.pass11 = this.pass11.join(",");
+        this.form.pass12 = this.pass12.join(",");
+        this.form.pass13 = this.pass13.join(",");
+        this.form.pass14 = this.pass14.join(",");
+        this.form.pass15 = this.pass15.join(",");
+        this.form.pass16 = this.pass16.join(",");
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            if (this.form.id != null) {
+              updateTemperature(this.form).then(response => {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              });
+            } else {
+              addTemperature(this.form).then(response => {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              });
+            }
+          }
+        });
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        const ids = row.id || this.ids;
+        this.$confirm('是否确认删除?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delTemperature(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        const queryParams = this.queryParams;
+        this.$confirm('是否确认导出所有裂解炉炉管测温数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportTemperature(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+      },
+      /** 导入按钮操作 */
+      handleImport() {
+        this.upload.title = "用户导入";
+        this.upload.open = true;
+      },
+      /** 下载模板操作 */
+      importTemplate() {
+        importTemplate().then(response => {
+          this.download(response.msg);
+        });
+      },
+      // 文件上传中处理
+      handleFileUploadProgress(event, file, fileList) {
+        this.upload.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccess(response, file, fileList) {
+        this.upload.open = false;
+        this.upload.isUploading = false;
+        this.$refs.upload.clearFiles();
+        this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+        this.getList();
+      },
+      // 提交上传文件
+      submitFileForm() {
+        this.$refs.upload.submit();
+      }
+    }
+  };
+</script>

+ 583 - 0
ui/src/views/production/temperature/H117.vue

@@ -0,0 +1,583 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="巡检日期" prop="recordTime">
+        <el-date-picker
+          v-model="queryParams.recordTime"
+          type="month"
+          value-format="yyyy-MM"
+          placeholder="选择巡检日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['production:temperature:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['production:temperature:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['production:temperature:remove']"
+        >删除</el-button>
+      </el-col>
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="info"-->
+          <!--icon="el-icon-upload2"-->
+          <!--size="mini"-->
+          <!--@click="handleImport"-->
+          <!--v-hasPermi="['production:temperature:edit']"-->
+        <!--&gt;导入</el-button>-->
+      <!--</el-col>-->
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="warning"-->
+          <!--icon="el-icon-download"-->
+          <!--size="mini"-->
+          <!--@click="handleExport"-->
+          <!--v-hasPermi="['production:temperature:export']"-->
+        <!--&gt;导出</el-button>-->
+      <!--</el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="temperatureList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="裂解炉名称" align="center" prop="furnanceName" :show-overflow-tooltip="true" width="100"/>
+      <el-table-column label="巡检日期" align="center" prop="recordTime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="PASS1出口" align="center" prop="pass1" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="((index+1).toString()).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass1[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS2出口" align="center" prop="pass2" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass2[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS3出口" align="center" prop="pass3" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass3[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS4出口" align="center" prop="pass4" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass4[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS5出口" align="center" prop="pass5" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass5[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS6出口" align="center" prop="pass6" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass6[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS7出口" align="center" prop="pass7" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass7[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS8出口" align="center" prop="pass8" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass8[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['production:temperature:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['production:temperature:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改裂解炉炉管测温对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="裂解炉名称" prop="furnanceName">
+          <el-input v-model="form.furnanceName" placeholder="请输入裂解炉名称" />
+        </el-form-item>
+        <el-form-item label="巡检日期" prop="recordTime">
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.recordTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择巡检日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="归属部门" prop="deptId">
+          <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
+        </el-form-item>
+      </el-form>
+      <el-descriptions title="PASS1出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass1[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS2出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass2[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS3出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass3[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS4出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass4[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS5出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass5[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS6出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass6[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS7出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass7[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS8出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass8[index]"/>
+        </el-descriptions-item>
+      </el-descriptions>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { listTemperature, getTemperature, delTemperature, addTemperature, updateTemperature, exportTemperature, importTemplate} from "@/api/production/temperature";
+  import { treeselect } from "@/api/system/dept";
+  import { getToken } from "@/utils/auth";
+  import Treeselect from "@riophae/vue-treeselect";
+  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+  export default {
+    name: "Temperature",
+    components: { Treeselect },
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 裂解炉炉管测温表格数据
+        temperatureList: [],
+        // 弹出层标题
+        title: "",
+        // 部门树选项
+        deptOptions: undefined,
+        clientHeight:300,
+        // 是否显示弹出层
+        open: false,
+        // 用户导入参数
+        upload: {
+          // 是否显示弹出层(用户导入)
+          open: false,
+          // 弹出层标题(用户导入)
+          title: "",
+          // 是否禁用上传
+          isUploading: false,
+          // 是否更新已经存在的用户数据
+          updateSupport: 0,
+          // 设置上传的请求头部
+          headers: { Authorization: "Bearer " + getToken() },
+          // 上传的地址
+          url: process.env.VUE_APP_BASE_API + "/production/temperature/importData"
+        },
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 20,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+        },
+        recordTime: null,
+        // 表单参数
+        form: {},
+        pass1:[],
+        pass2:[],
+        pass3:[],
+        pass4:[],
+        pass5:[],
+        pass6:[],
+        pass7:[],
+        pass8:[],
+        pass9:[],
+        pass10:[],
+        pass11:[],
+        pass12:[],
+        pass13:[],
+        pass14:[],
+        pass15:[],
+        pass16:[],
+        // 表单校验
+        rules: {
+          id: [
+            { required: true, message: "主键id不能为空", trigger: "blur" }
+          ],
+        }
+      };
+    },
+    watch: {
+      // 根据名称筛选部门树
+      deptName(val) {
+        this.$refs.tree.filter(val);
+      }
+    },
+    created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+        this.clientHeight = document.body.clientHeight -250
+      })
+      this.getList();
+      this.getTreeselect();
+    },
+    methods: {
+      /** 查询裂解炉炉管测温列表 */
+      getList() {
+        this.loading = true;
+        this.queryParams.furnanceName = "H117";
+        console.log(this.queryParams)
+        listTemperature(this.queryParams).then(response => {
+          for (let i = 0; i< response.rows.length; i++) {
+            if (response.rows[i].pass1 == null) { response.rows[i].pass1 = []; } else { response.rows[i].pass1 = response.rows[i].pass1.split(','); }
+            if (response.rows[i].pass2 == null) { response.rows[i].pass2 = []; } else { response.rows[i].pass2 = response.rows[i].pass2.split(','); }
+            if (response.rows[i].pass3 == null) { response.rows[i].pass3 = []; } else { response.rows[i].pass3 = response.rows[i].pass3.split(','); }
+            if (response.rows[i].pass4 == null) { response.rows[i].pass4 = []; } else { response.rows[i].pass4 = response.rows[i].pass4.split(','); }
+            if (response.rows[i].pass5 == null) { response.rows[i].pass5 = []; } else { response.rows[i].pass5 = response.rows[i].pass5.split(','); }
+            if (response.rows[i].pass6 == null) { response.rows[i].pass6 = []; } else { response.rows[i].pass6 = response.rows[i].pass6.split(','); }
+            if (response.rows[i].pass7 == null) { response.rows[i].pass7 = []; } else { response.rows[i].pass7 = response.rows[i].pass7.split(','); }
+            if (response.rows[i].pass8 == null) { response.rows[i].pass8 = []; } else { response.rows[i].pass8 = response.rows[i].pass8.split(','); }
+          }
+          this.temperatureList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      /** 查询部门下拉树结构 */
+      getTreeselect() {
+        treeselect().then(response => {
+          this.deptOptions = response.data;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          id: null,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+          delFlag: null,
+          createBy: null,
+          createTime: null,
+          updateBy: null,
+          updateTime: null,
+        };
+        this.pass1 = [];
+        this.pass2 = [];
+        this.pass3 = [];
+        this.pass4 = [];
+        this.pass5 = [];
+        this.pass6 = [];
+        this.pass7 = [];
+        this.pass8 = [];
+        this.pass9 = [];
+        this.pass10 = [];
+        this.pass11 = [];
+        this.pass12 = [];
+        this.pass13 = [];
+        this.pass14 = [];
+        this.pass15 = [];
+        this.pass16 = [];
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset();
+        this.form.furnanceName = "H117";
+        this.open = true;
+        this.title = "添加裂解炉炉管测温";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+        const id = row.id || this.ids
+        getTemperature(id).then(response => {
+          this.form = response.data;
+          if (response.data.pass1 == null) { this.pass1 = []; } else { this.pass1 = response.data.pass1.split(','); }
+          if (response.data.pass2 == null) { this.pass2 = []; } else { this.pass2 = response.data.pass2.split(','); }
+          if (response.data.pass3 == null) { this.pass3 = []; } else { this.pass3 = response.data.pass3.split(','); }
+          if (response.data.pass4 == null) { this.pass4 = []; } else { this.pass4 = response.data.pass4.split(','); }
+          if (response.data.pass5 == null) { this.pass5 = []; } else { this.pass5 = response.data.pass5.split(','); }
+          if (response.data.pass6 == null) { this.pass6 = []; } else { this.pass6 = response.data.pass6.split(','); }
+          if (response.data.pass7 == null) { this.pass7 = []; } else { this.pass7 = response.data.pass7.split(','); }
+          if (response.data.pass8 == null) { this.pass8 = []; } else { this.pass8 = response.data.pass8.split(','); }
+          this.open = true;
+          this.title = "修改裂解炉炉管测温";
+        });
+      },
+      /** 提交按钮 */
+      submitForm() {
+        this.form.pass1 = this.pass1.join(",");
+        this.form.pass2 = this.pass2.join(",");
+        this.form.pass3 = this.pass3.join(",");
+        this.form.pass4 = this.pass4.join(",");
+        this.form.pass5 = this.pass5.join(",");
+        this.form.pass6 = this.pass6.join(",");
+        this.form.pass7 = this.pass7.join(",");
+        this.form.pass8 = this.pass8.join(",");
+        this.form.pass9 = this.pass9.join(",");
+        this.form.pass10 = this.pass10.join(",");
+        this.form.pass11 = this.pass11.join(",");
+        this.form.pass12 = this.pass12.join(",");
+        this.form.pass13 = this.pass13.join(",");
+        this.form.pass14 = this.pass14.join(",");
+        this.form.pass15 = this.pass15.join(",");
+        this.form.pass16 = this.pass16.join(",");
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            if (this.form.id != null) {
+              updateTemperature(this.form).then(response => {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              });
+            } else {
+              addTemperature(this.form).then(response => {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              });
+            }
+          }
+        });
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        const ids = row.id || this.ids;
+        this.$confirm('是否确认删除?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delTemperature(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        const queryParams = this.queryParams;
+        this.$confirm('是否确认导出所有裂解炉炉管测温数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportTemperature(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+      },
+      /** 导入按钮操作 */
+      handleImport() {
+        this.upload.title = "用户导入";
+        this.upload.open = true;
+      },
+      /** 下载模板操作 */
+      importTemplate() {
+        importTemplate().then(response => {
+          this.download(response.msg);
+        });
+      },
+      // 文件上传中处理
+      handleFileUploadProgress(event, file, fileList) {
+        this.upload.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccess(response, file, fileList) {
+        this.upload.open = false;
+        this.upload.isUploading = false;
+        this.$refs.upload.clearFiles();
+        this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+        this.getList();
+      },
+      // 提交上传文件
+      submitFileForm() {
+        this.$refs.upload.submit();
+      }
+    }
+  };
+</script>

+ 583 - 0
ui/src/views/production/temperature/H118.vue

@@ -0,0 +1,583 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="巡检日期" prop="recordTime">
+        <el-date-picker
+          v-model="queryParams.recordTime"
+          type="month"
+          value-format="yyyy-MM"
+          placeholder="选择巡检日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['production:temperature:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['production:temperature:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['production:temperature:remove']"
+        >删除</el-button>
+      </el-col>
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="info"-->
+          <!--icon="el-icon-upload2"-->
+          <!--size="mini"-->
+          <!--@click="handleImport"-->
+          <!--v-hasPermi="['production:temperature:edit']"-->
+        <!--&gt;导入</el-button>-->
+      <!--</el-col>-->
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="warning"-->
+          <!--icon="el-icon-download"-->
+          <!--size="mini"-->
+          <!--@click="handleExport"-->
+          <!--v-hasPermi="['production:temperature:export']"-->
+        <!--&gt;导出</el-button>-->
+      <!--</el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="temperatureList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="裂解炉名称" align="center" prop="furnanceName" :show-overflow-tooltip="true" width="100"/>
+      <el-table-column label="巡检日期" align="center" prop="recordTime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="PASS1出口" align="center" prop="pass1" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="((index+1).toString()).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass1[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS2出口" align="center" prop="pass2" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass2[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS3出口" align="center" prop="pass3" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass3[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS4出口" align="center" prop="pass4" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass4[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS5出口" align="center" prop="pass5" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass5[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS6出口" align="center" prop="pass6" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass6[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS7出口" align="center" prop="pass7" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass7[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS8出口" align="center" prop="pass8" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 10" :label="(index+1).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass8[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['production:temperature:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['production:temperature:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改裂解炉炉管测温对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="裂解炉名称" prop="furnanceName">
+          <el-input v-model="form.furnanceName" placeholder="请输入裂解炉名称" />
+        </el-form-item>
+        <el-form-item label="巡检日期" prop="recordTime">
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.recordTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择巡检日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="归属部门" prop="deptId">
+          <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
+        </el-form-item>
+      </el-form>
+      <el-descriptions title="PASS1出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass1[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS2出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass2[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS3出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass3[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS4出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass4[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS5出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass5[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS6出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass6[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS7出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass7[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS8出口" direction="vertical" :column="5" border>
+        <el-descriptions-item v-for="(item, index) in 10" :label="(index+1).toString()">
+          <el-input v-model="pass8[index]"/>
+        </el-descriptions-item>
+      </el-descriptions>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { listTemperature, getTemperature, delTemperature, addTemperature, updateTemperature, exportTemperature, importTemplate} from "@/api/production/temperature";
+  import { treeselect } from "@/api/system/dept";
+  import { getToken } from "@/utils/auth";
+  import Treeselect from "@riophae/vue-treeselect";
+  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+  export default {
+    name: "Temperature",
+    components: { Treeselect },
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 裂解炉炉管测温表格数据
+        temperatureList: [],
+        // 弹出层标题
+        title: "",
+        // 部门树选项
+        deptOptions: undefined,
+        clientHeight:300,
+        // 是否显示弹出层
+        open: false,
+        // 用户导入参数
+        upload: {
+          // 是否显示弹出层(用户导入)
+          open: false,
+          // 弹出层标题(用户导入)
+          title: "",
+          // 是否禁用上传
+          isUploading: false,
+          // 是否更新已经存在的用户数据
+          updateSupport: 0,
+          // 设置上传的请求头部
+          headers: { Authorization: "Bearer " + getToken() },
+          // 上传的地址
+          url: process.env.VUE_APP_BASE_API + "/production/temperature/importData"
+        },
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 20,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+        },
+        recordTime: null,
+        // 表单参数
+        form: {},
+        pass1:[],
+        pass2:[],
+        pass3:[],
+        pass4:[],
+        pass5:[],
+        pass6:[],
+        pass7:[],
+        pass8:[],
+        pass9:[],
+        pass10:[],
+        pass11:[],
+        pass12:[],
+        pass13:[],
+        pass14:[],
+        pass15:[],
+        pass16:[],
+        // 表单校验
+        rules: {
+          id: [
+            { required: true, message: "主键id不能为空", trigger: "blur" }
+          ],
+        }
+      };
+    },
+    watch: {
+      // 根据名称筛选部门树
+      deptName(val) {
+        this.$refs.tree.filter(val);
+      }
+    },
+    created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+        this.clientHeight = document.body.clientHeight -250
+      })
+      this.getList();
+      this.getTreeselect();
+    },
+    methods: {
+      /** 查询裂解炉炉管测温列表 */
+      getList() {
+        this.loading = true;
+        this.queryParams.furnanceName = "H118";
+        console.log(this.queryParams)
+        listTemperature(this.queryParams).then(response => {
+          for (let i = 0; i< response.rows.length; i++) {
+            if (response.rows[i].pass1 == null) { response.rows[i].pass1 = []; } else { response.rows[i].pass1 = response.rows[i].pass1.split(','); }
+            if (response.rows[i].pass2 == null) { response.rows[i].pass2 = []; } else { response.rows[i].pass2 = response.rows[i].pass2.split(','); }
+            if (response.rows[i].pass3 == null) { response.rows[i].pass3 = []; } else { response.rows[i].pass3 = response.rows[i].pass3.split(','); }
+            if (response.rows[i].pass4 == null) { response.rows[i].pass4 = []; } else { response.rows[i].pass4 = response.rows[i].pass4.split(','); }
+            if (response.rows[i].pass5 == null) { response.rows[i].pass5 = []; } else { response.rows[i].pass5 = response.rows[i].pass5.split(','); }
+            if (response.rows[i].pass6 == null) { response.rows[i].pass6 = []; } else { response.rows[i].pass6 = response.rows[i].pass6.split(','); }
+            if (response.rows[i].pass7 == null) { response.rows[i].pass7 = []; } else { response.rows[i].pass7 = response.rows[i].pass7.split(','); }
+            if (response.rows[i].pass8 == null) { response.rows[i].pass8 = []; } else { response.rows[i].pass8 = response.rows[i].pass8.split(','); }
+          }
+          this.temperatureList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      /** 查询部门下拉树结构 */
+      getTreeselect() {
+        treeselect().then(response => {
+          this.deptOptions = response.data;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          id: null,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+          delFlag: null,
+          createBy: null,
+          createTime: null,
+          updateBy: null,
+          updateTime: null,
+        };
+        this.pass1 = [];
+        this.pass2 = [];
+        this.pass3 = [];
+        this.pass4 = [];
+        this.pass5 = [];
+        this.pass6 = [];
+        this.pass7 = [];
+        this.pass8 = [];
+        this.pass9 = [];
+        this.pass10 = [];
+        this.pass11 = [];
+        this.pass12 = [];
+        this.pass13 = [];
+        this.pass14 = [];
+        this.pass15 = [];
+        this.pass16 = [];
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset();
+        this.form.furnanceName = "H118";
+        this.open = true;
+        this.title = "添加裂解炉炉管测温";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+        const id = row.id || this.ids
+        getTemperature(id).then(response => {
+          this.form = response.data;
+          if (response.data.pass1 == null) { this.pass1 = []; } else { this.pass1 = response.data.pass1.split(','); }
+          if (response.data.pass2 == null) { this.pass2 = []; } else { this.pass2 = response.data.pass2.split(','); }
+          if (response.data.pass3 == null) { this.pass3 = []; } else { this.pass3 = response.data.pass3.split(','); }
+          if (response.data.pass4 == null) { this.pass4 = []; } else { this.pass4 = response.data.pass4.split(','); }
+          if (response.data.pass5 == null) { this.pass5 = []; } else { this.pass5 = response.data.pass5.split(','); }
+          if (response.data.pass6 == null) { this.pass6 = []; } else { this.pass6 = response.data.pass6.split(','); }
+          if (response.data.pass7 == null) { this.pass7 = []; } else { this.pass7 = response.data.pass7.split(','); }
+          if (response.data.pass8 == null) { this.pass8 = []; } else { this.pass8 = response.data.pass8.split(','); }
+          this.open = true;
+          this.title = "修改裂解炉炉管测温";
+        });
+      },
+      /** 提交按钮 */
+      submitForm() {
+        this.form.pass1 = this.pass1.join(",");
+        this.form.pass2 = this.pass2.join(",");
+        this.form.pass3 = this.pass3.join(",");
+        this.form.pass4 = this.pass4.join(",");
+        this.form.pass5 = this.pass5.join(",");
+        this.form.pass6 = this.pass6.join(",");
+        this.form.pass7 = this.pass7.join(",");
+        this.form.pass8 = this.pass8.join(",");
+        this.form.pass9 = this.pass9.join(",");
+        this.form.pass10 = this.pass10.join(",");
+        this.form.pass11 = this.pass11.join(",");
+        this.form.pass12 = this.pass12.join(",");
+        this.form.pass13 = this.pass13.join(",");
+        this.form.pass14 = this.pass14.join(",");
+        this.form.pass15 = this.pass15.join(",");
+        this.form.pass16 = this.pass16.join(",");
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            if (this.form.id != null) {
+              updateTemperature(this.form).then(response => {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              });
+            } else {
+              addTemperature(this.form).then(response => {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              });
+            }
+          }
+        });
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        const ids = row.id || this.ids;
+        this.$confirm('是否确认删除?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delTemperature(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        const queryParams = this.queryParams;
+        this.$confirm('是否确认导出所有裂解炉炉管测温数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportTemperature(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+      },
+      /** 导入按钮操作 */
+      handleImport() {
+        this.upload.title = "用户导入";
+        this.upload.open = true;
+      },
+      /** 下载模板操作 */
+      importTemplate() {
+        importTemplate().then(response => {
+          this.download(response.msg);
+        });
+      },
+      // 文件上传中处理
+      handleFileUploadProgress(event, file, fileList) {
+        this.upload.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccess(response, file, fileList) {
+        this.upload.open = false;
+        this.upload.isUploading = false;
+        this.$refs.upload.clearFiles();
+        this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+        this.getList();
+      },
+      // 提交上传文件
+      submitFileForm() {
+        this.$refs.upload.submit();
+      }
+    }
+  };
+</script>

+ 639 - 0
ui/src/views/production/temperature/H130.vue

@@ -0,0 +1,639 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="巡检日期" prop="recordTime">
+        <el-date-picker
+          v-model="queryParams.recordTime"
+          type="month"
+          value-format="yyyy-MM"
+          placeholder="选择巡检日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['production:temperature:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['production:temperature:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['production:temperature:remove']"
+        >删除</el-button>
+      </el-col>
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="info"-->
+          <!--icon="el-icon-upload2"-->
+          <!--size="mini"-->
+          <!--@click="handleImport"-->
+          <!--v-hasPermi="['production:temperature:edit']"-->
+        <!--&gt;导入</el-button>-->
+      <!--</el-col>-->
+      <!--<el-col :span="1.5">-->
+        <!--<el-button-->
+          <!--type="warning"-->
+          <!--icon="el-icon-download"-->
+          <!--size="mini"-->
+          <!--@click="handleExport"-->
+          <!--v-hasPermi="['production:temperature:export']"-->
+        <!--&gt;导出</el-button>-->
+      <!--</el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="temperatureList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="裂解炉名称" align="center" prop="furnanceName" :show-overflow-tooltip="true" width="100"/>
+      <el-table-column label="巡检日期" align="center" prop="recordTime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="PASS1" align="center" prop="pass1" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 3" :label="((index+4).toString()).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass1[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS2" align="center" prop="pass2" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 3" :label="(index+4).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass2[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS3" align="center" prop="pass3" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 3" :label="(index+4).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass3[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS4" align="center" prop="pass4" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 3" :label="(index+4).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass4[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS5" align="center" prop="pass5" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 3" :label="(index+4).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass5[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS6" align="center" prop="pass6" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 3" :label="(index+4).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass6[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS7" align="center" prop="pass7" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 3" :label="(index+4).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass7[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS8" align="center" prop="pass8" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 3" :label="(index+4).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass8[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS9" align="center" prop="pass9" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 3" :label="(index+4).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass9[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS10" align="center" prop="pass10" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 3" :label="(index+4).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass10[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS11" align="center" prop="pass11" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 3" :label="(index+4).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass11[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="PASS12" align="center" prop="pass12" :show-overflow-tooltip="true">
+        <el-table-column v-for="(item,index) in 3" :label="(index+4).toString()" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pass12[index] }}</span>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['production:temperature:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['production:temperature:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改裂解炉炉管测温对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="裂解炉名称" prop="furnanceName">
+          <el-input v-model="form.furnanceName" placeholder="请输入裂解炉名称" />
+        </el-form-item>
+        <el-form-item label="巡检日期" prop="recordTime">
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.recordTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择巡检日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="归属部门" prop="deptId">
+          <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
+        </el-form-item>
+      </el-form>
+      <el-descriptions title="PASS1" direction="vertical" :column="7" border>
+        <el-descriptions-item v-for="(item, index) in 3" :label="(index+4).toString()">
+          <el-input v-model="pass1[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS2" direction="vertical" :column="7" border>
+        <el-descriptions-item v-for="(item, index) in 3" :label="(index+4).toString()">
+          <el-input v-model="pass2[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS3" direction="vertical" :column="7" border>
+        <el-descriptions-item v-for="(item, index) in 3" :label="(index+4).toString()">
+          <el-input v-model="pass3[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS4" direction="vertical" :column="7" border>
+        <el-descriptions-item v-for="(item, index) in 3" :label="(index+4).toString()">
+          <el-input v-model="pass4[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS5" direction="vertical" :column="7" border>
+        <el-descriptions-item v-for="(item, index) in 3" :label="(index+4).toString()">
+          <el-input v-model="pass5[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS6" direction="vertical" :column="7" border>
+        <el-descriptions-item v-for="(item, index) in 3" :label="(index+4).toString()">
+          <el-input v-model="pass6[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS7" direction="vertical" :column="7" border>
+        <el-descriptions-item v-for="(item, index) in 3" :label="(index+4).toString()">
+          <el-input v-model="pass7[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS8" direction="vertical" :column="7" border>
+        <el-descriptions-item v-for="(item, index) in 3" :label="(index+4).toString()">
+          <el-input v-model="pass8[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS9" direction="vertical" :column="7" border>
+        <el-descriptions-item v-for="(item, index) in 3" :label="(index+4).toString()">
+          <el-input v-model="pass9[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS10" direction="vertical" :column="7" border>
+        <el-descriptions-item v-for="(item, index) in 3" :label="(index+4).toString()">
+          <el-input v-model="pass10[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS11" direction="vertical" :column="7" border>
+        <el-descriptions-item v-for="(item, index) in 3" :label="(index+4).toString()">
+          <el-input v-model="pass11[index]"/>
+        </el-descriptions-item>
+      </el-descriptions><br/>
+      <el-descriptions title="PASS12" direction="vertical" :column="7" border>
+        <el-descriptions-item v-for="(item, index) in 3" :label="(index+4).toString()">
+          <el-input v-model="pass12[index]"/>
+        </el-descriptions-item>
+      </el-descriptions>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { listTemperature, getTemperature, delTemperature, addTemperature, updateTemperature, exportTemperature, importTemplate} from "@/api/production/temperature";
+  import { treeselect } from "@/api/system/dept";
+  import { getToken } from "@/utils/auth";
+  import Treeselect from "@riophae/vue-treeselect";
+  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+  export default {
+    name: "Temperature",
+    components: { Treeselect },
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 裂解炉炉管测温表格数据
+        temperatureList: [],
+        // 弹出层标题
+        title: "",
+        // 部门树选项
+        deptOptions: undefined,
+        clientHeight:300,
+        // 是否显示弹出层
+        open: false,
+        // 用户导入参数
+        upload: {
+          // 是否显示弹出层(用户导入)
+          open: false,
+          // 弹出层标题(用户导入)
+          title: "",
+          // 是否禁用上传
+          isUploading: false,
+          // 是否更新已经存在的用户数据
+          updateSupport: 0,
+          // 设置上传的请求头部
+          headers: { Authorization: "Bearer " + getToken() },
+          // 上传的地址
+          url: process.env.VUE_APP_BASE_API + "/production/temperature/importData"
+        },
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 20,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+        },
+        recordTime: null,
+        // 表单参数
+        form: {},
+        pass1:[],
+        pass2:[],
+        pass3:[],
+        pass4:[],
+        pass5:[],
+        pass6:[],
+        pass7:[],
+        pass8:[],
+        pass9:[],
+        pass10:[],
+        pass11:[],
+        pass12:[],
+        pass13:[],
+        pass14:[],
+        pass15:[],
+        pass16:[],
+        // 表单校验
+        rules: {
+          id: [
+            { required: true, message: "主键id不能为空", trigger: "blur" }
+          ],
+        }
+      };
+    },
+    watch: {
+      // 根据名称筛选部门树
+      deptName(val) {
+        this.$refs.tree.filter(val);
+      }
+    },
+    created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+        this.clientHeight = document.body.clientHeight -250
+      })
+      this.getList();
+      this.getTreeselect();
+    },
+    methods: {
+      /** 查询裂解炉炉管测温列表 */
+      getList() {
+        this.loading = true;
+        this.queryParams.furnanceName = "H130";
+        console.log(this.queryParams)
+        listTemperature(this.queryParams).then(response => {
+          for (let i = 0; i< response.rows.length; i++) {
+            if (response.rows[i].pass1 == null) { response.rows[i].pass1 = []; } else { response.rows[i].pass1 = response.rows[i].pass1.split(','); }
+            if (response.rows[i].pass2 == null) { response.rows[i].pass2 = []; } else { response.rows[i].pass2 = response.rows[i].pass2.split(','); }
+            if (response.rows[i].pass3 == null) { response.rows[i].pass3 = []; } else { response.rows[i].pass3 = response.rows[i].pass3.split(','); }
+            if (response.rows[i].pass4 == null) { response.rows[i].pass4 = []; } else { response.rows[i].pass4 = response.rows[i].pass4.split(','); }
+            if (response.rows[i].pass5 == null) { response.rows[i].pass5 = []; } else { response.rows[i].pass5 = response.rows[i].pass5.split(','); }
+            if (response.rows[i].pass6 == null) { response.rows[i].pass6 = []; } else { response.rows[i].pass6 = response.rows[i].pass6.split(','); }
+            if (response.rows[i].pass7 == null) { response.rows[i].pass7 = []; } else { response.rows[i].pass7 = response.rows[i].pass7.split(','); }
+            if (response.rows[i].pass8 == null) { response.rows[i].pass8 = []; } else { response.rows[i].pass8 = response.rows[i].pass8.split(','); }
+            if (response.rows[i].pass9 == null) { response.rows[i].pass9 = []; } else { response.rows[i].pass9 = response.rows[i].pass9.split(','); }
+            if (response.rows[i].pass10 == null) { response.rows[i].pass10 = []; } else { response.rows[i].pass10 = response.rows[i].pass10.split(','); }
+            if (response.rows[i].pass11 == null) { response.rows[i].pass11 = []; } else { response.rows[i].pass11 = response.rows[i].pass11.split(','); }
+            if (response.rows[i].pass12 == null) { response.rows[i].pass12 = []; } else { response.rows[i].pass12 = response.rows[i].pass12.split(','); }
+          }
+          this.temperatureList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      /** 查询部门下拉树结构 */
+      getTreeselect() {
+        treeselect().then(response => {
+          this.deptOptions = response.data;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          id: null,
+          furnanceName: null,
+          recordTime: null,
+          pass1: null,
+          pass2: null,
+          pass3: null,
+          pass4: null,
+          pass5: null,
+          pass6: null,
+          pass7: null,
+          pass8: null,
+          pass9: null,
+          pass10: null,
+          pass11: null,
+          pass12: null,
+          pass13: null,
+          pass14: null,
+          pass15: null,
+          pass16: null,
+          deptId: null,
+          delFlag: null,
+          createBy: null,
+          createTime: null,
+          updateBy: null,
+          updateTime: null,
+        };
+        this.pass1 = [];
+        this.pass2 = [];
+        this.pass3 = [];
+        this.pass4 = [];
+        this.pass5 = [];
+        this.pass6 = [];
+        this.pass7 = [];
+        this.pass8 = [];
+        this.pass9 = [];
+        this.pass10 = [];
+        this.pass11 = [];
+        this.pass12 = [];
+        this.pass13 = [];
+        this.pass14 = [];
+        this.pass15 = [];
+        this.pass16 = [];
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset();
+        this.form.furnanceName = "H130";
+        this.open = true;
+        this.title = "添加裂解炉炉管测温";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+        const id = row.id || this.ids
+        getTemperature(id).then(response => {
+          this.form = response.data;
+          if (response.data.pass1 == null) { this.pass1 = []; } else { this.pass1 = response.data.pass1.split(','); }
+          if (response.data.pass2 == null) { this.pass2 = []; } else { this.pass2 = response.data.pass2.split(','); }
+          if (response.data.pass3 == null) { this.pass3 = []; } else { this.pass3 = response.data.pass3.split(','); }
+          if (response.data.pass4 == null) { this.pass4 = []; } else { this.pass4 = response.data.pass4.split(','); }
+          if (response.data.pass5 == null) { this.pass5 = []; } else { this.pass5 = response.data.pass5.split(','); }
+          if (response.data.pass6 == null) { this.pass6 = []; } else { this.pass6 = response.data.pass6.split(','); }
+          if (response.data.pass7 == null) { this.pass7 = []; } else { this.pass7 = response.data.pass7.split(','); }
+          if (response.data.pass8 == null) { this.pass8 = []; } else { this.pass8 = response.data.pass8.split(','); }
+          if (response.data.pass9 == null) { this.pass9 = []; } else { this.pass9 = response.data.pass9.split(','); }
+          if (response.data.pass10 == null) { this.pass10 = []; } else { this.pass10 = response.data.pass10.split(','); }
+          if (response.data.pass11 == null) { this.pass11 = []; } else { this.pass11 = response.data.pass11.split(','); }
+          if (response.data.pass12 == null) { this.pass12 = []; } else { this.pass12 = response.data.pass12.split(','); }
+          this.open = true;
+          this.title = "修改裂解炉炉管测温";
+        });
+      },
+      /** 提交按钮 */
+      submitForm() {
+        this.form.pass1 = this.pass1.join(",");
+        this.form.pass2 = this.pass2.join(",");
+        this.form.pass3 = this.pass3.join(",");
+        this.form.pass4 = this.pass4.join(",");
+        this.form.pass5 = this.pass5.join(",");
+        this.form.pass6 = this.pass6.join(",");
+        this.form.pass7 = this.pass7.join(",");
+        this.form.pass8 = this.pass8.join(",");
+        this.form.pass9 = this.pass9.join(",");
+        this.form.pass10 = this.pass10.join(",");
+        this.form.pass11 = this.pass11.join(",");
+        this.form.pass12 = this.pass12.join(",");
+        this.form.pass13 = this.pass13.join(",");
+        this.form.pass14 = this.pass14.join(",");
+        this.form.pass15 = this.pass15.join(",");
+        this.form.pass16 = this.pass16.join(",");
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            if (this.form.id != null) {
+              updateTemperature(this.form).then(response => {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              });
+            } else {
+              addTemperature(this.form).then(response => {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              });
+            }
+          }
+        });
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        const ids = row.id || this.ids;
+        this.$confirm('是否确认删除?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delTemperature(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        const queryParams = this.queryParams;
+        this.$confirm('是否确认导出所有裂解炉炉管测温数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportTemperature(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+      },
+      /** 导入按钮操作 */
+      handleImport() {
+        this.upload.title = "用户导入";
+        this.upload.open = true;
+      },
+      /** 下载模板操作 */
+      importTemplate() {
+        importTemplate().then(response => {
+          this.download(response.msg);
+        });
+      },
+      // 文件上传中处理
+      handleFileUploadProgress(event, file, fileList) {
+        this.upload.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccess(response, file, fileList) {
+        this.upload.open = false;
+        this.upload.isUploading = false;
+        this.$refs.upload.clearFiles();
+        this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+        this.getList();
+      },
+      // 提交上传文件
+      submitFileForm() {
+        this.$refs.upload.submit();
+      }
+    }
+  };
+</script>

+ 22 - 14
ui/src/views/production/temperature/index.vue

@@ -1,19 +1,17 @@
 <template>
   <div class="app-container">
     <el-tabs :tab-position="tabPosition">
-      <el-tab-pane label="H109">
-        <H109></H109>
-      </el-tab-pane>
-      <el-tab-pane label="H110">H110</el-tab-pane>
-      <el-tab-pane label="H111">H111</el-tab-pane>
-      <el-tab-pane label="H112">H112</el-tab-pane>
-      <el-tab-pane label="H113">H113</el-tab-pane>
-      <el-tab-pane label="H114">H114</el-tab-pane>
-      <el-tab-pane label="H115">H115</el-tab-pane>
-      <el-tab-pane label="H116">H116</el-tab-pane>
-      <el-tab-pane label="H117">H117</el-tab-pane>
-      <el-tab-pane label="H118">H118</el-tab-pane>
-      <el-tab-pane label="H130">H130</el-tab-pane>
+      <el-tab-pane label="H109"><H109></H109></el-tab-pane>
+      <el-tab-pane label="H110"><H110></H110></el-tab-pane>
+      <el-tab-pane label="H111"><H111></H111></el-tab-pane>
+      <el-tab-pane label="H112"><H112></H112></el-tab-pane>
+      <el-tab-pane label="H113"><H113></H113></el-tab-pane>
+      <el-tab-pane label="H114"><H114></H114></el-tab-pane>
+      <el-tab-pane label="H115"><H115></H115></el-tab-pane>
+      <el-tab-pane label="H116"><H116></H116></el-tab-pane>
+      <el-tab-pane label="H117"><H117></H117></el-tab-pane>
+      <el-tab-pane label="H118"><H118></H118></el-tab-pane>
+      <el-tab-pane label="H130"><H130></H130></el-tab-pane>
       <el-tab-pane label="COIL">COIL</el-tab-pane>
       <el-tab-pane label="MAX">MAX</el-tab-pane>
     </el-tabs>
@@ -22,9 +20,19 @@
 
 <script>
   import H109 from "./H109"
+  import H110 from "./H110"
+  import H111 from "./H111"
+  import H112 from "./H112"
+  import H113 from "./H113"
+  import H114 from "./H114"
+  import H115 from "./H115"
+  import H116 from "./H116"
+  import H117 from "./H117"
+  import H118 from "./H118"
+  import H130 from "./H130"
   export default {
     name: "Temperatue",
-    components: { H109 },
+    components: { H109, H110, H111, H112, H113, H114, H115, H116, H117, H118, H130 },
     data() {
       return {
         tabPosition: 'left'