<template> <a-card :bordered="false"> <div v-show="visible"> <div class="table-page-search-wrapper" @keyup.enter="handleEnter"> <a-form layout="inline"> <a-row :gutter="48" v-show="advanced"> <a-col :md="6" :sm="24"> <a-form-item label="关键字"> <a-input v-model="queryParam.keyword" placeholder="请输入名称/类型名称" /> </a-form-item> </a-col> <a-col :md="6" :sm="24"> <a-form-item label="设备Id"> <a-input v-model="queryParam.sbInfoName" placeholder="设备Id" /> </a-form-item> </a-col> <a-col :md="6" :sm="24"> <a-form-item label="状态"> <a-select v-model="queryParam.status" placeholder="请选择"> <a-select-option v-for="(label,value) in statusMap" :key="value" :label="label" :value="parseInt(value)">{{ label }} </a-select-option> </a-select> </a-form-item> </a-col> </a-row> <a-row :gutter="48"> <a-col :md="24 || 24" :sm="24" style="text-align: right"> <span class="table-page-search-submitButtons"> <a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button> <a-button style="margin-left: 8px" @click="resetSearchForm">重置</a-button> <a @click="()=>{ this.advanced = !this.advanced}" style="margin-left: 8px"> {{ advanced ? '收起' : '展开' }} <a-icon :type="advanced ? 'up' : 'down'" /> </a> </span> </a-col> </a-row> </a-form> </div> <div class="table-operator" style="margin-bottom: 8px;"> <a-row> <a-col :md="16"> <a-button v-if="$auth('sb-scraps-add')" type="primary" icon="plus" @click="handleAdd()">新增</a-button> <a-button style="margin-left: 8px" v-if="$auth('sb-scraps-export')" type="primary" icon="download" @click="doExport">导出 </a-button> <a-dropdown v-action:edit v-if="selectedRowKeys.length > 0 && $auth('sb-scraps-del')"> <a-menu slot="overlay"> <a-popconfirm title="是否要删除所选数据?" @confirm="batchDelete()"> <a-menu-item key="1"> <a-icon type="delete" /> <a>删除</a></a-menu-item> </a-popconfirm> </a-menu> <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /> </a-button> </a-dropdown> </a-col> </a-row> </div> <s-table ref="table" size="default" rowKey="id" :columns="columns" :data="loadData" :alert="options.alert" :rowSelection="options.rowSelection" showPagination="auto" > <span slot="action" slot-scope="record"> <template> <a @click="handleView(record)">查看</a> <operation-button v-if="$auth('sb-scraps-edit') && record.status != 3" @click="handleEdit(record)" >修改</operation-button> <operation-button v-if="$auth('sb-scraps-del') && record.status == 1" :type="2" title="是否要删除该条数据?" @confirm="batchDelete(record.id)">删除</operation-button> <operation-button v-if="record.status == 1" :type="2" title="确认提交该条数据?" @confirm="handleStart(record)">提交</operation-button> <operation-button v-if="record.status == 4" :type="2" title="再次提交该条数据?" @confirm="handleStart(record)">再次提交</operation-button> <operation-button :type="2" title="是否要终止审批?" @confirm="handleStop(record)">终止审批</operation-button> </template> </span> </s-table> </div> <base-form ref="baseModal" @ok="handleOk" /> <detail ref="detailModal" @ok="handleOk" /> <image-modal ref="imageModal"/> <history-table ref="historyModal"/> </a-card> </template> <script> import { STable, Ellipsis } from '@/components' import BaseForm from './modules/BaseForm' import Detail from './modules/Detail' import ImageModal from '@/views/activiti/ImageModal' import HistoryTable from '@/views/activiti/HistoryTable' import { getSbScrapFormPage, deleteSbScrapForms, fetchSbScrapForm, exportSbScrapForm } from '@/api/sb/scraps' import { startSbInfoScrap, stopSbInfoScrapForAudit } from '@/api/activiti/activiti-sb-scrap' export default { name: 'SbScrapFormList', components: { STable, Ellipsis, BaseForm, Detail, ImageModal, HistoryTable }, data () { return { advanced: false, visible: true, // 查询参数 queryParam: {}, // 表头 columns: [ { title: '序号', dataIndex: 'index', customRender: (text, record, index) => { return `${(this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1}` } }, { title: '单号', dataIndex: 'no' }, { title: '设备名称', dataIndex: 'sbName' }, { title: '设备编号', dataIndex: 'sbNo' }, { title: '报废原因', dataIndex: 'reason' }, { title: '备注', dataIndex: 'remark' }, { title: '状态', dataIndex: 'status', customRender: (text, record, index) => { return this.BaseTool.Table.getMapText(this.statusMap, text) } }, { title: '申请人', dataIndex: 'applyUserName' }, { title: '创建日期', dataIndex: 'createdTime' }, { title: '操作', key: 'action', width: '200px', align: 'center', scopedSlots: { customRender: 'action' } } ], // 下拉框map statusMap: {}, // 加载数据方法 必须为 Promise 对象 loadData: parameter => { parameter = { ...parameter, ...this.queryParam, dataScope: { sortBy: 'desc', sortName: 'update_time' } } return getSbScrapFormPage(Object.assign(parameter, this.queryParam)) .then(res => { return res.data }) }, selectedRowKeys: [], selectedRows: [], options: { alert: { show: true, clear: () => { this.selectedRowKeys = [] } }, rowSelection: { selectedRowKeys: this.selectedRowKeys, onChange: this.onSelectChange } }, optionAlertShow: false } }, created () { // 下拉框map this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.ACTIVITI_FORM_STATUS) this.tableOption() }, methods: { tableOption () { if (!this.optionAlertShow) { this.options = { alert: { show: true, clear: () => { this.selectedRowKeys = [] } }, rowSelection: { selectedRowKeys: this.selectedRowKeys, onChange: this.onSelectChange, getCheckboxProps: record => ({ props: { disabled: false, name: record.id } }) } } this.optionAlertShow = true } else { this.options = { alert: false, rowSelection: null } this.optionAlertShow = false } }, batchDelete (id) { let ids = [] if (this.BaseTool.String.isBlank(id)) { const length = this.selectedRows.length if (length === 0) { this.$message.info('请选择要删除的记录') return } ids = this.selectedRows.map(item => item.id) } else { ids = [id] } deleteSbScrapForms(ids).then(res => { this.$message.info('删除成功') this.handleOk() this.$refs.table.clearSelected() }) }, handleAdd () { this.visible = false const modal = this.$refs.baseModal modal.base() }, handleEdit (record) { this.visible = false fetchSbScrapForm({ id: record.id }).then(res => { const modal = this.$refs.baseModal modal.base(res.data) }) }, handleView (record) { this.visible = false fetchSbScrapForm({ id: record.id }).then(res => { const modal = this.$refs.detailModal modal.base(res.data) }) }, handleOk (values) { this.visible = true this.$refs.table.refresh() }, onSelectChange (selectedRowKeys, selectedRows) { this.selectedRowKeys = selectedRowKeys this.selectedRows = selectedRows }, resetSearchForm () { this.queryParam = {} this.$refs.table.refresh(true) }, doExport () { const parameter = { ...this.queryParam } exportSbScrapForm(parameter).then(file => { this.BaseTool.Util.downLoadExportExcel(file) }) }, handleStart (record) { startSbInfoScrap({ id: record.id, processInstanceId: record.processInstanceId }).then(res => { this.$message.info(res.data) this.handleEnter() }) }, handleViewImage (record) { const modal = this.$refs.imageModal modal.base(record.processInstanceId) }, handleViewHistory (record) { const modal = this.$refs.historyModal modal.base(record) }, handleStop (record) { this.$message.info('正在终止审批流程,请勿重复点击') this.confirmLoading = true stopSbInfoScrapForAudit({ id: record.id, processInstanceId: record.processInstanceId }) .then(() => { this.$message.info('已成功终止审批流程,可以重新发起审批') this.confirmLoading = false this.handleOk() }).catch(() => { this.confirmLoading = false }) }, handleEnter () { this.$refs.table.refresh(true) }, sbIdhandleDetail () { const text = this.$router.resolve({ name: 'sbInfo', query: { id: this.model.sbId } }) // 打开一个新的页面 window.open(text.href, '_blank') } } } </script>