diff --git a/.env.development b/.env.development index 1976a38..500d6b0 100644 --- a/.env.development +++ b/.env.development @@ -5,10 +5,16 @@ VITE_APP_TITLE = 煤科建管平台 VITE_APP_ENV = 'development' # 开发环境 -#朱银 +# 李陈杰 209 +VITE_APP_BASE_API = 'http://192.168.110.209:8899' +# 曾涛 +# VITE_APP_BASE_API = 'http://192.168.110.180:8899' +# 罗成 +# VITE_APP_BASE_API = 'http://192.168.110.213:8899' +# 朱银 # VITE_APP_BASE_API = 'http://192.168.110.149:8899' #曾涛 -VITE_APP_BASE_API = 'http://192.168.110.149:8899' +# VITE_APP_BASE_API = 'http://192.168.110.171:8899' # 无人机接口地址 diff --git a/src/api/ctr/incomeContract/index.ts b/src/api/ctr/incomeContract/index.ts index eda6901..5cf0c75 100644 --- a/src/api/ctr/incomeContract/index.ts +++ b/src/api/ctr/incomeContract/index.ts @@ -71,4 +71,16 @@ export const getFileList = (data) => { method: 'get', params: data }) +} + +/** + * 查看收入合同附件列表 + * @param id + */ +export const getInfoByProjectId = (data) => { + return request({ + url: '/bidding/listOfWinningBids/getInfoByProjectId', + method: 'get', + params: data + }) } \ No newline at end of file diff --git a/src/api/materials/batchPlan/index.ts b/src/api/materials/batchPlan/index.ts index 8633eee..c9231af 100644 --- a/src/api/materials/batchPlan/index.ts +++ b/src/api/materials/batchPlan/index.ts @@ -143,3 +143,20 @@ export const getDictList = (query: any): AxiosPromise => { params: query }); }; +export const coryEngineeringList = (query: any): AxiosPromise => { + return request({ + url: '/cailiaoshebei/mrpBase/coryEngineeringList', + method: 'get', + params: query + }); +}; +/** + * 获取到物资状态为已完成的版本 + */ +export const obtainTheVersion = (query: any) => { + return request({ + url: '/cailiaoshebei/mrpBase/obtainTheVersion', + method: 'get', + params: query + }); +}; diff --git a/src/api/materials/materialIssue/index.ts b/src/api/materials/materialIssue/index.ts index 31e8076..a366fa6 100644 --- a/src/api/materials/materialIssue/index.ts +++ b/src/api/materials/materialIssue/index.ts @@ -61,3 +61,10 @@ export const delMaterialIssue = (id: string | number | Array) = method: 'delete' }); }; +//获取一起名称 +export const getMaterialName = (id: any) => { + return request({ + url: '/materials/materials/inventoryNumber/' + id, + method: 'get' + }); +}; diff --git a/src/api/out/monthPlan/index.ts b/src/api/out/monthPlan/index.ts index b902124..48f376f 100644 --- a/src/api/out/monthPlan/index.ts +++ b/src/api/out/monthPlan/index.ts @@ -98,3 +98,26 @@ export const getMonthInfo = (query): AxiosPromise => { params: query }); }; +/** + * 修改采购完工产值对甲 + + * @param id + */ +export const purchaseValueAup = (query) => { + return request({ + url: '/out/monthPlan/purchaseValueAup', + method: 'get', + params: query + }); +}; +/** + * 采购完工产值对甲 + * @param id + */ +export const purchaseValueA = (query) => { + return request({ + url: '/out/monthPlan/purchaseValueA', + method: 'get', + params: query + }); +}; \ No newline at end of file diff --git a/src/api/out/outDesignTableVS/index.ts b/src/api/out/outDesignTableVS/index.ts index 788d797..9385a1d 100644 --- a/src/api/out/outDesignTableVS/index.ts +++ b/src/api/out/outDesignTableVS/index.ts @@ -7,3 +7,19 @@ export function listOutTable(query: any) { params: query }); } +// 对甲产值和对乙产值 +export function comparisonOfOutputValue(query: any) { + return request({ + url: '/out/table/outCompare', + method: 'get', + params: query + }); +} +// 对甲结算和对乙结算 +export function comparisonOfSettlementValue(query: any) { + return request({ + url: '/out/table/comparisonOfOwnerAndSub', + method: 'get', + params: query + }); +} diff --git a/src/api/out/purchase/index.ts b/src/api/out/purchase/index.ts new file mode 100644 index 0000000..410a1cd --- /dev/null +++ b/src/api/out/purchase/index.ts @@ -0,0 +1,24 @@ +import request from '@/utils/request'; +/** + * 修改采购完工产值对甲 + + * @param id + */ +export const purchaseValueAup = (query) => { + return request({ + url: '/out/monthPlan/purchaseValueAup', + method: 'get', + params: query + }); +}; +/** + * 采购完工产值对甲 + * @param id + */ +export const purchaseValueA = (query) => { + return request({ + url: '/out/monthPlan/purchaseValueA', + method: 'get', + params: query + }); +}; \ No newline at end of file diff --git a/src/api/progress/constructionSchedulePlan/index.ts b/src/api/progress/constructionSchedulePlan/index.ts index 3a7352d..fec34f8 100644 --- a/src/api/progress/constructionSchedulePlan/index.ts +++ b/src/api/progress/constructionSchedulePlan/index.ts @@ -61,3 +61,13 @@ export const delConstructionSchedulePlan = (id: string | number | Array) => { + return request({ + url: '/project/project/projectStructure/' + id, + method: 'get' + }); +}; diff --git a/src/api/progress/progressCategory/types.ts b/src/api/progress/progressCategory/types.ts index 6e05749..c24a173 100644 --- a/src/api/progress/progressCategory/types.ts +++ b/src/api/progress/progressCategory/types.ts @@ -84,10 +84,10 @@ export interface ProgressCategoryVO { */ remark: string; - /** - * 子对象 - */ - children: ProgressCategoryVO[]; + /** + * 子对象 + */ + children: ProgressCategoryVO[]; } export interface ProgressCategoryForm extends BaseEntity { @@ -95,7 +95,8 @@ export interface ProgressCategoryForm extends BaseEntity { * 主键id */ id?: string | number; - + constructionPrice?: string | number; + ownerPrice?: string | number; /** * 父类别id */ @@ -175,11 +176,9 @@ export interface ProgressCategoryForm extends BaseEntity { * 备注 */ remark?: string; - } export interface ProgressCategoryQuery { - /** * 父类别id */ @@ -255,11 +254,8 @@ export interface ProgressCategoryQuery { */ status?: string; - /** - * 日期范围参数 - */ - params?: any; + /** + * 日期范围参数 + */ + params?: any; } - - - diff --git a/src/components/Editor/index.vue b/src/components/Editor/index.vue index ba70fbb..2b569d0 100644 --- a/src/components/Editor/index.vue +++ b/src/components/Editor/index.vue @@ -1,28 +1,14 @@ @@ -47,7 +33,9 @@ const props = defineProps({ /* 上传文件大小限制(MB) */ fileSize: propTypes.number.def(5), /* 类型(base64格式、url格式) */ - type: propTypes.string.def('url') + type: propTypes.string.def('url'), + /* 占位符 */ + placeholder: propTypes.string.def('请输入内容'), }); const { proxy } = getCurrentInstance() as ComponentInternalInstance; @@ -90,7 +78,7 @@ const options = ref({ } } }, - placeholder: '请输入内容', + placeholder: props.placeholder, readOnly: props.readOnly }); @@ -166,77 +154,96 @@ const handleUploadError = (err: any) => { .editor-img-uploader { display: none; } + .editor, .ql-toolbar { white-space: pre-wrap !important; line-height: normal !important; } + .quill-img { display: none; } + .ql-snow .ql-tooltip[data-mode='link']::before { content: '请输入链接地址:'; } + .ql-snow .ql-tooltip.ql-editing a.ql-action::after { border-right: 0; content: '保存'; padding-right: 0; } + .ql-snow .ql-tooltip[data-mode='video']::before { content: '请输入视频地址:'; } + .ql-snow .ql-picker.ql-size .ql-picker-label::before, .ql-snow .ql-picker.ql-size .ql-picker-item::before { content: '14px'; } + .ql-snow .ql-picker.ql-size .ql-picker-label[data-value='small']::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value='small']::before { content: '10px'; } + .ql-snow .ql-picker.ql-size .ql-picker-label[data-value='large']::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value='large']::before { content: '18px'; } + .ql-snow .ql-picker.ql-size .ql-picker-label[data-value='huge']::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value='huge']::before { content: '32px'; } + .ql-snow .ql-picker.ql-header .ql-picker-label::before, .ql-snow .ql-picker.ql-header .ql-picker-item::before { content: '文本'; } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='1']::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='1']::before { content: '标题1'; } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='2']::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='2']::before { content: '标题2'; } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='3']::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='3']::before { content: '标题3'; } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='4']::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='4']::before { content: '标题4'; } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='5']::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='5']::before { content: '标题5'; } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='6']::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='6']::before { content: '标题6'; } + .ql-snow .ql-picker.ql-font .ql-picker-label::before, .ql-snow .ql-picker.ql-font .ql-picker-item::before { content: '标准字体'; } + .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='serif']::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='serif']::before { content: '衬线字体'; } + .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='monospace']::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='monospace']::before { content: '等宽字体'; diff --git a/src/views/biddingManagemen/biddingLimit/indexEdit.vue b/src/views/biddingManagemen/biddingLimit/indexEdit.vue index 450d058..fee3dd1 100644 --- a/src/views/biddingManagemen/biddingLimit/indexEdit.vue +++ b/src/views/biddingManagemen/biddingLimit/indexEdit.vue @@ -70,7 +70,7 @@ import ApprovalButton from '@/components/Process/approvalButton.vue'; import { StartProcessBo } from '@/api/workflow/workflowCommon/types'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; import { useUserStoreHook } from '@/store/modules/user'; -import { getVersionDetail } from '@/api/bidding/biddingLimit'; +import { getVersionDetail, sheetList } from '@/api/bidding/biddingLimit'; // 获取用户 store const userStore = useUserStoreHook(); @@ -82,8 +82,8 @@ const loading = ref(true); const routeParams = ref>({}); const flowCodeOptions = [ { - value: currentProject.value?.id + '_costAccounting', - label: '成本核算清单审批' + value: currentProject.value?.id + '_biddingLimitList', + label: '投标一览审核' } ]; @@ -151,11 +151,25 @@ const getInfo = () => { nextTick(async () => { const res = await getVersionDetail(routeParams.value.id); Object.assign(form.value, res.data); + getSheetName(res.data.versions); loading.value = false; buttonLoading.value = false; }); }; - +//获取表名 +const getSheetName = async (versions) => { + const params = { + projectId: currentProject.value?.id, + versions + }; + const res = await sheetList(params); + if (res.code == 200) { + sheets.value = res.data; + if (res.data.length > 0) { + sheets.value = res.data; + } + } +}; /** 提交按钮 */ const submitForm = (status1: string) => { status.value = status1; @@ -171,7 +185,7 @@ const submitFlow = async () => { const handleStartWorkFlow = async (data: LeaveForm) => { try { submitFormData.value.flowCode = flowCode.value; - submitFormData.value.businessId = data.id; + submitFormData.value.businessId = data.versions + '_abc'; //流程变量 taskVariables.value = { // leave4/5 使用的流程变量 @@ -189,7 +203,7 @@ const handleStartWorkFlow = async (data: LeaveForm) => { }; //审批记录 const handleApprovalRecord = () => { - approvalRecordRef.value.init(form.value.id); + approvalRecordRef.value.init(form.value.versions + '_abc'); }; //提交回调 const submitCallback = async () => { @@ -227,13 +241,10 @@ onMounted(() => { nextTick(async () => { reset(); routeParams.value = proxy.$route.query; - sheets.value = routeParams.value.sheets; - versions.value = routeParams.value.versions; - Object.assign(form.value, versions.value); loading.value = false; - if (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval') { - getInfo(); - } + // if (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval') { + getInfo(); + // } }); }); diff --git a/src/views/biddingManagemen/listOfWinningBids/index.vue b/src/views/biddingManagemen/listOfWinningBids/index.vue index 9ea8b22..02a45c0 100644 --- a/src/views/biddingManagemen/listOfWinningBids/index.vue +++ b/src/views/biddingManagemen/listOfWinningBids/index.vue @@ -1,7 +1,8 @@ @@ -229,6 +203,7 @@ const headers = ref(globalHeaders()); const fileList = ref([]); // 用户状态管理与当前项目 const userStore = useUserStoreHook(); +const iswhetherBid = ref(false); // 是否中标 const currentProject = computed(() => userStore.selectedProject); // const realUploadUrl = computed(() => { // const search = new URLSearchParams().toString(); @@ -254,6 +229,7 @@ const projectInfo = reactive({ // 表单核心变量 const listOfWinningBidsFormRef = ref(); const buttonLoading = ref(false); +const buttonLoading1 = ref(false); const isDisabled = ref(false); const fileObj = ref({ bidFile: undefined, @@ -347,10 +323,6 @@ const getDictLabel = (dictList: any[], value: any) => { const dictItem = dictList.find((item) => item.value === value); return dictItem ? dictItem.label : ''; }; -const handleUploadSuccess = (val) => { - fileObj.value.bidFile = val.url; - fileObj.value.bidFileName = val.fileName; -}; const upload = ref(); const handleExceed: UploadProps['onExceed'] = (files) => { @@ -370,6 +342,11 @@ const initData = async () => { if (res.code === 200) { resetForm(); if (res.data) { + if (res.data.bidPrice) { + iswhetherBid.value = true; + } else { + iswhetherBid.value = false; + } Object.assign(form.value, res.data); isDisabled.value = true; } else { @@ -394,7 +371,9 @@ const submitForm = async () => { // 1. 同步项目ID和名称 form.value.projectId = currentProject.value?.id; form.value.projectName = projectInfo.projectName; + delete projectInfo.id; await addListOfWinningBids({ ...form.value, ...projectInfo }); + initData(); // 4. 提交成功后切换为查看状态 isDisabled.value = true; ElMessage.success('提交成功'); @@ -495,6 +474,7 @@ onUnmounted(() => { .el-button { transition: all 0.2s ease; } + .el-button:hover { transform: translateY(-1px); } @@ -503,6 +483,7 @@ onUnmounted(() => { .el-form-item { transition: all 0.2s ease; } + .el-form-item:hover { border-color: #e6f7ff; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); @@ -513,6 +494,7 @@ onUnmounted(() => { .grid { display: grid; } + .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } @@ -522,6 +504,7 @@ onUnmounted(() => { .md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } + .md\:col-span-2 { grid-column: span 2 / span 2; } @@ -531,6 +514,7 @@ onUnmounted(() => { .lg\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } + .lg\:col-span-3 { grid-column: span 3 / span 3; } @@ -540,18 +524,23 @@ onUnmounted(() => { .gap-6 { gap: 1.5rem; } + .mb-5 { margin-bottom: 1.25rem; } + .mb-6 { margin-bottom: 1.5rem; } + .mt-4 { margin-top: 1rem; } + .mt-6 { margin-top: 1.5rem; } + .mt-8 { margin-top: 2rem; } diff --git a/src/views/contract/bidCost/index.vue b/src/views/contract/bidCost/index.vue new file mode 100644 index 0000000..8a6297b --- /dev/null +++ b/src/views/contract/bidCost/index.vue @@ -0,0 +1,301 @@ + + + + + diff --git a/src/views/contract/bidCost/indexEdit.vue b/src/views/contract/bidCost/indexEdit.vue new file mode 100644 index 0000000..f97c080 --- /dev/null +++ b/src/views/contract/bidCost/indexEdit.vue @@ -0,0 +1,343 @@ + + + + diff --git a/src/views/contract/limitPrice/index.vue b/src/views/contract/limitPrice/index.vue index 1b69633..8c2450f 100644 --- a/src/views/contract/limitPrice/index.vue +++ b/src/views/contract/limitPrice/index.vue @@ -53,6 +53,7 @@ @@ -128,7 +138,17 @@ + + + + @@ -156,6 +176,8 @@ const userStore = useUserStore(); const queryFormRef = ref(); const expensesContractFormRef = ref(); const currentProject = computed(() => userStore.selectedProject); +const detailContent = ref(''); +const detailVisible = ref(false); // 控制承包内容详情对话框的显示 const dialog = reactive({ visible: false, @@ -299,7 +321,10 @@ const handleShowFileList = async (row: ExpensesContractVO) => { }); } - +const handleShowDetail = (data) => { + detailContent.value = data.contractedContent + detailVisible.value = true; +} onMounted(() => { getList(); }); diff --git a/src/views/ctr/incomeContract/index.vue b/src/views/ctr/incomeContract/index.vue index ee2d04e..0eb9431 100644 --- a/src/views/ctr/incomeContract/index.vue +++ b/src/views/ctr/incomeContract/index.vue @@ -15,9 +15,9 @@ - + 搜索 重置 @@ -61,6 +61,12 @@ + + + @@ -82,10 +88,17 @@ - - 查看附件列表 - +
+ 修改合同 +
+
+ 查看合同内容 +
+
+ 查看附件列表 +
@@ -123,17 +136,31 @@ + + + + + + diff --git a/src/views/design/designChange/index.vue b/src/views/design/designChange/index.vue index 1aa02bc..cbf9764 100644 --- a/src/views/design/designChange/index.vue +++ b/src/views/design/designChange/index.vue @@ -74,14 +74,14 @@ link icon="Upload" @click="handleAddChange(scope.row)" - v-if="scope.row.status == 'draft' || scope.row.status == 'back'" + v-if="(scope.row.status == 'finish' || scope.row.costEstimation == '0') && scope.row.auditStatus == 'draft'" >上传 查看 { path: `/approval/drawing/indexEdit`, query: { id: row.id, + costEstimation: row.costEstimation, type: 'view' } }); diff --git a/src/views/design/designChange/indexEdit.vue b/src/views/design/designChange/indexEdit.vue index f48e6f7..a834692 100644 --- a/src/views/design/designChange/indexEdit.vue +++ b/src/views/design/designChange/indexEdit.vue @@ -1,25 +1,21 @@ diff --git a/src/views/design/drawing/indexEdit.vue b/src/views/design/drawing/indexEdit.vue index 76c3b5b..0f5489d 100644 --- a/src/views/design/drawing/indexEdit.vue +++ b/src/views/design/drawing/indexEdit.vue @@ -88,12 +88,16 @@ const buttonLoading = ref(false); const loading = ref(true); //路由参数 const routeParams = ref>({}); -const flowCodeOptions = [ +const flowCodeOptions = ref([ { value: currentProject.value?.id + '_designchanged', label: '变更图纸审批' + }, + { + value: currentProject.value?.id + '_moneydesignchanged', + label: '资金设计变更审批' } -]; +]); const flowCode = ref(''); const status = ref(''); @@ -129,6 +133,7 @@ const initFormData = { fileUrl: undefined, fileType: undefined, fileSuffix: undefined, + costEstimation: undefined, originalName: undefined, remark: undefined, fileId: undefined @@ -144,6 +149,7 @@ const data = reactive({ fileSuffix: undefined, fileStatus: undefined, originalName: undefined, + costEstimation: undefined, newest: undefined, params: {} }, @@ -182,8 +188,13 @@ const getInfo = () => { loading.value = true; buttonLoading.value = false; nextTick(async () => { - const res = await getDesignChange(routeParams.value.id); + var id = routeParams.value.id; + if (routeParams.value.type === 'approval') { + id = routeParams.value.id.split('_')[0]; + } + const res = await getDesignChange(id); Object.assign(form.value, res.data); + if (res.data.costEstimation) form.value.status = res.data.auditStatus; loading.value = false; buttonLoading.value = false; }); @@ -248,6 +259,8 @@ const approvalVerifyOpen = async () => { // 图纸上传成功之后 开始提交 const submit = async (status, data) => { form.value = data; + form.value.id = routeParams.value.type == 'add' ? form.value.id + '_' : form.value.id.split('_')[0]; + form.value.status = data.auditStatus ? data.auditStatus : data.status; if (status === 'draft') { buttonLoading.value = false; proxy?.$modal.msgSuccess('暂存成功'); @@ -255,7 +268,13 @@ const submit = async (status, data) => { proxy.$router.go(-1); } else { if ((form.value.status === 'draft' && (flowCode.value === '' || flowCode.value === null)) || routeParams.value.type === 'add') { - flowCode.value = flowCodeOptions[0].value; + if (form.value.costEstimation == '0') { + flowCodeOptions.value = [flowCodeOptions.value[0]]; + } else { + console.log('🚀 ~ submit ~ flowCodeOptions.value:', flowCodeOptions.value[1]); + flowCodeOptions.value = [flowCodeOptions.value[1]]; + } + flowCode.value = flowCodeOptions.value[0].value; dialogVisible.visible = true; return; } @@ -275,6 +294,8 @@ onMounted(() => { loading.value = false; if (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval') { getInfo(); + } else { + form.value.costEstimation = routeParams.value.costEstimation; } }); }); diff --git a/src/views/design/drawingreview/detailForm.vue b/src/views/design/drawingreview/detailForm.vue index 2862788..b836c41 100644 --- a/src/views/design/drawingreview/detailForm.vue +++ b/src/views/design/drawingreview/detailForm.vue @@ -81,13 +81,8 @@ --> - + @@ -102,7 +97,8 @@ --> - + @@ -117,7 +113,8 @@ --> - + @@ -275,13 +272,25 @@ const submit = async (businessId, cb) => { // 先验证表单 await formRef.value?.validate(); cb(); + // 加载中 + ElLoading.service({ + lock: true, + text: '提交中...', + background: 'rgba(0, 0, 0, 0.7)' + }); + formData.subprojectName = subProjectMap.get(formData.subprojectId); - formData.drawingreviewId = businessId; + // formData.drawingreviewId = businessId; + console.log(businessId); + // businessId 设置 如果有下滑线去掉后面及下划线 + formData.drawingreviewId = businessId.replace(/_/g, ''); const res = await drawingreviewReceipts(formData); if (res.code === 200) { - // // 提交成功处理逻辑 - // console.log('提交成功'); + // 提交成功处理逻辑 + console.log('提交成功'); } + // 关闭 + ElLoading.service().close(); }; onMounted(() => { getSubProject(); diff --git a/src/views/design/received/index.vue b/src/views/design/received/index.vue index 304c2e1..9d21ddd 100644 --- a/src/views/design/received/index.vue +++ b/src/views/design/received/index.vue @@ -1,6 +1,7 @@