yanghao há 1 dia atrás
pai
commit
c2c1a9ac37
1 ficheiros alterados com 246 adições e 236 exclusões
  1. 246 236
      src/views/pms/qhse/factor/index.vue

+ 246 - 236
src/views/pms/qhse/factor/index.vue

@@ -1,259 +1,260 @@
 <template>
-  <div class="factor-matrix">
-    <!-- 筛选表单 -->
-    <ContentWrap style="border: 0">
-      <el-form
-        class="pt-2"
-        :model="queryParams"
-        ref="queryFormRef"
-        :inline="true"
-        label-width="80px"
-      >
-        <el-form-item label="工序" prop="process">
-          <el-input
-            v-model="queryParams.process"
-            placeholder="请输入工序"
-            clearable
-            @keyup.enter="handleQuery"
-            class="!w-200px"
-          />
-        </el-form-item>
-        <el-form-item label="步骤分解" prop="stepBreak">
-          <el-input
-            v-model="queryParams.stepBreak"
-            placeholder="请输入步骤分解"
-            clearable
-            @keyup.enter="handleQuery"
-            class="!w-200px"
-          />
-        </el-form-item>
-        <el-form-item label="环境因素" prop="environmentElement">
-          <el-input
-            v-model="queryParams.environmentElement"
-            placeholder="请输入环境因素"
-            clearable
-            @keyup.enter="handleQuery"
-            class="!w-200px"
-          />
-        </el-form-item>
-        <el-form-item>
-          <el-button @click="handleQuery"> <Icon icon="ep:search" class="mr-5px" />搜索 </el-button>
-          <el-button @click="resetQuery"> <Icon icon="ep:refresh" class="mr-5px" />重置 </el-button>
-          <el-button type="primary" @click="openAddDialog" color="#626aef"
-            ><Icon icon="ep:plus" class="mr-5px" />新增</el-button
-          >
-          <el-button type="success" plain @click="handleExport" :loading="exportLoading">
-            <Icon icon="ep:download" class="mr-5px" /> 导出
-          </el-button>
-        </el-form-item>
-      </el-form>
-    </ContentWrap>
-
-    <!-- 表格 -->
-    <ContentWrap style="border: 0">
-      <el-table
-        :data="tableData"
-        border
-        stripe
-        style="width: 100%"
-        :header-cell-style="{ background: '#f5f7fa', color: '#333' }"
-        :cell-style="{ padding: '12px 8px' }"
-        height="68vh"
-      >
-        <el-table-column label="序号" width="70" align="center" fixed="left">
-          <template #default="scope">
-            {{ scope.$index + 1 }}
-          </template>
-        </el-table-column>
-        <el-table-column label="工序" prop="process" width="140" align="center" fixed="left" />
-        <el-table-column label="步骤分解" prop="stepBreak" width="140" align="center" />
-        <el-table-column label="环境因素" prop="environmentElement" width="180" align="center" />
-
-        <el-table-column label="时态" width="240" align="center">
-          <el-table-column label="过去" prop="timeBefore" width="60" align="center">
-            <template #default="{ row }">
-              <el-button circle type="success" style="border: none" plain v-if="row.timeBefore">
-                <span class="text-[#259644]">
-                  {{ '✔' }}
-                </span>
-              </el-button>
-              <span v-else></span>
+  <el-row :gutter="20">
+    <DeptTree @node-click="handleDeptNodeClick" v-model:collapsed="isLeftContentCollapsed" />
+    <el-col :span="isLeftContentCollapsed ? 24 : 20" :xs="24">
+      <!-- 筛选表单 -->
+      <ContentWrap style="border: 0">
+        <el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true">
+          <el-form-item label="工序" prop="process">
+            <el-input
+              v-model="queryParams.process"
+              placeholder="请输入工序"
+              clearable
+              @keyup.enter="handleQuery"
+              class="!w-150px"
+            />
+          </el-form-item>
+          <el-form-item label="步骤分解" prop="stepBreak">
+            <el-input
+              v-model="queryParams.stepBreak"
+              placeholder="请输入步骤分解"
+              clearable
+              @keyup.enter="handleQuery"
+              class="!w-150px"
+            />
+          </el-form-item>
+          <el-form-item label="环境因素" prop="environmentElement">
+            <el-input
+              v-model="queryParams.environmentElement"
+              placeholder="请输入环境因素"
+              clearable
+              @keyup.enter="handleQuery"
+              class="!w-150px"
+            />
+          </el-form-item>
+          <el-form-item>
+            <el-button @click="handleQuery">
+              <Icon icon="ep:search" class="mr-5px" />搜索
+            </el-button>
+            <el-button @click="resetQuery">
+              <Icon icon="ep:refresh" class="mr-5px" />重置
+            </el-button>
+            <el-button type="primary" @click="openAddDialog" color="#626aef"
+              ><Icon icon="ep:plus" class="mr-5px" />新增</el-button
+            >
+            <el-button type="success" plain @click="handleExport" :loading="exportLoading">
+              <Icon icon="ep:download" class="mr-5px" /> 导出
+            </el-button>
+          </el-form-item>
+        </el-form>
+      </ContentWrap>
+
+      <!-- 表格 -->
+      <ContentWrap style="border: 0">
+        <el-table
+          :data="tableData"
+          border
+          stripe
+          style="width: 100%"
+          :header-cell-style="{ background: '#f5f7fa', color: '#333' }"
+          :cell-style="{ padding: '12px 8px' }"
+          height="71vh"
+        >
+          <el-table-column label="序号" width="70" align="center" fixed="left">
+            <template #default="scope">
+              {{ scope.$index + 1 }}
             </template>
           </el-table-column>
