diff --git a/.vscode/settings.json b/.vscode/settings.json index 076fee8..fd6864c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -92,7 +92,7 @@ "source.fixAll.eslint": "explicit", "source.fixAll.stylelint": "explicit" }, - "editor.defaultFormatter": "Vue.volar" + "editor.defaultFormatter": "esbenp.prettier-vscode" }, "i18n-ally.localesPaths": ["src/locales/lang"], "i18n-ally.keystyle": "nested", diff --git a/apps/test-server/README.md b/apps/test-server/README.md deleted file mode 100644 index 14298df..0000000 --- a/apps/test-server/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Test Server - -It is used to start the test interface service, which can test the upload, websocket, login and other interfaces. - -## Usage - -```bash - -cd ./test/server - -pnpm install - -pnpm run start - -``` diff --git a/apps/test-server/controller/FileController.ts b/apps/test-server/controller/FileController.ts deleted file mode 100644 index cf6d90d..0000000 --- a/apps/test-server/controller/FileController.ts +++ /dev/null @@ -1,18 +0,0 @@ -import FileService from '../service/FileService'; - -class FileController { - private service: FileService = new FileService(); - - upload = async (ctx) => { - const files = ctx.request.files.file; - console.log(files); - - if (files.length === undefined) { - this.service.upload(ctx, files, false); - } else { - this.service.upload(ctx, files, true); - } - }; -} - -export default new FileController(); diff --git a/apps/test-server/controller/UserController.ts b/apps/test-server/controller/UserController.ts deleted file mode 100644 index db815c2..0000000 --- a/apps/test-server/controller/UserController.ts +++ /dev/null @@ -1,15 +0,0 @@ -import UserService from '../service/UserService'; - -class UserController { - private service: UserService = new UserService(); - - login = async (ctx) => { - ctx.body = await this.service.login(); - }; - - getUserInfoById = async (ctx) => { - ctx.body = await this.service.getUserInfoById(); - }; -} - -export default new UserController(); diff --git a/apps/test-server/ecosystem.config.js b/apps/test-server/ecosystem.config.js deleted file mode 100644 index a31e457..0000000 --- a/apps/test-server/ecosystem.config.js +++ /dev/null @@ -1,18 +0,0 @@ -const { name } = require('./package.json'); -const path = require('path'); - -module.exports = { - apps: [ - { - name, - script: path.resolve(__dirname, './dist/index.js'), - instances: require('os').cpus().length, - autorestart: true, - watch: true, - env_production: { - NODE_ENV: 'production', - PORT: 8080, - }, - }, - ], -}; diff --git a/apps/test-server/index.ts b/apps/test-server/index.ts deleted file mode 100644 index 6c92d76..0000000 --- a/apps/test-server/index.ts +++ /dev/null @@ -1,63 +0,0 @@ -import Koa from 'koa'; -import path from 'path'; -import Router from 'koa-router'; -import body from 'koa-body'; -import cors from 'koa2-cors'; -import koaStatic from 'koa-static'; -import websockify from 'koa-websocket'; -import route from 'koa-route'; - -import AppRoutes from './routes'; - -const PORT = 3300; - -const app = websockify(new Koa()); - -app.ws.use(function (ctx, next) { - ctx.websocket.send('connection succeeded!'); - return next(ctx); -}); - -app.ws.use( - route.all('/test', function (ctx) { - // ctx.websocket.send('Hello World'); - ctx.websocket.on('message', function (message) { - // do something with the message from client - - if (message !== 'ping') { - const data = JSON.stringify({ - id: Math.ceil(Math.random() * 1000), - time: new Date().getTime(), - res: `${message}`, - }); - ctx.websocket.send(data); - } - console.log(message); - }); - }), -); - -const router = new Router(); - -// router -AppRoutes.forEach((route) => router[route.method](route.path, route.action)); - -app.use(cors()); -app.use( - body({ - encoding: 'gzip', - multipart: true, - formidable: { - // uploadDir: path.join(__dirname, '/upload/'), // 设置文件上传目录 - keepExtensions: true, - maxFieldsSize: 20 * 1024 * 1024, - }, - }), -); -app.use(router.routes()); -app.use(router.allowedMethods()); -app.use(koaStatic(path.join(__dirname))); - -app.listen(PORT, () => { - console.log(`Application started successfully: http://localhost:${PORT}`); -}); diff --git a/apps/test-server/nodemon.json b/apps/test-server/nodemon.json deleted file mode 100644 index 59fa5af..0000000 --- a/apps/test-server/nodemon.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "watch": ["src"], - "ext": "ts", - "exec": "ts-node -r tsconfig-paths/register index.ts", - "events": { - "restart": "clear" - } -} diff --git a/apps/test-server/package.json b/apps/test-server/package.json deleted file mode 100644 index 022b2aa..0000000 --- a/apps/test-server/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "server", - "version": "1.0.0", - "license": "MIT", - "scripts": { - "compile": "rimraf ./dist && tsup ./index.ts --dts --format cjs,esm ", - "prod": "npx pm2 start ecosystem.config.js --env production", - "restart": "pm2 restart ecosystem.config.js --env production", - "start": "nodemon", - "stop": "npx pm2 stop ecosystem.config.js" - }, - "dependencies": { - "fs-extra": "^11.1.1", - "koa": "^2.14.2", - "koa-body": "^6.0.1", - "koa-bodyparser": "^4.4.1", - "koa-route": "^3.2.0", - "koa-router": "^12.0.0", - "koa-static": "^5.0.0", - "koa-websocket": "^7.0.0", - "koa2-cors": "^2.0.6" - }, - "devDependencies": { - "@types/koa": "^2.13.6", - "@types/koa-bodyparser": "^5.0.2", - "@types/koa-router": "^7.4.4", - "@types/node": "^20.4.0", - "nodemon": "^2.0.22", - "pm2": "^5.3.0", - "rimraf": "^5.0.1", - "ts-node": "^10.9.1", - "tsconfig-paths": "^4.2.0", - "tsup": "^7.1.0", - "typescript": "^5.1.6" - } -} diff --git a/apps/test-server/routes.ts b/apps/test-server/routes.ts deleted file mode 100644 index 7fe6475..0000000 --- a/apps/test-server/routes.ts +++ /dev/null @@ -1,23 +0,0 @@ -import UserController from './controller/UserController'; -import FileController from './controller/FileController'; - -export default [ - // user - { - path: '/login', - method: 'post', - action: UserController.login, - }, - { - path: '/getUserInfoById', - method: 'get', - action: UserController.getUserInfoById, - }, - - // file - { - path: '/upload', - method: 'post', - action: FileController.upload, - }, -]; diff --git a/apps/test-server/service/FileService.ts b/apps/test-server/service/FileService.ts deleted file mode 100644 index dfd378f..0000000 --- a/apps/test-server/service/FileService.ts +++ /dev/null @@ -1,54 +0,0 @@ -import path from 'path'; -import fs from 'fs-extra'; - -const uploadUrl = 'http://localhost:3300/static/upload'; -const filePath = path.join(__dirname, '../static/upload/'); - -fs.ensureDir(filePath); -export default class UserService { - async upload(ctx, files, isMultiple) { - let fileReader, fileResource, writeStream; - - const fileFunc = function (file) { - fileReader = fs.createReadStream(file.path); - fileResource = filePath + `/${file.name}`; - console.log(fileResource); - - writeStream = fs.createWriteStream(fileResource); - fileReader.pipe(writeStream); - }; - - const returnFunc = function (flag) { - if (flag) { - let url = ''; - for (let i = 0; i < files.length; i++) { - url += uploadUrl + `/${files[i].name},`; - } - url = url.replace(/,$/gi, ''); - ctx.body = { - url: url, - code: 0, - message: 'upload Success!', - }; - } else { - ctx.body = { - url: uploadUrl + `/${files.name}`, - code: 0, - message: 'upload Success!', - }; - } - }; - console.log(isMultiple, files.length); - - if (isMultiple) { - for (let i = 0; i < files.length; i++) { - const f1 = files[i]; - fileFunc(f1); - } - } else { - fileFunc(files); - } - fs.ensureDir(filePath); - returnFunc(isMultiple); - } -} diff --git a/apps/test-server/service/UserService.ts b/apps/test-server/service/UserService.ts deleted file mode 100644 index 0c395e5..0000000 --- a/apps/test-server/service/UserService.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Result } from '../utils'; - -const fakeUserInfo = { - userId: '1', - username: 'vben', - realName: 'Vben Admin', - desc: 'manager', - password: '123456', - token: 'fakeToken1', - roles: [ - { - roleName: 'Super Admin', - value: 'super', - }, - ], -}; -export default class UserService { - async login() { - return Result.success(fakeUserInfo); - } - - async getUserInfoById() { - return Result.success(fakeUserInfo); - } -} diff --git a/apps/test-server/tsconfig.json b/apps/test-server/tsconfig.json deleted file mode 100644 index 3560460..0000000 --- a/apps/test-server/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@vben/ts-config/node-server.json", - "compilerOptions": { - "noImplicitAny": false - } -} diff --git a/apps/test-server/utils.ts b/apps/test-server/utils.ts deleted file mode 100644 index 7fd0b3f..0000000 --- a/apps/test-server/utils.ts +++ /dev/null @@ -1,9 +0,0 @@ -export class Result { - static success(data: any) { - return { - code: 0, - success: true, - result: data, - }; - } -} diff --git a/internal/ts-config/package.json b/internal/ts-config/package.json index f9882ec..80a5ff8 100644 --- a/internal/ts-config/package.json +++ b/internal/ts-config/package.json @@ -20,6 +20,6 @@ ], "dependencies": { "@types/node": "^20.4.0", - "vite": "^4.4.0" + "vite": "^4.5.2" } } diff --git a/package.json b/package.json index 81da768..aa9ba99 100644 --- a/package.json +++ b/package.json @@ -77,10 +77,10 @@ "@vueuse/shared": "^10.2.1", "@zxcvbn-ts/core": "^3.0.2", "ant-design-vue": "^4.0.6", - "axios": "^1.4.0", + "axios": "1.7.4", "codemirror": "^5.65.12", "cropperjs": "^1.5.13", - "crypto-js": "^4.1.1", + "crypto-js": "^4.2.0", "dayjs": "^1.11.10", "driver.js": "^1.3.0", "echarts": "^5.4.2", @@ -121,7 +121,7 @@ "@iconify/json": "^2.2.87", "@purge-icons/generated": "^0.9.0", "@types/codemirror": "^5.60.8", - "@types/crypto-js": "^4.1.1", + "@types/crypto-js": "^4.2.2", "@types/lodash-es": "^4.17.7", "@types/mockjs": "^1.0.7", "@types/nprogress": "^0.2.0", @@ -147,9 +147,10 @@ "turbo": "^1.10.7", "typescript": "^5.2.2", "unbuild": "^1.2.1", - "vite": "^4.4.0", + "vite": "^4.5.2", "vite-plugin-mock": "^2.9.6", - "vue-tsc": "^1.8.4" + "vue-tsc": "^1.8.4", + "js-base64":"3.7.7" }, "packageManager": "pnpm@8.1.0", "engines": { diff --git a/src/api/common/api.ts b/src/api/common/api.ts index 01fcb47..a977ded 100644 --- a/src/api/common/api.ts +++ b/src/api/common/api.ts @@ -1,11 +1,12 @@ import { defHttp } from '@/utils/http/axios'; import { message } from 'ant-design-vue'; - import * as streamSaver from "streamsaver" import { getToken } from '@/utils/auth'; import { useGlobSetting } from '@/hooks/setting'; - +import { Base64 } from "js-base64"; +import { buildUUID } from '@/utils/uuid'; const { apiUrl } = useGlobSetting(); +import axios from 'axios'; /** * 下载文件 * @param url 文件路径 @@ -30,13 +31,26 @@ export const downloadFile = (url, fileName?, parameter?) => { document.body.appendChild(link); link.click(); document.body.removeChild(link); //下载完成移除元素 - window.URL.revokeObjectURL(url); //释放掉blob对象 + window.URL.revokeObjectURL(url); //释放掉blob对象window.btoa(unescape(encodeURIComponent('我是一段需要处理的字符'))) } }); }; +export const downloadonlinePreview = async (url, fileName,parameter) =>{ + + let originUrl="http://218.246.6.165:8080"+apiUrl + url+"?path="+parameter.path+"&fileName="+parameter.fileName + // let fileType=parameter.fileName.substring(parameter.fileName.lastIndexOf(".")+1) + // let uuid= buildUUID() + let previewUrl = originUrl + "&fullfilename=" +parameter.path.substring(parameter.path.lastIndexOf("/")+1); //带上文件名(带后缀) + console.log(previewUrl,'previewUrl') + window.open( 'http://218.246.6.173:9002' + "/onlinePreview?url=" + encodeURIComponent(Base64.encode(previewUrl))) + } export const downloadResource = async (url, fileName,parameter) =>{ - + // let originUrl="http://localhost:3100"+apiUrl + url+"?path="+parameter.path+"&fileName="+parameter.fileName + // let previewUrl = originUrl + "&fullfilename=" + parameter.fileName; //带上文件名(带后缀) + + // window.open( 'http://218.246.6.173:9002' + "/onlinePreview?url=" + encodeURIComponent(Base64.encode(previewUrl))) url = apiUrl + url+"?path="+encodeURIComponent(parameter.path)+"&fileName="+parameter.fileName + console.log(apiUrl ,url,'previewUrl') let filename = fileName if (!fileName) { filename = url.substring(url.lastIndexOf('/') + 1); diff --git a/src/api/common/base64.min.js b/src/api/common/base64.min.js new file mode 100644 index 0000000..172e7a1 --- /dev/null +++ b/src/api/common/base64.min.js @@ -0,0 +1,241 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + ? (module.exports = factory(global)) + : typeof define === 'function' && define.amd + ? define(factory) + : factory(global); +})( + typeof self !== 'undefined' + ? self + : typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : this, + function (global) { + global = global || {}; + var _Base64 = global.Base64; + var version = '2.6.3'; + var b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + var b64tab = (function (bin) { + var t = {}; + for (var i = 0, l = bin.length; i < l; i++) { + t[bin.charAt(i)] = i; + } + return t; + })(b64chars); + var fromCharCode = String.fromCharCode; + var cb_utob = function (c) { + if (c.length < 2) { + var cc = c.charCodeAt(0); + return cc < 128 + ? c + : cc < 2048 + ? fromCharCode(192 | (cc >>> 6)) + fromCharCode(128 | (cc & 63)) + : fromCharCode(224 | ((cc >>> 12) & 15)) + + fromCharCode(128 | ((cc >>> 6) & 63)) + + fromCharCode(128 | (cc & 63)); + } else { + var cc = 65536 + (c.charCodeAt(0) - 55296) * 1024 + (c.charCodeAt(1) - 56320); + return ( + fromCharCode(240 | ((cc >>> 18) & 7)) + + fromCharCode(128 | ((cc >>> 12) & 63)) + + fromCharCode(128 | ((cc >>> 6) & 63)) + + fromCharCode(128 | (cc & 63)) + ); + } + }; + var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; + var utob = function (u) { + return u.replace(re_utob, cb_utob); + }; + var cb_encode = function (ccc) { + var padlen = [0, 2, 1][ccc.length % 3], + ord = + (ccc.charCodeAt(0) << 16) | + ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) | + (ccc.length > 2 ? ccc.charCodeAt(2) : 0), + chars = [ + b64chars.charAt(ord >>> 18), + b64chars.charAt((ord >>> 12) & 63), + padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63), + padlen >= 1 ? '=' : b64chars.charAt(ord & 63), + ]; + return chars.join(''); + }; + var btoa = + global.btoa && typeof global.btoa == 'function' + ? function (b) { + return global.btoa(b); + } + : function (b) { + if (b.match(/[^\x00-\xFF]/)) { + throw new RangeError('The string contains invalid characters.'); + } + return b.replace(/[\s\S]{1,3}/g, cb_encode); + }; + var _encode = function (u) { + return btoa(utob(String(u))); + }; + var mkUriSafe = function (b64) { + return b64 + .replace(/[+\/]/g, function (m0) { + return m0 == '+' ? '-' : '_'; + }) + .replace(/=/g, ''); + }; + var encode = function (u, urisafe) { + return urisafe ? mkUriSafe(_encode(u)) : _encode(u); + }; + var encodeURI = function (u) { + return encode(u, true); + }; + var fromUint8Array; + if (global.Uint8Array) { + fromUint8Array = function (a, urisafe) { + var b64 = ''; + for (var i = 0, l = a.length; i < l; i += 3) { + var a0 = a[i], + a1 = a[i + 1], + a2 = a[i + 2]; + var ord = (a0 << 16) | (a1 << 8) | a2; + b64 += + b64chars.charAt(ord >>> 18) + + b64chars.charAt((ord >>> 12) & 63) + + (typeof a1 != 'undefined' ? b64chars.charAt((ord >>> 6) & 63) : '=') + + (typeof a2 != 'undefined' ? b64chars.charAt(ord & 63) : '='); + } + return urisafe ? mkUriSafe(b64) : b64; + }; + } + var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; + var cb_btou = function (cccc) { + switch (cccc.length) { + case 4: + var cp = + ((7 & cccc.charCodeAt(0)) << 18) | + ((63 & cccc.charCodeAt(1)) << 12) | + ((63 & cccc.charCodeAt(2)) << 6) | + (63 & cccc.charCodeAt(3)), + offset = cp - 65536; + return fromCharCode((offset >>> 10) + 55296) + fromCharCode((offset & 1023) + 56320); + case 3: + return fromCharCode( + ((15 & cccc.charCodeAt(0)) << 12) | + ((63 & cccc.charCodeAt(1)) << 6) | + (63 & cccc.charCodeAt(2)), + ); + default: + return fromCharCode(((31 & cccc.charCodeAt(0)) << 6) | (63 & cccc.charCodeAt(1))); + } + }; + var btou = function (b) { + return b.replace(re_btou, cb_btou); + }; + var cb_decode = function (cccc) { + var len = cccc.length, + padlen = len % 4, + n = + (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0) | + (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0) | + (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0) | + (len > 3 ? b64tab[cccc.charAt(3)] : 0), + chars = [fromCharCode(n >>> 16), fromCharCode((n >>> 8) & 255), fromCharCode(n & 255)]; + chars.length -= [0, 0, 2, 1][padlen]; + return chars.join(''); + }; + var _atob = + global.atob && typeof global.atob == 'function' + ? function (a) { + return global.atob(a); + } + : function (a) { + return a.replace(/\S{1,4}/g, cb_decode); + }; + var atob = function (a) { + return _atob(String(a).replace(/[^A-Za-z0-9\+\/]/g, '')); + }; + var _decode = function (a) { + return btou(_atob(a)); + }; + var _fromURI = function (a) { + return String(a) + .replace(/[-_]/g, function (m0) { + return m0 == '-' ? '+' : '/'; + }) + .replace(/[^A-Za-z0-9\+\/]/g, ''); + }; + var decode = function (a) { + return _decode(_fromURI(a)); + }; + var toUint8Array; + if (global.Uint8Array) { + toUint8Array = function (a) { + return Uint8Array.from(atob(_fromURI(a)), function (c) { + return c.charCodeAt(0); + }); + }; + } + var noConflict = function () { + var Base64 = global.Base64; + global.Base64 = _Base64; + return Base64; + }; + global.Base64 = { + VERSION: version, + atob: atob, + btoa: btoa, + fromBase64: decode, + toBase64: encode, + utob: utob, + encode: encode, + encodeURI: encodeURI, + btou: btou, + decode: decode, + noConflict: noConflict, + fromUint8Array: fromUint8Array, + toUint8Array: toUint8Array, + }; + if (typeof Object.defineProperty === 'function') { + var noEnum = function (v) { + return { value: v, enumerable: false, writable: true, configurable: true }; + }; + global.Base64.extendString = function () { + Object.defineProperty( + String.prototype, + 'fromBase64', + noEnum(function () { + return decode(this); + }), + ); + Object.defineProperty( + String.prototype, + 'toBase64', + noEnum(function (urisafe) { + return encode(this, urisafe); + }), + ); + Object.defineProperty( + String.prototype, + 'toBase64URI', + noEnum(function () { + return encode(this, true); + }), + ); + }; + } + if (global['Meteor']) { + Base64 = global.Base64; + } + if (typeof module !== 'undefined' && module.exports) { + module.exports.Base64 = global.Base64; + } else { + if (typeof define === 'function' && define.amd) { + define([], function () { + return global.Base64; + }); + } + } + return { Base64: global.Base64 }; + }, +); diff --git a/src/views/ProcessApprovalSubPage/component/ApprovalPageModel.vue b/src/views/ProcessApprovalSubPage/component/ApprovalPageModel.vue index ea56f33..f0825d9 100644 --- a/src/views/ProcessApprovalSubPage/component/ApprovalPageModel.vue +++ b/src/views/ProcessApprovalSubPage/component/ApprovalPageModel.vue @@ -1,45 +1,70 @@ - \ No newline at end of file diff --git a/src/views/ProcessApprovalSubPage/component/PlanFileDetail.vue b/src/views/ProcessApprovalSubPage/component/PlanFileDetail.vue index 1beb107..6c2a41c 100644 --- a/src/views/ProcessApprovalSubPage/component/PlanFileDetail.vue +++ b/src/views/ProcessApprovalSubPage/component/PlanFileDetail.vue @@ -15,7 +15,7 @@ import { BasicTable, ActionItem, TableAction, useTable } from '@/components/Tabl import { PlaninfoFiletableColumns } from '@/views/projectLib/projectPlan/projectPlan.data'; import { planFilePageList ,getplaninfoByid } from '@/views/projectLib/projectPlan/projectPlan.api' import { BasicColumn } from '@/components/Table'; -import { downloadFile,downloadResource } from "@/api/common/api" +import { downloadFile,downloadResource,downloadonlinePreview } from "@/api/common/api" let dataTo = defineProps(["stage", "planinfoid"]) //我的待办表格组件 @@ -51,9 +51,26 @@ function getTableAction(record): ActionItem[] { label: '下载', ifShow: true, onClick: handleDetailpage.bind(null, record), + }, + { + label: '预览', + ifShow: true, + onClick: handlePreview.bind(null, record), } ]; } +function handlePreview(record) { + console.log("我这一行的数据是", record) + let param = { + path: record.documentPath, + fileName: record.documentName + } + // + console.log("我这一行的数据是", param) + + // downloadFile("/huzhouUploadfileinfo/downloadfile", record.documentName, param) + downloadonlinePreview("/huzhouUploadfileinfo/downloadfile", record.documentName,param) +} function handleDetailpage(record) { console.log("我这一行的数据是", record) let param = { diff --git a/src/views/ProcessApprovalSubPage/planFileApproval.vue b/src/views/ProcessApprovalSubPage/planFileApproval.vue index 6a88742..c71d5d9 100644 --- a/src/views/ProcessApprovalSubPage/planFileApproval.vue +++ b/src/views/ProcessApprovalSubPage/planFileApproval.vue @@ -1,5 +1,6 @@ diff --git a/src/views/informationSub/monthlyJournal/index.vue b/src/views/informationSub/monthlyJournal/index.vue index cdef458..034d3e7 100644 --- a/src/views/informationSub/monthlyJournal/index.vue +++ b/src/views/informationSub/monthlyJournal/index.vue @@ -21,12 +21,13 @@ import { ref } from 'vue'; import { ActionItem, BasicTable, TableAction, useTable } from '@/components/Table'; import { useModal } from '@/components/Modal'; -import { downloadFile } from "../../../api/common/api" +import { downloadResource } from "../../../api/common/api" import { isShowByRoles } from '@/views/projectLib/projectInfo/projectInfo.api'; import { monthlyJournalcolumns, searchFormSchema } from './monthlyJournal.data'; import addAndModify from "./addAndModify.vue" import { periodicallabPageList, batchdownloadPeriodicallabFiles, deletePeriodicallab } from './monthlyJournal.api'; +import { fi } from 'element-plus/es/locale'; const [registerSubmitProjectArchive, { openModal }] = useModal(); const [registerTable, { reload, getForm }] = useTable({ title: '月度期刊信息', @@ -91,8 +92,9 @@ function handleSubmit(record) { function handledown(record) { let param = { path: record.documentPath, + fileName: record.documentName } - downloadFile("/huzhouUploadfileinfo/downloadfile", record.documentName, param) + downloadResource("/huzhouUploadfileinfo/downloadfile", record.documentName, param) } async function handleDelete(record) { diff --git a/src/views/myWork/inComplete/inComplete.api.ts b/src/views/myWork/inComplete/inComplete.api.ts index bb2a472..e228ea8 100644 --- a/src/views/myWork/inComplete/inComplete.api.ts +++ b/src/views/myWork/inComplete/inComplete.api.ts @@ -33,7 +33,7 @@ export const approveUploadFile = (params) => defHttp.post({ url: Api.approveUplo export const modifyProjectInfo = (params) => defHttp.post({ url: Api.modifyProjectInfo, params }) export const approvePlanFile = (params) => defHttp.post({ url: Api.approvePlanFile, headers: { "Content-Type": "multipart/form-data" }, params }) -export const approveURTFile = (params) => defHttp.post({ url: Api.approveURTFile, headers: { "Content-Type": "multipart/form-data" }, params }) +export const approveURTFile = (params) => defHttp.post({ url: Api.approveURTFile, headers: { "Content-Type": "multipart/form-data" }, params,timeout:10*60*1000 }) export const approvalMergeProject = (params) => defHttp.post({ url: Api.approvalMergeProject, headers: { "Content-Type": "multipart/form-data" }, params }) export const approvalSplitProject = (params) => defHttp.post({ url: Api.approvalSplitProject, headers: { "Content-Type": "multipart/form-data" }, params }) diff --git a/src/views/projectBoard/liangShaiKanBan/liangShaiKanBan.data.ts b/src/views/projectBoard/liangShaiKanBan/liangShaiKanBan.data.ts index ae07887..a3a5036 100644 --- a/src/views/projectBoard/liangShaiKanBan/liangShaiKanBan.data.ts +++ b/src/views/projectBoard/liangShaiKanBan/liangShaiKanBan.data.ts @@ -31,7 +31,7 @@ export const huizongcolumns: BasicColumn[] = [ resizable: true, }, { - title: '项目总数', + title: '入库项目总数', dataIndex: 'projectNum', }, { @@ -62,6 +62,10 @@ export const huizongcolumns: BasicColumn[] = [ title: '项目验收阶段数量', dataIndex: 'acceptanceNum', }, + { + title: '未入库项目数量', + dataIndex: 'closeNum', + }, ]; export const liangshaicolumns: BasicColumn[] = [ diff --git a/src/views/projectBoard/urt/qingkuang/index.vue b/src/views/projectBoard/urt/qingkuang/index.vue index 0efc0d7..84c723b 100644 --- a/src/views/projectBoard/urt/qingkuang/index.vue +++ b/src/views/projectBoard/urt/qingkuang/index.vue @@ -30,7 +30,7 @@ import { getSuperLeaderApproveInfo, getURTUnApprovedDaysPage } from './qingkuang.api'; const activeKey = ref('1'); const [registerTable, { reload }] = useTable({ - title: '详情', + title: '各上级指导处室未审批流程总数', api: getSuperLeaderApproveInfo, columns: qingkuangcolumns, useSearchForm: false, @@ -40,7 +40,7 @@ // } }); const [registerURTTable, { reload: urtreload }] = useTable({ - title: '详情', + title: '七部门未审批流程总数', api: getURTUnApprovedDaysPage, columns: qingkuangUrtcolumns, useSearchForm: false, diff --git a/src/views/projectBoard/urt/qingkuang/qingkuang.data.ts b/src/views/projectBoard/urt/qingkuang/qingkuang.data.ts index ee6af9d..59b5ee7 100644 --- a/src/views/projectBoard/urt/qingkuang/qingkuang.data.ts +++ b/src/views/projectBoard/urt/qingkuang/qingkuang.data.ts @@ -27,18 +27,18 @@ export const qingkuangcolumns: BasicColumn[] = [ title: '未审批流程数', dataIndex: 'unapprovedCount', }, - { - title: '2天未审批流程数', - dataIndex: 'unapprovedCount2d', - }, + // { + // title: '2天未审批流程数', + // dataIndex: 'unapprovedCount2d', + // }, { title: '3天未审批流程数', dataIndex: 'unapprovedCount3d', }, - { - title: '5天未审批流程数', - dataIndex: 'unapprovedCount5d', - }, + // { + // title: '5天未审批流程数', + // dataIndex: 'unapprovedCount5d', + // }, { title: '超过5天未审批流程数', dataIndex: 'unapprovedCountOver5d', @@ -65,18 +65,18 @@ export const qingkuangUrtcolumns: BasicColumn[] = [ title: '未审批流程数', dataIndex: 'unapprovedCount', }, - { - title: '2天未审批流程数', - dataIndex: 'unapprovedCount2d', - }, + // { + // title: '2天未审批流程数', + // dataIndex: 'unapprovedCount2d', + // }, { title: '3天未审批流程数', dataIndex: 'unapprovedCount3d', }, - { - title: '5天未审批流程数', - dataIndex: 'unapprovedCount5d', - }, + // { + // title: '5天未审批流程数', + // dataIndex: 'unapprovedCount5d', + // }, { title: '超过5天未审批流程数', dataIndex: 'unapprovedCountOver5d', diff --git a/src/views/projectBoard/urt/urt/index.vue b/src/views/projectBoard/urt/urt/index.vue index 6e7ff38..a7ab088 100644 --- a/src/views/projectBoard/urt/urt/index.vue +++ b/src/views/projectBoard/urt/urt/index.vue @@ -1,11 +1,53 @@