diff --git a/.env.production b/.env.production
index 88633da7..dc3163c5 100644
--- a/.env.production
+++ b/.env.production
@@ -12,9 +12,9 @@ VITE_BUILD_COMPRESS = 'none'
# Basic interface address SPA
#财源
-VITE_GLOB_API_URL=http://192.168.10.102:9500
+#VITE_GLOB_API_URL=http://192.168.10.102:9500
#基础框架
-#VITE_GLOB_API_URL=http://192.168.10.102:9023
+VITE_GLOB_API_URL=http://192.168.10.102:9023
# File upload address, optional
# It can be forwarded by nginx or write the actual address directly
diff --git a/src/components/FormViewer/index.vue b/src/components/FormViewer/index.vue
index 6caaf982..9cde47fd 100644
--- a/src/components/FormViewer/index.vue
+++ b/src/components/FormViewer/index.vue
@@ -1,6 +1,5 @@
@@ -494,7 +504,7 @@
import { SelectPos } from '@/components/SelectPos/index';
import { SelectRole } from '@/components/SelectRole/index';
import { SelectAccount } from '@/components/SelectAccount/index';
- import { AuditorLevel, AuditorSql, AuditorNode } from './page';
+ import { AuditorLevel, AuditorSql, AuditorNode, ExecuteSQL } from './page';
import { DeleteOutlined, PlusOutlined } from '@ant-design/icons-vue';
import { flowStore } from '@/store/modules/flow';
import { SelectForm } from '@/components/SelectForm/index';
@@ -601,6 +611,7 @@
formOpen: false,
formVerisons: [],
formName: '',
+ SQLOpen: false,
});
watch(
@@ -642,6 +653,8 @@
return '节点';
case '6':
return '表字段';
+ case '7':
+ return 'SQL';
}
}
@@ -669,10 +682,14 @@
node.value.lookUsers = node.value.lookUsers.concat(addData2);
updateWfData('lookUsers');
} else {
- let addData = selectData.filter(
- (t) => node.value.auditUsers.findIndex((t2) => t2.id == t.id && t2.type == t.type) == -1,
- );
- node.value.auditUsers = node.value.auditUsers.concat(addData);
+ if (selectData.type == 7) {
+ node.value.auditUsers.push(selectData);
+ } else {
+ let addData = selectData.filter(
+ (t) => node.value.auditUsers.findIndex((t2) => t2.id == t.id && t2.type == t.type) == -1,
+ );
+ node.value.auditUsers = node.value.auditUsers.concat(addData);
+ }
updateWfData('auditUsers');
}
}
@@ -739,6 +756,22 @@
data.nodeOpen = false;
}
}
+ // 执行SQL
+ const executeSQLRef = ref();
+
+ function handleSQLClick(isLooker) {
+ nodeId.value = node.value.id;
+ data.isLooker = isLooker;
+ data.SQLOpen = true;
+ }
+ function executeSQLHandleOk() {
+ executeSQLRef.value.validateForm();
+ let obj = executeSQLRef.value.getForm();
+ if (obj.Sql != '') {
+ addTableData(obj);
+ data.SQLOpen = false;
+ }
+ }
// 数据表字段选择
const sqlRef = ref();
@@ -889,7 +922,6 @@
obj.fieldName = element.componentProps.fieldName;
fields.push(obj);
} else if (['Grid'].includes(element.component) || element.type == 'subTable') {
- console.log('gridtable');
fields.push({
field: `${element.field}_add`,
label: `${element.label || '表格'}-添加按钮`,
diff --git a/src/components/ProcessDesigner/package/penal/userTask/page.ts b/src/components/ProcessDesigner/package/penal/userTask/page.ts
index 99903a23..3b8f63fa 100644
--- a/src/components/ProcessDesigner/package/penal/userTask/page.ts
+++ b/src/components/ProcessDesigner/package/penal/userTask/page.ts
@@ -1,3 +1,4 @@
export { default as AuditorLevel } from './src/auditorLevel.vue';
export { default as AuditorSql } from './src/auditorSql.vue';
export { default as AuditorNode } from './src/auditorNode.vue';
+export { default as ExecuteSQL } from './src/executeSQL.vue';
diff --git a/src/components/ProcessDesigner/package/penal/userTask/src/executeSQL.vue b/src/components/ProcessDesigner/package/penal/userTask/src/executeSQL.vue
new file mode 100644
index 00000000..64839c7c
--- /dev/null
+++ b/src/components/ProcessDesigner/package/penal/userTask/src/executeSQL.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
diff --git a/src/views/demo/form-design/components/VFormDesign/components/ComponentProps.vue b/src/views/demo/form-design/components/VFormDesign/components/ComponentProps.vue
index 515e3cdb..09cbe0e0 100644
--- a/src/views/demo/form-design/components/VFormDesign/components/ComponentProps.vue
+++ b/src/views/demo/form-design/components/VFormDesign/components/ComponentProps.vue
@@ -94,7 +94,7 @@
/>
- 点击脚本
+ 点击脚本
formConfig.value.currentItem?.field,
(_newValue, oldValue) => {
- currentIndex.value = formConfig.value.schemas.findIndex(
- (element) => element.field === formConfig.value.currentItem.field,
- );
+ // currentIndex.value = formConfig.value.schemas.findIndex(
+ // (element) => element.field === formConfig.value.currentItem.field,
+ // );
formConfig.value.schemas &&
formItemsForEach(formConfig.value.schemas, (item) => {
if (item.link) {
@@ -310,9 +310,9 @@
() => formConfig.value.currentItem && formConfig.value.currentItem.component,
() => {
// console.log(formConfig.value);
- currentIndex.value = formConfig.value.schemas.findIndex(
- (element) => element.field === formConfig.value.currentItem.field,
- );
+ // currentIndex.value = formConfig.value.schemas.findIndex(
+ // (element) => element.field === formConfig.value.currentItem.field,
+ // );
allOptions.value = [];
baseComponentControlAttrs.forEach((item) => {
item.category = 'control';
@@ -378,7 +378,8 @@
let arr = allOptions.value.filter((item) => {
return item.category == 'input';
});
-
+ console.log(arr);
+ console.log(currentIndex.value);
arr.forEach((item) => {
if (item.name == 'dataTable') {
if (currentIndex.value == -1) {
diff --git a/src/views/demo/form-design/components/VFormDesign/components/FormProps.vue b/src/views/demo/form-design/components/VFormDesign/components/FormProps.vue
index 0e8e2d6c..d30c83a5 100644
--- a/src/views/demo/form-design/components/VFormDesign/components/FormProps.vue
+++ b/src/views/demo/form-design/components/VFormDesign/components/FormProps.vue
@@ -76,7 +76,6 @@
@@ -84,7 +83,6 @@
@@ -92,7 +90,6 @@
@@ -100,7 +97,6 @@
@@ -209,11 +205,9 @@
}
// 脚本窗口提交
function handleSubmit() {
- if (formContent.value.indexOf('=>') != -1) {
- // 表示是老版本,提示其修改为新的版本
- message.warning('脚本没有更新为最新的版本!');
+ if (!checkChinese(formContent.value)) {
+ message.warning('脚本的代码部分不能含有中文字符!');
return;
- // } else if() {
}
if (btnClickEvent_now) {
if (btnClickEvent_now == 'beforeSetData') {
@@ -228,6 +222,33 @@
}
closeModal();
}
+
+ function checkChinese(str) {
+ // 分割字符串为多行
+ const lines = str.split('\n');
+ let flag = true;
+
+ // 遍历每一行
+ for (const line of lines) {
+ // 先检查并移除console.log及其后的内容
+ const consoleIndex = line.indexOf('console.log');
+ let partToCheck = line;
+ if (consoleIndex !== -1) {
+ partToCheck = line.substring(0, consoleIndex).trim(); // 移除console.log及其后的内容,并去掉前导空格
+ }
+
+ // 再检查'//'
+ const commentIndex = partToCheck.indexOf('//');
+ // 如果有'//',检查'//'前的部分并去掉前导空格;如果没有,保留原部分
+ partToCheck =
+ commentIndex !== -1 ? partToCheck.substring(0, commentIndex).trim() : partToCheck;
+ // 代码部分不能含有中文字符
+ if (!/[\u4e00-\u9fa5]/.test(partToCheck)) {
+ flag = false;
+ }
+ }
+ return flag;
+ }