1215 lines
49 KiB
Vue
1215 lines
49 KiB
Vue
<template>
|
||
<div class="app-container" id="testExamine">
|
||
<el-form
|
||
:model="queryParams"
|
||
ref="queryForm"
|
||
size="small"
|
||
:inline="true"
|
||
v-show="showSearch"
|
||
label-width="100px"
|
||
>
|
||
<el-form-item label="关键字" prop="keyword">
|
||
<el-input
|
||
v-model="queryParams.keyword"
|
||
placeholder="请输入关键字"
|
||
clearable
|
||
maxlength="50"
|
||
style="width: 240px"
|
||
@keyup.enter.native="handleQuery"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item label="单位名称" prop="backUnit">
|
||
<el-select
|
||
v-model="queryParams.backUnit"
|
||
placeholder="请选择单位名称"
|
||
clearable
|
||
filterable
|
||
style="width: 240px"
|
||
>
|
||
<el-option
|
||
v-for="dict in unitInfoSelectList"
|
||
:key="dict.unitId"
|
||
:label="dict.unitName"
|
||
:value="dict.unitId"
|
||
/>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="工程名称" prop="backPro">
|
||
<el-select
|
||
v-model="queryParams.backPro"
|
||
placeholder="请选择工程名称"
|
||
clearable
|
||
filterable
|
||
style="width: 240px"
|
||
>
|
||
<el-option
|
||
v-for="dict in projectSelectList"
|
||
:key="dict.projectId"
|
||
:label="dict.projectName"
|
||
:value="dict.projectId"
|
||
/>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="工机具类型" prop="type">
|
||
<!-- <selectTree-->
|
||
<!-- ref="mychild"-->
|
||
<!-- style="width: 240px"-->
|
||
<!-- :treeList="deptList"-->
|
||
<!-- :treeProps="{-->
|
||
<!-- children: 'children',-->
|
||
<!-- label: 'label',-->
|
||
<!-- }"-->
|
||
<!-- nodeKey="id"-->
|
||
<!-- :defaultSelect="true"-->
|
||
<!-- :defaultData="defaultData"-->
|
||
<!-- :clearable="true"-->
|
||
<!-- :placeholder="'请选择'"-->
|
||
<!-- @handleNodeClick="selectDrop"-->
|
||
<!-- ></selectTree>-->
|
||
<Tree ref="mychildSon" :width="240" :dataList="deptList" @changeId="selectDrop"></Tree>
|
||
</el-form-item>
|
||
<el-form-item label="修试审核单号" prop="backCode">
|
||
<el-input
|
||
v-model="queryParams.backCode"
|
||
placeholder="请选择修试审核单号"
|
||
clearable
|
||
maxlength="50"
|
||
style="width: 240px"
|
||
@keyup.enter.native="handleQuery"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item label="修试审核状态" prop="taskStatus">
|
||
<el-select
|
||
v-model="queryParams.taskStatus"
|
||
placeholder="请选择修试审核状态"
|
||
clearable
|
||
filterable
|
||
style="width: 240px"
|
||
>
|
||
<el-option v-for="dict in dicSelectList" :key="dict.id" :label="dict.name" :value="dict.id" />
|
||
</el-select>
|
||
</el-form-item>
|
||
|
||
<el-form-item label="任务创建时间">
|
||
<el-date-picker
|
||
v-model="dateRange"
|
||
style="width: 240px"
|
||
value-format="yyyy-MM-dd"
|
||
type="daterange"
|
||
range-separator="-"
|
||
start-placeholder="开始日期"
|
||
end-placeholder="结束日期"
|
||
></el-date-picker>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<el-button type="primary" 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" plain icon="el-icon-plus" size="mini" :disabled="multiple" @click="checkClick"
|
||
>批量审核</el-button
|
||
>
|
||
</el-col>
|
||
<el-col :span="1.5">
|
||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
|
||
>导出</el-button
|
||
>
|
||
</el-col>
|
||
|
||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||
</el-row>
|
||
<el-table v-loading="loading" :data="typeList" @selection-change="handleSelectionChange" border>
|
||
<el-table-column type="selection" width="55" align="center" :selectable="selectable" />
|
||
<el-table-column
|
||
label="序号"
|
||
align="center"
|
||
width="80"
|
||
type="index"
|
||
:index="indexContinuation(queryParams.pageNum, queryParams.pageSize)"
|
||
>
|
||
<!-- <template slot-scope="scope">
|
||
<span>{{
|
||
(queryParams.pageNum - 1) * 10 + scope.$index + 1
|
||
}}</span>
|
||
</template> -->
|
||
</el-table-column>
|
||
<el-table-column label="修试审核单号" align="center" prop="scrapNum" show-overflow-tooltip />
|
||
<el-table-column label="单位名称" align="center" prop="unitName" show-overflow-tooltip />
|
||
<el-table-column label="工程名称" align="center" prop="projectName" show-overflow-tooltip />
|
||
<el-table-column label="机具类型" align="center" prop="itemType" show-overflow-tooltip />
|
||
<el-table-column label="任务创建人" align="center" prop="createBy" show-overflow-tooltip />
|
||
<el-table-column label="任务创建时间" align="center" prop="createTime" show-overflow-tooltip />
|
||
<el-table-column label="维修单号" align="center" prop="repairNum" show-overflow-tooltip />
|
||
|
||
<el-table-column label="审核状态" align="center" prop="taskStatusName" show-overflow-tooltip />
|
||
<el-table-column label="不通过原因" align="center" prop="remark" show-overflow-tooltip />
|
||
<el-table-column label="操作" align="center">
|
||
<template slot-scope="scope">
|
||
<el-button size="mini" type="text" icon="el-icon-zoom-in" @click="handleSee(scope.row, 'see')"
|
||
>查看</el-button
|
||
>
|
||
<!-- -->
|
||
<el-button
|
||
size="mini"
|
||
type="text"
|
||
icon="el-icon-circle-check"
|
||
:disabled="scope.row.taskStatus !== 46"
|
||
@click="handleUpdate(scope.row, 'update')"
|
||
>审核</el-button
|
||
>
|
||
<el-button size="mini" type="text" icon="el-icon-document" @click="openUpkeep(scope.row)"
|
||
>保养记录表</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="dialogTitle" :visible.sync="open" width="1300px" append-to-body :before-close="onClose">
|
||
<el-form
|
||
:model="dialogQueryParams"
|
||
ref="queryForm"
|
||
size="small"
|
||
:inline="true"
|
||
v-show="showSearch"
|
||
label-width="100px"
|
||
>
|
||
<el-row>
|
||
<el-form-item label="关键字" prop="keyword">
|
||
<el-input
|
||
v-model="dialogQueryParams.keyword"
|
||
placeholder="请输入关键字"
|
||
:clearable="false"
|
||
maxlength="50"
|
||
style="width: 240px"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item label="机具名称" prop="typeName">
|
||
<!-- <treeselect
|
||
style="width: 250px"
|
||
v-model="dialogQueryParams.typeName"
|
||
:options="deptList"
|
||
:normalizer="normalizer"
|
||
placeholder="请选择类型名称"
|
||
/> -->
|
||
<selectTree
|
||
ref="mychildDialog"
|
||
style="width: 240px"
|
||
:treeList="deptList"
|
||
:treeProps="{
|
||
children: 'children',
|
||
label: 'label',
|
||
}"
|
||
nodeKey="id"
|
||
:defaultSelect="true"
|
||
:defaultData="defaultData"
|
||
:clearable="false"
|
||
:placeholder="'请选择'"
|
||
@handleNodeClick="selectDropDialog"
|
||
></selectTree>
|
||
</el-form-item>
|
||
<el-form-item label="规格型号" prop="type">
|
||
<selectTree
|
||
ref="mychildDialogTwo"
|
||
style="width: 240px"
|
||
:treeList="deptTypeList"
|
||
:treeProps="{
|
||
children: 'children',
|
||
label: 'label',
|
||
}"
|
||
nodeKey="id"
|
||
:defaultSelect="true"
|
||
:defaultData="defaultData"
|
||
:clearable="false"
|
||
:placeholder="'请选择'"
|
||
@handleNodeClick="selectDropDialogTwo"
|
||
></selectTree>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<el-button type="primary" icon="el-icon-search" size="mini" @click="getdialogList"
|
||
>查询</el-button
|
||
>
|
||
<el-button icon="el-icon-refresh" size="mini" @click="resetQueryDialog">重置</el-button>
|
||
</el-form-item>
|
||
</el-row>
|
||
</el-form>
|
||
|
||
<el-table
|
||
v-loading="loading"
|
||
:data="dialogList"
|
||
height="500px"
|
||
@selection-change="handleDialogSelectionChange"
|
||
>
|
||
<el-table-column type="selection" width="55" align="center" :selectable="selectableDialog" />
|
||
<!-- <el-table-column
|
||
label="序号"
|
||
align="center"
|
||
width="80"
|
||
type="index"
|
||
>
|
||
<template scope="scope">
|
||
<span>{{
|
||
(dialogQueryParams.pageNum - 1) * 10 +
|
||
scope.$index +
|
||
1
|
||
}}</span>
|
||
</template>
|
||
</el-table-column> -->
|
||
<el-table-column
|
||
align="center"
|
||
label="序号"
|
||
type="index"
|
||
:index="indexContinuation(queryParams.pageNum, queryParams.pageSize)"
|
||
/>
|
||
<el-table-column label="机具名称" align="center" prop="machineTypeName" :show-overflow-tooltip="true" />
|
||
<el-table-column
|
||
label="规格型号"
|
||
align="center"
|
||
prop="specificationType"
|
||
:show-overflow-tooltip="true"
|
||
/>
|
||
<el-table-column label="编码" align="center" prop="maCode" width="200" :show-overflow-tooltip="true" />
|
||
<el-table-column label="维修总量" align="center" prop="repairNum" :show-overflow-tooltip="true" />
|
||
<el-table-column label="维修数量" align="center" prop="repairedNum" :show-overflow-tooltip="true" />
|
||
<el-table-column label="报废数量" align="center" prop="scrapNum" :show-overflow-tooltip="true" />
|
||
<el-table-column label="状态" align="center" prop="status" :show-overflow-tooltip="true">
|
||
<template slot-scope="scope">
|
||
<span v-if="scope.row.status == '0'">未审核</span>
|
||
<span v-if="scope.row.status == '1'">通过</span>
|
||
<span v-if="scope.row.status == '2'">驳回</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="附件" align="center" prop="fileList" :show-overflow-tooltip="true">
|
||
<template slot-scope="scope">
|
||
<el-upload
|
||
class="upload-demo"
|
||
:action="uploadUrl"
|
||
:headers="headers"
|
||
accept="image/*,application/pdf,.doc,.docx"
|
||
multiple
|
||
:limit="5"
|
||
:on-preview="handlePreview"
|
||
:before-remove="beforeRemove"
|
||
:on-remove="(file, fileList) => handleRemove(file, fileList, scope.row)"
|
||
:on-exceed="handleExceed"
|
||
:before-upload="beforeUpload"
|
||
:file-list="scope.row.fileList"
|
||
:on-success="(res, file, fileList) => handleSuccess(res, file, fileList, scope.row)"
|
||
>
|
||
<el-button size="small" type="text">点击上传</el-button>
|
||
</el-upload>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200px">
|
||
<template slot-scope="scope">
|
||
<el-button size="mini" type="primary" icon="el-icon-zoom-in" @click="repairRecord(scope.row)"
|
||
>维修记录</el-button
|
||
>
|
||
<!-- <el-button
|
||
size="mini"
|
||
type="warning"
|
||
icon="el-icon-circle-check"
|
||
@click="partRecord(scope.row)"
|
||
>配件详情</el-button> -->
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<pagination
|
||
v-show="dialogTotal > 0"
|
||
:total="dialogTotal"
|
||
:page.sync="dialogQueryParams.pageNum"
|
||
:limit.sync="dialogQueryParams.pageSize"
|
||
@pagination="getdialogList"
|
||
/>
|
||
|
||
<div
|
||
slot="footer"
|
||
class="dialog-footer-btn"
|
||
style="text-align: center"
|
||
v-if="type == 'update' && dialogList.length !== 0"
|
||
>
|
||
<el-button type="primary" @click="submitForm(1)" :disabled="dialogMultiple">通过</el-button>
|
||
<el-button @click="returnSubmit(1)" :disabled="dialogMultiple">不通过</el-button>
|
||
</div>
|
||
</el-dialog>
|
||
|
||
<!-- 维修记录 -->
|
||
<el-dialog
|
||
v-loading.fullscreen.lock="fullscreenLoading"
|
||
:title="title"
|
||
:visible.sync="openRepairRecord"
|
||
append-to-body
|
||
width="1200px"
|
||
>
|
||
<el-table :data="repairRecordList" height="450px">
|
||
<el-table-column label="序号" align="center" width="80" type="index">
|
||
<template slot-scope="scope">
|
||
<span>{{ (repairRecordParams.pageNum - 1) * 10 + scope.$index + 1 }}</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="维修内容" align="center" prop="repairContent" :show-overflow-tooltip="true" />
|
||
<el-table-column label="维修数量" align="center" prop="repairNum" :show-overflow-tooltip="true" />
|
||
<el-table-column label="维修人" align="center" prop="repairer" :show-overflow-tooltip="true" />
|
||
<el-table-column label="维修方式" align="center" prop="repairType" :show-overflow-tooltip="true">
|
||
<template slot-scope="scope">
|
||
<span v-if="scope.row.repairType == '1'">内部</span>
|
||
<span v-if="scope.row.repairType == '2'">返厂</span>
|
||
<span v-if="scope.row.repairType == '3'">报废</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="返厂名称" align="center" prop="supplier" :show-overflow-tooltip="true" />
|
||
<el-table-column label="报废原因" align="center" prop="scrapReason" :show-overflow-tooltip="true" />
|
||
<el-table-column label="报废数量" align="center" prop="scrapNum" :show-overflow-tooltip="true" />
|
||
<el-table-column label="报废类型" align="center" prop="scrapType" :show-overflow-tooltip="true">
|
||
<template slot-scope="scope">
|
||
<span v-if="scope.row.scrapType == '0'">自然报废</span>
|
||
<span v-if="scope.row.scrapType == '1'">人为报废</span>
|
||
</template>
|
||
</el-table-column>
|
||
<!-- <el-table-column-->
|
||
<!-- label="配件名称"-->
|
||
<!-- align="center"-->
|
||
<!-- prop="partName"-->
|
||
<!-- :show-overflow-tooltip="true"-->
|
||
<!-- />-->
|
||
<el-table-column label="配件数量" align="center" prop="partNum" :show-overflow-tooltip="true">
|
||
<template slot-scope="scope">
|
||
<span @click="partRecord(scope.row)" style="color: blue; text-decoration: underline">{{
|
||
scope.row.partNum
|
||
}}</span>
|
||
</template>
|
||
</el-table-column>
|
||
|
||
<!-- <el-table-column-->
|
||
<!-- label="配件单价"-->
|
||
<!-- align="center"-->
|
||
<!-- prop="partPrice"-->
|
||
<!-- :show-overflow-tooltip="true"-->
|
||
<!-- />-->
|
||
<el-table-column label="类型" align="center" prop="partType" :show-overflow-tooltip="true">
|
||
<template slot-scope="scope">
|
||
<span v-if="scope.row.partType == '0'">不收费</span>
|
||
<span v-if="scope.row.partType == '1'">收费</span>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<pagination
|
||
v-show="repairRecordTotal > 0"
|
||
:total="repairRecordTotal"
|
||
:page.sync="repairRecordParams.pageNum"
|
||
:limit.sync="repairRecordParams.pageSize"
|
||
@pagination="getRepairRecordList"
|
||
/>
|
||
</el-dialog>
|
||
|
||
<!-- 维修记录 -->
|
||
<el-dialog
|
||
v-loading.fullscreen.lock="fullscreenLoading"
|
||
:title="title"
|
||
:visible.sync="openPartRecord"
|
||
append-to-body
|
||
width="1200px"
|
||
>
|
||
<el-table :data="partRecordList" height="450px">
|
||
<el-table-column label="序号" align="center" width="80" type="index">
|
||
<template slot-scope="scope">
|
||
<span>{{ (partRecordParams.pageNum - 1) * 10 + scope.$index + 1 }}</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="配件名称" align="center" prop="partName" :show-overflow-tooltip="true" />
|
||
<el-table-column label="配件数量" align="center" prop="partNum" :show-overflow-tooltip="true" />
|
||
<el-table-column label="配件费用" align="center" prop="partCost" :show-overflow-tooltip="true" />
|
||
<!-- <el-table-column-->
|
||
<!-- label="类型"-->
|
||
<!-- align="center"-->
|
||
<!-- prop="partType"-->
|
||
<!-- :show-overflow-tooltip="true"-->
|
||
<!-- >-->
|
||
<!-- <template slot-scope="scope">-->
|
||
<!-- <span v-if="scope.row.partType == '0'">不收费</span>-->
|
||
<!-- <span v-if="scope.row.partType == '1'">收费</span>-->
|
||
<!-- </template>-->
|
||
<!-- </el-table-column>-->
|
||
<el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
|
||
</el-table>
|
||
<pagination
|
||
v-show="partRecordTotal > 0"
|
||
:total="partRecordTotal"
|
||
:page.sync="partRecordParams.pageNum"
|
||
:limit.sync="partRecordParams.pageSize"
|
||
@pagination="getPartRecordList"
|
||
/>
|
||
</el-dialog>
|
||
|
||
<el-dialog
|
||
v-loading.fullscreen.lock="fullscreenLoading"
|
||
:title="title"
|
||
:visible.sync="openOne"
|
||
append-to-body
|
||
width="400px"
|
||
>
|
||
<div class="submit_box">
|
||
<div>
|
||
<i class="el-icon-circle-check" style="color: #ff9900; font-size: 30px"></i>
|
||
</div>
|
||
<div class="submit_box_title">
|
||
<div>{{ openTextOne }}</div>
|
||
<div>{{ openTextTwo }}</div>
|
||
</div>
|
||
</div>
|
||
<div slot="footer" class="dialog-footer">
|
||
<el-button @click="submitOpenOneFeturn">返回</el-button>
|
||
<el-button type="primary" @click="submitOpenOneForm()">确定</el-button>
|
||
</div>
|
||
</el-dialog>
|
||
<el-dialog
|
||
v-loading.fullscreen.lock="fullscreenLoading"
|
||
:title="title"
|
||
:visible.sync="openTwo"
|
||
append-to-body
|
||
width="400px"
|
||
:before-close="openTextThreeClose"
|
||
>
|
||
<div class="submit_box_two">
|
||
<div>
|
||
<i class="el-icon-circle-check" style="color: #00c196; font-size: 30px"></i>
|
||
</div>
|
||
<div class="submit_box_title">{{ openTextThree }}</div>
|
||
</div>
|
||
<div slot="footer" class="dialog-footer"></div>
|
||
</el-dialog>
|
||
<el-dialog
|
||
v-loading.fullscreen.lock="fullscreenLoading"
|
||
:title="title"
|
||
:visible.sync="openThree"
|
||
append-to-body
|
||
width="800px"
|
||
>
|
||
<div class="submit_box">
|
||
<el-form ref="form" :model="form" :rules="rules" label-width="140px">
|
||
<el-form-item label="请输入驳回原因:" prop="remark">
|
||
<el-input
|
||
style="width: 600px"
|
||
type="textarea"
|
||
v-model="form.remark"
|
||
:autosize="{ minRows: 2, maxRows: 4 }"
|
||
show-word-limit
|
||
maxlength="100"
|
||
></el-input>
|
||
</el-form-item>
|
||
</el-form>
|
||
</div>
|
||
<div slot="footer" class="dialog-footer">
|
||
<el-button @click="formCancel">返回</el-button>
|
||
<el-button type="primary" @click="formSubmit">保存</el-button>
|
||
</div>
|
||
</el-dialog>
|
||
<el-dialog
|
||
v-loading.fullscreen.lock="fullscreenLoading"
|
||
:title="title"
|
||
:visible.sync="openFour"
|
||
append-to-body
|
||
width="400px"
|
||
>
|
||
<div class="submit_box_openFour"> 你选择了{{ selectionList.length }}条数据,请进行审批 </div>
|
||
<div slot="footer" class="dialog-footer">
|
||
<el-button @click="submitForm(2)" type="primary">通过</el-button>
|
||
<el-button @click="returnSubmit(2)">不通过</el-button>
|
||
</div>
|
||
</el-dialog>
|
||
|
||
<!-- 维修记录表 -->
|
||
<el-dialog title="维修记录表" :visible.sync="upkeepVisible" width="46%">
|
||
<vue-easy-print tableShow ref="printRef">
|
||
<div style="padding: 0 30px">
|
||
<h2 style="text-align: center; font-size: 33px">重庆市送变电工程有限公司</h2>
|
||
<h3 style="text-align: center; font-size: 28px">设备维修保养记录表</h3>
|
||
<div
|
||
style="
|
||
border: 1px solid #000;
|
||
min-height: 800px;
|
||
line-height: 1.9;
|
||
font-size: 20px;
|
||
position: relative;
|
||
box-sizing: border-box;
|
||
width: 100%;
|
||
"
|
||
>
|
||
<!-- 第一行 -->
|
||
<div style="display: flex; border-bottom: 1px solid #000">
|
||
<div style="text-align: center; border-right: 1px solid #000; width: 25%">设备名称</div>
|
||
<div style="text-align: center; border-right: 1px solid #000; width: 25%">型号厂家</div>
|
||
<div style="text-align: center; border-right: 1px solid #000; width: 18%">编号</div>
|
||
<div style="text-align: center; border-right: 1px solid #000; width: 12%">数量</div>
|
||
<div style="text-align: center; border-right: 1px solid #000; width: 20%">主修人</div>
|
||
<div style="text-align: center; width: 20%">验收人</div>
|
||
</div>
|
||
<!-- 第二行 -->
|
||
<div style="display: flex; border-bottom: 1px solid #000">
|
||
<div style="text-align: center; border-right: 1px solid #000; width: 25%">{{
|
||
upkeepObj.typeName
|
||
}}</div>
|
||
<div style="text-align: center; border-right: 1px solid #000; width: 25%">{{
|
||
upkeepObj.itemType
|
||
}}</div>
|
||
<div
|
||
style="
|
||
text-align: center;
|
||
border-right: 1px solid #000;
|
||
width: calc(18%);
|
||
white-space: pre-wrap;
|
||
word-break: break-word;
|
||
"
|
||
><span style="margin: 0 5px">{{ upkeepObj.repairNum }}</span></div
|
||
>
|
||
<div style="text-align: center; border-right: 1px solid #000; width: 12%">{{
|
||
upkeepObj.num
|
||
}}</div>
|
||
<div style="text-align: center; border-right: 1px solid #000; width: 20%">{{
|
||
upkeepObj.createBy
|
||
}}</div>
|
||
<div style="text-align: center; width: 20%">{{ upkeepObj.createBy }}</div>
|
||
</div>
|
||
<!-- 第三行 -->
|
||
<div style="display: flex; border-bottom: 1px solid #000">
|
||
<div style="padding-left: 10px; border-right: 1px solid #000; width: 20.85%">设备名称</div>
|
||
<div style="padding-left: 10px">{{ upkeepObj.unitName }} {{ upkeepObj.projectName }}</div>
|
||
</div>
|
||
<!-- 第四行 -->
|
||
<div style="width: 100%; min-height: 200px; border-bottom: 1px solid #000; padding-left: 10px"
|
||
>设备维修前情况:
|
||
</div>
|
||
<!-- 第五行 -->
|
||
<div style="width: 100%; min-height: 200px; border-bottom: 1px solid #000; padding-left: 10px"
|
||
>技术鉴定情况:
|
||
</div>
|
||
<!-- 第六行 -->
|
||
<div style="width: 100%; min-height: 200px; padding-left: 10px">维修处理情况: </div>
|
||
<div
|
||
style="
|
||
width: 100%;
|
||
border-top: 1px solid #000;
|
||
padding-left: 10px;
|
||
position: absolute;
|
||
bottom: 20px;
|
||
left: 0;
|
||
"
|
||
>验收情况:
|
||
</div>
|
||
</div>
|
||
<div style="text-align: end; font-size: 20px; margin-top: 20px">
|
||
<span>{{ '2025' }} 年 </span>
|
||
<span>{{ '3' }} 月 </span>
|
||
<span>{{ '10' }} 日 </span>
|
||
</div>
|
||
</div>
|
||
</vue-easy-print>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button type="primary" @click="print">打 印</el-button>
|
||
<el-button @click="upkeepVisible = false">关 闭</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import {
|
||
getQuestListApi,
|
||
getRepairAuditListApi,
|
||
addDetailsAuditApi,
|
||
getRepairRecord,
|
||
getPartRecord,
|
||
} from '@/api/repairTest/testExamine'
|
||
import { getProjectList } from '@/api/claimAndRefund/receive'
|
||
import {
|
||
getUnitInfoSelectApi,
|
||
getProjectSelectApi,
|
||
getDicSelectApi,
|
||
listPartTypeApi,
|
||
getMaTypeSelectApi,
|
||
} from '@/api/repairTest/repair'
|
||
import selectTree from '../repair/selectTree.vue'
|
||
import Tree from '@/views/repairTest/repair/tree.vue'
|
||
import vueEasyPrint from 'vue-easy-print'
|
||
export default {
|
||
name: 'TestExamine',
|
||
components: { Tree, selectTree, vueEasyPrint },
|
||
dicts: ['sys_normal_disable'],
|
||
data() {
|
||
return {
|
||
uploadUrl: process.env.VUE_APP_BASE_API + '/system/sys/file/upload', // 上传的图片服务器地址
|
||
headers: {
|
||
Authorization: 'Bearer ' + localStorage.getItem('token'),
|
||
},
|
||
checkResultOne: false,
|
||
defaultData: null,
|
||
selectionList: [],
|
||
unitInfoSelectList: [],
|
||
projectSelectList: [],
|
||
dicSelectList: [],
|
||
dialogList: [],
|
||
deptList: [],
|
||
deptTypeList: [],
|
||
rowObj: {},
|
||
fullscreenLoading: false,
|
||
openOne: false,
|
||
openTwo: false,
|
||
openThree: false,
|
||
openFour: false,
|
||
openTextOne: '',
|
||
openTextTwo: '',
|
||
openTextThree: '',
|
||
type: '',
|
||
// 遮罩层
|
||
loading: false,
|
||
// 选中数组
|
||
ids: [],
|
||
dialogIds: [],
|
||
// 非单个禁用
|
||
single: true,
|
||
// 非多个禁用
|
||
multiple: true,
|
||
// 非单个禁用
|
||
dialogSingle: true,
|
||
// 非多个禁用
|
||
dialogMultiple: true,
|
||
// 显示搜索条件
|
||
showSearch: true,
|
||
// 总条数
|
||
total: 0,
|
||
dialogTotal: 0,
|
||
// 字典表格数据
|
||
typeList: [],
|
||
// 弹出层标题
|
||
title: '',
|
||
dialogTitle: '',
|
||
// 是否显示弹出层
|
||
open: false,
|
||
// 日期范围
|
||
dateRange: [],
|
||
// 查询参数
|
||
queryParams: {
|
||
pageNum: 1,
|
||
pageSize: 10,
|
||
keyword: '',
|
||
backUnit: '',
|
||
backPro: '',
|
||
type: '',
|
||
backCode: '',
|
||
taskStatus: '',
|
||
},
|
||
dialogQueryParams: {
|
||
pageNum: 1,
|
||
pageSize: 10,
|
||
},
|
||
// 表单参数
|
||
form: {},
|
||
// 表单校验
|
||
rules: {
|
||
remark: [
|
||
{
|
||
required: true,
|
||
message: '原因不能为空',
|
||
trigger: 'blur',
|
||
},
|
||
|
||
{
|
||
min: 1,
|
||
max: 100,
|
||
message: '长度在 1 到 100 个字符',
|
||
trigger: 'blur',
|
||
},
|
||
],
|
||
},
|
||
repairId: '',
|
||
openRepairRecord: false,
|
||
repairRecordList: [],
|
||
repairRecordParams: {
|
||
pageNum: 1,
|
||
pageSize: 10,
|
||
},
|
||
repairRecordTotal: 0,
|
||
openPartRecord: false,
|
||
partRecordList: [],
|
||
partRecordParams: {
|
||
pageNum: 1,
|
||
pageSize: 10,
|
||
},
|
||
partRecordTotal: 0,
|
||
upkeepVisible: false, // 维修记录表
|
||
upkeepObj: {},
|
||
}
|
||
},
|
||
created() {
|
||
this.getList()
|
||
getUnitInfoSelectApi().then((res) => {
|
||
this.unitInfoSelectList = res.data
|
||
})
|
||
getProjectList().then((res) => {
|
||
this.projectSelectList = res.data
|
||
})
|
||
getDicSelectApi({ value: 'ws_shenhe' }).then((res) => {
|
||
this.dicSelectList = res.data
|
||
})
|
||
this.getTree()
|
||
},
|
||
|
||
methods: {
|
||
/** 查询字典类型列表 */
|
||
getList() {
|
||
this.loading = true
|
||
getQuestListApi(this.addDateRange(this.queryParams, this.dateRange)).then((response) => {
|
||
this.typeList = response.rows
|
||
this.total = response.total
|
||
this.loading = false
|
||
})
|
||
},
|
||
// 封装弹框页面查询
|
||
getdialogList() {
|
||
let params = {
|
||
taskId: this.rowObj.taskId,
|
||
pageNum: this.dialogQueryParams.pageNum,
|
||
keyword: this.dialogQueryParams.keyword,
|
||
typeName: this.dialogQueryParams.typeName,
|
||
type: this.dialogQueryParams.type,
|
||
pageSize: this.dialogQueryParams.pageSize,
|
||
}
|
||
// this.loading = true;
|
||
getRepairAuditListApi(params)
|
||
.then((response) => {
|
||
if (response.code == 200) {
|
||
// this.loading = false;
|
||
this.open = true
|
||
this.dialogList = response.rows
|
||
this.dialogTotal = response.total
|
||
this.repairId = rows.repairId
|
||
}
|
||
})
|
||
.catch(() => {})
|
||
},
|
||
checkClick() {
|
||
this.title = '审批'
|
||
this.openFour = true
|
||
},
|
||
// 取消按钮
|
||
cancel() {
|
||
this.open = false
|
||
this.reset()
|
||
},
|
||
// 表单重置
|
||
reset() {
|
||
this.form = {
|
||
dictId: undefined,
|
||
dictName: undefined,
|
||
dictType: undefined,
|
||
status: '0',
|
||
remark: undefined,
|
||
}
|
||
this.resetForm('form')
|
||
},
|
||
onClose() {
|
||
this.open = false
|
||
this.queryParams.type = ''
|
||
// this.resetQueryDialog()
|
||
this.getList()
|
||
},
|
||
resetQueryDialog() {
|
||
this.dialogQueryParams = {}
|
||
this.resetForm('dialogQueryParams')
|
||
this.$refs.mychildDialog.clearSelect()
|
||
this.$refs.mychildDialogTwo.clearSelect()
|
||
this.dialogQueryParams.pageNum = 1
|
||
this.dialogQueryParams.pageSize = 10
|
||
this.getdialogList()
|
||
},
|
||
selectDrop(value) {
|
||
this.queryParams.type = value
|
||
},
|
||
selectDropDialog(value) {
|
||
this.dialogQueryParams.typeName = value
|
||
},
|
||
selectDropDialogTwo(value) {
|
||
this.dialogQueryParams.type = value
|
||
},
|
||
getTree() {
|
||
listPartTypeApi().then((response) => {
|
||
this.deptList = response.data
|
||
// this.deptList = this.handleTree(response.data, "id");
|
||
})
|
||
getMaTypeSelectApi().then((response) => {
|
||
this.deptTypeList = response.data
|
||
})
|
||
},
|
||
/** 搜索按钮操作 */
|
||
handleQuery() {
|
||
this.queryParams.pageNum = 1
|
||
this.getList()
|
||
},
|
||
/** 重置按钮操作 */
|
||
resetQuery() {
|
||
this.dateRange = []
|
||
this.queryParams.backUnit = ''
|
||
this.queryParams.backPro = ''
|
||
this.resetForm('queryForm')
|
||
this.$refs.mychildSon.inputValue = ''
|
||
this.queryParams.type = ''
|
||
this.handleQuery()
|
||
},
|
||
/** 新增按钮操作 */
|
||
handleAdd() {
|
||
this.reset()
|
||
this.open = true
|
||
this.title = '新建'
|
||
},
|
||
selectable(row) {
|
||
if (row.taskStatus == 46) {
|
||
return true
|
||
} else {
|
||
return false
|
||
}
|
||
},
|
||
selectableDialog(row) {
|
||
if (row.status == '0') {
|
||
return true
|
||
} else {
|
||
return false
|
||
}
|
||
},
|
||
// 多选框选中数据
|
||
handleSelectionChange(selection) {
|
||
this.selectionList = selection
|
||
this.checkResultOne = selection.every((item) => item.taskStatus == 46)
|
||
this.ids = selection.map((item) => item.dictId)
|
||
this.single = selection.length != 1
|
||
this.multiple = !selection.length
|
||
// console.log(this.checkResultOne)
|
||
console.log(this.checkResultOne)
|
||
},
|
||
handleDialogSelectionChange(selection) {
|
||
this.dialogIds = selection.map((item) => item)
|
||
this.dialogSingle = selection.length != 1
|
||
this.dialogMultiple = !selection.length
|
||
console.log(this.checkResultOne)
|
||
},
|
||
handleSee(row, type) {
|
||
this.dialogTitle = '查看'
|
||
this.rowObj = row
|
||
this.reset()
|
||
this.type = type
|
||
this.getdialogList()
|
||
},
|
||
/** 修改按钮操作 */
|
||
handleUpdate(row, type) {
|
||
this.dialogTitle = '审核'
|
||
this.rowObj = row
|
||
this.reset()
|
||
this.type = type
|
||
this.getdialogList()
|
||
},
|
||
/** 提交按钮 */
|
||
submitForm(val) {
|
||
// val 1代表对话框中审核 2代表批量审核
|
||
this.checkResult = val
|
||
this.openOne = true
|
||
this.openFour = false
|
||
this.openTextOne = '确定审批通过么?'
|
||
this.openTextTwo = '确定审批通过么?'
|
||
},
|
||
submitOpenOneForm() {
|
||
this.openOne = false
|
||
this.open = false
|
||
// val 1代表对话框中审核 2代表批量审核
|
||
if (this.checkResult == 1) {
|
||
let taskIdList = []
|
||
taskIdList.push(this.rowObj.taskId)
|
||
let params = {
|
||
checkResult: '通过',
|
||
taskIdList: taskIdList,
|
||
auditDetailList: this.dialogIds,
|
||
}
|
||
// console.log(params)
|
||
addDetailsAuditApi(params)
|
||
.then((res) => {
|
||
this.openTwo = true
|
||
this.open = false
|
||
this.openTextThree = '审批通过!'
|
||
// this.getdialogList()
|
||
this.getList()
|
||
})
|
||
.catch(() => {})
|
||
}
|
||
if (this.checkResult == 2) {
|
||
let taskIdList = []
|
||
this.selectionList.map((item) => {
|
||
taskIdList.push(item.taskId)
|
||
})
|
||
let params = {
|
||
checkResult: '通过',
|
||
taskIdList: taskIdList,
|
||
}
|
||
addDetailsAuditApi(params)
|
||
.then((res) => {
|
||
this.openTwo = true
|
||
this.openTextThree = '审批通过!'
|
||
this.getList()
|
||
})
|
||
.catch(() => {})
|
||
}
|
||
},
|
||
openTextThreeClose() {
|
||
this.open = false
|
||
this.openOne = false
|
||
this.openTwo = false
|
||
this.openThree = false
|
||
this.openFour = false
|
||
this.getList()
|
||
},
|
||
|
||
submitOpenOneFeturn() {
|
||
this.openOne = false
|
||
},
|
||
//维修记录
|
||
repairRecord(row) {
|
||
this.repairRecordParams.pageNum = 1
|
||
this.repairRecordParams.pageSize = 10
|
||
this.repairId = row.repairId
|
||
console.log(this.repairId, 'repairId')
|
||
this.getRepairRecordList()
|
||
},
|
||
getRepairRecordList() {
|
||
let params = {
|
||
repairId: this.repairId,
|
||
pageNum: this.repairRecordParams.pageNum,
|
||
pageSize: this.repairRecordParams.pageSize,
|
||
}
|
||
getRepairRecord(params)
|
||
.then((res) => {
|
||
this.repairRecordList = res.rows
|
||
this.repairRecordTotal = res.total
|
||
this.openRepairRecord = true
|
||
this.title = '维修记录'
|
||
})
|
||
.catch(() => {})
|
||
},
|
||
//配件详情
|
||
partRecord(row) {
|
||
this.partRecordParams.pageNum = 1
|
||
this.partRecordParams.pageSize = 10
|
||
|
||
// this.repairId = row.repairId
|
||
// console.log(row, 'row===============')
|
||
console.log(this.repairId)
|
||
console.log(111111111111)
|
||
this.getPartRecordList(row)
|
||
},
|
||
getPartRecordList() {
|
||
let params = {
|
||
repairId: this.repairId,
|
||
pageNum: this.partRecordParams.pageNum,
|
||
pageSize: this.partRecordParams.pageSize,
|
||
}
|
||
console.log(params)
|
||
getPartRecord(params)
|
||
.then((res) => {
|
||
this.partRecordList = res.rows
|
||
this.partRecordTotal = res.total
|
||
this.openPartRecord = true
|
||
this.title = '配件详情'
|
||
})
|
||
.catch(() => {})
|
||
},
|
||
|
||
returnSubmit(val) {
|
||
this.checkResult = val
|
||
this.title = '驳回原因'
|
||
this.openThree = true
|
||
},
|
||
formCancel() {
|
||
this.$refs.form.resetFields()
|
||
this.openThree = false
|
||
},
|
||
formSubmit() {
|
||
this.$refs.form.validate((valid) => {
|
||
if (valid) {
|
||
if (this.checkResult == 1) {
|
||
let taskIdList = []
|
||
taskIdList.push(this.rowObj.taskId)
|
||
let params = {
|
||
checkResult: '不通过',
|
||
taskIdList: taskIdList,
|
||
auditDetailList: this.dialogIds,
|
||
remark: this.form.remark,
|
||
}
|
||
addDetailsAuditApi(params)
|
||
.then((res) => {
|
||
this.$refs.form.resetFields()
|
||
this.formCancel()
|
||
this.open = false
|
||
this.openThree = false
|
||
// this.getdialogList()
|
||
this.getList()
|
||
})
|
||
.catch(() => {})
|
||
}
|
||
if (this.checkResult == 2) {
|
||
let taskIdList = []
|
||
this.selectionList.map((item) => {
|
||
taskIdList.push(item.taskId)
|
||
})
|
||
let params = {
|
||
checkResult: '不通过',
|
||
taskIdList: taskIdList,
|
||
remark: this.form.remark,
|
||
}
|
||
addDetailsAuditApi(params)
|
||
.then((res) => {
|
||
// if (res.code == 200) {
|
||
this.$refs.form.resetFields()
|
||
this.openThree = false
|
||
this.openFour = false
|
||
this.getList()
|
||
// }
|
||
})
|
||
.catch(() => {})
|
||
}
|
||
} else {
|
||
return false
|
||
}
|
||
})
|
||
},
|
||
/** 导出按钮操作 */
|
||
handleExport() {
|
||
this.download(
|
||
'material/details/export',
|
||
{
|
||
...this.queryParams,
|
||
},
|
||
`试验检验单_${new Date().getTime()}.xlsx`,
|
||
)
|
||
},
|
||
// 维修记录表-打印
|
||
print() {
|
||
this.$nextTick(() => {
|
||
this.$refs.printRef.print()
|
||
})
|
||
},
|
||
// 维修记录表
|
||
openUpkeep(row) {
|
||
console.log('🚀 ~ openUpkeep ~ row:', row)
|
||
this.upkeepVisible = true
|
||
this.upkeepObj = row
|
||
},
|
||
handlePreview(file) {
|
||
console.log('🚀 ~ handlePreview ~ file:', file)
|
||
if (file.response) {
|
||
window.open(file.response.data.fileUrl)
|
||
} else {
|
||
window.open(file.fileUrl)
|
||
}
|
||
},
|
||
handleExceed(files, fileList) {
|
||
this.$message.warning(
|
||
`当前限制选择 5 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
|
||
files.length + fileList.length
|
||
} 个文件`,
|
||
)
|
||
},
|
||
beforeUpload(file) {
|
||
const isLtMB = file.size / 1024 / 1024 < 20
|
||
if (!isLtMB) {
|
||
this.$message.error('上传文件大小不能超过 20MB!')
|
||
}
|
||
return isLtMB
|
||
},
|
||
beforeRemove(file, fileList) {
|
||
return this.$confirm(`确定移除 ${file.name} ?`)
|
||
},
|
||
handleSuccess(res, file, fileList, row) {
|
||
console.log('🚀 ~ handleSuccess ~ res:', res)
|
||
console.log('🚀 ~ handleSuccess ~ file:', file)
|
||
console.log('🚀 ~ handleSuccess ~ fileList:', fileList)
|
||
console.log('🚀 ~ handleSuccess ~ row:', row)
|
||
|
||
if (res.code == 200) {
|
||
if (!row.fileList) {
|
||
row.fileList = []
|
||
}
|
||
row.fileList.push({
|
||
typeId: row.typeId,
|
||
fileName: res.data.fileName,
|
||
fileUrl: res.data.fileUrl,
|
||
})
|
||
}
|
||
console.log('🚀 ~ row.fileList=fileList.map ~ row.fileList:', row.fileList)
|
||
},
|
||
},
|
||
}
|
||
</script>
|
||
<style lang="scss" scoped>
|
||
.submit_box {
|
||
display: flex;
|
||
justify-content: flex-start;
|
||
align-items: center;
|
||
|
||
.submit_box_title {
|
||
display: flex;
|
||
flex-direction: column;
|
||
margin-left: 15px;
|
||
|
||
:first-child {
|
||
font-size: 14px;
|
||
font-weight: 600;
|
||
}
|
||
|
||
:last-child {
|
||
margin-top: 6px;
|
||
font-size: 12px;
|
||
}
|
||
}
|
||
}
|
||
|
||
.submit_box_two {
|
||
display: flex;
|
||
flex-direction: row;
|
||
flex-wrap: nowrap;
|
||
align-items: center;
|
||
margin-left: 40%;
|
||
|
||
.submit_box_title {
|
||
display: flex;
|
||
flex-direction: column;
|
||
margin-left: 10px;
|
||
font-size: 18px;
|
||
font-weight: 600;
|
||
}
|
||
}
|
||
|
||
::v-deep.el-table .fixed-width .el-button--mini {
|
||
width: 70px !important;
|
||
margin-bottom: 6px;
|
||
}
|
||
|
||
.dialog-footer-btn {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: flex-end;
|
||
}
|
||
|
||
.submit_box_openFour {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-content: center;
|
||
font-size: 18px;
|
||
}
|
||
</style>
|