New file |
| | |
| | | <template> |
| | | <zt-dialog ref="dialog" column="3" :title="title" :stepMarker="stepMarker" @confirm="formSubmit"> |
| | | <el-form ref="dataForm" style="padding-top: 0" :inline="true" :disabled="dataForm.disabled" :model="dataForm" |
| | | label-width="120px" class="configChangeFormAuto"> |
| | | <div> |
| | | <el-form-item label-width="60px" label="编号:" style="width:100%;margin-bottom: -5px"> |
| | | <span>{{dataForm.configItemOutbound.code || '编号自动生成'}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="border: 1px solid rgba(0,0,0,.2);width: 99%"> |
| | | <div style="border-bottom: 1px solid rgba(0,0,0,.2);" class="configChangeContentWidth"> |
| | | <el-form-item class="marginTopAndMarginBottom" label="项目编号" style="width: 49%"> |
| | | <el-input v-model="dataForm.project.code" placeholder="请输入项目编号"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="marginTopAndMarginBottom" label="项目名称" style="width: 49%"> |
| | | <el-input v-model="dataForm.project.softwareName" placeholder="请输入项目名称"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="申请人" style="width: 49%"> |
| | | <el-input :disabled="stepMarker!=='pzxck_first'" v-model="dataForm.configItemOutbound.applicant" |
| | | placeholder="请输入申请人"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="申请日期" style="width: 49%"> |
| | | <el-date-picker |
| | | :disabled="stepMarker!=='pzxck_first'" |
| | | v-model="dataForm.configItemOutbound.applyDate" |
| | | type="date" |
| | | placeholder="请选择申请日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <div class="el-configChangeDialog el-border-bottom"> |
| | | <div style="width: 120px;text-align: center;font-weight: 600"> |
| | | 出库原因 |
| | | </div> |
| | | <div class="el-border-left acceptDate" style="width: 90%;"> |
| | | <el-form-item style="width: 100%;padding-left:20px;margin:0;"> |
| | | <el-input :disabled="stepMarker!=='pzxck_first'" v-model="dataForm.configItemOutbound.changeReason" placeholder="出库原因..."></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </div> |
| | | <el-form-item class="marginTopAndMarginBottom2" label="库类型" style="width: 99%"> |
| | | <zt-dict :disabled="stepMarker!=='pzxck_first'" v-model="dataForm.configItemOutbound.libraryType" :radio="true" dict="library_type"></zt-dict> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="el-configChangeDialog el-border-bottom"> |
| | | <div class="DFormWidth DAlign DHold"> |
| | | 出库申请配置项 |
| | | </div> |
| | | <div class="el-border-left" style="width: calc(100% - 120px)"> |
| | | <div class="table-container"> |
| | | <el-table ref="tableConfigItemList" class="el-software el-margin-top-bot" |
| | | style="width: 99%;margin-left: 5px" border :data="dataForm.configOutboundList" |
| | | stripe> |
| | | <el-table-column prop="no" align="center" width="60" label="序号"> |
| | | <template slot-scope="scope"> |
| | | <span v-html="indexFormat(scope.$index)"></span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="itemName" width="200" label="配置项名称"> |
| | | <template v-slot="{ row }"> |
| | | <el-input v-if="showAddAndEdit" v-model="row.itemName" placeholder="配置项名称"></el-input> |
| | | <span v-else>{{row.itemName}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="itemIdentify" align="center" min-width="290" label="配置项标识"> |
| | | <template v-slot="{ row }"> |
| | | <el-input v-if="showAddAndEdit" v-model="row.itemIdentify" placeholder="配置项标识"></el-input> |
| | | <span v-else>{{row.itemIdentify}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="version" align="center" width="120" label="版本"> |
| | | <template v-slot="{ row }"> |
| | | <el-input v-if="showAddAndEdit" v-model="row.version" placeholder="版本"></el-input> |
| | | <span v-else>{{row.version}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="secretClass" label="密级" width="100" align="center"> |
| | | <template v-slot="{ row }"> |
| | | <zt-dict :disabled="!showAddAndEdit" v-model="row.secretClass" placeholder="密级" dict="secret_class" |
| | | clearable></zt-dict> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="showColumn" fixed="right" label="管理" width="100" align="center"> |
| | | <template v-slot="{ row }"> |
| | | <zt-table-button v-if="row.checkId" |
| | | @click="openCheckOrderWin(row)">修改检查单 |
| | | </zt-table-button> |
| | | <zt-table-button v-else-if="',软件测试计划,软件测试说明,软件测试记录,软件测试报告'.indexOf(row.itemName)>0" |
| | | @click="openCheckOrderWin(row)">新增检查单 |
| | | </zt-table-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" prop="files" label="上传附件" width="240" align="center"> |
| | | <template v-slot="{ row }"> |
| | | <!-- <zt-table-button @click="files(row.id)">上传附件</zt-table-button>--> |
| | | <table-uploader busi-type="config_item_warehouse" model-name="row" :dataForm="row" |
| | | v-model="row.files"/> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div v-if="showAddAndEdit && !dataForm.disabled" class="icon-container" @click="handleCommand"> |
| | | <!-- 放置固定的图标 --> |
| | | <i class="el-icon-plus"></i> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="el-configChangeDialog el-border-bottom"> |
| | | <div class="DFormWidth DAlign DHold"> |
| | | 批准意见 |
| | | </div> |
| | | <div style="width: calc(100% - 120px)" class="el-border-left"> |
| | | <el-form-item class="el-wt-form-item-margin" label-width="20px" style="width: 85%"> |
| | | <zt-dict :disabled="stepMarker!=='pzxck_bmsh'" v-model="dataForm.configItemOutbound.approvalOpinions" |
| | | dict="is_pass" :radio="true" |
| | | clearable></zt-dict> |
| | | </el-form-item> |
| | | <el-form-item label-width="80%" label="签字:" style="width: 65%"> |
| | | <span>{{dataForm.configItemOutbound.approvalSign}}</span> |
| | | </el-form-item> |
| | | <el-form-item label="日期:" style="width: 20%"> |
| | | <span>{{dataForm.configItemOutbound.approvalDate}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | </div> |
| | | <div class="el-configChangeDialog el-border-bottom"> |
| | | <div style="width: 120px;text-align: center;font-weight: 600"> |
| | | 项目CM操作 |
| | | </div> |
| | | <div style="width: calc(100% - 120px)" class="el-border-left"> |
| | | <el-form-item class="el-CMTextarea" style="width: 100%;padding: 5px"> |
| | | <el-input v-if="stepMarker=='pzxck_cmcz'" type="textarea" :rows="2" placeholder="请输入内容" |
| | | v-model="dataForm.configItemOutbound.outboundCmOperations"></el-input> |
| | | <span v-else>{{dataForm.configItemOutbound.outboundCmOperations}}</span> |
| | | </el-form-item> |
| | | <el-form-item label-width="80%" label="操作人:" style="width: 65%"> |
| | | <span>{{dataForm.configItemOutbound.outboundOperator}}</span> |
| | | </el-form-item> |
| | | <el-form-item label="日期:" style="width: 20%"> |
| | | <span>{{dataForm.configItemOutbound.outboundOperateDate}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | </div> |
| | | <div class="el-configChangeDialog"> |
| | | <div class="DFormWidth DAlign DHold"> |
| | | 备注 |
| | | </div> |
| | | <div style="width: calc(100% - 120px)" class="el-border-left"> |
| | | <el-form-item class="el-CMTextarea" style="width: 100%;padding: 5px"> |
| | | <el-input type="textarea" :rows="2" placeholder="请输入内容" |
| | | v-model="dataForm.configItemOutbound.remark"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <add-or-update-check ref="addOrUpdate" @recall="setCheckId"/> |
| | | <ConfigItemList ref="configItemList" @getChangeItemList="getChangeItemList"></ConfigItemList> |
| | | </el-form> |
| | | <template v-slot:footer> |
| | | <el-button v-if="dataForm.disabled" type="primary" @click="print()">打印</el-button> |
| | | </template> |
| | | </zt-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import AddOrUpdateCheck from '../testCheckOrder/TestCheckOrder-AddOrUpdate' |
| | | import ConfigItemList from './configItemList.vue' |
| | | import qs from "qs"; |
| | | import Cookies from "js-cookie"; |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | disabled: true, |
| | | stepMarker: '', |
| | | title: '查看', |
| | | ids:'', |
| | | showColumn: false, |
| | | showAddAndEdit:false, |
| | | menuOptions: [ |
| | | {pageCode: 'plan', name: '软件测试计划',itemIdentify:''}, |
| | | {pageCode: 'explain', name: '软件测试说明'}, |
| | | {pageCode: 'record', name: '软件测试记录'}, |
| | | {pageCode: 'report', name: '软件测试报告'}, |
| | | {pageCode: 'other', name: '其他'} |
| | | ], |
| | | pageNameCode: {'软件测试计划': 'plan', '软件测试说明': 'explain', '软件测试记录': 'record', '软件测试报告': 'report'}, |
| | | dataForm: { |
| | | id: '', |
| | | configItemOutbound: { |
| | | id: "", |
| | | code: "", |
| | | applicant: "", |
| | | applyDate: "", |
| | | libraryType: "", |
| | | outboundReason:'', |
| | | approvalOpinions: "", |
| | | approvalSign: "", |
| | | approvalDate: "", |
| | | CmOperations: "", |
| | | Operator: "", |
| | | OperateDate: "", |
| | | remark: "", |
| | | }, |
| | | project: { |
| | | code: '', |
| | | softwareName: '', |
| | | }, |
| | | configItemList: [], |
| | | flowInfoDto: {} |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | const roleName = localStorage.getItem('roleName') |
| | | if (roleName && roleName.includes('QA')) { |
| | | this.showColumn = true; |
| | | } |
| | | if (roleName && roleName.includes('测试员')) { |
| | | this.showAddAndEdit = true; |
| | | } |
| | | }, |
| | | computed: {}, |
| | | components: { |
| | | AddOrUpdateCheck, |
| | | ConfigItemList |
| | | }, |
| | | methods: { |
| | | indexFormat(index) { |
| | | return index += 1 |
| | | }, |
| | | init(id, row) { |
| | | console.log(id, row, '入库单的') |
| | | if (id) { |
| | | this.dataForm.id = id |
| | | } else { |
| | | this.dataForm.id = row.id |
| | | } |
| | | if (row.projectId) { |
| | | this.dataForm.projectId = row.projectId |
| | | } |
| | | this.getInfo() |
| | | if (!this.dataForm.disabled) { |
| | | if (!row.stepMarker) { |
| | | this.stepMarker = 'pzxck_first' |
| | | this.title = '出库申请' |
| | | } else { |
| | | this.title = row.stepName |
| | | this.stepMarker = row.stepMarker |
| | | } |
| | | } |
| | | console.log(this.dataForm.id, this.dataForm.projectId, 'params params') |
| | | }, |
| | | // addConfigItemWarehouseRow(){ |
| | | // this.dataForm.configItemList.push({}) |
| | | // this.$nextTick(()=>{ |
| | | // const tableBody=this.$refs.tableConfigItemList.$el.querySelector('.el-table__body-wrapper') |
| | | // tableBody.scrollTop = tableBody.scrollHeight; |
| | | // }) |
| | | // }, |
| | | handleCommand() { |
| | | this.$nextTick(()=>{ |
| | | console.log(this.dataForm.projectId,'this.dataForm.projectId') |
| | | this.ids = this.dataForm.configOutboundList.map(item=>item.outboundSelectId).join(',') |
| | | this.$refs.configItemList.$refs.dialog.init(this.dataForm.projectId,this.ids) |
| | | }) |
| | | // this.dataForm.configItemList.push({}) |
| | | // this.$nextTick(() => { |
| | | // const tableBody = this.$refs.tableConfigItemList.$el.querySelector('.el-table__body-wrapper') |
| | | // tableBody.scrollTop = tableBody.scrollHeight; |
| | | // }) |
| | | }, |
| | | getChangeItemList(data){ |
| | | console.log(data.configOutboundList,'getChangeItemList(data)') |
| | | if(data.configOutboundList){ |
| | | this.dataForm.configOutboundList=this.dataForm.configOutboundList.concat(data.configOutboundList) |
| | | } |
| | | }, |
| | | openCheckOrderWin(row) { |
| | | console.log(row, "openCheckOrderWin(row)") |
| | | row.projectId = this.dataForm.projectId |
| | | if (!row.pageCode) { |
| | | if (!row.checkId) { |
| | | row.checkId = -1 |
| | | } |
| | | row.pageCode = this.pageNameCode[row.itemName] |
| | | console.log(row.itemName, row.pageCode, "row.itemName,openCheckOrderWin(row) row.pageCode") |
| | | } |
| | | this.$refs.addOrUpdate.$refs.dialog.init(null, row) |
| | | |
| | | }, |
| | | setCheckId(checkId, row) { |
| | | console.log(checkId, row, "setCheckId(checkId, row)") |
| | | this.$set(row, 'checkId', checkId) |
| | | }, |
| | | async print(){ |
| | | var params = qs.stringify({ |
| | | token: Cookies.get('token'), |
| | | id:this.dataForm.id |
| | | }) |
| | | let apiURL = `/configItemOutbound/ConfigItemOutbound/exportConfigOutbound` |
| | | window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${params}` |
| | | }, |
| | | // 获取信息 |
| | | async getInfo() { |
| | | let params = { |
| | | changeId: this.dataForm.id, |
| | | projectId: this.dataForm.projectId |
| | | } |
| | | let res = await this.$http.get(`/configItemOutbound/ConfigItemOutbound/getDto`, {params: params}) |
| | | this.dataForm = { |
| | | ...this.dataForm, |
| | | ...res.data |
| | | } |
| | | if (this.dataForm.project === null) { |
| | | this.dataForm.project = {} |
| | | } |
| | | if (this.dataForm.configItemOutbound === null) { |
| | | this.dataForm.circulatOrder = {} |
| | | } |
| | | if (this.dataForm.flowInfoDto === null) { |
| | | this.dataForm.flowInfoDto = {} |
| | | } |
| | | console.log(this.dataForm, "getInfo this.dataForm") |
| | | }, |
| | | // 表单提交 |
| | | async formSubmit(submitType) { |
| | | if (this.showColumn && submitType == 'bl') { |
| | | for (let item of this.dataForm.configItemList) { |
| | | if (item) { |
| | | if (this.pageNameCode[item.itemName] && !item.checkId) { |
| | | this.$alert("有未提交的检查单") |
| | | return |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (submitType == 'tj' || submitType == 'bl') { |
| | | let flowInfo = { |
| | | flowCode: 'pzxck', |
| | | stepIdMark: this.stepMarker, |
| | | submitType: submitType |
| | | } |
| | | this.dataForm.flowInfoDto = flowInfo; |
| | | } |
| | | let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/configItemOutbound/ConfigItemOutbound/', this.dataForm) |
| | | if (res.success) { |
| | | await this.$tip.success() |
| | | this.$refs.dialog.close() |
| | | this.$emit('refreshDataList') |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style> |
| | | .ManageFormAuto { |
| | | width: 70%; |
| | | margin: 0 auto; |
| | | } |
| | | |
| | | .confirmDAuto { |
| | | border: 1px solid; |
| | | } |
| | | |
| | | .el-configChangeDialog { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .DFormWidth { |
| | | width: 120px; |
| | | } |
| | | |
| | | .DAlign { |
| | | text-align: center; |
| | | } |
| | | |
| | | .DManageForm { |
| | | /*border-left: 1px solid;*/ |
| | | width: 100%; |
| | | } |
| | | |
| | | .DManageForm > .el-form-item > .el-form-item__content { |
| | | width: calc(100% - 120px); |
| | | } |
| | | |
| | | .el-form-item.el-CMTextarea > .el-form-item__content { |
| | | width: 100%; |
| | | } |
| | | |
| | | .el-form .el-form-item.el-wt-form-item-margin { |
| | | margin-left: 120px; |
| | | } |
| | | |
| | | .el-form-border { |
| | | border-top: 1px solid; |
| | | border-bottom: 1px solid; |
| | | } |
| | | |
| | | .el-margin-top-bot { |
| | | margin-top: 5px; |
| | | margin-bottom: 5px; |
| | | } |
| | | |
| | | .zt .el-table.el-software th { |
| | | background: transparent; |
| | | } |
| | | |
| | | .zt .el-table.el-software th > .cell { |
| | | font-weight: 500; |
| | | } |
| | | |
| | | .DHold { |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .zt .el-table.el-software { |
| | | font-size: 14px; |
| | | } |
| | | |
| | | .configChangeContentWidth > .el-form-item > .el-form-item__content { |
| | | width: calc(100% - 120px); |
| | | } |
| | | |
| | | .configChangeContentWidth > .el-form-item.lastChild > .el-form-item__content { |
| | | width: calc(100% - 142px); |
| | | } |
| | | .configChangeFormAuto .acceptDate > .el-form-item > .el-form-item__content { |
| | | width: 100%; |
| | | } |
| | | .configChangeFormAuto .marginTopAndMarginBottom { |
| | | margin-top: 10px !important; |
| | | margin-bottom: 0 !important; |
| | | } |
| | | |
| | | .configChangeFormAuto .marginTopAndMarginBottom2 { |
| | | margin-top: -10px !important; |
| | | margin-bottom: 0 !important; |
| | | } |
| | | </style> |