|
@@ -57,7 +57,7 @@
|
|
|
plain
|
|
|
icon="el-icon-plus"
|
|
|
size="mini"
|
|
|
- @click="print(multipleSelection)"
|
|
|
+ @click="handleOpen(multipleSelection)"
|
|
|
v-hasPermi="['windowTicketSales:ticketingCollection:print']"
|
|
|
>批量打印名票</el-button>
|
|
|
</el-col>
|
|
@@ -98,7 +98,7 @@
|
|
|
<el-button
|
|
|
size="mini"
|
|
|
type="text"
|
|
|
- @click="print([scope.row])"
|
|
|
+ @click="handleOpen([scope.row])"
|
|
|
v-hasPermi="['windowTicketSales:ticketingCollection:print']"
|
|
|
>打印门票</el-button>
|
|
|
</template>
|
|
@@ -109,12 +109,32 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table>
|
|
|
+
|
|
|
+ <el-dialog
|
|
|
+ title="选择打印机"
|
|
|
+ :visible.sync="dialogVisible"
|
|
|
+ width="30%"
|
|
|
+ :before-close="handleClose">
|
|
|
+ <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
|
|
|
+ <el-form-item label="打印机" prop="region">
|
|
|
+ <el-select v-model="ruleForm.region" placeholder="选择打印机">
|
|
|
+ <el-option :label="item.deviceName" :key="item.id" :value="item.id" v-for="(item,index) in printList"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="dialogVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" :loading="dialogVisibleLoading" @click="print(viewerList)">{{ dialogVisibleLoading?'打印中...':'打印' }}</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
|
|
|
import { pageList,printApi } from '@/api/windowTicketSales/ticketingCollection'
|
|
|
+ import { pageList as getPrintListApi } from "@/api/device/pda";
|
|
|
export default {
|
|
|
name: "distributionapplication",
|
|
|
dicts: ['order_form_type','order_status_type'],
|
|
@@ -135,7 +155,7 @@
|
|
|
// pageNum: 1,
|
|
|
// pageSize: 10,
|
|
|
// type: undefined
|
|
|
- orderStatus: 3
|
|
|
+ orderStatus: "3"
|
|
|
},
|
|
|
visibleStatus: false,
|
|
|
visibleStatusLoading: false,
|
|
@@ -145,11 +165,23 @@
|
|
|
{ required: true, message: '请输入备注', trigger: ['blur','change'] },
|
|
|
{ min: 0, max: 50, message: '长度在 0 到 50 个字符', trigger: ['blur','change'] }
|
|
|
]
|
|
|
- }
|
|
|
+ },
|
|
|
+
|
|
|
+ viewerList: [],
|
|
|
+ printList: [],
|
|
|
+ dialogVisible: false,
|
|
|
+ ruleForm: {},
|
|
|
+ rules: {
|
|
|
+ region: [
|
|
|
+ { required: true, message: '请选择打印机', trigger: ['change','blur' ]}
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ dialogVisibleLoading: false,
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
|
//this.getList();
|
|
|
+ //this.getPrintListApi()
|
|
|
},
|
|
|
methods: {
|
|
|
/** 查询列表 */
|
|
@@ -216,26 +248,93 @@
|
|
|
console.log("val====",val)
|
|
|
this.multipleSelection = val;
|
|
|
},
|
|
|
- // 打印
|
|
|
- async print(list = []){
|
|
|
+ handleOpen(list=[]){
|
|
|
if(!list||list.length==0) return
|
|
|
let idList = []
|
|
|
list.forEach((item,index)=>{
|
|
|
idList.push(item.id)
|
|
|
})
|
|
|
- console.log("isList===",idList)
|
|
|
- return
|
|
|
- try {
|
|
|
- let res = await printApi({viewerList:idList})
|
|
|
- if(res.code == 200) {
|
|
|
+ this.viewerList = idList
|
|
|
+ this.getPrintListApi()
|
|
|
+ this.$set(this.ruleForm, 'region', '');
|
|
|
+ this.$nextTick(()=>{
|
|
|
+ this.$refs.ruleForm.clearValidate('region')
|
|
|
+ })
|
|
|
+ this.dialogVisible = true
|
|
|
+ },
|
|
|
+ handleClose(){
|
|
|
+ this.dialogVisible = false
|
|
|
+ },
|
|
|
+ /** 查询打印机列表 */
|
|
|
+ getPrintListApi() {
|
|
|
+ getPrintListApi({deviceType:5,pageNum: 1,
|
|
|
+ pageSize: 999,})
|
|
|
+ .then(response => {
|
|
|
+ this.printList = response.data.rows;
|
|
|
+ }).catch((error)=>{
|
|
|
+ console.log("error===",error)
|
|
|
+ }
|
|
|
+ );
|
|
|
+ },
|
|
|
+ /** 选择打印机 */
|
|
|
+ selectPrint(){
|
|
|
|
|
|
- }else {
|
|
|
- throw new Error(res)
|
|
|
+ },
|
|
|
+ // 打印
|
|
|
+ async print(list = []){
|
|
|
+ this.$refs.ruleForm.validate(async (valid) => {
|
|
|
+ if (valid) {
|
|
|
+ this.dialogVisibleLoading = true
|
|
|
+ try {
|
|
|
+ let res = await printApi({
|
|
|
+ viewerList:list,
|
|
|
+ source: 2,
|
|
|
+ deviceId: this.ruleForm.region
|
|
|
+ })
|
|
|
+ if(res.code == 200) {
|
|
|
+ let url = res.data.linkIp
|
|
|
+ let printInfo = res.data.printInfo
|
|
|
+ this.connectPrint(url,printInfo)
|
|
|
+ }else {
|
|
|
+ throw new Error(res)
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ this.dialogVisible = false
|
|
|
+ this.dialogVisibleLoading = false
|
|
|
+ console.error("error=====",error)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ console.log('error submit!!');
|
|
|
+ return false;
|
|
|
}
|
|
|
- } catch (error) {
|
|
|
- console.error("error=====",error)
|
|
|
- }
|
|
|
+ });
|
|
|
+
|
|
|
},
|
|
|
+ /** 连接打印机 */
|
|
|
+ connectPrint(url,data){
|
|
|
+ let xhr = new XMLHttpRequest();
|
|
|
+ xhr.withCredentials = true
|
|
|
+
|
|
|
+ xhr.onreadystatechange = ()=>{
|
|
|
+ if(xhr.readyState == 4){ // 监听请求完成
|
|
|
+ if((xhr.status >=200 && xhr.status <300) || xhr.status == 304){
|
|
|
+ console.log(xhr.responseText)
|
|
|
+ this.dialogVisible = false
|
|
|
+ this.dialogVisibleLoading = false
|
|
|
+ }else{
|
|
|
+ console.log('请求失败')
|
|
|
+ this.dialogVisible = false
|
|
|
+ this.dialogVisibleLoading = false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ xhr.open("post", url, true); // 异步请求
|
|
|
+ xhr.setRequestHeader('Content-Type', 'application/json')
|
|
|
+ xhr.send(JSON.stringify(data));
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
};
|
|
|
</script>
|