-          <el-table-column label="现在" prop="timeNow" width="60" align="center">
-            <template #default="{ row }">
-              <el-button circle type="success" style="border: none" plain v-if="row.timeNow">
-                <span class="text-[#259644]">
-                  {{ '✔' }}
-                </span>
-              </el-button>
-              <span v-else></span>
-            </template>
+          <el-table-column label="工序" prop="process" width="140" align="center" fixed="left" />
+          <el-table-column label="步骤分解" prop="stepBreak" width="140" align="center" />
+          <el-table-column label="环境因素" prop="environmentElement" width="180" align="center" />
+
+          <el-table-column label="时态" width="240" align="center">
+            <el-table-column label="过去" prop="timeBefore" width="60" align="center">
+              <template #default="{ row }">
+                <el-button circle type="success" style="border: none" plain v-if="row.timeBefore">
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </el-table-column>
+            <el-table-column label="现在" prop="timeNow" width="60" align="center">
+              <template #default="{ row }">
+                <el-button circle type="success" style="border: none" plain v-if="row.timeNow">
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </el-table-column>
+            <el-table-column label="将来" prop="timeFuture" width="60" align="center">
+              <template #default="{ row }">
+                <el-button circle type="success" style="border: none" plain v-if="row.timeFuture">
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </el-table-column>
           </el-table-column>
-          <el-table-column label="将来" prop="timeFuture" width="60" align="center">
-            <template #default="{ row }">
-              <el-button circle type="success" style="border: none" plain v-if="row.timeFuture">
-                <span class="text-[#259644]">
-                  {{ '✔' }}
-                </span>
-              </el-button>
-              <span v-else></span>
-            </template>
-          </el-table-column>
-        </el-table-column>
 
-        <el-table-column label="状态" width="240" align="center">
-          <el-table-column label="正常" prop="statusNormal" width="60" align="center">
-            <template #default="{ row }">
-              <el-button circle type="success" style="border: none" plain v-if="row.statusNormal">
-                <span class="text-[#259644]">
-                  {{ '✔' }}
-                </span>
-              </el-button>
-              <span v-else></span>
-            </template>
-          </el-table-column>
-          <el-table-column label="异常" prop="statusException" width="60" align="center">
-            <template #default="{ row }">
-              <el-button
-                circle
-                type="success"
-                style="border: none"
-                plain
-                v-if="row.statusException"
-              >
-                <span class="text-[#259644]">
-                  {{ '✔' }}
-                </span>
-              </el-button>
-              <span v-else></span>
-            </template>
-          </el-table-column>
-          <el-table-column label="紧急" prop="statusDanger" width="60" align="center">
-            <template #default="{ row }">
-              <el-button circle type="success" style="border: none" plain v-if="row.statusDanger">
-                <span class="text-[#259644]">
-                  {{ '✔' }}
-                </span>
-              </el-button>
-              <span v-else></span>
-            </template>
+          <el-table-column label="状态" width="240" align="center">
+            <el-table-column label="正常" prop="statusNormal" width="60" align="center">
+              <template #default="{ row }">
+                <el-button circle type="success" style="border: none" plain v-if="row.statusNormal">
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </el-table-column>
+            <el-table-column label="异常" prop="statusException" width="60" align="center">
+              <template #default="{ row }">
+                <el-button
+                  circle
+                  type="success"
+                  style="border: none"
+                  plain
+                  v-if="row.statusException"
+                >
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </el-table-column>
+            <el-table-column label="紧急" prop="statusDanger" width="60" align="center">
+              <template #default="{ row }">
+                <el-button circle type="success" style="border: none" plain v-if="row.statusDanger">
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </el-table-column>
           </el-table-column>
