Browse Source

优化

jyj_dev
zhouhaibin 1 month ago
parent
commit
b7a4c440c1
  1. 2
      .env
  2. 2
      index.html
  3. 49
      internal/vite-config/src/config/application.ts
  4. 13
      postcss.config.js
  5. 0
      public/favicon1.ico
  6. 2
      src/components/Application/src/AppLogo.vue
  7. 73
      src/views/contractReview/ContractualTasks/ContractualShowModal.vue
  8. 73
      src/views/contractReview/ContractualTasks/ContractualShowModal23232.vue
  9. 2
      src/views/contractReview/ContractualTasks/ContractualTasks.data.ts
  10. 2
      src/views/contractReview/JyjcontractualTaskBatch/JyjcontractualTaskBatch.data.ts

2
.env

@ -1,2 +1,2 @@
# spa-title # spa-title
VITE_GLOB_APP_TITLE = 国研信息 VITE_GLOB_APP_TITLE = AI合同审核系统

2
index.html

@ -144,7 +144,7 @@
</script> </script>
<div class="app-loading"> <div class="app-loading">
<div class="app-loading-wrap"> <div class="app-loading-wrap">
<img src="/logo.png" class="app-loading-logo" alt="Logo" /> <!-- <img src="/logo.png" class="app-loading-logo" alt="Logo" /> -->
<div class="app-loading-dots"> <div class="app-loading-dots">
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span> <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
</div> </div>

49
internal/vite-config/src/config/application.ts

@ -7,13 +7,8 @@ import { defineConfig, loadEnv, mergeConfig, type UserConfig } from 'vite';
import { createPlugins } from '../plugins'; import { createPlugins } from '../plugins';
import { generateModifyVars } from '../utils/modifyVars'; import { generateModifyVars } from '../utils/modifyVars';
import { commonConfig } from './common'; import { commonConfig } from './common';
import { babel } from '@rollup/plugin-babel';
import "@babel/plugin-transform-runtime" import "@babel/plugin-transform-runtime"
// import PostCssPresetEnv from 'postcss-preset-env'; // import PostCssPresetEnv from 'postcss-preset-env';
import PostCssPresetEnv from 'postcss-preset-env';
import postcssNested from 'postcss-nested';
import postcssCustomProperties from 'postcss-custom-properties';
import postcssImport from 'postcss-import';
interface DefineOptions { interface DefineOptions {
overrides?: UserConfig; overrides?: UserConfig;
options?: { options?: {
@ -97,52 +92,8 @@ function defineApplicationConfig(defineOptions: DefineOptions = {}) {
}, },
css: { charset: false } css: { charset: false }
}, },
postcss: {
plugins: [
postcssImport(),
postcssCustomProperties({
preserve: true
}),
postcssNested(),
PostCssPresetEnv({
autoprefixer: {
overrideBrowserslist: [
'Chrome >= 49',
'Firefox >= 52',
'Safari >= 10',
'Edge >= 13'
],
grid: true
},
stage: 3,
features: {
'nesting-rules': true,
'custom-properties': {
preserve: true
},
'custom-media-queries': true,
'media-query-ranges': true,
// 添加对 Grid 布局的支持
'grid-template-columns': true,
'grid-template-rows': true,
'grid-auto-columns': true,
'grid-auto-rows': true,
'grid-auto-flow': true,
'grid-area': true,
'grid-template-areas': true
},
preserve: true,
enableClientSidePolyfills: true
})
]
}
}, },
plugins: [ plugins: [
babel({
presets: [
['@babel/preset-env', { targets: "defaults" }]
]
}),
...plugins, ...plugins,
], ],
}; };

13
postcss.config.js

@ -1,13 +0,0 @@
module.exports = {
plugins: {
autoprefixer: {}
}
};

0
public/favicon.ico → public/favicon1.ico

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

2
src/components/Application/src/AppLogo.vue

@ -7,7 +7,7 @@
<!-- <img src="../../../assets/images/logo.png" /> --> <!-- <img src="../../../assets/images/logo.png" /> -->
<div class="ml-2 truncate md:opacity-100" :class="getTitleClass" v-show="showTitle"> <div class="ml-2 truncate md:opacity-100" :class="getTitleClass" v-show="showTitle">
<!-- {{ title }} --> <!-- {{ title }} -->
合同审核 AI合同审核系统
</div> </div>
</div> </div>
</template> </template>

73
src/views/contractReview/ContractualTasks/ContractualShowModal.vue

