| | |
| | | for (int i = 0; i <= 9; i++) { |
| | | Cell cell = titleRow.createCell(i); |
| | | if (i == 0) { |
| | | cell.setCellValue(tmsArBill.getCustomerName()); |
| | | cell.setCellValue("珠海市汇畅交通投资有限公司"); |
| | | // 居中显示 |
| | | CellStyle centerStyle = sheet.getWorkbook().createCellStyle(); |
| | | centerStyle.setAlignment(HorizontalAlignment.CENTER); |
| New file |
| | |
| | | <script lang="ts" setup> |
| | | import { reactive, ref, toRefs, watch, nextTick } from "vue"; |
| | | import { BaseEntityInterface, PageQueryInterface } from "@/utils/globalInterface"; |
| | | import { usePagePlus } from "@/hooks/usePagePlus"; |
| | | import { getToken } from "@/utils/auth"; |
| | | |
| | | // import { listDzInoutOrder } from "@/api/dz/dzInoutOrder"; |
| | | import useCurrentInstance from "@/utils/useCurrentInstance"; import { ElTable, ElTableColumn } from 'element-plus' |
| | | const { proxy } = useCurrentInstance(); |
| | | |
| | | interface DzInoutOrderI extends BaseEntityInterface { |
| | | id?: number, |
| | | no?: string, |
| | | sasStockNo?: string, |
| | | entryNo?: string, |
| | | bondInvtId?: number, |
| | | bondInvtNo?: string, |
| | | releaseId?: number, |
| | | releaseNo?: string, |
| | | areainOriactNo?: string, |
| | | areainEtpsNo?: string, |
| | | areainEtpsNm?: string, |
| | | areainEtpsSccd?: string, |
| | | masterCuscd?: string, |
| | | stockTypecd?: string, |
| | | businessTypecd?: string, |
| | | rltSasStockNo?: string, |
| | | dclEr?: string, |
| | | dclEtpsNo?: string, |
| | | dclEtpsNm?: string, |
| | | dclEtpsSccd?: string, |
| | | inputCode?: string, |
| | | inputSccd?: string, |
| | | inputName?: string, |
| | | etpsPreentNo?: string, |
| | | packageQty?: string, |
| | | grossWt?: string, |
| | | netWt?: string, |
| | | packType?: string, |
| | | eportReplaceMark?: number, |
| | | mtpckEndprdType?: string, |
| | | enterpriseName?: string, |
| | | stockDate?: string, |
| | | tradeType?: number, |
| | | conveyanceId?: number, |
| | | conveyanceNo?: string, |
| | | conveyanceName?: string, |
| | | enterId?: number, |
| | | deleted?: number, |
| | | } |
| | | const props = defineProps({ |
| | | flowParams: Array, |
| | | flowParamsShow: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | fileNameIshow: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | isShow: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | title: { // 1. 定义 prop |
| | | type: String, |
| | | default: '流程日志' |
| | | } |
| | | }) |
| | | console.log(props); |
| | | |
| | | const { } = |
| | | proxy.useDict(); |
| | | |
| | | |
| | | const stockTypecdFormat = (row: any) => { |
| | | return proxy.selectDictLabel(sy_dz_account_book_status.value, row.stockTypecd); |
| | | } |
| | | |
| | | const data = reactive({ |
| | | orderSelection: <DzInoutOrderI[]>[], |
| | | queryParams: <DzInoutOrderI & PageQueryInterface>{ pageNum: 1, pageSize: 10 }, |
| | | rules: {}, |
| | | }) |
| | | const { queryParams, rules, orderSelection } = toRefs(data); |
| | | const currentRow = ref() |
| | | const emit = defineEmits(['affirm']) |
| | | const { |
| | | pageF, tableData, getList, |
| | | handleQuery, resetQuery, |
| | | } = usePagePlus({ |
| | | title: props.title, |
| | | queryParams: queryParams.value, |
| | | // getListApi: listDzInoutOrder, |
| | | resetQueryFunc: () => { |
| | | }, |
| | | |
| | | }) |
| | | |
| | | |
| | | const multipleTableRef = ref<InstanceType<typeof ElTable>>() |
| | | /** |
| | | * 确定 |
| | | */ |
| | | const affirmQuery = () => { |
| | | |
| | | } |
| | | let newArray = ref<any>() |
| | | const openModel = () => { |
| | | pageF.drawerOpen = true; |
| | | } |
| | | |
| | | |
| | | const closeModel = () => { |
| | | pageF.drawerOpen = false; |
| | | } |
| | | |
| | | |
| | | // getList() |
| | | const download_qr_code = (row: string) => { |
| | | downloadFile(row.fileName); |
| | | } |
| | | const baseURL = import.meta.env.VITE_APP_BASE_API |
| | | |
| | | // 创建一个点击事件触发下载 |
| | | function downloadFile(row: any) { |
| | | // 文件下载地址 |
| | | const fileUrl = baseURL + "/common/download/resource?resource=" + encodeURI(row); |
| | | // 设置请求头 |
| | | const headers = new Headers(); |
| | | headers.append('Authorization', 'Bearer ' + getToken()); // 设置授权头,替换YourAccessToken为实际的访问令牌 |
| | | // 发起 Fetch 请求 |
| | | fetch(fileUrl, { |
| | | method: 'GET', |
| | | headers: headers, |
| | | }) |
| | | .then(response => response.blob()) |
| | | .then(blob => { |
| | | // 创建一个虚拟的链接元素,模拟点击下载 |
| | | const link = document.createElement('a'); |
| | | link.href = window.URL.createObjectURL(blob); |
| | | link.download = row; // 设置下载文件名,替换filename.ext为实际的文件名和扩展名 |
| | | document.body.appendChild(link); |
| | | // 模拟点击 |
| | | link.click(); |
| | | |
| | | // 移除虚拟链接元素 |
| | | document.body.removeChild(link); |
| | | }) |
| | | .catch(error => console.error('下载失败:', error)); |
| | | } |
| | | defineExpose({ |
| | | openModel, |
| | | }) |
| | | </script> |
| | | <template> |
| | | <el-dialog v-model="pageF.drawerOpen" :title="props.title" append-to-body width="1000px"> |
| | | <div class="app-container" style="padding-top: 0;"> |
| | | <el-table ref="multipleTableRef" :data="props.flowParams"> |
| | | <el-table-column align="center" label="处理时间" prop="createTime" /> |
| | | <el-table-column align="center" label="处理人员" prop="createBy" /> |
| | | <el-table-column align="center" label="节点描述" prop="operation" show-overflow-tooltip="true" /> |
| | | |
| | | </el-table> |
| | | <!-- <pagination style="position: relative;" v-show="pageF.total > 0" v-model:limit="queryParams.pageSize" |
| | | v-model:page="queryParams.pageNum" :total="pageF.total" @pagination="getList" /> --> |
| | | </div> |
| | | |
| | | <div class="dialog-footer" style="text-align: right"> |
| | | <el-button @click="closeModel">关闭</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | |
| | | |
| | | <style scoped></style> |
| | |
| | | import FileUpload from "/src/components/FileUpload/index.vue"; |
| | | import basicContainer from '/src/components/basic-container/main.vue'; |
| | | import flowLog from './components/flowLog/index.vue'; |
| | | import flowLogA from './components/flowLogA/index.vue'; |
| | | |
| | | |
| | | import SvgIcon from "/src/components/SvgIcon/index.vue"; |
| | | |
| | |
| | | app.component('FileUpload', FileUpload); |
| | | app.component('basicContainer', basicContainer) |
| | | app.component('flowLog', flowLog) |
| | | app.component('flowLogA', flowLogA) |
| | | |
| | | |
| | | |
| | | app.component('svg-icon', SvgIcon) |
| | |
| | | @click="handleJs(row)" class="link-btn" :underline="false" |
| | | icon="el-icon-tickets">结算 |
| | | </el-link> --> |
| | | <el-link size="small" type="primary" v-if="row.pushStatus == '3' || row.pushStatus == '4'" |
| | | <el-link size="small" type="primary" v-if="row.pushStatus == 3 || row.pushStatus == 4|| row.pushStatus == 0" |
| | | @click="handleManualPush(row)" class="link-btn" underline="never" icon="el-icon-upload">手动推送 |
| | | </el-link> |
| | | <el-link size="small" type="primary" v-if="row.status == 0" @click="handleEdit(row)" class="link-btn" |
| | |
| | | |
| | | |
| | | </basicContainer> |
| | | <flowLog ref="flowLogIshow" :isShow="false" title="审核日志" :flowParams="flowParams"></flowLog> |
| | | <flowLogA ref="flowLogIshow" :isShow="true" title="审核日志" :flowParams="flowParams"></flowLogA> |
| | | </template> |
| | | |
| | | <script setup name="tmsApBill" lang="ts"> |
| | |
| | | <el-link size="small" type="primary" v-if="row.status != 2" @click="handleJs(row)" class="link-btn" |
| | | underline="never" icon="el-icon-tickets">结算 |
| | | </el-link> |
| | | <el-link size="small" type="primary" v-if="row.pushStatus == '3' || row.pushStatus == '4'" |
| | | <el-link size="small" type="primary" v-if="row.pushStatus == 3 || row.pushStatus == 4|| row.pushStatus == 0" |
| | | @click="handleManualPush(row)" class="link-btn" underline="never" icon="el-icon-upload">手动推送 |
| | | </el-link> |
| | | <el-link size="small" type="primary" @click="handleDerive(row)" class="link-btn" underline="never" |
| | |
| | | |
| | | |
| | | </basicContainer> |
| | | <flowLog ref="flowLogIshow" :isShow="false" title="审核日志" :flowParams="flowParams"></flowLog> |
| | | <flowLogA ref="flowLogIshow" :isShow="false" title="审核日志" :flowParams="flowParams"></flowLogA> |
| | | </template> |
| | | |
| | | <script setup name="tmsArBill" lang="ts"> |
| | |
| | | <span>{{ dictFormat(order_type, row?.orderType || form?.orderType) }}</span> |
| | | </template> |
| | | <template v-else> |
| | | <el-select v-model="form.orderType" placeholder="请选择订单类型" style="width: 100%" clearable> |
| | | <el-select v-model="form.orderType" placeholder="请选择订单类型" @change="(val) => handleOrderTypeChange(val)" style="width: 100%" clearable> |
| | | <el-option v-for="item in order_type" :key="item.value" :label="item.label" :value="parseInt(item.value)" /> |
| | | </el-select> |
| | | </template> |
| | |
| | | // 取消操作 |
| | | }); |
| | | } |
| | | |
| | | const handleOrderTypeChange = (value: any) => { |
| | | // 防止 value 为 null 或 undefined 时出错 (当清空选择时) |
| | | if (value === null || value === undefined) { |
| | | return; |
| | | } |
| | | |
| | | option.value.group.forEach((item: any) => { |
| | | if (item.prop == 'pcxx') { |
| | | // 处理装货点必填规则 |
| | | if (item.column.shipperId && item.column.shipperId.rules) { |
| | | item.column.shipperId.rules.forEach((cItem: any) => { |
| | | cItem.required = !(value == 1); |
| | | }); |
| | | } |
| | | |
| | | // 处理卸货点必填规则 |
| | | if (item.column.receiverId && item.column.receiverId.rules) { |
| | | item.column.receiverId.rules.forEach((cItem: any) => { |
| | | cItem.required = !(value == 1); |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | // 【新增逻辑】如果切换到了非必填状态 (value == 1),则清除这两个字段的校验提示 |
| | | if (value == 1) { |
| | | // 确保 crudRef 存在且暴露了 clearValidate 方法 |
| | | if (crudRef.value && typeof crudRef.value.clearValidate === 'function') { |
| | | // 清除指定字段的校验状态 |
| | | crudRef.value.clearValidate(['shipperId', 'receiverId']); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | ::v-deep .cydprint .el-dialog__body { |