瀏覽代碼

二线,打印、记账凭证

CzRger 9 月之前
父節點
當前提交
6eb28286a4

+ 31 - 23
snowy-admin-web/src/api/yqyc/qySecondlineWarehouseApi.js

@@ -1,4 +1,4 @@
-import { baseRequest } from '@/utils/request'
+import {baseRequest} from '@/utils/request'
 
 const request = (url, ...arg) => baseRequest(`/biz/qysecondlinewarehouse/` + url, ...arg)
 
@@ -9,26 +9,34 @@ const request = (url, ...arg) => baseRequest(`/biz/qysecondlinewarehouse/` + url
  * @date  2024/07/04 15:39
  **/
 export default {
-	// 获取二线出岛业务记账管理分页
-	qySecondlineWarehousePage(data) {
-		return request('page', data, 'get')
-	},
-	// 提交二线出岛业务记账管理表单 edit为true时为编辑,默认为新增
-	qySecondlineWarehouseSubmitForm(data, edit = false) {
-		return request(edit ? 'edit' : 'add', data)
-	},
-	// 删除二线出岛业务记账管理
-	qySecondlineWarehouseDelete(data) {
-		return request('delete', data)
-	},
-	// 导出二线出岛业务记账管理
-    qySecondlineWarehouseExport(data) {
-        return request('export', data, 'post', {
-            responseType: 'blob'
-        })
-    },
-	// 获取二线出岛业务记账管理详情
-	qySecondlineWarehouseDetail(data) {
-		return request('detail', data, 'get')
-	}
+  // 获取二线出岛业务记账管理分页
+  qySecondlineWarehousePage(data) {
+    return request('page', data, 'get')
+  },
+  // 提交二线出岛业务记账管理表单 edit为true时为编辑,默认为新增
+  qySecondlineWarehouseSubmitForm(data, edit = false) {
+    return request(edit ? 'edit' : 'add', data)
+  },
+  // 删除二线出岛业务记账管理
+  qySecondlineWarehouseDelete(data) {
+    return request('delete', data)
+  },
+  // 导出二线出岛业务记账管理
+  qySecondlineWarehouseExport(data) {
+    return request('export', data, 'post', {
+      responseType: 'blob'
+    })
+  },
+  // 获取二线出岛业务记账管理详情
+  qySecondlineWarehouseDetail(data) {
+    return request('detail', data, 'get')
+  },
+  // 获取一线径予放行业务记账管理记账凭证
+  qySecondlineWarehouseAccountVoucherPdf(data) {
+    return request('accountVoucherPdf', data, 'get')
+  },
+  // 获取一线径予放行业务记账管理记账打印
+  qySecondlineWarehousePrintPdf(data) {
+    return request('printPdf', data, 'get')
+  }
 }

+ 3 - 1
snowy-admin-web/src/views/yqyc/general-ledger/one/index.vue

@@ -159,6 +159,8 @@
             <a-popconfirm title="确定要删除吗?" @confirm="deleteQyFrontlineWarehouse(record)">
               <a-button type="link" danger size="small" v-if="hasPerm('qyFrontlineWarehouseDelete')">删除</a-button>
             </a-popconfirm>
+            <a-divider type="vertical"
+                       v-if="hasPerm(['qyFrontlineWarehouseView', 'qyFrontlineWarehouseEdit', 'qyFrontlineWarehouseDelete'])"/>
             <a-button type="link" primary size="small" @click="goodsDetailRef.onOpen(record)">{{ (record.warehouseType == 0 ? '入' : '出') + '库单' }}</a-button>
             <a-divider type="vertical"/>
             <a-button type="link" primary size="small" @click="certificateDetailRef.onOpen(record)">记账凭证</a-button>
@@ -278,7 +280,7 @@ watch(() => searchFormStateReal.value.warehouseType, (n) => {
   })
 })
 // 操作栏通过权限判断是否显示