-        </el-table-column>
 
-        <el-table-column label="环境影响类型" width="700" align="center">
-          <el-table-column label="能源/资源耗用" prop="typeEnergy" width="100" align="center">
-            <template #default="{ row }">
-              <!-- <span>
+          <el-table-column label="环境影响类型" width="700" align="center">
+            <el-table-column label="能源/资源耗用" prop="typeEnergy" width="100" align="center">
+              <template #default="{ row }">
+                <!-- <span>
                 {{ row.typeEnergy ? '✔' : '' }}
               </span> -->
 
-              <el-button circle type="success" style="border: none" plain v-if="row.typeEnergy">
-                <span class="text-[#259644]">
-                  {{ '✔' }}
-                </span>
-              </el-button>
-              <span v-else></span>
-            </template>
-          </el-table-column>
-          <el-table-column label="水体" prop="typeWater" width="60" align="center">
-            <template #default="{ row }">
-              <!-- <span>
+                <el-button circle type="success" style="border: none" plain v-if="row.typeEnergy">
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </el-table-column>
+            <el-table-column label="水体" prop="typeWater" width="60" align="center">
+              <template #default="{ row }">
+                <!-- <span>
                 {{ row.typeWater ? '✔' : '' }}
               </span> -->
-              <el-button circle type="success" style="border: none" plain v-if="row.typeWater">
-                <span class="text-[#259644]">
-                  {{ '✔' }}
-                </span>
-              </el-button>
-              <span v-else></span>
-            </template>
-          </el-table-column>
-          <el-table-column label="大气" prop="typeGas" width="60" align="center">
-            <template #default="{ row }">
-              <!-- <span>
+                <el-button circle type="success" style="border: none" plain v-if="row.typeWater">
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </el-table-column>
+            <el-table-column label="大气" prop="typeGas" width="60" align="center">
+              <template #default="{ row }">
+                <!-- <span>
                 {{ row.typeGas ? '✔' : '' }}
               </span> -->
 
-              <el-button circle type="success" style="border: none" plain v-if="row.typeGas">
-                <span class="text-[#259644]">
-                  {{ '✔' }}
-                </span>
-              </el-button>
-              <span v-else></span>
-            </template>
-          </el-table-column>
-          <el-table-column label="噪音" prop="typeNoise" width="60" align="center">
-            <template #default="{ row }">
-              <el-button circle type="success" style="border: none" plain v-if="row.typeNoise">
-                <span class="text-[#259644]">
-                  {{ '✔' }}
-                </span>
-              </el-button>
-              <span v-else></span>
-            </template>
+                <el-button circle type="success" style="border: none" plain v-if="row.typeGas">
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </el-table-column>
+            <el-table-column label="噪音" prop="typeNoise" width="60" align="center">
+              <template #default="{ row }">
+                <el-button circle type="success" style="border: none" plain v-if="row.typeNoise">
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </el-table-column>
+            <el-table-column label="废弃物" prop="typeWaste" width="60" align="center">
+              <template #default="{ row }">
+                <el-button circle type="success" style="border: none" plain v-if="row.typeWaste">
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </el-table-column>
+            <el-table-column label="土壤" prop="typeSoil" width="60" align="center">
+              <template #default="{ row }">
+                <el-button circle type="success" style="border: none" plain v-if="row.typeSoil">
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </el-table-column>
+            <el-table-column label="其他" prop="typeOther" width="60" align="center">
+              <template #default="{ row }">
+                <el-button circle type="success" style="border: none" plain v-if="row.typeOther">
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </el-table-column>
           </el-table-column>
