Merge branch 'developer' of http://code.cyweb.top/scj/zhxy/v3/cloud-ui into developer

This commit is contained in:
yaojian
2026-03-06 11:49:08 +08:00
5 changed files with 37 additions and 23 deletions

View File

@@ -28,17 +28,17 @@ node("height_A") {
switch(branch){
case 'developer' :
hostPort = 22
credentialsId = "scj-v3"
credentialsId = "root-with-key-ubu-70"
remoteHost = "192.168.42.127"
namespace = "scj-v3"
profile = "developer"
break;
case 'master':
hostPort = 22
credentialsId = "city-zhxy-deploy"
remoteHost = "192.168.41.228"
namespace = "scj-v3"
profile = "deploy"
credentialsId = "root-with-key-ubu-70"
remoteHost = "192.168.43.18"
namespace = "city-zhxy-school-deploy-v3"
profile = "deploy"
break;
default:
error('未配置分支!放弃执行')
@@ -107,7 +107,7 @@ node("height_A") {
remote.host = "${remoteHost}"
remote.allowAnyHosts = true
withCredentials([sshUserPrivateKey(credentialsId: 'root-with-key-ubu-70', keyFileVariable: 'identity', passphraseVariable: '', usernameVariable: 'username')]) {
withCredentials([sshUserPrivateKey(credentialsId: "${credentialsId}", keyFileVariable: 'identity', passphraseVariable: '', usernameVariable: 'username')]) {
remote.user = "${username}"
remote.port = hostPort
remote.identityFile = identity
@@ -122,6 +122,7 @@ node("height_A") {
}
}catch(Exception e){
isSuccess = false
currentBuild.result = 'FAILURE'

View File

@@ -13,8 +13,6 @@
"prettier": "prettier --write ."
},
"dependencies": {
"file-saver": "^2.0.5",
"xlsx": "^0.18.5",
"@axolo/json-editor-vue": "^0.3.2",
"@chenfengyuan/vue-qrcode": "^2.0.0",
"@element-plus/icons-vue": "^2.0.10",
@@ -38,6 +36,7 @@
"driver.js": "^0.9.8",
"echarts": "^5.4.1",
"element-plus": "2.5.5",
"file-saver": "^2.0.5",
"form-create-designer": "3.2.11-oem",
"highlight.js": "^11.7.0",
"html-to-image": "^1.11.13",
@@ -46,6 +45,7 @@
"json-editor-vue3": "^1.1.1",
"jsplumb": "2.15.6",
"lodash": "^4.17.21",
"mammoth": "^1.11.0",
"marked": "^12.0.2",
"markmap-common": "0.15.6",
"markmap-lib": "0.15.8",
@@ -73,7 +73,8 @@
"vue-router": "4.1.6",
"vue3-tree-org": "^4.2.2",
"vue3-video-play": "1.3.1-beta.6",
"vuedraggable": "^4.1.0"
"vuedraggable": "^4.1.0",
"xlsx": "^0.18.5"
},
"resolutions": {
"@achrinza/node-ipc": "^11.0.0",

View File

@@ -503,7 +503,7 @@ const handlePreview = async (file: any) => {
const ext = fileName.split('.').pop()?.toLowerCase() || '';
// 判断是否是图片
const imageExts = ['png', 'jpg', 'jpeg', 'gif', 'bmp', 'webp'];
const imageExts = ['png', 'jpg', 'jpeg'];
// 判断是否是PDF
const isPdf = ext === 'pdf';

View File

@@ -1087,7 +1087,7 @@ const dataForm = reactive({
importApplication: '',
governmentPurchaseIntent: '',
servicePublicSelectSchool: '',
// 学校统一采购特殊规则字段5万<=金额<40万
// 学校统一采购特殊规则字段5万<=金额<30万
serviceInviteSelectSchool: '',
servicePublicSelectSchoolAuto: '',
@@ -1285,9 +1285,12 @@ const schoolUnifiedPurchaseFormDisabled = computed(() => {
// 特殊情况字典 value0否 1紧急 2单一 3进口
const isUrgentSpecial = computed(() => dataForm.isSpecial === '1');
// 是否为特殊情况非0即为特殊情况紧急、单一、进口
// 是否为特殊情况非0即为特殊情况紧急、单一、进口或预算金额>=30万
const isSpecialCase = computed(() => {
return dataForm.isSpecial && dataForm.isSpecial !== '0';
// 特殊情况或预算金额>=30万时需要选择校党委
const isSpecial = dataForm.isSpecial && dataForm.isSpecial !== '0';
const isHighBudget = dataForm.budget != null && dataForm.budget >= BUDGET_FEASIBILITY_THRESHOLD.value;
return isSpecial || isHighBudget;
});
// 第二步标题
@@ -1418,7 +1421,7 @@ watch(
{ immediate: true }
);
// 判断是否自动选择网上商城采购方式5万<=金额<40万服务类目特殊服务类目
// 判断是否自动选择网上商城采购方式5万<=金额<30万服务类目特殊服务类目
const isAutoSelectPurchaseType = computed(() => {
if (!dataForm.budget) return false;
const budget = dataForm.budget;
@@ -1430,7 +1433,8 @@ const isAutoSelectPurchaseType = computed(() => {
);
});
// 判断是否显示自动邀请比选模版5万<=金额<40万服务类目特殊服务类目
// 判断是否显示自动邀请比选模版5万<=金额<30万服务类目特殊服务类目
const showAutoInviteSelect = computed(() => {
if (!isDeptPurchase.value) return false;
if (!dataForm.budget) return false;
@@ -1443,7 +1447,7 @@ const showAutoInviteSelect = computed(() => {
);
});
// 判断是否显示学校统一采购的自动邀请比选模版5万<=金额<40万服务类目特殊服务类目
// 判断是否显示学校统一采购的自动邀请比选模版5万<=金额<30万服务类目特殊服务类目
const showAutoInviteSelectSchool = computed(() => {
if (isDeptPurchase.value) return false;
if (!dataForm.budget) return false;
@@ -1451,7 +1455,7 @@ const showAutoInviteSelectSchool = computed(() => {
return budget >= BUDGET_DEPT_PURCHASE_THRESHOLD.value && budget < BUDGET_PUBLIC_SELECT_THRESHOLD.value && isSpecialServiceCategory.value;
});
// 判断是否显示自动公开比选模版(40万<=金额<100万特殊服务类目isMallService=1、isProjectService=1
// 判断是否显示自动公开比选模版(30万<=金额<100万特殊服务类目isMallService=1、isProjectService=1
const showAutoPublicSelect = computed(() => {
if (isDeptPurchase.value) return false;
if (!dataForm.budget) return false;
@@ -1473,7 +1477,7 @@ const getRequirementFileProp = () => {
return 'purchaseRequirement';
};
// 判断学校统一采购是否需要自动设置采购方式5万<=金额<40万服务类目特殊服务类目
// 判断学校统一采购是否需要自动设置采购方式5万<=金额<30万服务类目特殊服务类目
const isAutoSelectPurchaseTypeUnion = computed(() => {
if (isDeptPurchase.value) return false;
if (!dataForm.budget) return false;
@@ -1491,8 +1495,16 @@ watch(
() => dataForm.purchaseChannel,
() => isPurchaseCenter.value,
],
() => {
// 部门自行采购 & 采购途径为”委托采购中心采购”且为新增申请阶段:采购方式隐藏且不设置
(newValues, oldValues) => {
const oldIsDeptPurchase = oldValues?.[2];
const newIsDeptPurchase = newValues?.[2];
// 从部门自行采购切换到学校统一采购时:清空采购方式(由系统自动设置或采购中心审批时选择)
if (oldIsDeptPurchase === true && newIsDeptPurchase === false) {
dataForm.purchaseType = '';
}
// 部门自行采购 & 采购途径为"委托采购中心采购"且为新增申请阶段:采购方式隐藏且不设置
// 注意:查看模式和编辑模式不清空已有的采购方式
if (isDeptPurchase.value && isEntrustCenterChannel.value && !isFlowEmbed.value && !isViewMode.value && !isEditMode.value) {
dataForm.purchaseType = '';
@@ -2060,7 +2072,7 @@ const getPurchaseTypeDeptDict = async () => {
.map((item: any) => ({
id: item.id,
label: item.label || item.dictLabel || item.name,
value: item.value || item.dictValue || item.code,
value: String(item.value || item.dictValue || item.code),
}))
.filter((item: any) => item.value !== DEPT_PURCHASE_TYPE.ENTRUST_CENTER)
: [];
@@ -2120,7 +2132,8 @@ const getPurchaseTypeUnionDict = async () => {
? res.data.map((item: any) => ({
id: item.id,
label: item.label || item.dictLabel || item.name,
value: item.value || item.dictValue || item.code,
// 确保 value 为字符串类型,避免 el-select 无法匹配
value: String(item.value || item.dictValue || item.code),
}))
: [];
} catch (err) {

View File

@@ -3,7 +3,6 @@
v-model="visible"
:title="dialogTitle"
width="90%"
:style="{ maxWidth: '1600px' }"
:close-on-click-modal="false"
destroy-on-close
class="form-iframe-dialog"