-if (hasPerm(['qyFrontlineWarehouseEdit', 'qyFrontlineWarehouseDelete'])) {
+if (hasPerm(['qyFrontlineWarehouseView', 'qyFrontlineWarehouseEdit', 'qyFrontlineWarehouseDelete'])) {
   columns.value.forEach(v => {
     if (v.dataIndex === 'action') {
       v.width = 400

+ 78 - 0
snowy-admin-web/src/views/yqyc/general-ledger/two/certificate.vue

@@ -0,0 +1,78 @@
+<template>
+	<a-modal
+      v-model:open="open"
+      title="记账凭证"
+      centered
+      width="90%"
+  >
+      <div class="certificate-detail">
+        <a-space class="go-back-button">
+          <a-button :href="fileUrl" size="small" target="_blank">
+            <template #icon><download-outlined /></template>
+          </a-button>
+        </a-space>
+        <a-spin :spinning="loading">
+          <vue-office-pdf
+            :src="fileUrl"
+            class="xn-ht82"
+            @rendered="renderedHandler"
+            @error="errorHandler"
+          />
+        </a-spin>
+      </div>
+      <template #footer></template>
+	</a-modal>
+</template>
+
+<script setup name="certificateDetail">
+	import tool from '@/utils/tool'
+	import { cloneDeep } from 'lodash-es'
+  //引入VueOfficePdf组件
+  import VueOfficePdf from '@vue-office/pdf'
+  import qySecondlineWarehouseApi from "@/api/yqyc/qySecondlineWarehouseApi";
+	// 抽屉状态
+	const open = ref(false)
+  const loading = ref(false)
+  const fileUrl = ref()
+
+	// 打开抽屉
+	const onOpen = (record, view = false) => {
+		open.value = true
+    loading.value = true
+		if (record) {
+      qySecondlineWarehouseApi.qySecondlineWarehouseAccountVoucherPdf({ id: record.id }).then(res => {
+        fileUrl.value = res
+      })
+		}
+	}
+	// 关闭抽屉
+	const onClose = () => {
+		open.value = false
+    fileUrl.value = ''
+	}
+  // 渲染完成
+  const renderedHandler = () => {
+    loading.value = false
+  }
+  // 渲染失败
+  const errorHandler = () => {
+    message.warning('渲染失败,请尝试重新打开!')
+  }
+	// 抛出函数
+	defineExpose({
+		onOpen
+	})
+</script>
+<style lang="less" scoped>
+.certificate-detail {
+  height: 800px;
+  overflow-y: auto;
+  .go-back-button {
+    position: absolute;
+    float: right;
+    right: 10px;
+    z-index: 999;
+  }
+}
+
+</style>

+ 31 - 6
snowy-admin-web/src/views/yqyc/general-ledger/two/index.vue

@@ -119,6 +119,12 @@
             </template>
             批量导出
           </a-button>
+          <a-button @click="onPrint">
+            <template #icon>
+              <PrinterOutlined />
+            </template>
+            打印
+          </a-button>
         </a-space>
       </template>
       <template #bodyCell="{ column, record }">
@@ -147,7 +153,11 @@
             <a-popconfirm title="确定要删除吗?" @confirm="deleteQySecondlineWarehouse(record)">
               <a-button type="link" danger size="small" v-if="hasPerm('qySecondlineWarehouseDelete')">删除</a-button>
             </a-popconfirm>
+            <a-divider type="vertical"
+                       v-if="hasPerm(['qySecondlineWarehouseView', 'qySecondlineWarehouseEdit', 'qySecondlineWarehouseDelete'])"/>
             <a-button type="link" primary size="small" @click="goodsDetailRef.onOpen(record)">出库单</a-button>
+            <a-divider type="vertical"/>
+            <a-button type="link" primary size="small" @click="certificateDetailRef.onOpen(record)">记账凭证</a-button>
           </a-space>
         </template>
       </template>
@@ -156,6 +166,7 @@
   <Detail v-else ref="detailRef" @onClose="indexShow = true" @successful="onSearch()"/>
   <EnterpriseDetail ref="enterpriseDetailRef"/>
   <GoodsDetail ref="goodsDetailRef"/>
+  <CertificateDetail ref="certificateDetailRef"/>
 </template>
 
 <script setup name="qysecondlinewarehouse">
@@ -166,6 +177,9 @@ import qySecondlineWarehouseApi from '@/api/yqyc/qySecondlineWarehouseApi'
 import downloadUtil from "@/utils/downloadUtil";
 import EnterpriseDetail from "@/views/yqyc/component/enterprise/detail.vue";
 import GoodsDetail from "./goods.vue";
+import CertificateDetail from "./certificate.vue";
+import qyFrontlineWarehouseApi from "@/api/yqyc/qyFrontlineWarehouseApi";
+import printJS from "print-js";
 
 const {proxy} = getCurrentInstance()
 const searchFormState = ref({})
@@ -176,6 +190,7 @@ const filterParam = ref({})
 const detailRef = ref()
 const enterpriseDetailRef = ref()
 const goodsDetailRef = ref()
+const certificateDetailRef = ref()
 const indexShow = ref(true)
 const toolConfig = {refresh: true, height: true, columnSetting: true, striped: false}
 // 查询区域显示更多控制
@@ -183,7 +198,7 @@ const advanced = ref(false)
 const toggleAdvanced = () => {
   advanced.value = !advanced.value
 }
-const columns = [
+const columns = ref([
   {
     title: '企业编码',
     dataIndex: 'companyCode',
@@ -239,15 +254,20 @@ const columns = [
     dataIndex: 'accountTime',
     sorter: true,
   },
-]
-// 操作栏通过权限判断是否显示
-if (hasPerm(['qySecondlineWarehouseEdit', 'qySecondlineWarehouseDelete'])) {
-  columns.push({
+  {
     title: '操作',
     dataIndex: 'action',
     align: 'center',
     width: 200,
     fixed: 'right',
+  }
+])
+// 操作栏通过权限判断是否显示
+if (hasPerm(['qyFrontlineWarehouseView', 'qyFrontlineWarehouseEdit', 'qyFrontlineWarehouseDelete'])) {
+  columns.value.forEach(v => {
+    if (v.dataIndex === 'action') {
+      v.width = 400
+    }
   })
 }
 const selectedRowKeys = ref([])
@@ -286,7 +306,7 @@ const loadData = (parameter) => {
 }
 // 搜索同时备份参数
 const onSearch = (parameter) => {
-  searchFormStateReal.value = cloneDeep(searchFormState.value)
+  searchFormStateReal.value = cloneDeep(Object.assign(searchFormState.value, filterParam.value))
   tableRef.value.refresh(parameter)
 }
 // 重置
@@ -338,6 +358,11 @@ const onDetail = (record = null, view) => {
     detailRef.value.onOpen(record, view)
   })
 }
+const onPrint = () => {
+  qySecondlineWarehouseApi.qySecondlineWarehousePrintPdf(searchFormStateReal.value).then(res => {
+    printJS(res, 'pdf')
+  })
+}
 const accountTypeOptions = tool.dictList('account_type')
 const businessTypeOptions = tool.dictList('bussiness_type')
 const measurementUnitOptions = tool.dictList('measurement unit')

+ 1 - 1
snowy-admin-web/src/views/yqyc/zero/enterprise-qualification/index.vue

@@ -174,7 +174,7 @@
     }
     // 搜索同时备份参数
     const onSearch = (parameter) => {
-        searchFormStateReal.value = cloneDeep(searchFormState.value)
+      searchFormStateReal.value = cloneDeep(Object.assign(searchFormState.value, filterParam.value))
         nextTick(() => {
             tableRef.value.refresh(parameter)
         })