<template>
|
<div class="app-container">
|
<div>
|
<el-input v-model="queryForm.operator" class="filter-item" placeholder="批发企业" style="width: 25%;"
|
@keyup.enter.native="queryHandle"/>
|
<el-input v-model="queryForm.ordercode" class="filter-item" placeholder="合同单号" style="width: 25%;"
|
@keyup.enter.native="queryHandle"/>
|
<el-select v-model="queryForm.status" clearable placeholder="请选择合同状态">
|
<el-option
|
class="filter-item"
|
@keyup.enter.native="queryHandle"
|
v-for="item in orderStatus"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value">
|
</el-option>
|
</el-select>
|
<el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-refresh"
|
@click="refreshHandle">刷新
|
</el-button>
|
<el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-search"
|
@click="queryHandle"/>
|
<el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-download"
|
v-if="getBtnPermission('review') && isSupervision =='null'?false:true" @click="exportRFID">导出电子标签号</el-button>
|
<el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-download"
|
v-if="getBtnPermission('review') && isSupervision =='null'?false:true" @click="exportAll">打印内包装号</el-button>
|
</div>
|
<br/>
|
<div class="table_content">
|
<el-table
|
ref="contractTable"
|
v-loading="listLoading"
|
:key="tableKey"
|
:data="contractData"
|
border
|
fit
|
highlight-current-row
|
style="width: 100%;"
|
@sort-change="sortChange"
|
@selection-change="handleSelectionChange"
|
>
|
<el-table-column
|
type="selection"
|
width="55"/>
|
<el-table-column type="index" label="序号" align="center" width="80"/>
|
<el-table-column label="合同单号" prop="ordercode" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.ordercode }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="合同状态" prop="status" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.status }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="标签退回状态" prop="returnstatus" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.returnstatus }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="甲方" prop="operator" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.operator }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="乙方" prop="manufacturer" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.manufacturer }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="乙方意见" prop="opinion" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.opinion }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="创建时间" prop="createddate" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.createddate | parseTime('{y}-{m}-{d}') }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="更新时间" prop="modifieddate" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.modifieddate | parseTime('{y}-{m}-{d}') }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="生产时间" prop="producedate" align="center" sortable="custom">
|
<template slot-scope="scope">
|
<span>{{ scope.row.producedate | parseTime('{y}-{m}-{d}') }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="操作" align="center" width="240" class-name="small-padding fixed-width">
|
<template slot-scope="scope">
|
<el-button type="text" @click="viewProductHandle(scope.row)">产品明细</el-button>
|
<el-button type="text" @click="exportProductHandle(scope.row)">导出产品明细</el-button>
|
<el-button v-if="getBtnPermission('review') && isSupervision =='null'?false:true" type="text" @click="showEditHandle(scope.row)">确认</el-button>
|
<el-button v-if="getBtnPermission('review') && isSupervision =='null'?false:true" type="text" style="color:red;" @click="deleteHandle(scope.row)">拒绝</el-button>
|
<el-button v-if="getBtnPermission('review') && isSupervision =='null'?false:true" type="text" style="color:red;" @click="produceHandle(scope.row)">生成标签</el-button>
|
<el-button type="text" @click="viewReturnHandle(scope.row.ordercode)" v-if="scope.row.status === '已生成'">退回标签</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
<br>
|
<el-pagination
|
v-show="recordTotal>0"
|
:current-page="currentPage"
|
:page-sizes="[10, 20, 30, 50]"
|
:page-size="pageSize"
|
:total="recordTotal"
|
layout="total, sizes, prev, pager, next, jumper"
|
background
|
style="float:right;"
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
/>
|
</div>
|
<el-dialog :title="dialogStatus==='create'?'新增':'确认'" :visible.sync="dialogFormVisible"
|
:modal-append-to-body="false" :close-on-click-modal="false" width="500px">
|
<el-form ref="dataForm" :rules="dataFormRules" :model="dataForm" label-position="right" label-width="140px"
|
style="margin-left:30px;width:450px;" element-loading-text="保存中...">
|
<el-form-item label="上传乙方合同:">
|
<input id="importFileInput" ref="importFileInput" type="file" accept=""/>
|
</el-form-item>
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="dialogFormVisible = false">取消</el-button>
|
<el-button type="primary" @click="dialogStatus==='create'?createHandle():updateHandle()">确认</el-button>
|
</div>
|
</el-dialog>
|
<el-dialog :visible.sync="productDialogFormVisible"
|
:modal-append-to-body="false" :close-on-click-modal="false" width="1200px">
|
<el-table
|
v-loading="listLoading"
|
:key="tableKey"
|
:data="productData"
|
border
|
fit
|
highlight-current-row
|
style="width: 100%;"
|
>
|
<el-table-column label="产品名称" prop="name" align="center">
|
<template slot-scope="scope">
|
<span>{{ scope.row.name }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="流向码" prop="directionCode" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.directionCode }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="进价" prop="purchasePrice" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.purchasePrice }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="售价" prop="salePrice" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.salePrice }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="生产厂家" prop="manufacturer" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.manufacturer }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="规格" prop="specification" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.specification }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="含药量" prop="explosiveContent" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.explosiveContent }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="类型" prop="type" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.type }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="产品级别" prop="level" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.level }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="生产日期" prop="createdDate" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.productDate | parseTime('{y}-{m}-{d}') }}</span>
|
</template>
|
</el-table-column>
|
</el-table>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="productDialogFormVisible = false">取消</el-button>
|
<el-button type="primary" @click="selectProductHandle()">确认</el-button>
|
</div>
|
</el-dialog>
|
<el-dialog :visible.sync="productVoDialogVisible"
|
:modal-append-to-body="false" :close-on-click-modal="false" width="1200px">
|
<el-table
|
v-loading="listLoading"
|
:key="tableKey"
|
:data="productVoList"
|
border
|
fit
|
highlight-current-row
|
style="width: 100%;"
|
>
|
<el-table-column label="产品名称" prop="name" align="center">
|
<template slot-scope="scope">
|
<span>{{ scope.row.name }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="流向码" prop="directionCode" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.directionCode }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="数量" prop="num" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.num }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="变更数量" prop="changenum" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.changenum }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="进价" v-if="isSupervision == 'null'?false:true" prop="price" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.price }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="生产厂家" prop="manufacturer" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.manufacturer }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="规格" prop="specification" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.specification }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="含药量" prop="explosiveContent" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.explosiveContent }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="类型" prop="type" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.type }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="产品级别" prop="level" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.level }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="箱含量(挂)" prop="boxNumber" align="center" >
|
<template slot-scope="scope">
|
<span>{{ scope.row.boxNumber }}</span>
|
</template>
|
</el-table-column>
|
</el-table>
|
</el-dialog>
|
<el-dialog :visible.sync="blankDialog" title="提示" :close-on-click-modal="false" width="22%">
|
<div>
|
<el-row>
|
<el-col :span="4">
|
<div style="display: inline-block" class="el-message-box__status el-icon-warning"></div>
|
</el-col>
|
<el-col :span="20">
|
<div style="display: inline-block">是否打印空白页?</div>
|
</el-col>
|
</el-row>
|
<div align="right" style="padding-top: 15px">
|
<el-button @click="exportBarCode(0)">不打印</el-button>
|
<el-button type="primary" @click="exportBarCode(1)">打印</el-button>
|
</div>
|
</div>
|
</el-dialog>
|
<div style="clear: both;">
|
|
</div>
|
|
<el-dialog :visible="produceDialogVisible" :modal-append-to-body="false" :close-on-click-modal="false"
|
width="400px" append-to-body>
|
生成条码时间:
|
<el-date-picker
|
value-format="yyyy-MM-dd HH:mm:ss"
|
type="datetime"
|
v-model="producedate"
|
placeholder="选择时间">
|
</el-date-picker>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="produceDialogVisible = false">取消</el-button>
|
<el-button type="primary" @click="produceConfirm">确认</el-button>
|
</div>
|
</el-dialog>
|
|
<el-dialog
|
:visible.sync="printVisible"
|
:modal-append-to-body="false"
|
:close-on-click-modal="false"
|
width="50%">
|
<el-table
|
:key="tableKey"
|
:data="printData"
|
border
|
fit
|
highlight-current-row
|
>
|
<el-table-column type="index" label="序号" align="center"/>
|
<el-table-column label="操作" align="center">
|
<template slot-scope="scope">
|
<el-button type="text" @click="printThousand(scope.row)">打印</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
</el-dialog>
|
|
<div v-show="false">
|
<div id="printMe" >
|
<el-row>
|
<el-col :span="12" align="center">
|
<span style="font-size: 10px;font-weight: bolder">{{"新疆专用"}}</span>
|
</el-col>
|
<el-col :span="12" align="center">
|
<span style="font-size: 10px;margin-top: 3px">{{"新疆专用"}}</span>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="12" align="left" class="barcode">
|
<svg id="barcode1"/>
|
</el-col>
|
<el-col :span="12" align="left" class="barcode">
|
<svg id="barcode2"/>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="12" align="left">
|
<el-row>
|
<el-col :span="14" style="padding-left: 15px">
|
<el-row>
|
<el-col :span="24" align="left" style="margin-top: 3px;">
|
<span style="font-size: 8px;" id="itemcodeOne">{{itemcodeOne}}</span>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24" align="left">
|
<span style="font-size: 8px;" id="itemnameOne">{{itemnameOne}}</span>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24" align="left">
|
<span style="font-size: 8px;" id="typeOne">{{typeOne}}</span>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24" align="left">
|
<span style="font-size: 8px;" id="createddateOne">{{createddateOne}}</span>
|
</el-col>
|
</el-row>
|
</el-col>
|
<el-col :span="10">
|
<el-col :span="24" align="center" style="margin-top: 10px">
|
<div id="qrcode1" ref="qrcode" class="qrcode"/>
|
</el-col>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24" style="margin-left: 15px">
|
<el-row>
|
<el-col :span="24" align="left">
|
<span style="font-size: 8px;" id="manufacturerOne">{{manufacturerOne}}</span>
|
</el-col>
|
</el-row>
|
</el-col>
|
</el-row>
|
</el-col>
|
<el-col :span="12" align="left">
|
<el-row>
|
<el-col :span="14" style="padding-left: 15px">
|
<el-row >
|
<el-col :span="24" align="left" style="margin-top: 5px">
|
<span style="font-size: 8px;" id="itemcodeTwo">{{itemcodeTwo}}</span>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24" align="left">
|
<span style="font-size: 8px;" id="itemnameTwo">{{itemnameTwo}}</span>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24" align="left">
|
<span style="font-size: 8px;" id="typeTwo">{{typeTwo}}</span>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24" align="left">
|
<span style="font-size: 8px;" id="createddateTwo">{{createddateTwo}}</span>
|
</el-col>
|
</el-row>
|
<!-- <el-row>-->
|
<!-- <el-col :span="24" align="left">-->
|
<!-- <span style="font-size: 8px;" id="manufacturerTwo">{{manufacturerTwo}}</span>-->
|
<!-- </el-col>-->
|
<!-- </el-row>-->
|
</el-col>
|
<el-col :span="10">
|
<el-col :span="24" align="center" style="margin-top: 10px">
|
<div id="qrcode2" class="qrcode" ref="qrcode"/>
|
</el-col>
|
</el-col>
|
<el-col :span="24" style="padding-left: 15px">
|
<el-row>
|
<el-col align="left">
|
<span style="font-size: 8px;" id="manufacturerTwo"></span>
|
</el-col>
|
</el-row>
|
</el-col>
|
</el-row>
|
</el-col>
|
</el-row>
|
</div>
|
</div>
|
<div v-show="false">
|
<div id="printMeSingle" >
|
<el-row>
|
<el-col :span="12" align="center">
|
<span style="font-size: 10px;">{{"新疆专用"}}</span>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="12" align="left" class="barcode">
|
<svg id="barcode"/>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="12" align="left">
|
<el-row>
|
<el-col :span="14" style="padding-left: 15px">
|
<el-row>
|
<el-col :span="24" align="left" style="margin-top: 3px;">
|
<span style="font-size: 8px;" id="itemcode">{{itemcode}}</span>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24" align="left">
|
<span style="font-size: 8px;" id="itemname">{{itemname}}</span>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24" align="left">
|
<span style="font-size: 8px;" id="type">{{type}}</span>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24" align="left">
|
<span style="font-size: 8px;" id="createddate">{{createddate}}</span>
|
</el-col>
|
</el-row>
|
</el-col>
|
<el-col :span="10">
|
<el-col :span="24" align="center" style="margin-top: 10px">
|
<div id="qrcode" ref="qrcode" class="qrcode"/>
|
</el-col>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24" style="margin-left: 15px">
|
<el-row>
|
<el-col :span="24" align="left">
|
<span style="font-size: 8px;" id="manufacturer">{{manufacturer}}</span>
|
</el-col>
|
</el-row>
|
</el-col>
|
</el-row>
|
</el-col>
|
</el-row>
|
</div>
|
</div>
|
<div v-show="false">
|
<div id="printMeNull">
|
<span>{{"."}}</span>
|
</div>
|
</div>
|
<confirm-form ref="confirm" @getinfo="getConfirmList"></confirm-form>
|
<return-dialog ref="returnDialog" @getinfo="getConfirmList"></return-dialog>
|
</div>
|
</template>
|
|
<script>
|
|
import print from 'print-js'
|
import QRCode from "qrcodejs2";
|
import JsBarcode from 'jsbarcode'
|
import confirmForm from './components/confirmForm'
|
import returnDialog from './components/returnDialog'
|
import Cookies from 'js-cookie'
|
import { checkBtnPermission} from "../../utils/permission";
|
import { confirmList, createApply, confirmProduct, rejectProduct,
|
submitApply, exportBarCode, exportRFID, batchBarCode, printBarCode,produceContract} from "../../api/contract";
|
import { parseError} from "../../utils/messageDialog";
|
import { mapGetters} from "vuex";
|
import { dictionaryAllItems } from '@/api/dictionary';
|
import { Message, MessageBox } from 'element-ui'
|
import { parseTime, computePageCount } from '@/utils'
|
import CsvExportor from "csv-exportor";
|
export default {
|
name: "apply",
|
data() {
|
return {
|
blankDialog:false,
|
printVisible:false,
|
itemcode:'',
|
createddate:'',
|
itemname:'',
|
type:'',
|
manufacturer:'',
|
itemcodeOne:'',
|
itemcodeTwo:'',
|
createddateOne:'',
|
createddateTwo:'',
|
itemnameOne:'',
|
itemnameTwo:'',
|
typeOne:'',
|
typeTwo:'',
|
manufacturerOne:'',
|
manufacturerTwo:'',
|
imgOne:'',
|
imgTwo:'',
|
baseUrl: process.env.IMG_API + 'contract/',
|
pageSize: 10,
|
recordTotal: 0,
|
currentPage: 1,
|
pageTotal: 0,
|
tableKey: 0,
|
contractData: null,
|
listLoading: true,
|
allDataLoading: true,
|
dataForm: {
|
id: '',
|
ordercode: '',
|
status:'',
|
operator:'',
|
manufacturer:'',
|
origincontract:'',
|
confirmcontract:'',
|
file: '',
|
productInfoList: []
|
},
|
queryForm: {
|
manufacturer:'',
|
ordercode:'',
|
status:'',
|
operator:'',
|
},
|
dialogFormVisible: false,
|
dialogStatus: '',
|
dataFormRules: {
|
manufacturer: [{required: true, message: '生产企业不能为空', trigger: 'blur'}],
|
productInfoList: [{required: true, message: '产品列表不能为空', trigger: 'blur'}],
|
},
|
orderStatus:[],
|
productDialogFormVisible:false,
|
enterpriseDialogFormVisible:false,
|
productData:[],
|
productVoList:[],
|
productVoDialogVisible:false,
|
currentRow:null,
|
printObj:{
|
id:'printMe',
|
extraHead:'<meta http-equiv="Content-Language" content="zh-cn"/>'
|
},
|
allData:[],
|
printData:[],
|
isSupervision : Cookies.get('isSupervision'),
|
roleType :Cookies.get('roleType'),
|
produceDialogVisible:false,
|
producedate:'',
|
id:'',
|
}
|
},
|
created() {
|
this.getConfirmList();
|
this.getDictionaryStatusList()
|
},
|
components:{
|
confirmForm,
|
returnDialog
|
},
|
computed: {
|
...mapGetters([
|
'userType',
|
'username'
|
])
|
},
|
methods: {
|
produceHandle(row) {
|
this.produceDialogVisible = true;
|
this.id = row.id;
|
},
|
produceConfirm(){
|
const param = {
|
id:this.id,
|
producedate:this.producedate,
|
};
|
produceContract(param).then(response=>{
|
const res = response.data;
|
if (res.code === "200") {
|
this.getConfirmList();
|
this.produceDialogVisible = false;
|
}else {
|
parseError({error: res.message, vm: _this})
|
}
|
})
|
},
|
getDictionaryStatusList(){
|
const _this = this
|
if (_this.orderStatus && _this.orderStatus.length > 0) {
|
return
|
}
|
const params = {}
|
params['dictionaryType'] = '合同状态'
|
dictionaryAllItems(params).then(response => {
|
const res = response.data
|
if (res.code == 200) {
|
_this.orderStatus = res.result
|
} else {
|
parseError({ error: res.message, vm: _this })
|
}
|
}).catch(error => {
|
parseError({ error: error, vm: _this })
|
})
|
},
|
getConfirmList() {
|
const _this = this
|
const params = {}
|
params['pageIndex'] = _this.currentPage
|
params['pageSize'] = _this.pageSize
|
params['sort'] = _this.sort
|
params['order'] = _this.order
|
for (const i in _this.queryForm) {
|
if (_this.queryForm[i] != undefined && _this.queryForm[i].toString() != '') {
|
params[i] = _this.queryForm[i]
|
}
|
}
|
_this.listLoading = true
|
confirmList(params).then(response => {
|
const res = response.data;
|
if (res.code == 200) {
|
const result = res.result;
|
_this.recordTotal = result.totalCount;
|
_this.pageSize = result.pageSize;
|
_this.pageTotal = computePageCount(result.totalCount, result.pageSize);
|
_this.currentPage = result.pageIndex;
|
_this.contractData = result.result
|
} else {
|
parseError({error: res.message, vm: _this})
|
}
|
_this.listLoading = false
|
}).catch(error => {
|
_this.listLoading = false
|
parseError({error: error, vm: _this})
|
})
|
},
|
createHandle: function () {
|
const _this = this
|
const userName = Cookies.get('userName');
|
this.$refs['dataForm'].validate((valid) => {
|
if (valid) {
|
const formData = new FormData();
|
for (const i in _this.dataForm) {
|
if (
|
_this.dataForm[i] != undefined &&
|
_this.dataForm[i].toString() != ""
|
) {
|
formData.append(i, _this.dataForm[i]);
|
}
|
}
|
|
formData.append("operator", userName);
|
const files = this.$refs["importFileInput"].files;
|
if (files.length > 0){
|
formData.append('file', files[0]);
|
}else {
|
parseError({ error: '请上传合同', vm: this })
|
return
|
}
|
|
// const files1 = this.$refs["importFileInput"].files;
|
// for(let i=0; i < files1.length; i++){
|
// formData.append('files', files1[i]);
|
// }
|
|
createApply(formData).then(response => {
|
const res = response.data
|
if (res.code == 200) {
|
_this.dialogFormVisible = false
|
_this.$message({
|
message: '创建成功',
|
type: 'success'
|
});
|
_this.getConfirmList()
|
} else {
|
parseError({error: res.message, vm: _this})
|
}
|
}).catch(error => {
|
parseError({error: error, vm: _this})
|
})
|
}
|
})
|
},
|
submitHandle:function(row){
|
const _this = this
|
MessageBox.confirm('确定提交信息', '确定提交', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
const params = {}
|
params['id'] = row.id;
|
submitApply(params).then(response => {
|
const res = response.data
|
if (res.code == 200) {
|
_this.$message({
|
message: '提交成功',
|
type: 'success'
|
})
|
_this.getConfirmList()
|
} else {
|
parseError({error: res.message, vm: _this})
|
}
|
}).catch(error => {
|
parseError({error: error, vm: _this})
|
})
|
}).catch(() => {
|
console.log('已取消提交')
|
})
|
},
|
deleteHandle: function (row) {
|
this.$prompt('请输入意见', '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消'
|
}).then(({ value }) => {
|
row.opinion = value;
|
this.deleteAction(row);
|
}).catch(() => {
|
this.$message({
|
type: 'info',
|
message: '取消'
|
});
|
});
|
},
|
deleteAction: function (row) {
|
const _this = this;
|
const params = {}
|
params['id'] = row.id;
|
params['opinion'] = row.opinion;
|
rejectProduct(params).then(response => {
|
const res = response.data
|
if (res.code == 200) {
|
_this.$message({
|
message: '拒绝成功',
|
type: 'success'
|
})
|
_this.getConfirmList()
|
} else {
|
parseError({error: res.message, vm: _this})
|
}
|
}).catch(error => {
|
parseError({error: error, vm: _this})
|
})
|
},
|
refreshHandle: function () {
|
this.getConfirmList()
|
},
|
queryHandle: function () {
|
this.currentPage = 1
|
this.getConfirmList()
|
},
|
resetDataForm() {
|
this.dataForm = {
|
id: '',
|
ordercode: '',
|
status:'',
|
operator:'',
|
manufacturer:'',
|
origincontract:'',
|
confirmcontract:'',
|
file: '',
|
productInfoList: []
|
}
|
},
|
showCreateHandle() {
|
this.resetDataForm()
|
this.dialogStatus = 'create'
|
this.dialogFormVisible = true
|
this.$nextTick(() => {
|
this.$refs['dataForm'].clearValidate()
|
})
|
},
|
updateHandle() {
|
this.$refs['dataForm'].validate((valid) => {
|
const _this = this
|
if (valid) {
|
const formData = new FormData();
|
formData.append('id', _this.dataForm['id']);
|
const files = this.$refs["importFileInput"].files;
|
if (files.length > 0){
|
formData.append('file', files[0]);
|
}
|
confirmProduct(formData).then(response => {
|
const res = response.data
|
if (res.code == 200) {
|
_this.dialogFormVisible = false
|
_this.$message({
|
message: '确认成功',
|
type: 'success'
|
});
|
_this.getConfirmList()
|
} else {
|
parseError({error: res.message, vm: _this})
|
}
|
}).catch(error => {
|
parseError({error: error, vm: _this})
|
})
|
}
|
})
|
},
|
showEditHandle(value){
|
this.$refs.confirm.showConfirmForm(value)
|
},
|
viewProductHandle:function(row){
|
this.productVoList = row.productInfoList;
|
this.productVoDialogVisible = true;
|
},
|
handleSizeChange: function (val) {
|
this.pageSize = val
|
this.currentPage = 1
|
this.getConfirmList()
|
},
|
handleCurrentChange: function (val) {
|
this.currentPage = val
|
this.getConfirmList()
|
},
|
getBtnPermission(btnType) {
|
return checkBtnPermission(this.userType, btnType)
|
},
|
sortChange(param){
|
this.sort = param.prop;
|
this.order = param.order;
|
this.getConfirmList();
|
},
|
showProductHandle(){
|
this.productDialogFormVisible = true;
|
},
|
showEnterprise(){
|
this.enterpriseDialogFormVisible = true;
|
},
|
selectProductHandle(){
|
|
},
|
downloadHandle(name){
|
window.open(this.baseUrl+name, '_blank');
|
},
|
async currentRowChange(val){
|
// debugger
|
// this.currentRow = val;
|
// const params = {}
|
// params['ordercode'] = this.currentRow.ordercode
|
// let res = await exportBarCode(params)
|
//
|
// if(res.data.code === '200'){
|
// this.allData = res.data.result.exportInfo
|
// this.printData = res.data.result.printInfo
|
// this.listLoading = false;
|
// }else{
|
// this.listLoading = false;
|
// this.$message({
|
// message:res.data.message,
|
// type:"warning"
|
// })
|
// }
|
},
|
exportRFID(type){
|
if ( this.currentRow != null){
|
const _this = this
|
const params = {}
|
params['ordercode'] = this.currentRow.ordercode
|
exportRFID(params)
|
.then((response) => {
|
const res = response.data
|
if (res.code == 200) {
|
const allData = res.result
|
if (allData.length == 0) {
|
parseError({ error: '未查到数据', vm: _this })
|
return
|
}
|
const filterVal = [
|
'ordercode',
|
'originalcode',
|
'itemname',
|
'manufacturer',
|
'explosivecontent',
|
'boxnumber',
|
'type',
|
'level',
|
'createddate',
|
'boxrange',
|
'price',
|
'crc',
|
]
|
const tHeader = [
|
'合同单号',
|
'电子标签号',
|
'产品名称',
|
'生产厂家',
|
'总装药量',
|
'箱含量',
|
'产品类型',
|
'产品级别',
|
'创建时间',
|
'包装标识码',
|
'进价',
|
'校验码',
|
]
|
const data = _this.formatJson(filterVal, allData)
|
// if (type == 'csv') {
|
this.downCsv(data, tHeader)
|
// }
|
// if (type == 'xlsx') {
|
// import('@/vendor/Export2Excel').then((excel) => {
|
// const data = _this.formatJson(filterVal, allData)
|
// excel.export_json_to_excel({
|
// header: tHeader,
|
// data,
|
// filename: '电子标签号'
|
// })
|
// })
|
// }
|
} else {
|
parseError({ error: res.message, vm: _this })
|
}
|
})
|
.catch((error) => {
|
parseError({ error: error, vm: _this })
|
})
|
}else {
|
this.$message({
|
message: '请选择行',
|
type: 'warning'
|
})
|
}
|
},
|
exportAll(){
|
if ( this.currentRow != null) {
|
this.blankDialog = true
|
}else {
|
this.$message({
|
message: '请选择行',
|
type: 'warning'
|
})
|
}
|
// this.$confirm('是否确认启用此企业','提示',{
|
// confirmButtonText:'确定',
|
// cancelButtonText:'取消',
|
// type:'warning',
|
// }).then(()=> {
|
// })
|
},
|
|
viewReturnHandle(ordercode){
|
this.$refs.returnDialog.showDialog(ordercode)
|
},
|
|
async exportBarCode(value){
|
const params = {}
|
params['ordercode'] = this.currentRow.ordercode
|
params['needBlank'] = value
|
this.listLoading = true;
|
let res = await batchBarCode(params)
|
if(res.data.code === '200'){
|
this.listLoading = false;
|
// this.allData = res.data.result.exportInfo
|
this.printData = res.data.result.printInfo
|
sessionStorage.setItem("key",JSON.stringify(this.printData))
|
// this.$store.commit('SET_PRINT', this.printData)
|
// this.$router.push({path:'/contract/print',query:{printData:this.printData}})
|
this.$router.push({path:'/contract/print',query:{ifPrintBlank:value}})
|
}else{
|
this.listLoading = false;
|
this.$message({
|
message:res.data.message,
|
type:"warning"
|
})
|
}
|
// if (this.allData.length == 0) {
|
// parseError({ error: '未查到数据', vm: this })
|
// return
|
// }
|
// sessionStorage.setItem("key",JSON.stringify(this.printData))
|
// this.$router.push({path:'/contract/print'})
|
|
|
// this.$router.push({path:'/contract/print',query:{printData:this.printData}})
|
// this.$router.push({path:'/trouble/selfExamComponents/lookSelfExam',query:{code:value.code}})
|
// this.printVisible = true
|
},
|
printThousand(val){
|
let printData = val
|
let length = val.length/2
|
|
for(let i = 0;i<length;i++){
|
if(printData[2*i].id === null ||printData[2*i+1].id === null){
|
|
if(printData[2*i].id === null && printData[2*i+1].id === null){
|
var oldWindow = window.document.body.innerHTML
|
var jubuData = document.getElementById("printMeNull").innerHTML;
|
window.document.body.innerHTML= jubuData
|
window.print()
|
window.document.body.innerHTML = oldWindow
|
}else{
|
|
document.getElementById('itemcode').innerHTML = printData[2*i].itemcode
|
document.getElementById('createddate').innerHTML = printData[2*i].createddate
|
document.getElementById('itemname').innerHTML = printData[2*i].itemname
|
document.getElementById('type').innerHTML = printData[2*i].type
|
document.getElementById('manufacturer').innerHTML = printData[2*i].manufacturer
|
JsBarcode('#barcode', printData[2*i].itemcode, {
|
format: 'CODE128',
|
lineColor: '#000',
|
background: '#EBEEF5',
|
width: 8,
|
height: 300,
|
displayValue: false
|
})
|
var oldWindow = window.document.body.innerHTML
|
var jubuData = document.getElementById("printMeSingle").innerHTML;
|
window.document.body.innerHTML= jubuData
|
document.getElementById("qrcode").innerHTML = ""
|
let qrcode = new QRCode('qrcode', {
|
width: 400,
|
height: 400, // 高度
|
text: printData[2*i].itemcode, // 二维码内容
|
// format: 'CODE128',
|
render: 'canvas', // 设置渲染方式(有两种方式 table和canvas,默认是canvas)
|
background: '#f0f', // 背景色
|
// foreground: '#ff0' // 前景色
|
})
|
window.print()
|
window.document.body.innerHTML = oldWindow
|
}
|
}else{
|
document.getElementById('itemcodeOne').innerHTML = printData[2*i].itemcode
|
document.getElementById('itemcodeTwo').innerHTML = printData[2*i+1].itemcode
|
document.getElementById('createddateOne').innerHTML = printData[2*i].createddate
|
document.getElementById('createddateTwo').innerHTML = printData[2*i+1].createddate
|
document.getElementById('itemnameOne').innerHTML = printData[2*i].itemname
|
document.getElementById('itemnameTwo').innerHTML = printData[2*i+1].itemname
|
document.getElementById('typeOne').innerHTML = printData[2*i].type
|
document.getElementById('typeTwo').innerHTML = printData[2*i+1].type
|
document.getElementById('manufacturerOne').innerHTML = printData[2*i].manufacturer
|
document.getElementById('manufacturerTwo').innerHTML = printData[2*i+1].manufacturer
|
JsBarcode('#barcode1', printData[2*i].itemcode, {
|
format: 'CODE128',
|
lineColor: '#000',
|
background: '#EBEEF5',
|
width: 8,
|
height: 300,
|
displayValue: false
|
}),
|
JsBarcode('#barcode2', printData[2*i+1].itemcode, {
|
format: 'CODE128',
|
lineColor: '#000',
|
background: '#EBEEF5',
|
width: 8,
|
height: 300,
|
displayValue: false
|
})
|
var oldWindow = window.document.body.innerHTML
|
var jubuData = document.getElementById("printMe").innerHTML;
|
window.document.body.innerHTML= jubuData
|
document.getElementById("qrcode1").innerHTML = ""
|
let qrcode = new QRCode('qrcode1', {
|
width: 400,
|
height: 400, // 高度
|
text: printData[2*i].itemcode, // 二维码内容
|
// format: 'CODE128',
|
render: 'canvas', // 设置渲染方式(有两种方式 table和canvas,默认是canvas)
|
background: '#f0f', // 背景色
|
// foreground: '#ff0' // 前景色
|
})
|
document.getElementById("qrcode2").innerHTML = ""
|
let qrcode2 = new QRCode('qrcode2', {
|
width: 400,
|
height: 400, // 高度
|
text: printData[2*i+1].itemcode, // 二维码内容
|
// format: 'CODE128',
|
render: 'canvas', // 设置渲染方式(有两种方式 table和canvas,默认是canvas)
|
background: '#f0f', // 背景色
|
// foreground: '#ff0' // 前景色
|
})
|
// LODOP.ADD_PRINT_HTM(0, 0, 350, 1050, document.getElementById("printMe").innerHTML)
|
// LODOP.PREVIEW();
|
window.print()
|
window.document.body.innerHTML = oldWindow
|
}
|
}
|
window.document.body.innerHTML= jubuData
|
window.location.reload();
|
this.setTimeout(()=>{
|
this.printVisible = true
|
})
|
},
|
exportProductHandle:function(row){
|
if(row.productInfoList.length === 0){
|
this.$message({
|
type:'warning',
|
message:'无数据可导出'
|
})
|
}else {
|
let allData = []
|
for (let i = 0; i < row.productInfoList.length; i++) {
|
var { ...productOne } = row.productInfoList[i]
|
productOne['manufacturer'] = row.manufacturer
|
productOne['operator'] = row.operator
|
allData.push(productOne)
|
}
|
import('@/vendor/Export2Excel').then((excel) => {
|
const tHeader = [
|
'甲方',
|
'乙方',
|
'产品名称',
|
'流向码',
|
'规格',
|
'含药量',
|
'箱含量',
|
'变更数量',
|
'类型',
|
'等级',
|
'数量',
|
|
]
|
const filterVal = [
|
'operator',
|
'manufacturer',
|
'name',
|
'directionCode',
|
'specification',
|
'explosiveContent',
|
'boxNumber',
|
'changenum',
|
'type',
|
'level',
|
'num',
|
]
|
|
if(this.isSupervision != 'null'){
|
tHeader.push('进价')
|
filterVal.push('price')
|
}
|
const data = this.formatJson(filterVal, allData)
|
excel.export_json_to_excel({
|
header: tHeader,
|
data,
|
filename: '产品明细'
|
})
|
})
|
}
|
|
},
|
formatJson(filterVal, jsonData) {
|
return jsonData.map((v) =>
|
filterVal.map((j) => {
|
if (j === 'createddate') {
|
return parseTime(v[j], '{y}-{m}-{d}')
|
}else {
|
return v[j]
|
}
|
})
|
)
|
},
|
downCsv(data,header) {
|
let tableData = this.data;
|
CsvExportor.downloadCsv(data, { header }, this.currentRow.ordercode+"电子标签号.csv");
|
},
|
handleSelectionChange (val) {
|
if(val.length > 1) {
|
this.$refs.contractTable.clearSelection(); //清除
|
this.$refs.contractTable.toggleRowSelection(val.pop()); //pop:最后一个
|
} else {
|
if(val.length === 0){
|
this.currentRow = null
|
}else{
|
this.currentRow = val[0];
|
}
|
}
|
},
|
}
|
}
|
</script>
|
|
<style scoped>
|
@media print {
|
#printMe{
|
font-size: 5px !important;
|
}
|
}
|
/deep/ .el-col-24 {
|
padding: 0;
|
margin: 0;
|
height:20px;
|
}
|
/deep/ .el-col-12 {
|
padding: 0;
|
margin: 0;
|
height:20px;
|
}
|
/deep/ .el-col-11 {
|
padding: 0;
|
margin: 0;
|
height:11px;
|
}
|
/deep/ .el-col-9 {
|
padding: 0;
|
margin: 0;
|
height:11px;
|
}
|
/deep/ .el-col-8 {
|
padding: 0;
|
margin: 0;
|
height:11px;
|
}
|
/deep/ .el-col-6 {
|
padding: 0;
|
margin: 0;
|
height:11px;
|
}
|
/deep/ .el-col-4 {
|
padding: 0;
|
margin: 0;
|
height:11px;
|
}
|
/deep/ .el-col-24 {
|
padding: 0;
|
margin: 0;
|
height:11px;
|
}
|
.qrcode{
|
transform: scale(0.1);
|
transform-origin:10% 0%
|
}
|
.barcode{
|
transform: scale(0.08);
|
transform-origin:10% 3%
|
}
|
.barcodeTwo{
|
transform: scale(0.1);
|
}
|
/deep/.el-dialog__body{
|
padding-top: 10px;
|
}
|
</style>
|