|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <TableLayout :permissions="['business:workorder:query']"> | 
|---|
|  |  |  | <!-- 搜索表单 --> | 
|---|
|  |  |  | <SearchFormCollapse slot="search-form"> | 
|---|
|  |  |  | <div slot="search-form"> | 
|---|
|  |  |  | <el-form ref="searchForm" :model="searchForm" label-width="100px" inline> | 
|---|
|  |  |  | <el-form-item label="所属分类编(关联category)" prop="categoryId"> | 
|---|
|  |  |  | <el-input v-model="searchForm.categoryId" placeholder="请输入所属分类编(关联category)" @keypress.enter.native="search"></el-input> | 
|---|
|  |  |  | <el-form-item label="伤害类型" prop="typeId"> | 
|---|
|  |  |  | <el-cascader  v-model="searchForm.categoryList" :options="categorys" @change="handleChangeCategory" :show-all-levels="false" | 
|---|
|  |  |  | clearable filterable :props="categoryprops"  > | 
|---|
|  |  |  | <template slot-scope="{ node, data }"> | 
|---|
|  |  |  | <span>{{ data.name }}</span> <!-- 自定义显示内容 --> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-cascader> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="上报人员编码(关联member)" prop="memberId"> | 
|---|
|  |  |  | <el-input v-model="searchForm.memberId" placeholder="请输入上报人员编码(关联member)" @keypress.enter.native="search"></el-input> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="部门编码" prop="companyId"> | 
|---|
|  |  |  | <el-input v-model="searchForm.companyId" placeholder="请输入部门编码" @keypress.enter.native="search"></el-input> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="SHE涉及人员类型 0本人 1同事 2供应商" prop="memberType"> | 
|---|
|  |  |  | <el-input v-model="searchForm.memberType" placeholder="请输入SHE涉及人员类型 0本人 1同事 2供应商" @keypress.enter.native="search"></el-input> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="SHE涉及人员供应商集合" prop="memberNames"> | 
|---|
|  |  |  | <el-input v-model="searchForm.memberNames" placeholder="请输入SHE涉及人员供应商集合" @keypress.enter.native="search"></el-input> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="发生地点/位置编码(关联category)" prop="localtionId"> | 
|---|
|  |  |  | <el-input v-model="searchForm.localtionId" placeholder="请输入发生地点/位置编码(关联category)" @keypress.enter.native="search"></el-input> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="风险类型(关联category)" prop="typeId"> | 
|---|
|  |  |  | <el-date-picker v-model="searchForm.typeId" value-format="yyyy-MM-dd" placeholder="请输入风险类型(关联category)" @change="search"/> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="位置地点路径名称" prop="locationName"> | 
|---|
|  |  |  | <el-input v-model="searchForm.locationName" placeholder="请输入位置地点路径名称" @keypress.enter.native="search"></el-input> | 
|---|
|  |  |  | <el-form-item label="上报人员" prop="memberName"> | 
|---|
|  |  |  | <el-input v-model="searchForm.memberName" placeholder="人员姓名或手机号" @keypress.enter.native="search"></el-input> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="工单号" prop="code"> | 
|---|
|  |  |  | <el-input v-model="searchForm.code" placeholder="请输入工单号" @keypress.enter.native="search"></el-input> | 
|---|
|  |  |  | 
|---|
|  |  |  | <el-button @click="reset">重置</el-button> | 
|---|
|  |  |  | </section> | 
|---|
|  |  |  | </el-form> | 
|---|
|  |  |  | </SearchFormCollapse> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!-- 表格和分页 --> | 
|---|
|  |  |  | <template v-slot:table-wrap> | 
|---|
|  |  |  | <ul class="toolbar" v-permissions="['business:workorder:create', 'business:workorder:delete']"> | 
|---|
|  |  |  | <li><el-button type="primary" @click="$refs.operaWorkorderWindow.open('新建工单信息表')" icon="el-icon-plus" v-permissions="['business:workorder:create']">新建</el-button></li> | 
|---|
|  |  |  | <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:workorder:delete']">删除</el-button></li> | 
|---|
|  |  |  | <ul class="toolbar" v-permissions="['business:workorder:exportExcel']"> | 
|---|
|  |  |  | <li> <el-button type="primary" :loading="isWorking.export" @click="exportExcel">导出</el-button></li> | 
|---|
|  |  |  | </ul> | 
|---|
|  |  |  | <el-table | 
|---|
|  |  |  | :height="tableHeightNew" | 
|---|
|  |  |  | v-loading="isWorking.search" | 
|---|
|  |  |  | :data="tableData.list" | 
|---|
|  |  |  | stripe | 
|---|
|  |  |  | @selection-change="handleSelectionChange" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-table-column type="selection" width="55"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="id" label="主键" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="categoryId" label="所属分类编(关联category)" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="remark" label="备注" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="status" label="状态 0待确认/待初审 1待分配/待终审 2待处理  3 已撤回 4已处理" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="sortnum" label="排序码" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="type" label="类型 0位置责任人 1班长 2物业主管 3工程师 4SHE负责人 5SHE工单邮箱抄送人" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="memberId" label="上报人员编码(关联member)" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="companyId" label="部门编码" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="submitDate" label="上报时间" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="memberType" label="SHE涉及人员类型 0本人 1同事 2供应商" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="memberQwids" label="SHE涉及人员企业编码集合" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="memberNames" label="SHE涉及人员供应商集合" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="localtionId" label="发生地点/位置编码(关联category)" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="outJiuyi" label="是否外部就医 0否 1是" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="isYiwushi" label="是否医务室 0否 1是" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="isHurted" label="是否受伤 0否 1是" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="workRelated" label="是否和工作相关" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="code"  label="工单号" min-width="150px" fixed> | 
|---|
|  |  |  | <template slot-scope="{row}"> | 
|---|
|  |  |  | <span style="color: #2E68EC;cursor: pointer" @click="$refs.operaWorkorderWindow.open('SHE事件工单详情', row)" >{{ row.code || '-'}}</span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="typeName" label="伤害类型" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="submitDate" label="上报时间" min-width="150px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="status" label="状态" min-width="100px"> | 
|---|
|  |  |  | <template slot-scope="{row}"> | 
|---|
|  |  |  | <span v-if="row.status ==0">待处理</span> | 
|---|
|  |  |  | <span v-else-if="row.status ==4">已处理</span> | 
|---|
|  |  |  | <span v-else-if="row.status ==3">已关闭</span> | 
|---|
|  |  |  | <span v-else>处理中</span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="memberName" label="上报人员" min-width="100px"> | 
|---|
|  |  |  | <template slot-scope="{row}"> | 
|---|
|  |  |  | <span >{{row.memberName}} - {{row.memberPhone||''}}</span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="companyName" label="所在部门" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="memberType" label="涉及人员" min-width="100px"> | 
|---|
|  |  |  | <template slot-scope="{row}"> | 
|---|
|  |  |  | <span v-if="row.memberType == 2">供应商-{{row.memberNames}}</span> | 
|---|
|  |  |  | <span v-else-if="row.memberType == 1">同事-{{row.memberNames}}</span> | 
|---|
|  |  |  | <span v-else>本人</span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="locationName" label="发生地点" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="outJiuyi" label="就医情况" min-width="100px"> | 
|---|
|  |  |  | <template slot-scope="{row}"> | 
|---|
|  |  |  | <span v-if="row.outJiuyi == 0">非外部就医- | 
|---|
|  |  |  | <span v-if="row.isYiwushi == 0">非医务室- | 
|---|
|  |  |  | <span v-if="row.isHurted == 0">未受伤</span> | 
|---|
|  |  |  | <span v-else>受伤</span> | 
|---|
|  |  |  | </span> | 
|---|
|  |  |  | <span v-else>医务室</span> | 
|---|
|  |  |  | </span> | 
|---|
|  |  |  | <span v-else>外部就医</span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="workRelated" label="和工作相关" min-width="100px"> | 
|---|
|  |  |  | <template slot-scope="{row}"> | 
|---|
|  |  |  | <span v-if="row.workRelated == 1">是</span> | 
|---|
|  |  |  | <span v-else>否</span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="eventInfo" label="事件说明" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="emialMemberIds" label="邮件通知人员编码集合" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="qwnoticeMemberIds" label="企业微信通知人员编码集合" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="happenTime" label="发现时间" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="typeId" label="风险类型(关联category)" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="riskInfo" label="风险描述" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="managerId" label="当前物业主管编码(关联member)" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="dealerId" label="当前处理人员编码(关联member)" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="dispatchTime" label="分配时间" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="dispatchInfo" label="分配备注" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="dealTime" label="处理时间" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="dealInfo" label="处理备注" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="problemId" label="DCA问题编码" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="problemNum" label="DCA问题数量" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="locationName" label="位置地点路径名称" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="code" label="工单号" min-width="100px"></el-table-column> | 
|---|
|  |  |  | <el-table-column prop="createDate" label="创建时间" min-width="150px"></el-table-column> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | v-if="containPermissions(['business:workorder:update', 'business:workorder:delete'])" | 
|---|
|  |  |  | label="操作" | 
|---|
|  |  |  | 
|---|
|  |  |  | fixed="right" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="{row}"> | 
|---|
|  |  |  | <el-button type="text" @click="$refs.operaWorkorderWindow.open('编辑工单信息表', row)" icon="el-icon-edit" v-permissions="['business:workorder:update']">编辑</el-button> | 
|---|
|  |  |  | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:workorder:delete']">删除</el-button> | 
|---|
|  |  |  | <el-button type="text" @click="$refs.operaWorkorderWindow.open('SHE事件工单详情', row)" icon="el-icon-zoom-out" >查看详情</el-button> | 
|---|
|  |  |  | <!--<el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:workorder:delete']">删除</el-button>--> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | </el-table> | 
|---|
|  |  |  | 
|---|
|  |  |  | </pagination> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | <!-- 新建/修改 --> | 
|---|
|  |  |  | <OperaWorkorderWindow ref="operaWorkorderWindow" @success="handlePageChange"/> | 
|---|
|  |  |  | <OperaWorkorderDetailSheWindow ref="operaWorkorderWindow" @success="handlePageChange"/> | 
|---|
|  |  |  | </TableLayout> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | import BaseTable from '@/components/base/BaseTable' | 
|---|
|  |  |  | import TableLayout from '@/layouts/TableLayout' | 
|---|
|  |  |  | import SearchFormCollapse from '@/components/common/SearchFormCollapse' | 
|---|
|  |  |  | import Pagination from '@/components/common/Pagination' | 
|---|
|  |  |  | import OperaWorkorderWindow from '@/components/business/OperaWorkorderWindow' | 
|---|
|  |  |  | import OperaWorkorderDetailSheWindow from '@/components/business/OperaWorkorderDetailSheWindow' | 
|---|
|  |  |  | import { treeList } from '@/api/business/category' | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | name: 'Workorder', | 
|---|
|  |  |  | extends: BaseTable, | 
|---|
|  |  |  | components: { SearchFormCollapse, TableLayout, Pagination, OperaWorkorderWindow }, | 
|---|
|  |  |  | components: {TableLayout, Pagination, OperaWorkorderDetailSheWindow }, | 
|---|
|  |  |  | data () { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | // 搜索 | 
|---|
|  |  |  | searchForm: { | 
|---|
|  |  |  | id: '', | 
|---|
|  |  |  | creator: '', | 
|---|
|  |  |  | createDate: '', | 
|---|
|  |  |  | editor: '', | 
|---|
|  |  |  | editDate: '', | 
|---|
|  |  |  | isdeleted: '', | 
|---|
|  |  |  | categoryId: '', | 
|---|
|  |  |  | remark: '', | 
|---|
|  |  |  | status: '', | 
|---|
|  |  |  | sortnum: '', | 
|---|
|  |  |  | type: '', | 
|---|
|  |  |  | memberId: '', | 
|---|
|  |  |  | companyId: '', | 
|---|
|  |  |  | submitDate: '', | 
|---|
|  |  |  | memberType: '', | 
|---|
|  |  |  | memberQwids: '', | 
|---|
|  |  |  | memberNames: '', | 
|---|
|  |  |  | type: '0', | 
|---|
|  |  |  | memberName: '', | 
|---|
|  |  |  | memberCompanyId: '', | 
|---|
|  |  |  | localtionId: '', | 
|---|
|  |  |  | outJiuyi: '', | 
|---|
|  |  |  | isYiwushi: '', | 
|---|
|  |  |  | isHurted: '', | 
|---|
|  |  |  | workRelated: '', | 
|---|
|  |  |  | eventInfo: '', | 
|---|
|  |  |  | emialMemberIds: '', | 
|---|
|  |  |  | qwnoticeMemberIds: '', | 
|---|
|  |  |  | happenTime: '', | 
|---|
|  |  |  | typeId: '', | 
|---|
|  |  |  | riskInfo: '', | 
|---|
|  |  |  | managerId: '', | 
|---|
|  |  |  | dealerId: '', | 
|---|
|  |  |  | dispatchTime: '', | 
|---|
|  |  |  | dispatchInfo: '', | 
|---|
|  |  |  | dealTime: '', | 
|---|
|  |  |  | dealInfo: '', | 
|---|
|  |  |  | problemId: '', | 
|---|
|  |  |  | problemNum: '', | 
|---|
|  |  |  | locationName: '', | 
|---|
|  |  |  | code: '' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | code: '', | 
|---|
|  |  |  | categoryList: [] | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | categoryprops: { | 
|---|
|  |  |  | label: 'name', | 
|---|
|  |  |  | value: 'id', | 
|---|
|  |  |  | checkStrictly: true, | 
|---|
|  |  |  | lazyLoad: this.lazyLoad | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | categorys: [] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | created () { | 
|---|
|  |  |  | 
|---|
|  |  |  | 'field.id': 'id', | 
|---|
|  |  |  | 'field.main': 'id' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.loadCategorys() | 
|---|
|  |  |  | this.search() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | handleChangeCategory (value) { | 
|---|
|  |  |  | if (this.searchForm.categoryList && this.searchForm.categoryList.length >= 1) { | 
|---|
|  |  |  | this.searchForm.typeId = this.searchForm.categoryList[this.searchForm.categoryList.length - 1] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | loadCategorys () { | 
|---|
|  |  |  | treeList({ type: 0 }) | 
|---|
|  |  |  | .then(res => { | 
|---|
|  |  |  | if (res && res.length > 0) { | 
|---|
|  |  |  | res[0].fsStatus = 1 | 
|---|
|  |  |  | this.categorys = this.getCategoryTree(res) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | getCategoryTree (tree) { | 
|---|
|  |  |  | if (tree == null) { | 
|---|
|  |  |  | return [] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return tree.map(item => { | 
|---|
|  |  |  | const newItem = { ...item } | 
|---|
|  |  |  | if (newItem) { | 
|---|
|  |  |  | newItem.children = newItem.childList | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (item.children && item.children.length === 0) { | 
|---|
|  |  |  | this.$delete(newItem, 'children') | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | newItem.children = this.getCategoryTree(newItem.children) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // newItem.disabled = false | 
|---|
|  |  |  | return newItem | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|