<template>
|
<div class="home-container">
|
<!-- <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">-->
|
<!-- <el-tab-pane label="申请中" name="1">-->
|
<div style="height: 100%">
|
<el-row class="homeCard">
|
<div class="basic-line" style="display:flex;white-space:nowrap;line-height: 40px">
|
<span>时间筛选:</span>
|
<el-date-picker v-model="timeRange" value-format="YYYY-MM-DD" type="daterange" @change="giveTime"
|
range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间"/>
|
</div>
|
<div class="basic-line" style="display:flex;white-space:nowrap;line-height: 40px">
|
<span>负责人:</span>
|
<el-input v-model="searPara.headUserName" placeholder="负责人"/>
|
</div>
|
<div class="basic-line">
|
<span>部门:</span>
|
<el-cascader :teleported="false" v-model="searPara.secondDepId" :options="departmentList" :props="casProps" :show-all-levels="false"/>
|
</div>
|
<div class="basic-line">
|
<span>作业类型:</span>
|
<el-select v-model="searPara.workType">
|
<el-option
|
v-for="item in workType"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id"
|
/>
|
</el-select>
|
</div>
|
<div class="basic-line" style="display:flex;white-space:nowrap;line-height: 40px">
|
<span>作业票编号:</span>
|
<el-input
|
v-model="searPara.workPermitNo"
|
placeholder="请输入作业票编号"
|
/>
|
</div>
|
<div style="margin-left: 20px">
|
<el-button type="primary" @click="searchRecord">查询</el-button>
|
<el-button plain @click="clearSearch">重置</el-button>
|
</div>
|
</el-row>
|
<div class="homeCard">
|
<div class="main-card">
|
<el-row class="cardTop">
|
<el-col :span="12" class="mainCardBtn">
|
<el-button type="primary" :icon="Plus" size="default" @click="toApply()">申请</el-button>
|
<el-button type="primary" :icon="Download" size="default" @click="exportSheet()">导出记录</el-button>
|
</el-col>
|
<el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()"/>
|
</el-row>
|
<el-table ref="multipleTableRef" :data="applyData" style="width: 100%" height="calc(100% - 100px)"
|
:header-cell-style="{ background: '#fafafa' }">
|
<el-table-column property="workPermitNo" label="作业编号" align="center">
|
<template #default="scope">
|
{{ scope.row.workPermitNo ? scope.row.workPermitNo : '—' }}
|
</template>
|
</el-table-column>
|
<el-table-column property="seDepName" label="部门" align="center"/>
|
<el-table-column property="applyDepName" label="作业所在车间" align="center"/>
|
<el-table-column property="workContent" label="作业内容" align="center"/>
|
<el-table-column property="workTypeDesc" label="作业类型" align="center"/>
|
<el-table-column label="作业单位" align="center">
|
<template #default="scope">
|
<span
|
v-if="scope.row.workDepList && scope.row.workDepList.length>0">{{ scope.row.workDepList.map(i => i.workDepName).join(',') }}</span>
|
<span v-else>{{ scope.row.workDepName }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column property="headList" label="负责人及电话" align="center">
|
<template #default="scope">
|
{{
|
scope.row.headList.map(i => {
|
return i.userName + '(' + i.phone + ')'
|
}).join(',')
|
}}
|
</template>
|
</el-table-column>
|
<el-table-column property="operatorList" label="作业人及电话" align="center">
|
<template #default="scope">
|
{{
|
scope.row.operatorList.map(i => {
|
return i.userName + '(' + i.phone + ')'
|
}).join(',')
|
}}
|
</template>
|
</el-table-column>
|
<el-table-column property="guardianList" label="监护人及电话" align="center">
|
<template #default="scope">
|
{{
|
scope.row.guardianList.map(i => {
|
return i.userName + '(' + i.phone + ')'
|
}).join(',')
|
}}
|
</template>
|
</el-table-column>
|
<el-table-column property="expStartTime" label="作业开始时间" align="center"/>
|
<el-table-column property="expEndTime" label="预计完成时间" align="center"/>
|
<el-table-column label="执法仪编号" align="center">
|
<template #default="scope">
|
{{ scope.row.workApprovalDeviceList.map(i => i.deviceNo).join(',') }}
|
</template>
|
</el-table-column>
|
<el-table-column label="作业人数" align="center">
|
<template #default="scope">
|
{{ scope.row.operatorList.length }}
|
</template>
|
</el-table-column>
|
<el-table-column label="监护人数" align="center">
|
<template #default="scope">
|
{{ scope.row.guardianList.length }}
|
</template>
|
</el-table-column>
|
<el-table-column label="风险研判" align="center">
|
<template #default="scope">
|
<el-button v-if="scope.row.status == 0" link type="primary" size="small"
|
@click="openReport('上传', scope.row)">上传研判报告
|
</el-button>
|
<el-tag type="danger" v-else-if="scope.row.status == 15">已取消</el-tag>
|
<el-tag type="danger" v-else-if="scope.row.status == 16">已废止</el-tag>
|
<el-button v-else link type="primary" size="small" @click="openReport('查看', scope.row)">查看研判报告
|
</el-button>
|
</template>
|
</el-table-column>
|
<el-table-column fixed="right" label="操作" align="center" width="150">
|
<template #default="scope">
|
<span v-if="scope.row.status == 16">已废止</span>
|
<span v-if="scope.row.status == 15">已取消</span>
|
<el-button v-if="scope.row.status == 0 || scope.row.status == 1" link type="danger" size="small"
|
:icon="Delete" @click="abortRecordBtn(scope.row)">取消
|
</el-button>
|
<el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
|
<el-button v-if="scope.row.status == 0 || scope.row.status == 1" link type="primary" size="small"
|
v-throttle :icon="Edit" @click="openEdit(scope.row)">修改
|
</el-button>
|
<el-button link type="success" v-throttle v-if="scope.row.status == 0 || scope.row.status == 1"
|
size="small" :icon="Download" @click="checkTicket(scope.row)">正式办票
|
</el-button>
|
<!-- <el-button :disabled="scope.row.status == 7 ? false : true" link type="primary" size="small" :icon="Download" @click="downLoadBtn(scope.row)">导出作业票</el-button>-->
|
</template>
|
</el-table-column>
|
</el-table>
|
<div class="pageBtn">
|
<el-pagination v-model:currentPage="pageIndex1" v-model:page-size="pageSize1" :page-sizes="[10, 15]"
|
small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize1"
|
@size-change="handleSizeChange1" @current-change="handleCurrentChange1"/>
|
</div>
|
</div>
|
</div>
|
</div>
|
<el-dialog v-model="dialogDetails" title="作业申请详情" center>
|
<!-- <fire v-if="dialogType == 1" :details = details></fire>-->
|
<!-- <space v-else-if="dialogType == 2" :details = details></space>-->
|
<!-- <hoist v-else-if="dialogType == 3" :details = details></hoist>-->
|
<!-- <ground v-else-if="dialogType == 4" :details = details></ground>-->
|
<!-- <broken v-else-if="dialogType == 5" :details = details></broken>-->
|
<!-- <height v-else-if="dialogType == 6" :details = details></height>-->
|
<!-- <power v-else-if="dialogType == 7" :details = details></power>-->
|
<!-- <plate v-else :details = details></plate>-->
|
<detail-log :type=dialogType :statusList=statusList :details=details></detail-log>
|
<template #footer>
|
<span class="dialog-footer">
|
<el-button type="primary" @click="dialogDetails = false">确认</el-button>
|
</span>
|
</template>
|
</el-dialog>
|
<report-log ref="reportDialogRef" @refresh="getListByPage"></report-log>
|
<fire-dialog ref="fireRef" :lists="lists" @refresh="getListByPage"></fire-dialog>
|
<plate-dialog ref="plateRef" :lists="lists" @refresh="getListByPage"></plate-dialog>
|
<space-dialog ref="spaceRef" :lists="lists" @refresh="getListByPage"></space-dialog>
|
<hoist-dialog ref="hoistRef" :lists="lists" @refresh="getListByPage"></hoist-dialog>
|
<ground-dialog ref="groundRef" :lists="lists" @refresh="getListByPage"></ground-dialog>
|
<broken-dialog ref="brokenRef" :lists="lists" @refresh="getListByPage"></broken-dialog>
|
<height-dialog ref="heightRef" :lists="lists" @refresh="getListByPage"></height-dialog>
|
<power-dialog ref="powerRef" :lists="lists" @refresh="getListByPage"></power-dialog>
|
<open-dialog ref="openRef" :lists="lists" @refresh="getListByPage"></open-dialog>
|
</div>
|
</template>
|
|
<script lang="ts">
|
import {toRefs, reactive, defineComponent, ref, onMounted, defineAsyncComponent} from 'vue';
|
import {storeToRefs} from 'pinia';
|
import {initBackEndControlRoutes} from '/@/router/backEnd';
|
import {useUserInfo} from '/@/stores/userInfo';
|
import {Session} from '/@/utils/storage';
|
import {useRouter} from 'vue-router';
|
import {Edit, View, Plus, Delete, Refresh, Search, Finished, Download} from '@element-plus/icons-vue';
|
import {ElTable} from 'element-plus';
|
import {FormInstance, FormRules, ElMessage, ElMessageBox} from 'element-plus';
|
import {workApplyApi} from '/@/api/specialWorkSystem/workApply';
|
import type {TabsPaneContext} from 'element-plus';
|
import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage";
|
import Cookies from 'js-cookie';
|
import axios from 'axios';
|
|
// 定义接口来定义对象的类型
|
interface stateType {
|
applyData: Array<string>;
|
workTimeList: Array<string>;
|
multipleSelection: Array<any>;
|
deleteArr: Array<any>;
|
approveInfo: Object;
|
dialogDetails: boolean;
|
dialogStatus: boolean;
|
pageIndex1: number;
|
pageSize1: number;
|
chosenIndex: null | number;
|
downLoadId: null | number;
|
downLoadName: string;
|
totalSize1: number;
|
activeName: string;
|
addRecord: {};
|
details: {};
|
statusInfo: {};
|
workType: Array<type>;
|
dialogType: number | null;
|
departmentList: Array<any>;
|
departmentRecursionList: Array<DepartmentState>;
|
statusList: Array<any>;
|
searPara: {}
|
timeRange: Array<string>;
|
dep4List: Array<type>;
|
lists: {}
|
casProps: {}
|
}
|
|
interface type {
|
id: number;
|
name: string;
|
}
|
|
interface DepartmentState {
|
depId: number;
|
depName: string;
|
}
|
|
export default defineComponent({
|
name: 'myApply',
|
components: {
|
detailLog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/detailLog.vue')),
|
reportLog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/jsaReportDialog.vue')),
|
fireDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/fireDialog.vue')),
|
plateDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/plateDialog.vue')),
|
spaceDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceDialog.vue')),
|
hoistDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistDialog.vue')),
|
groundDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/groundDialog.vue')),
|
brokenDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenDialog.vue')),
|
heightDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/heightDialog.vue')),
|
powerDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/powerDialog.vue')),
|
openDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/openDialog.vue'))
|
},
|
setup() {
|
const userInfo = useUserInfo();
|
const {userInfos} = storeToRefs(userInfo);
|
const router = useRouter();
|
const reportDialogRef = ref();
|
const fireRef = ref()
|
const plateRef = ref()
|
const spaceRef = ref()
|
const hoistRef = ref()
|
const groundRef = ref()
|
const brokenRef = ref()
|
const heightRef = ref()
|
const powerRef = ref()
|
const openRef = ref()
|
const state = reactive<stateType>({
|
pageIndex1: 1,
|
pageSize1: 10,
|
totalSize1: 0,
|
dialogType: null,
|
activeName: '1',
|
departmentList: [],
|
departmentRecursionList: [],
|
chosenIndex: null,
|
searPara: {
|
startTime: '',
|
endTime: '',
|
workPermitNo: '',
|
workType: null,
|
headUserName: '',
|
secondDepId: null
|
},
|
casProps: {
|
emitPath: false,
|
value: 'depId',
|
label: 'depName',
|
checkStrictly: true
|
},
|
timeRange: [],
|
applyData: [],
|
workTimeList: [],
|
multipleSelection: [],
|
approveInfo: {
|
approvalSteps: [],
|
operators: []
|
},
|
dialogDetails: false,
|
dialogStatus: false,
|
addRecord: {},
|
details: {},
|
statusInfo: {},
|
downLoadId: null,
|
downLoadName: '',
|
deleteArr: [],
|
workType: [
|
{id: 1, name: '动火作业'},
|
{id: 2, name: '受限空间作业'},
|
{id: 3, name: '吊装作业'},
|
{id: 4, name: '动土作业'},
|
{id: 5, name: '断路作业'},
|
{id: 6, name: '高处作业'},
|
{id: 7, name: '临时用电作业'},
|
{id: 8, name: '盲板抽堵作业'},
|
{id: 9, name: '打开作业'}
|
],
|
lists: {
|
workerList: [],
|
departList: [],
|
departList2: [],
|
deviceList: [],
|
otherWorks: [],
|
spList: [],
|
riskList: []
|
},
|
dep4List: [],
|
statusList: [
|
{
|
value: 0,
|
label: '风险研判'
|
},
|
{
|
value: 1,
|
label: '票证办理'
|
},
|
{
|
value: 2,
|
label: '气体分析'
|
},
|
{
|
value: 3,
|
label: '安全措施确认,培训交底'
|
},
|
{
|
value: 4,
|
label: '安全措施确认'
|
},
|
{
|
value: 5,
|
label: '培训交底'
|
},
|
{
|
value: 6,
|
label: '部门审批'
|
},
|
{
|
value: 7,
|
label: '作业票填报结束'
|
},
|
{
|
value: 8,
|
label: '作业气体分析不合格'
|
},
|
{
|
value: 9,
|
label: '审批未通过'
|
},
|
{
|
value: 10,
|
label: '开始'
|
},
|
{
|
value: 11,
|
label: '监护'
|
},
|
{
|
value: 12,
|
label: '结束'
|
},
|
{
|
value: 13,
|
label: '待验收'
|
},
|
{
|
value: 14,
|
label: '验收完成'
|
},
|
{
|
value: 15,
|
label: '取消'
|
},
|
{
|
value: 16,
|
label: '废止作业票'
|
}
|
]
|
});
|
|
// 页面载入时执行方法
|
onMounted(() => {
|
getListByPage();
|
getAllDepartment()
|
spWorker()
|
getOpList()
|
getAll()
|
getAllDevice()
|
getAllRisks()
|
getOtherWork()
|
});
|
|
const openEdit = (row) => {
|
if (row.workType == 1) {
|
fireRef.value.openDialog(row, 'edit')
|
}
|
if (row.workType == 2) {
|
spaceRef.value.openDialog(row, 'edit')
|
}
|
if (row.workType == 3) {
|
hoistRef.value.openDialog(row, 'edit')
|
}
|
if (row.workType == 4) {
|
groundRef.value.openDialog(row, 'edit')
|
}
|
if (row.workType == 5) {
|
brokenRef.value.openDialog(row, 'edit')
|
}
|
if (row.workType == 6) {
|
heightRef.value.openDialog(row, 'edit')
|
}
|
if (row.workType == 7) {
|
powerRef.value.openDialog(row, 'edit')
|
}
|
if (row.workType == 8) {
|
plateRef.value.openDialog(row, 'edit')
|
}
|
if (row.workType == 9) {
|
openRef.value.openDialog(row, 'edit')
|
}
|
}
|
|
const spWorker = async () => {
|
for (let id of ['18', '19']) {
|
const res = await workApplyApi().getSpList({roleId: id})
|
if (id == '18') {
|
if (res.data.code === '200') {
|
state.lists.spList.jhList = JSON.parse(JSON.stringify(res.data.data))
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
});
|
}
|
}
|
if (id == '19') {
|
if (res.data.code === '200') {
|
state.lists.spList.sfList = JSON.parse(JSON.stringify(res.data.data))
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
});
|
}
|
}
|
}
|
}
|
|
const getOpList = async () => {
|
const res = await workApplyApi().getOpList()
|
if (res.data.code == '200') {
|
if (res.data.data && res.data.data.length > 0) {
|
state.lists.spList.opList = JSON.parse(JSON.stringify(res.data.data)).map(i => {
|
if (i.certList && i.certList.length > 0) {
|
i.certList = i.certList.map(item => {
|
item['realName'] = i.realName + '(' + item.certTypeName + ':' + item.certExpiredAt + ')'
|
item['uid'] = item.certNo + ',' + item.certExpiredAt
|
return item
|
})
|
}
|
return i
|
})
|
}
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
})
|
}
|
}
|
|
// 获取用户列表
|
const getAll = async () => {
|
const res = await workApplyApi().getAllUsers()
|
if (res.data.code === '200') {
|
state.lists.workerList = JSON.parse(JSON.stringify(res.data.data))
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
});
|
}
|
};
|
|
// 获取设备列表
|
const getAllDevice = async () => {
|
const res = await workApplyApi().getAllDevices()
|
if (res.data.code === '200') {
|
state.lists.deviceList = JSON.parse(JSON.stringify(res.data.data))
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
});
|
}
|
}
|
|
// 获取设备列表
|
const getAllRisks = async () => {
|
const res = await workApplyApi().getAllRiskIdentity()
|
if (res.data.code === '200') {
|
// state.allDevices = JSON.parse(JSON.stringify(res.data.data))
|
state.lists.riskList = JSON.parse(JSON.stringify(res.data.data))
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
});
|
}
|
}
|
|
const giveTime = () => {
|
if (state.timeRange && state.timeRange !== null) {
|
state.searPara.startTime = state.timeRange[0];
|
state.searPara.endTime = state.timeRange[1]
|
} else {
|
state.searPara.startTime = '';
|
state.searPara.endTime = '';
|
}
|
};
|
|
// 刷新
|
const reLoadData = async () => {
|
getListByPage();
|
};
|
|
// 填写表单
|
const toApply = () => {
|
router.push({
|
path: 'zysq'
|
});
|
};
|
|
const handleClick = (tab: TabsPaneContext, event: Event) => {
|
};
|
|
// 获取部门列表
|
const getAllDepartment = async () => {
|
let res = await teamManageApi().getAllDepartment();
|
if (res.data.code === '200') {
|
state.departmentList = JSON.parse(JSON.stringify(res.data.data))
|
recursion(state.departmentList);
|
state.lists.departList = JSON.parse(JSON.stringify(res.data.data))
|
// state.lists.departList2 = JSON.parse(JSON.stringify(res.data.data))[0].children[0].children.filter(i=>i.depId == 32 || i.depId == 48 || i.depId == 49 || i.depId == 50 || i.depId == 10 || i.depId == 41 || i.depId == 46 || i.depId == 47)
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
});
|
}
|
};
|
const getOtherWork = async () => {
|
let res = await workApplyApi().getOtherWork({
|
pageSize: 999,
|
pageIndex: 1,
|
searchParams: {workPermitNo: '', workType: null}
|
})
|
if (res.data.code === '200') {
|
state.lists.otherWorks = JSON.parse(JSON.stringify(res.data.data))
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
});
|
}
|
};
|
|
const recursion = (value: any) => {
|
for (let i of value) {
|
if (i.children.length !== 0) {
|
state.departmentRecursionList.push(i);
|
recursion(i.children);
|
} else {
|
state.departmentRecursionList.push(i);
|
}
|
}
|
};
|
|
// 分页获取
|
const getListByPage = async () => {
|
const data = {pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: state.searPara};
|
let res = await workApplyApi().getNewApplyListPage(data);
|
if (res.data.code === '200') {
|
state.applyData = JSON.parse(JSON.stringify(res.data.data));
|
state.applyData = state.applyData.map((item) => {
|
if (item.operators == null || item.operators == []) {
|
item.operators = [];
|
} else {
|
item.operators = Array.from(item.operators, ({operatorUname}) => operatorUname);
|
}
|
return item;
|
});
|
state.totalSize1 = res.data.total;
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
});
|
}
|
};
|
|
// 表格数据格式化
|
const toNames = (row, column, cellValue, index) => {
|
if (row.list == []) {
|
return [];
|
} else {
|
const nameList = [];
|
for (let i = 0; i < row.list.length; i++) {
|
for (let t = 0; t < state.workTimeList.length; t++) {
|
if (row.list[i] == state.workTimeList[t].id) {
|
nameList.push(state.workTimeList[t].name);
|
}
|
}
|
}
|
return nameList.join();
|
}
|
};
|
|
// 关键词查询记录
|
const searchRecord = async () => {
|
state.pageIndex1 = 1
|
getListByPage();
|
};
|
// 重置搜索
|
const clearSearch = async () => {
|
state.timeRange = []
|
state.searPara = {
|
startTime: '',
|
endTime: '',
|
workPermitNo: '',
|
workType: null,
|
headUserName: '',
|
secondDepId: null
|
};
|
state.pageIndex1 = 1
|
getListByPage();
|
};
|
|
// 查看进度
|
const viewStatus = (row) => {
|
getStatus({workApplyId: row.workApplyId});
|
state.dialogStatus = true;
|
};
|
|
// 查询进度方法
|
const getStatus = async (data: any) => {
|
let res = await workApplyApi().getStatus(data);
|
if (res.data.code === '200') {
|
state.approveInfo = JSON.parse(JSON.stringify(res.data.data));
|
state.approveInfo.operators = Array.from(state.approveInfo.operators, ({operatorUname}) => operatorUname);
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
});
|
}
|
};
|
|
const abortRecordBtn = (row: object) => {
|
ElMessageBox.confirm(
|
'是否作废该项申报?',
|
'申报作废',
|
{
|
confirmButtonText: '确认',
|
cancelButtonText: '取消'
|
}
|
)
|
.then(async () => {
|
let res = await workApplyApi().abolishTicket({id: row.id});
|
if (res.data.code === '200') {
|
ElMessage({
|
type: 'success',
|
message: '作废成功!'
|
});
|
getListByPage();
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
});
|
}
|
})
|
.catch(() => {
|
console.log('取消废票')
|
})
|
};
|
|
// 正式办票
|
const checkTicket = (row: object) => {
|
ElMessageBox.confirm(
|
'是否进行正式办票操作?',
|
'正式办票',
|
{
|
confirmButtonText: '确认',
|
cancelButtonText: '取消'
|
}
|
)
|
.then(async () => {
|
let res = await workApplyApi().checkTicket({id: row.id});
|
if (res.data.code === '200') {
|
ElMessage({
|
type: 'success',
|
message: '办票成功!'
|
});
|
getListByPage();
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
});
|
}
|
})
|
.catch(() => {
|
console.log('取消办票')
|
})
|
}
|
|
// 导出图表
|
const downLoadBtn = (row: any) => {
|
state.downLoadId = row.workApplyId;
|
state.downLoadName = row.workTypeDesc + row.workPermitNo
|
}
|
|
// 导出方法
|
const exportSheet = async () => {
|
// let res = await workApplyApi().postPrinting(data);
|
axios.post(import.meta.env.VITE_API_URL + `/specialwork9step/work/export/excel`, {
|
startTime: state.searPara.startTime,
|
endTime: state.searPara.endTime,
|
secondDepId: state.searPara.secondDepId
|
}, {
|
headers: {
|
'Content-Type': 'application/json',
|
'Authorization': `${Cookies.get('token')}`,
|
'uid': `${Cookies.get('uid')}`
|
}, responseType: 'blob'
|
}).then(res => {
|
if (res) {
|
const link = document.createElement('a')
|
let blob = new Blob([res.data], {type: 'application/excel'})
|
link.style.display = "none";
|
link.href = URL.createObjectURL(blob); // 创建URL
|
if (state.searPara.startTime !== '' && state.searPara.endTime !== '') {
|
link.setAttribute("download", state.searPara.startTime + '—' + state.searPara.endTime + "作业申报记录.xlsx")
|
} else {
|
link.setAttribute("download", "作业申报记录.xlsx")
|
}
|
document.body.appendChild(link);
|
link.click();
|
document.body.removeChild(link);
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
});
|
}
|
})
|
|
};
|
|
const handleSizeChange1 = (val: number) => {
|
state.pageSize1 = val;
|
getListByPage();
|
};
|
const handleCurrentChange1 = (val: number) => {
|
state.pageIndex1 = val;
|
getListByPage();
|
};
|
|
const openReport = (type: string, value: {}) => {
|
reportDialogRef.value.showReportDialog(type, value);
|
};
|
|
// 查看记录
|
const viewRecord = (row: any) => {
|
state.dialogType = row.workType
|
state.details = JSON.parse(JSON.stringify(row));
|
state.dialogDetails = true;
|
};
|
|
// 折线图
|
const renderMenu = async (value: string) => {
|
Session.set('projectId', value);
|
userInfos.value.projectId = value;
|
await initBackEndControlRoutes();
|
};
|
|
return {
|
View,
|
Edit,
|
Delete,
|
Refresh,
|
Plus,
|
Finished,
|
Download,
|
reportDialogRef,
|
fireRef,
|
plateRef,
|
spaceRef,
|
hoistRef,
|
groundRef,
|
brokenRef,
|
heightRef,
|
powerRef,
|
openRef,
|
openEdit,
|
getAllDepartment,
|
checkTicket,
|
giveTime,
|
reLoadData,
|
toApply,
|
handleClick,
|
toNames,
|
searchRecord,
|
clearSearch,
|
openReport,
|
viewRecord,
|
viewStatus,
|
abortRecordBtn,
|
downLoadBtn,
|
exportSheet,
|
getListByPage,
|
handleSizeChange1,
|
handleCurrentChange1,
|
...toRefs(state)
|
};
|
}
|
});
|
</script>
|
|
<style scoped lang="scss">
|
$homeNavLengh: 8;
|
.home-container {
|
height: calc(100vh - 144px);
|
box-sizing: border-box;
|
overflow: hidden;
|
|
.demo-tabs {
|
width: 100%;
|
height: 100%;
|
|
&::v-deep(.el-tabs__content) {
|
height: calc(100% - 60px);
|
}
|
|
.el-tab-pane {
|
height: 100%;
|
}
|
}
|
|
.homeCard {
|
width: 100%;
|
padding: 20px;
|
box-sizing: border-box;
|
background: #fff;
|
border-radius: 4px;
|
|
.main-card {
|
width: 100%;
|
height: 100%;
|
|
.cardTop {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
margin-bottom: 20px;
|
|
.mainCardBtn {
|
margin: 0;
|
}
|
}
|
|
.pageBtn {
|
height: 60px;
|
display: flex;
|
align-items: center;
|
justify-content: right;
|
|
.demo-pagination-block + .demo-pagination-block {
|
margin-top: 10px;
|
}
|
|
.demo-pagination-block .demonstration {
|
margin-bottom: 16px;
|
}
|
}
|
}
|
|
&:last-of-type {
|
height: calc(100% - 130px);
|
}
|
}
|
|
.el-row {
|
display: flex;
|
align-items: center;
|
margin-bottom: 20px;
|
|
&:last-child {
|
margin-bottom: 0;
|
}
|
|
.grid-content {
|
align-items: center;
|
min-height: 36px;
|
}
|
|
.topInfo {
|
display: flex;
|
align-items: center;
|
font-size: 16px;
|
font-weight: bold;
|
|
& > div {
|
white-space: nowrap;
|
margin-right: 20px;
|
}
|
}
|
}
|
|
.el-card {
|
border: 0;
|
}
|
}
|
</style>
|