| | |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">流程编号:</div> |
| | | <div ><el-input size="small" placeholder="请输入" clearable v-model="componentData.entity.processNumber" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请输入" |
| | | clearable |
| | | v-model="componentData.entity.processNumber" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">重 置</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">查 询</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()" |
| | | >查 询</el-button |
| | | > |
| | | </div> |
| | | <div class="btns"> |
| | | <el-button size="small" type="primary" @click="add">新增</el-button> |
| | | <el-button size="small" type="primary" @click="handleDown" :loading="outLoading">导出</el-button> |
| | | <!-- <el-button size="small" type="primary" @click="handleDown" :loading="outLoading">导出</el-button>--> |
| | | </div> |
| | | </div> |
| | | <div class="tables" style="margin-top: 10px;"> |
| | | <ValueTable ref="ValueTable" :url="$api.deviceBorrow.deviceBorrowPage" |
| | | :delUrl="$api.deviceBorrow.deleteDeviceBorrow" |
| | | :componentData="componentData" :key="upIndex"/> |
| | | <ValueTable |
| | | ref="ValueTable" |
| | | :url="$api.deviceBorrow.deviceBorrowPage" |
| | | :delUrl="$api.deviceBorrow.deleteDeviceBorrow" |
| | | :componentData="componentData" |
| | | :key="upIndex" |
| | | /> |
| | | </div> |
| | | <el-dialog title="仪器设备领(借)用登记" top="5vh" :visible.sync="dialogVisible" width="60%"> |
| | | <el-steps :active="currentStep" finish-status="success" align-center> |
| | | <el-step style="cursor:pointer" v-for="(v, i) in steps" :title="v" :key="i" |
| | | @click.native="choiceStep(i)"></el-step> |
| | | <el-dialog |
| | | title="仪器设备领(借)用登记" |
| | | top="5vh" |
| | | :visible.sync="dialogVisible" |
| | | width="60%" |
| | | > |
| | | <el-steps :active="currentStep" finish-status="success" align-center> |
| | | <el-step |
| | | style="cursor:pointer" |
| | | v-for="(v, i) in steps" |
| | | :title="v" |
| | | :key="i" |
| | | @click.native="choiceStep(i)" |
| | | ></el-step> |
| | | </el-steps> |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="130px"> |
| | | <div v-show="currentStepClick === 0"> |
| | |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="编号:" prop="processNumber"> |
| | | <el-input v-model="form.processNumber" size="small" :disabled="currentStep>0"></el-input> |
| | | <el-input |
| | | v-model="form.processNumber" |
| | | size="small" |
| | | :disabled="currentStep > 0" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="设备名称:"> |
| | | <el-input v-model="form.deviceName" size="small" disabled></el-input> |
| | | <el-input |
| | | v-model="form.deviceName" |
| | | size="small" |
| | | disabled |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="管理编号:" prop="unifyNumber"> |
| | | <el-input v-model="form.unifyNumber" size="small" :disabled="currentStep>0"></el-input> |
| | | <el-input |
| | | v-model="form.unifyNumber" |
| | | size="small" |
| | | :disabled="currentStep > 0" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="借用人:" prop="recipientUser"> |
| | | <el-select v-model="form.recipientUser" filterable placeholder="请选择" clearable |
| | | size="small" style="width: 100%;" :disabled="currentStep>0"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.name"> |
| | | <el-select |
| | | v-model="form.recipientUser" |
| | | filterable |
| | | placeholder="请选择" |
| | | clearable |
| | | size="small" |
| | | style="width: 100%;" |
| | | :disabled="currentStep > 0" |
| | | > |
| | | <el-option |
| | | v-for="item in responsibleOptions" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.name" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="借用人联系方式:" prop="borrowerContactInformation" label-width="150px"> |
| | | <el-input v-model="form.borrowerContactInformation" size="small"></el-input> |
| | | <el-form-item |
| | | label="借用人联系方式:" |
| | | prop="borrowerContactInformation" |
| | | label-width="150px" |
| | | > |
| | | <el-input |
| | | v-model="form.borrowerContactInformation" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | |
| | | <el-date-picker |
| | | v-model="form.recipientTime" |
| | | type="date" |
| | | placeholder="选择日期" size="small" format="yyyy-MM-dd" style="width: 100%" value-format="yyyy-MM-dd" :disabled="currentStep>0"> |
| | | placeholder="选择日期" |
| | | size="small" |
| | | format="yyyy-MM-dd" |
| | | style="width: 100%" |
| | | value-format="yyyy-MM-dd" |
| | | :disabled="currentStep > 0" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="借用时状态:" |
| | | > |
| | | <el-radio-group v-model="form.recipientState" :disabled="currentStep !== 0"> |
| | | <el-form-item label="借用时状态:"> |
| | | <el-radio-group |
| | | v-model="form.recipientState" |
| | | :disabled="currentStep !== 0" |
| | | > |
| | | <el-radio :label="0">合格</el-radio> |
| | | <el-radio :label="1">维修</el-radio> |
| | | <el-radio :label="2">停用</el-radio> |
| | |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="相关附件:" prop="fileName"> |
| | | <el-input v-model="form.fileName" disabled size="small" |
| | | :style="`width: ${currentStep == 0 ? '88%' : '100%'};`"> |
| | | <el-button slot="append" v-if="currentStep === 0" icon="el-icon-delete-solid" |
| | | @click="deleteFile"></el-button> |
| | | <el-input |
| | | v-model="form.fileName" |
| | | disabled |
| | | size="small" |
| | | :style="`width: ${currentStep == 0 ? '88%' : '100%'};`" |
| | | > |
| | | <el-button |
| | | slot="append" |
| | | v-if="currentStep === 0" |
| | | icon="el-icon-delete-solid" |
| | | @click="deleteFile" |
| | | ></el-button> |
| | | </el-input> |
| | | <el-upload ref="upload" style="float: right;" :action="action" :show-file-list="false" |
| | | :on-success="onSuccess" :disabled="currentStep !== 0"> |
| | | <el-button style="position: relative;top: -4px" class="uploadFile" slot="trigger" size="small" |
| | | type="primary" v-if="currentStep === 0">附件上传</el-button> |
| | | <el-upload |
| | | ref="upload" |
| | | style="float: right;" |
| | | :action="action" |
| | | :show-file-list="false" |
| | | :on-success="onSuccess" |
| | | :disabled="currentStep !== 0" |
| | | > |
| | | <el-button |
| | | style="position: relative;top: -4px" |
| | | class="uploadFile" |
| | | slot="trigger" |
| | | size="small" |
| | | type="primary" |
| | | v-if="currentStep === 0" |
| | | >附件上传</el-button |
| | | > |
| | | </el-upload> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="下环节责任人:" prop="nextUser"> |
| | | <el-select v-model="form.nextUser" filterable placeholder="请选择" clearable |
| | | size="small" style="width: 100%;" :disabled="currentStep !== 0"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.name"> |
| | | <el-select |
| | | v-model="form.nextUser" |
| | | filterable |
| | | placeholder="请选择" |
| | | clearable |
| | | size="small" |
| | | style="width: 100%;" |
| | | :disabled="currentStep !== 0" |
| | | > |
| | | <el-option |
| | | v-for="item in responsibleOptions" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.name" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | </el-row> |
| | | </el-card> |
| | | <el-row style="margin-top: 1em;"> |
| | | <el-col :span="4"> |
| | | 操作人:{{ form.submitOperationUser }} |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | 日期:{{ form.submitOperationTime }} |
| | | </el-col> |
| | | <el-col :span="4"> 操作人:{{ form.submitOperationUser }} </el-col> |
| | | <el-col :span="6"> 日期:{{ form.submitOperationTime }} </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div v-show="currentStepClick === 1"> |
| | | <el-card style="margin-top: 1em; height: 51vh; overflow-y: scroll;"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="归还人:" prop="rebackUser" :rules="[{ required: currentStep === 1, message: '请输入归还人', trigger: 'change' }]"> |
| | | <el-form-item |
| | | label="归还人:" |
| | | prop="rebackUser" |
| | | :rules="[ |
| | | { |
| | | required: currentStep === 1, |
| | | message: '请输入归还人', |
| | | trigger: 'change' |
| | | } |
| | | ]" |
| | | > |
| | | <!-- <el-input v-model="form.rebackUser" size="small" :disabled="currentStep !== 1"></el-input> --> |
| | | <el-select v-model="form.rebackUser" filterable placeholder="请选择" clearable |
| | | size="small" style="width: 50%;" :disabled="currentStep !== 1"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.name"> |
| | | <el-select |
| | | v-model="form.rebackUser" |
| | | filterable |
| | | placeholder="请选择" |
| | | clearable |
| | | size="small" |
| | | style="width: 50%;" |
| | | :disabled="currentStep !== 1" |
| | | > |
| | | <el-option |
| | | v-for="item in responsibleOptions" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.name" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="归还日期:" prop="rebackTime" :rules="[{ required: currentStep === 1, message: '请选择归还日期', trigger: 'change' }]"> |
| | | <el-form-item |
| | | label="归还日期:" |
| | | prop="rebackTime" |
| | | :rules="[ |
| | | { |
| | | required: currentStep === 1, |
| | | message: '请选择归还日期', |
| | | trigger: 'change' |
| | | } |
| | | ]" |
| | | > |
| | | <el-date-picker |
| | | v-model="form.rebackTime" |
| | | :disabled="currentStep !== 1" |
| | | type="date" |
| | | placeholder="选择日期" size="small" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | placeholder="选择日期" |
| | | size="small" |
| | | format="yyyy-MM-dd HH:mm:ss" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="接收状况:" |
| | | > |
| | | <el-radio-group v-model="form.receiveState" :disabled="currentStep !== 1"> |
| | | <el-form-item label="接收状况:"> |
| | | <el-radio-group |
| | | v-model="form.receiveState" |
| | | :disabled="currentStep !== 1" |
| | | > |
| | | <el-radio :label="0">合格</el-radio> |
| | | <el-radio :label="1">维修</el-radio> |
| | | <el-radio :label="2">停用</el-radio> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="设备负责人:" prop="deviceUser" :rules="[{ required: currentStep === 1, message: '请选择设备负责人', trigger: 'change' }]"> |
| | | <el-form-item |
| | | label="设备负责人:" |
| | | prop="deviceUser" |
| | | :rules="[ |
| | | { |
| | | required: currentStep === 1, |
| | | message: '请选择设备负责人', |
| | | trigger: 'change' |
| | | } |
| | | ]" |
| | | > |
| | | <!-- <el-input v-model="form.deviceUser" size="small" :disabled="currentStep !== 1"></el-input> --> |
| | | <el-select v-model="form.deviceUser" filterable placeholder="请选择" clearable |
| | | size="small" style="width: 50%;" :disabled="currentStep !== 1"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.name"> |
| | | <el-select |
| | | v-model="form.deviceUser" |
| | | filterable |
| | | placeholder="请选择" |
| | | clearable |
| | | size="small" |
| | | style="width: 50%;" |
| | | :disabled="currentStep !== 1" |
| | | > |
| | | <el-option |
| | | v-for="item in responsibleOptions" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.name" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="备注:"> |
| | | <el-input type="textarea" v-model="form.note" :disabled="currentStep !== 1" |
| | | size="small"></el-input> |
| | | <el-input |
| | | type="textarea" |
| | | v-model="form.note" |
| | | :disabled="currentStep !== 1" |
| | | size="small" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | |
| | | </el-row> |
| | | </el-card> |
| | | <el-row style="margin-top: 1em;"> |
| | | <el-col :span="4"> |
| | | 操作人:{{ form.receiveOperationUser }} |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | 日期:{{ form.receiveOperationTime }} |
| | | </el-col> |
| | | <el-col :span="4"> 操作人:{{ form.receiveOperationUser }} </el-col> |
| | | <el-col :span="6"> 日期:{{ form.receiveOperationTime }} </el-col> |
| | | </el-row> |
| | | </div> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="submitForm('3reject')" v-if="currentStep !== 0 && currentStep !== 2">驳回</el-button> |
| | | <el-button @click="submitForm('2save')" v-if="currentStep === 0">保存</el-button> |
| | | <el-button type="primary" v-if="currentStep !== 2" @click="submitForm('1submit')">{{ currentStep === 0 ? '提交' : |
| | | '通过' |
| | | }}</el-button> |
| | | <el-button |
| | | @click="submitForm('3reject')" |
| | | v-if="currentStep !== 0 && currentStep !== 2" |
| | | >驳回</el-button |
| | | > |
| | | <el-button @click="submitForm('2save')" v-if="currentStep === 0" |
| | | >保存</el-button |
| | | > |
| | | <el-button |
| | | type="primary" |
| | | v-if="currentStep !== 2" |
| | | @click="submitForm('1submit')" |
| | | >{{ currentStep === 0 ? "提交" : "通过" }}</el-button |
| | | > |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="流程跟踪" top="5vh" :visible.sync="dialogVisible0" width="60%"> |
| | | <el-table |
| | | :data="deviceLogs" |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | type="index" |
| | | width="50"> |
| | | <el-dialog |
| | | title="流程跟踪" |
| | | top="5vh" |
| | | :visible.sync="dialogVisible0" |
| | | width="60%" |
| | | > |
| | | <el-table :data="deviceLogs" style="width: 100%"> |
| | | <el-table-column type="index" width="50"> </el-table-column> |
| | | <el-table-column prop="operator" label="操作人" width="180"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="operator" |
| | | label="操作人" |
| | | width="180"> |
| | | <el-table-column prop="operationTime" label="操作日期" width="180"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="operationTime" |
| | | label="操作日期" |
| | | width="180"> |
| | | <el-table-column prop="operationType" label="提交类型"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="operationType" |
| | | label="提交类型"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="operationContent" |
| | | label="操作内容"> |
| | | <el-table-column prop="operationContent" label="操作内容"> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import ValueTable from '../../tool/value-table.vue' |
| | | import { dateFormat } from '../../../util/date' |
| | | import ValueTable from "../../tool/value-table.vue"; |
| | | import { dateFormat } from "../../../util/date"; |
| | | export default { |
| | | props: { |
| | | clickNodeVal: { |
| | |
| | | data() { |
| | | return { |
| | | dialogVisible: false, |
| | | dialogVisible0:false, |
| | | dialogVisible0: false, |
| | | //表头显示 |
| | | componentData:{ |
| | | componentData: { |
| | | entity: { |
| | | processNumber: null, |
| | | deviceId:null, |
| | | deviceId: null, |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'asc' |
| | | field: "id", |
| | | order: "asc" |
| | | } |
| | | }, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | do: [ |
| | | }, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | do: [ |
| | | { |
| | | id: 'show', |
| | | font: '查看', |
| | | type: 'text', |
| | | method: 'lookDetail' |
| | | }, |
| | | { |
| | | id: 'delete', |
| | | font: '删除', |
| | | type: 'text', |
| | | method: 'doDiy' |
| | | id: "show", |
| | | font: "查看", |
| | | type: "text", |
| | | method: "lookDetail" |
| | | }, |
| | | { |
| | | id: '111', |
| | | font: '流程跟踪', |
| | | type: 'text', |
| | | method: 'handleLookList' |
| | | }], |
| | | init:false, |
| | | tagField: { |
| | | recipientState:{ |
| | | select: [{ |
| | | value: 0, |
| | | type: 'success', |
| | | label: '合格' |
| | | }, { |
| | | value: 1, |
| | | type: 'warning', |
| | | label: '维修' |
| | | }, { |
| | | value: 2, |
| | | type: 'info', |
| | | label: '停用' |
| | | }, { |
| | | value: 3, |
| | | type: 'danger', |
| | | label: '报废' |
| | | }] |
| | | } |
| | | id: "delete", |
| | | font: "删除", |
| | | type: "text", |
| | | method: "doDiy" |
| | | }, |
| | | selectField: {}, |
| | | requiredAdd: [], |
| | | requiredUp: [], |
| | | { |
| | | id: "111", |
| | | font: "流程跟踪", |
| | | type: "text", |
| | | method: "handleLookList" |
| | | } |
| | | ], |
| | | init: false, |
| | | tagField: { |
| | | recipientState: { |
| | | select: [ |
| | | { |
| | | value: 0, |
| | | type: "success", |
| | | label: "合格" |
| | | }, |
| | | { |
| | | value: 1, |
| | | type: "warning", |
| | | label: "维修" |
| | | }, |
| | | { |
| | | value: 2, |
| | | type: "info", |
| | | label: "停用" |
| | | }, |
| | | { |
| | | value: 3, |
| | | type: "danger", |
| | | label: "报废" |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | selectField: {}, |
| | | requiredAdd: [], |
| | | requiredUp: [] |
| | | }, |
| | | upIndex:0, |
| | | entityCopy:null, |
| | | upIndex: 0, |
| | | entityCopy: null, |
| | | currentStep: 0, // 步骤条显示第几步 |
| | | currentStepClick: 0, // 点击步骤条变化 |
| | | steps: ['借出', '借用'], |
| | | steps: ["借出", "借用"], |
| | | responsibleOptions: [], // 下环节负责人list |
| | | form:{ |
| | | processNumber:null, |
| | | deviceName:null, |
| | | unifyNumber:null, |
| | | recipientUser:null, |
| | | recipientTime:null, |
| | | nextUser:null, |
| | | rebackUser:null, |
| | | rebackTime:null, |
| | | receiveState:null, |
| | | deviceUser:null, |
| | | fileName:null, |
| | | form: { |
| | | processNumber: null, |
| | | deviceName: null, |
| | | unifyNumber: null, |
| | | recipientUser: null, |
| | | recipientTime: null, |
| | | nextUser: null, |
| | | rebackUser: null, |
| | | rebackTime: null, |
| | | receiveState: null, |
| | | deviceUser: null, |
| | | fileName: null |
| | | }, |
| | | rules:{ |
| | | processNumber: [{ required: true, message: '请输入编号', trigger: 'blur' }], |
| | | deviceName: [{ required: true, message: '请输入设备名称', trigger: 'blur' }], |
| | | unifyNumber: [{ required: true, message: '请输入管理编号', trigger: 'blur' }], |
| | | recipientUser: [{ required: true, message: '请输入借用人', trigger: 'blur' }], |
| | | borrowerContactInformation: [{ required: true, message: '请输入借用人联系方式', trigger: 'blur' }], |
| | | recipientTime: [{ required: true, message: '请选择借用日期', trigger: 'change' }], |
| | | nextUser: [{ required: true, message: '请选择下环节负责人', trigger: 'change' }], |
| | | rules: { |
| | | processNumber: [ |
| | | { required: true, message: "请输入编号", trigger: "blur" } |
| | | ], |
| | | deviceName: [ |
| | | { required: true, message: "请输入设备名称", trigger: "blur" } |
| | | ], |
| | | unifyNumber: [ |
| | | { required: true, message: "请输入管理编号", trigger: "blur" } |
| | | ], |
| | | recipientUser: [ |
| | | { required: true, message: "请输入借用人", trigger: "blur" } |
| | | ], |
| | | borrowerContactInformation: [ |
| | | { required: true, message: "请输入借用人联系方式", trigger: "blur" } |
| | | ], |
| | | recipientTime: [ |
| | | { required: true, message: "请选择借用日期", trigger: "change" } |
| | | ], |
| | | nextUser: [ |
| | | { required: true, message: "请选择下环节负责人", trigger: "change" } |
| | | ] |
| | | }, |
| | | deviceLogs:[], |
| | | outLoading:false |
| | | } |
| | | deviceLogs: [], |
| | | outLoading: false |
| | | }; |
| | | }, |
| | | watch:{ |
| | | watch: { |
| | | // 监听点击el-tree的数据,进行数据刷新 |
| | | clickNodeVal(newVal) { |
| | | if (newVal.value) { |
| | | this.componentData.entity.deviceId = this.clickNodeVal.value |
| | | this.entityCopy = this.HaveJson(this.componentData.entity) |
| | | this.refreshTable() |
| | | this.componentData.entity.deviceId = this.clickNodeVal.value; |
| | | this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | this.refreshTable(); |
| | | } |
| | | }, |
| | | dialogVisible(newVal) { |
| | | if (!newVal) { |
| | | this.form = {} |
| | | this.currentStep = 0 // 步骤条显示第几步 |
| | | this.currentStepClick = 0 // 点击步骤条变化 |
| | | this.$refs['form'].clearValidate() |
| | | this.form = {}; |
| | | this.currentStep = 0; // 步骤条显示第几步 |
| | | this.currentStepClick = 0; // 点击步骤条变化 |
| | | this.$refs["form"].clearValidate(); |
| | | } |
| | | } |
| | | }, |
| | | computed: { |
| | | action() { |
| | | return this.javaApi + this.$api.personnel.saveCNASFile |
| | | return this.javaApi + this.$api.personnel.saveCNASFile; |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.componentData.entity.deviceId = this.clickNodeVal.value |
| | | this.entityCopy = this.HaveJson(this.componentData.entity) |
| | | this.componentData.entity.deviceId = this.clickNodeVal.value; |
| | | this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | // console.log(333,this.clickNodeVal) |
| | | this.getUserList() |
| | | this.refreshTable() |
| | | this.getUserList(); |
| | | this.refreshTable(); |
| | | }, |
| | | methods: { |
| | | refreshTable(e) { |
| | | this.$refs['ValueTable'].selectList(e) |
| | | this.$refs["ValueTable"].selectList(e); |
| | | }, |
| | | refresh() { |
| | | this.componentData.entity = this.HaveJson(this.entityCopy) |
| | | this.refreshTable() |
| | | this.componentData.entity = this.HaveJson(this.entityCopy); |
| | | this.refreshTable(); |
| | | // this.upIndex++ |
| | | }, |
| | | choiceStep(index) { |
| | | this.currentStepClick = index |
| | | this.currentStepClick = index; |
| | | }, |
| | | //提交表单 |
| | | async submitForm(saveState) { |
| | | this.$refs.form.validate((valid) => { |
| | | if (valid === true || saveState !== '1submit') { |
| | | this.$refs.form.validate(valid => { |
| | | if (valid === true || saveState !== "1submit") { |
| | | // 给当前环节设置创建人与时间 |
| | | let user = JSON.parse(localStorage.getItem('user')) |
| | | const dateTime = dateFormat(new Date()) |
| | | let user = JSON.parse(localStorage.getItem("user")); |
| | | const dateTime = dateFormat(new Date()); |
| | | // 获取当前环节操作人与日期 |
| | | switch (this.currentStep) { |
| | | case 0: |
| | | this.form.submitOperationUser = user.name |
| | | this.form.submitOperationTime = dateTime |
| | | break |
| | | this.form.submitOperationUser = user.name; |
| | | this.form.submitOperationTime = dateTime; |
| | | break; |
| | | case 1: |
| | | this.form.receiveOperationUser = user.name |
| | | this.form.receiveOperationTime = dateTime |
| | | break |
| | | this.form.receiveOperationUser = user.name; |
| | | this.form.receiveOperationTime = dateTime; |
| | | break; |
| | | default: |
| | | break |
| | | break; |
| | | } |
| | | // 获取当前环节负责人 |
| | | switch (saveState === '3reject' ? this.currentStep - 1 : this.currentStep) { |
| | | switch ( |
| | | saveState === "3reject" ? this.currentStep - 1 : this.currentStep |
| | | ) { |
| | | case 0: |
| | | this.form.nowUser = this.form.nextUser |
| | | break |
| | | this.form.nowUser = this.form.nextUser; |
| | | break; |
| | | default: |
| | | break |
| | | break; |
| | | } |
| | | let currentStepAction; |
| | | // 设置该操作判断是否为提交,保存,驳回,通过 |
| | | switch (saveState) { |
| | | // 提交,通过 |
| | | case '1submit': |
| | | currentStepAction = this.currentStep + 1 |
| | | break |
| | | case "1submit": |
| | | currentStepAction = this.currentStep + 1; |
| | | break; |
| | | // 保存 |
| | | case '2save': |
| | | currentStepAction = this.currentStep |
| | | break |
| | | case "2save": |
| | | currentStepAction = this.currentStep; |
| | | break; |
| | | // 驳回 |
| | | case '3reject': |
| | | currentStepAction = this.currentStep - 1 |
| | | break |
| | | case "3reject": |
| | | currentStepAction = this.currentStep - 1; |
| | | break; |
| | | default: |
| | | break |
| | | break; |
| | | } |
| | | // 获取当前状态 |
| | | this.form.nowState = currentStepAction === 2 ? '关闭' : this.steps[currentStepAction] |
| | | this.form.deviceId = this.clickNodeVal.value |
| | | delete this.form.deviceLogs |
| | | this.$axios.post(this.$api.deviceBorrow.saveDeviceBorrow, this.form, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs:true |
| | | }).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('提交成功') |
| | | this.dialogVisible = false |
| | | this.refreshTable() |
| | | } |
| | | }) |
| | | this.form.nowState = |
| | | currentStepAction === 2 ? "关闭" : this.steps[currentStepAction]; |
| | | this.form.deviceId = this.clickNodeVal.value; |
| | | delete this.form.deviceLogs; |
| | | this.$axios |
| | | .post(this.$api.deviceBorrow.saveDeviceBorrow, this.form, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }) |
| | | .then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success("提交成功"); |
| | | this.dialogVisible = false; |
| | | this.refreshTable(); |
| | | } |
| | | }); |
| | | } else { |
| | | let step = this.steps[this.currentStep] |
| | | this.$message.warning(step + ' 流程中有必填项未填!'); |
| | | let step = this.steps[this.currentStep]; |
| | | this.$message.warning(step + " 流程中有必填项未填!"); |
| | | } |
| | | }); |
| | | }, |
| | | deleteFile() { |
| | | this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$axios.delete(this.$api.personnel.deleteCNASFile + "?fileName=" + this.form.fileName).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('删除成功!') |
| | | } |
| | | this.$confirm("此操作将永久删除该文件, 是否继续?", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | this.$axios |
| | | .delete( |
| | | this.$api.personnel.deleteCNASFile + |
| | | "?fileName=" + |
| | | this.form.fileName |
| | | ) |
| | | .then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success("删除成功!"); |
| | | } |
| | | }); |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已取消删除' |
| | | .catch(() => { |
| | | this.$message({ |
| | | type: "info", |
| | | message: "已取消删除" |
| | | }); |
| | | }); |
| | | }); |
| | | }, |
| | | onSuccess(response, file, fileList) { |
| | | if (response.code == 200) { |
| | | // 在保存赋值新文件 |
| | | this.form.fileName = file.name |
| | | this.form.url= response.data |
| | | this.form.fileName = file.name; |
| | | this.form.url = response.data; |
| | | } else { |
| | | this.$message.error(response.message) |
| | | this.$message.error(response.message); |
| | | } |
| | | }, |
| | | // 获取负责人信息接口 |
| | | getUserList() { |
| | | this.$axios.get(this.$api.deviceScope.selectUserList).then(res => { |
| | | if (res.code == 200) { |
| | | this.responsibleOptions = res.data |
| | | this.responsibleOptions = res.data; |
| | | } |
| | | }) |
| | | }); |
| | | }, |
| | | // 查看详情 |
| | | lookDetail(row){ |
| | | this.$axios.get(this.$api.deviceBorrow.getDeviceBorrow+'?id='+row.id).then(res => { |
| | | if (res.code == 200) { |
| | | this.form = res.data |
| | | this.form.deviceName = this.clickNodeVal.label |
| | | this.form.deviceId = this.clickNodeVal.value |
| | | this.deviceLogs = res.data.deviceLogs |
| | | let i = this.steps.findIndex(item => item == row.nowState) |
| | | if(i==-1){ |
| | | this.currentStep = 2 |
| | | this.currentStepClick = 0 |
| | | }else{ |
| | | this.currentStep = i |
| | | this.currentStepClick = i |
| | | lookDetail(row) { |
| | | this.$axios |
| | | .get(this.$api.deviceBorrow.getDeviceBorrow + "?id=" + row.id) |
| | | .then(res => { |
| | | if (res.code == 200) { |
| | | this.form = res.data; |
| | | this.form.deviceName = this.clickNodeVal.label; |
| | | this.form.deviceId = this.clickNodeVal.value; |
| | | this.deviceLogs = res.data.deviceLogs; |
| | | let i = this.steps.findIndex(item => item == row.nowState); |
| | | if (i == -1) { |
| | | this.currentStep = 2; |
| | | this.currentStepClick = 0; |
| | | } else { |
| | | this.currentStep = i; |
| | | this.currentStepClick = i; |
| | | } |
| | | console.log(this.currentStepClick); |
| | | this.dialogVisible = true; |
| | | } |
| | | console.log(this.currentStepClick) |
| | | this.dialogVisible = true |
| | | } |
| | | }) |
| | | }); |
| | | }, |
| | | // 新增 |
| | | add(){ |
| | | this.dialogVisible = true |
| | | add() { |
| | | this.dialogVisible = true; |
| | | this.form = { |
| | | processNumber:null, |
| | | deviceName:null, |
| | | unifyNumber:null, |
| | | recipientUser:null, |
| | | recipientTime:null, |
| | | nextUser:null, |
| | | rebackUser:null, |
| | | rebackTime:null, |
| | | receiveState:null, |
| | | deviceUser:null, |
| | | fileName:null, |
| | | } |
| | | this.form.deviceName = this.clickNodeVal.label |
| | | this.form.deviceId = this.clickNodeVal.value |
| | | processNumber: null, |
| | | deviceName: null, |
| | | unifyNumber: null, |
| | | recipientUser: null, |
| | | recipientTime: null, |
| | | nextUser: null, |
| | | rebackUser: null, |
| | | rebackTime: null, |
| | | receiveState: null, |
| | | deviceUser: null, |
| | | fileName: null |
| | | }; |
| | | this.form.deviceName = this.clickNodeVal.label; |
| | | this.form.deviceId = this.clickNodeVal.value; |
| | | }, |
| | | //导出 |
| | | handleDown() { |
| | | this.outLoading = true |
| | | this.$axios.post(this.$api.deviceBorrow.deviceBorrowExport,{deviceId:this.clickNodeVal.value},{responseType: 'blob'}).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { |
| | | type: 'application/force-download' |
| | | }) |
| | | const filename = decodeURI(this.clickNodeVal.label+'设备借出统计'+'.xlsx') |
| | | //将Blob 对象转换成字符串 |
| | | let reader = new FileReader(); |
| | | reader.readAsText(blob, 'utf-8'); |
| | | reader.onload = () => { |
| | | try { |
| | | let result = JSON.parse(reader.result); |
| | | if (result.message) { |
| | | this.$message.error(result.message); |
| | | } else { |
| | | this.outLoading = true; |
| | | this.$axios |
| | | .post( |
| | | this.$api.deviceBorrow.deviceBorrowExport, |
| | | { deviceId: this.clickNodeVal.value }, |
| | | { responseType: "blob" } |
| | | ) |
| | | .then(res => { |
| | | this.outLoading = false; |
| | | const blob = new Blob([res], { |
| | | type: "application/force-download" |
| | | }); |
| | | const filename = decodeURI( |
| | | this.clickNodeVal.label + "设备借出统计" + ".xlsx" |
| | | ); |
| | | //将Blob 对象转换成字符串 |
| | | let reader = new FileReader(); |
| | | reader.readAsText(blob, "utf-8"); |
| | | reader.onload = () => { |
| | | try { |
| | | let result = JSON.parse(reader.result); |
| | | if (result.message) { |
| | | this.$message.error(result.message); |
| | | } else { |
| | | // 创建一个超链接,将文件流赋进去,然后实现这个超链接的单击事件 |
| | | const elink = document.createElement("a"); |
| | | elink.download = filename; |
| | | elink.style.display = "none"; |
| | | elink.href = URL.createObjectURL(blob); |
| | | document.body.appendChild(elink); |
| | | elink.click(); |
| | | URL.revokeObjectURL(elink.href); // 释放URL 对象 |
| | | document.body.removeChild(elink); |
| | | this.$message.success("导出成功"); |
| | | } |
| | | } catch (err) { |
| | | console.log(err); |
| | | // 创建一个超链接,将文件流赋进去,然后实现这个超链接的单击事件 |
| | | const elink = document.createElement('a') |
| | | elink.download = filename |
| | | elink.style.display = 'none' |
| | | elink.href = URL.createObjectURL(blob) |
| | | document.body.appendChild(elink) |
| | | const elink = document.createElement("a"); |
| | | elink.download = filename; |
| | | elink.style.display = "none"; |
| | | elink.href = URL.createObjectURL(blob); |
| | | document.body.appendChild(elink); |
| | | elink.click(); |
| | | URL.revokeObjectURL(elink.href) // 释放URL 对象 |
| | | document.body.removeChild(elink) |
| | | this.$message.success('导出成功') |
| | | URL.revokeObjectURL(elink.href); // 释放URL 对象 |
| | | document.body.removeChild(elink); |
| | | this.$message.success("导出成功"); |
| | | } |
| | | } catch (err) { |
| | | console.log(err); |
| | | // 创建一个超链接,将文件流赋进去,然后实现这个超链接的单击事件 |
| | | const elink = document.createElement('a') |
| | | elink.download = filename |
| | | elink.style.display = 'none' |
| | | elink.href = URL.createObjectURL(blob) |
| | | document.body.appendChild(elink) |
| | | elink.click(); |
| | | URL.revokeObjectURL(elink.href) // 释放URL 对象 |
| | | document.body.removeChild(elink) |
| | | this.$message.success('导出成功') |
| | | } |
| | | } |
| | | }) |
| | | }; |
| | | }); |
| | | }, |
| | | handleLookList(row){ |
| | | this.$axios.get(this.$api.deviceBorrow.getDeviceBorrow+'?id='+row.id).then(res => { |
| | | if (res.code == 200) { |
| | | this.deviceLogs = res.data.deviceLogs |
| | | this.dialogVisible0 = true |
| | | } |
| | | }) |
| | | handleLookList(row) { |
| | | this.$axios |
| | | .get(this.$api.deviceBorrow.getDeviceBorrow + "?id=" + row.id) |
| | | .then(res => { |
| | | if (res.code == 200) { |
| | | this.deviceLogs = res.data.deviceLogs; |
| | | this.dialogVisible0 = true; |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | |
| | | display: inline-block; |
| | | width: 3px; |
| | | height: 16px; |
| | | background: #3A7BFA; |
| | | background: #3a7bfa; |
| | | margin-right: 4px; |
| | | } |
| | | |
| | |
| | | .form .search_label { |
| | | width: 120px; |
| | | } |
| | | .el-radio{ |
| | | .el-radio { |
| | | margin-right: 10px; |
| | | } |
| | | .el-radio-group{ |
| | | .el-radio-group { |
| | | width: 100%; |
| | | display: flex; |
| | | margin-top: 12px; |