@ -8,12 +8,22 @@
@register="registerInnerModal" @register="registerInnerModal"
> >
<div class="modal-content"> <div class="modal-content">
<div class="grid grid-cols-5 gap-4 h-full"> <div class="grid grid-cols-6 gap-4 h-full">
<div class="col-span-3 pdf-container"> <div class="col-span-2 pdf-container">
<div class="pdf-container"> <div class="pdf-container">
<vue-office-docx :src="pdfUrl" /> <vue-office-docx :src="pdfUrl" />
</div> </div>
</div> </div>
<div class="col-span-2 contract-text-container">
<div class="contract-text-header">
<h3>合同文本内容</h3>
</div>
<div class="contract-text-content">
<div class="contract-text-scroll">
<pre>{{ contractText }}</pre>
</div>
</div>
</div>
<div class="col-span-2 review-container"> <div class="col-span-2 review-container">
<div class="review-content"> <div class="review-content">
<showResultCard v-model:cardList="cardList" /> <showResultCard v-model:cardList="cardList" />
@ -31,7 +41,7 @@
import { Tabs, TabPane, Card, Modal } from 'ant-design-vue'; import { Tabs, TabPane, Card, Modal } from 'ant-design-vue';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import CanvasEditor from '@/views/CanvasEditor/index.vue'; import CanvasEditor from '@/views/CanvasEditor/index.vue';
import { getContractualResultById } from '@/api/contractReview/JyjcontractualTaskBatch'; import { getContractualResultById,getContractulContent } from '@/api/contractReview/JyjcontractualTaskBatch';
import { modifyContractReview } from '@/api/documentReview/DocumentTaskResults'; import { modifyContractReview } from '@/api/documentReview/DocumentTaskResults';
import { getPdfFile } from '@/api/contractReview/JyjcontractualTaskBatch'; import { getPdfFile } from '@/api/contractReview/JyjcontractualTaskBatch';
import showResultCard from './showResultCard.vue'; import showResultCard from './showResultCard.vue';
@ -53,13 +63,25 @@
// 便 // 便
const initialCardList = ref<any[]>([]); const initialCardList = ref<any[]>([]);
//
const contractText = ref<string>('');
const [registerInnerModal, { modalLoading, closeModal }] = useModalInner( const [registerInnerModal, { modalLoading, closeModal }] = useModalInner(
async (data: { record?: Recordable }) => { async (data: { record?: Recordable }) => {
modalLoading(true); modalLoading(true);
cardList.value = []; cardList.value = [];
const { record } = data; const { record } = data;
const res = await getContractualResultById(record.id); const res = await getContractualResultById(record.id);
// const content = await getContractulContent(record.id);
//
try {
const contentRes = await getContractulContent(record.id);
contractText.value = contentRes || '无法获取合同文本内容';
} catch (error) {
console.error('获取合同文本内容失败:', error);
contractText.value = '获取合同文本内容失败';
}
pdfViewerkey.value += 1; pdfViewerkey.value += 1;
currentId.value = record.id; currentId.value = record.id;
for (const item of res.results) { for (const item of res.results) {
@ -89,6 +111,7 @@
initialCardList.value = cloneDeep(cardList.value); initialCardList.value = cloneDeep(cardList.value);
modalLoading(false); modalLoading(false);
}, },
//
); );
// //
@ -390,4 +413,46 @@
max-width: 100%; max-width: 100%;
height: auto !important; height: auto !important;
} }
/* 合同文本容器样式 */
.contract-text-container {
height: 100%;
display: flex;
flex-direction: column;
background: #fff;
border-radius: 4px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.contract-text-header {
padding: 12px 16px;
border-bottom: 1px solid #f0f0f0;
}
.contract-text-header h3 {
margin: 0;
color: #333;
font-size: 16px;
}
.contract-text-content {
flex: 1;
padding: 16px;
overflow: hidden;
}
.contract-text-scroll {
height: 100%;
overflow-y: auto;
}
.contract-text-scroll pre {
margin: 0;
white-space: pre-wrap;
word-wrap: break-word;
font-family: 'Source Han Sans CN', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
font-size: 14px;
line-height: 1.6;
color: #333;
}
</style> </style>

73
src/views/contractReview/ContractualTasks/ContractualShowModa11111l.vue → src/views/contractReview/ContractualTasks/ContractualShowModal23232.vue

@ -8,22 +8,12 @@
@register="registerInnerModal" @register="registerInnerModal"
> >
<div class="modal-content"> <div class="modal-content">
<div class="grid grid-cols-6 gap-4 h-full"> <div class="grid grid-cols-5 gap-4 h-full">
<div class="col-span-2 pdf-container"> <div class="col-span-3 pdf-container">
<div class="pdf-container"> <div class="pdf-container">
<vue-office-docx :src="pdfUrl" /> <vue-office-docx :src="pdfUrl" />
</div> </div>
</div> </div>
<div class="col-span-2 contract-text-container">
<div class="contract-text-header">
<h3>合同文本内容</h3>
</div>
<div class="contract-text-content">
<div class="contract-text-scroll">
<pre>{{ contractText }}</pre>
</div>
</div>
</div>
<div class="col-span-2 review-container"> <div class="col-span-2 review-container">
<div class="review-content"> <div class="review-content">
<showResultCard v-model:cardList="cardList" /> <showResultCard v-model:cardList="cardList" />
@ -41,7 +31,7 @@
import { Tabs, TabPane, Card, Modal } from 'ant-design-vue'; import { Tabs, TabPane, Card, Modal } from 'ant-design-vue';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import CanvasEditor from '@/views/CanvasEditor/index.vue'; import CanvasEditor from '@/views/CanvasEditor/index.vue';
import { getContractualResultById,getContractulContent } from '@/api/contractReview/JyjcontractualTaskBatch'; import { getContractualResultById } from '@/api/contractReview/JyjcontractualTaskBatch';
import { modifyContractReview } from '@/api/documentReview/DocumentTaskResults'; import { modifyContractReview } from '@/api/documentReview/DocumentTaskResults';
import { getPdfFile } from '@/api/contractReview/JyjcontractualTaskBatch'; import { getPdfFile } from '@/api/contractReview/JyjcontractualTaskBatch';
import showResultCard from './showResultCard.vue'; import showResultCard from './showResultCard.vue';
@ -63,25 +53,13 @@
// 便 // 便
const initialCardList = ref<any[]>([]); const initialCardList = ref<any[]>([]);
//
const contractText = ref<string>('');
const [registerInnerModal, { modalLoading, closeModal }] = useModalInner( const [registerInnerModal, { modalLoading, closeModal }] = useModalInner(
async (data: { record?: Recordable }) => { async (data: { record?: Recordable }) => {
modalLoading(true); modalLoading(true);
cardList.value = []; cardList.value = [];
const { record } = data; const { record } = data;
const res = await getContractualResultById(record.id); const res = await getContractualResultById(record.id);
// const content = await getContractulContent(record.id);
//
try {
const contentRes = await getContractulContent(record.id);
contractText.value = contentRes || '无法获取合同文本内容';
} catch (error) {
console.error('获取合同文本内容失败:', error);
contractText.value = '获取合同文本内容失败';
}
pdfViewerkey.value += 1; pdfViewerkey.value += 1;
currentId.value = record.id; currentId.value = record.id;
for (const item of res.results) { for (const item of res.results) {
@ -111,7 +89,6 @@
initialCardList.value = cloneDeep(cardList.value); initialCardList.value = cloneDeep(cardList.value);
modalLoading(false); modalLoading(false);
}, },
//
); );
// //
@ -413,46 +390,4 @@
max-width: 100%; max-width: 100%;
height: auto !important; height: auto !important;
} }
/* 合同文本容器样式 */
.contract-text-container {
height: 100%;
display: flex;
flex-direction: column;
background: #fff;
border-radius: 4px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.contract-text-header {
padding: 12px 16px;
border-bottom: 1px solid #f0f0f0;
}
.contract-text-header h3 {
margin: 0;
color: #333;
font-size: 16px;
}
.contract-text-content {
flex: 1;
padding: 16px;
overflow: hidden;
}
.contract-text-scroll {
height: 100%;
overflow-y: auto;
}
.contract-text-scroll pre {
margin: 0;
white-space: pre-wrap;
word-wrap: break-word;
font-family: 'Source Han Sans CN', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
font-size: 14px;
line-height: 1.6;
color: #333;
}
</style> </style>

2
src/views/contractReview/ContractualTasks/ContractualTasks.data.ts

@ -100,7 +100,7 @@ export const modalSchemas: FormSchema[] = [
component: 'Upload', component: 'Upload',
componentProps: { componentProps: {
accept: ['.docx', '.doc', '.wps'], accept: ['.docx', '.doc', '.wps'],
maxSize: 500, maxSize: 10000,
multiple: false, multiple: false,
resultField: 'ossId', resultField: 'ossId',
api: uploadDocument, api: uploadDocument,

2
src/views/contractReview/JyjcontractualTaskBatch/JyjcontractualTaskBatch.data.ts

@ -89,7 +89,7 @@ export const modalSchemas: FormSchema[] = [
component: 'Upload', component: 'Upload',
componentProps: { componentProps: {
accept: ['.zip'], accept: ['.zip'],
maxSize: 500, maxSize: 10000,
multiple: false, multiple: false,
resultField: 'ossId', resultField: 'ossId',
api: uploadContractual, api: uploadContractual,

Loading…
Cancel
Save