-          <el-table-column label="废弃物" prop="typeWaste" width="60" align="center">
-            <template #default="{ row }">
-              <el-button circle type="success" style="border: none" plain v-if="row.typeWaste">
-                <span class="text-[#259644]">
-                  {{ '✔' }}
-                </span>
-              </el-button>
-              <span v-else></span>
-            </template>
-          </el-table-column>
-          <el-table-column label="土壤" prop="typeSoil" width="60" align="center">
+
+          <el-table-column label="控制措施" prop="controlMethod" min-width="200" align="center" />
+          <el-table-column label="创建日期" prop="createTime" width="160" align="center">
             <template #default="{ row }">
-              <el-button circle type="success" style="border: none" plain v-if="row.typeSoil">
-                <span class="text-[#259644]">
-                  {{ '✔' }}
-                </span>
-              </el-button>
-              <span v-else></span>
+              {{ formatDate(row.createTime) }}
             </template>
           </el-table-column>
-          <el-table-column label="其他" prop="typeOther" width="60" align="center">
+          <el-table-column label="备注" prop="remark" width="150" align="center" />
+
+          <el-table-column label="操作" width="120" fixed="right" align="center">
             <template #default="{ row }">
-              <el-button circle type="success" style="border: none" plain v-if="row.typeOther">
-                <span class="text-[#259644]">
-                  {{ '✔' }}
-                </span>
-              </el-button>
-              <span v-else></span>
+              <el-button type="primary" link @click="editRow(row)">编辑</el-button>
+              <el-button type="danger" link @click="deleteRow(row)">删除</el-button>
             </template>
           </el-table-column>
-        </el-table-column>
-
-        <el-table-column label="控制措施" prop="controlMethod" min-width="200" align="center" />
-        <el-table-column label="创建日期" prop="createTime" width="160" align="center">
-          <template #default="{ row }">
-            {{ formatDate(row.createTime) }}
-          </template>
-        </el-table-column>
-        <el-table-column label="备注" prop="remark" width="150" align="center" />
-
-        <el-table-column label="操作" width="120" fixed="right" align="center">
-          <template #default="{ row }">
-            <el-button type="primary" link @click="editRow(row)">编辑</el-button>
-            <el-button type="danger" link @click="deleteRow(row)">删除</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-
-      <!-- 分页 -->
-      <div class="mt-2 flex justify-right">
-        <el-pagination
-          v-model:current-page="pagination.pageNo"
-          v-model:page-size="pagination.pageSize"
-          :total="total"
-          layout="total, sizes, prev, pager, next"
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          background
-        />
-      </div>
-    </ContentWrap>
+        </el-table>
+
+        <!-- 分页 -->
+        <div class="mt-2 flex justify-right">
+          <el-pagination
+            v-model:current-page="pagination.pageNo"
+            v-model:page-size="pagination.pageSize"
+            :total="total"
+            layout="total, sizes, prev, pager, next"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            background
+          />
+        </div>
+      </ContentWrap>
+    </el-col>
 
     <!-- 新增/编辑弹窗 -->
     <el-dialog :title="dialogTitle" v-model="dialogVisible" width="50%" destroy-on-close>
@@ -371,7 +372,7 @@
         <el-button type="primary" @click="submitForm" :loading="submitLoading">确 定</el-button>
       </template>
     </el-dialog>
-  </div>
+  </el-row>
 </template>
 
 <script setup lang="ts">
@@ -382,11 +383,13 @@ import { formatDate } from '@/utils/formatTime'
 import { defaultProps } from '@/utils/tree'
 import { handleTree } from '@/utils/tree'
 import * as DeptApi from '@/api/system/dept'
+import DeptTree from '@/views/system/user/HazardTree.vue'
 
 // 表格数据
 const deptList2 = ref<Tree[]>([]) // 树形结构
 const tableData = ref([])
 const total = ref(0)
+const isLeftContentCollapsed = ref(false)
 
 // 筛选参数
 const queryParams = reactive({
@@ -394,7 +397,8 @@ const queryParams = reactive({
   pageSize: 10,
   process: '',
   stepBreak: '',
-  environmentElement: ''
+  environmentElement: '',
+  deptId: null
 })
 
 const pagination = reactive({
@@ -402,6 +406,12 @@ const pagination = reactive({
   pageSize: 10
 })
 
+const handleDeptNodeClick = async (row) => {
+  queryParams.deptId = row.id
+  pagination.pageNo = 1
+  getList()
+}
+
 // 分页和查询
 const queryFormRef = ref()
 const handleQuery = () => {