diff --git a/src/views/admin/errorrecordlog/ErrorRecordLog.api.ts b/src/views/admin/errorrecordlog/ErrorRecordLog.api.ts
new file mode 100644
index 0000000..4d341bb
--- /dev/null
+++ b/src/views/admin/errorrecordlog/ErrorRecordLog.api.ts
@@ -0,0 +1,72 @@
+import { defHttp } from '/@/utils/http/axios';
+import { useMessage } from "/@/hooks/web/useMessage";
+
+const { createConfirm } = useMessage();
+
+enum Api {
+ list = '/errorrecordlog/errorRecordLog/list',
+ save='/errorrecordlog/errorRecordLog/add',
+ edit='/errorrecordlog/errorRecordLog/edit',
+ deleteOne = '/errorrecordlog/errorRecordLog/delete',
+ deleteBatch = '/errorrecordlog/errorRecordLog/deleteBatch',
+ importExcel = '/errorrecordlog/errorRecordLog/importExcel',
+ exportXls = '/errorrecordlog/errorRecordLog/exportXls',
+}
+
+/**
+ * 导出api
+ * @param params
+ */
+export const getExportUrl = Api.exportXls;
+
+/**
+ * 导入api
+ */
+export const getImportUrl = Api.importExcel;
+
+/**
+ * 列表接口
+ * @param params
+ */
+export const list = (params) => defHttp.get({ url: Api.list, params });
+
+/**
+ * 删除单个
+ * @param params
+ * @param handleSuccess
+ */
+export const deleteOne = (params,handleSuccess) => {
+ return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => {
+ handleSuccess();
+ });
+}
+
+/**
+ * 批量删除
+ * @param params
+ * @param handleSuccess
+ */
+export const batchDelete = (params, handleSuccess) => {
+ createConfirm({
+ iconType: 'warning',
+ title: '确认删除',
+ content: '是否删除选中数据',
+ okText: '确认',
+ cancelText: '取消',
+ onOk: () => {
+ return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => {
+ handleSuccess();
+ });
+ }
+ });
+}
+
+/**
+ * 保存或者更新
+ * @param params
+ * @param isUpdate
+ */
+export const saveOrUpdate = (params, isUpdate) => {
+ let url = isUpdate ? Api.edit : Api.save;
+ return defHttp.post({ url: url, params }, { isTransformResponse: false });
+}
diff --git a/src/views/admin/errorrecordlog/ErrorRecordLog.data.ts b/src/views/admin/errorrecordlog/ErrorRecordLog.data.ts
new file mode 100644
index 0000000..9c7ec25
--- /dev/null
+++ b/src/views/admin/errorrecordlog/ErrorRecordLog.data.ts
@@ -0,0 +1,83 @@
+import { BasicColumn } from '/@/components/Table';
+import { FormSchema } from '/@/components/Table';
+import { rules } from '/@/utils/helper/validator';
+import { render } from '/@/utils/common/renderUtils';
+import { getWeekMonthQuarterYear } from '/@/utils';
+//列表数据
+export const columns: BasicColumn[] = [
+ {
+ title: '错误发生平台',
+ align: 'center',
+ dataIndex: 'orgName',
+ ellipsis: false,
+ },
+ {
+ title: '错误发生平台编码',
+ align: 'center',
+ dataIndex: 'orgCode',
+ ellipsis: false,
+ },
+ {
+ title: '功能模块',
+ align: 'center',
+ dataIndex: 'functionModule',
+ ellipsis: false,
+ },
+ {
+ title: '具体环节',
+ align: 'center',
+ dataIndex: 'functionAction',
+ ellipsis: false,
+ },
+ {
+ title: '错误简介',
+ align: 'center',
+ dataIndex: 'errorBrief',
+ ellipsis: false,
+ },
+ {
+ title: '错误类型',
+ align: 'center',
+ dataIndex: 'errorType',
+ ellipsis: false,
+ width:120
+ },
+ {
+ title: '错误级别',
+ align: 'center',
+ dataIndex: 'errorLevel',
+ width:120
+ },
+ {
+ title: '处理状态',
+ align: 'center',
+ dataIndex: 'handleStatus',
+ width:120
+ },
+ {
+ title: '处理人',
+ align: 'center',
+ dataIndex: 'handler',
+ ellipsis: false,
+ width:120
+ },
+ {
+ title: '处理时间',
+ align: 'center',
+ dataIndex: 'handleTime',
+ },
+];
+
+// 高级查询数据
+export const superQuerySchema = {
+ functionModule: { title: '功能模块', order: 0, view: 'text', type: 'string' },
+ functionAction: { title: '具体环节', order: 1, view: 'text', type: 'string' },
+ errorBrief: { title: '错误简介', order: 2, view: 'text', type: 'string' },
+ errorType: { title: '错误类型', order: 6, view: 'text', type: 'string' },
+ errorLevel: { title: '错误级别', order: 8, view: 'number', type: 'number' },
+ handleStatus: { title: '处理状态', order: 11, view: 'number', type: 'number' },
+ handler: { title: '处理人', order: 13, view: 'text', type: 'string' },
+ handleTime: { title: '处理时间', order: 14, view: 'datetime', type: 'string' },
+ orgName: { title: '机构名称', order: 20, view: 'text', type: 'string' },
+ orgCode: { title: '机构编码', order: 21, view: 'text', type: 'string' },
+};
diff --git a/src/views/admin/errorrecordlog/ErrorRecordLogList.vue b/src/views/admin/errorrecordlog/ErrorRecordLogList.vue
new file mode 100644
index 0000000..f9c6ecf
--- /dev/null
+++ b/src/views/admin/errorrecordlog/ErrorRecordLogList.vue
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/admin/errorrecordlog/components/ErrorRecordLogForm.vue b/src/views/admin/errorrecordlog/components/ErrorRecordLogForm.vue
new file mode 100644
index 0000000..80f7d6e
--- /dev/null
+++ b/src/views/admin/errorrecordlog/components/ErrorRecordLogForm.vue
@@ -0,0 +1,274 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/admin/errorrecordlog/components/ErrorRecordLogModal.vue b/src/views/admin/errorrecordlog/components/ErrorRecordLogModal.vue
new file mode 100644
index 0000000..1dfa779
--- /dev/null
+++ b/src/views/admin/errorrecordlog/components/ErrorRecordLogModal.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
diff --git a/src/views/admin/workorder/components/DataSourceForm.vue b/src/views/admin/workorder/components/DataSourceForm.vue
index 1b7cf21..325a6ce 100644
--- a/src/views/admin/workorder/components/DataSourceForm.vue
+++ b/src/views/admin/workorder/components/DataSourceForm.vue
@@ -218,9 +218,49 @@ const validatorRules = reactive({
dbUsername: [{ required: true, message: '请输入数据库用户名!' },],
dbPassword: [{ required: true, message: '请输入数据库密码!' },],
mediaUrl: [{ required: true, message: '请输入媒体资源地址!' },],
- frontPath: [{ required: true, message: '请输入前台路径!' },],
- contextPath: [{ required: true, message: '请输入后台路径!' },],
- url: [{ required: true, message: '请输入域名' },],
+ frontPath: [
+ {
+ required: true,
+ message: '请输入前台路径!'
+ },
+ {
+ validator: (rule, value) => {
+ if (value && value.includes('/')) {
+ return Promise.reject('请勿使用斜杠(/)');
+ }
+ return Promise.resolve();
+ },
+ trigger: 'blur'
+ }
+ ],
+ contextPath: [
+ {
+ required: true,
+ message: '请输入后台路径!'
+ },
+ {
+ validator: (rule, value) => {
+ if (value && value.includes('/')) {
+ return Promise.reject('请勿使用斜杠(/)');
+ }
+ return Promise.resolve();
+ },
+ trigger: 'blur'
+ }],
+ url: [
+ {
+ required: true,
+ message: '请输入域名'
+ },
+ {
+ validator: (rule, value) => {
+ if (value && !value.endsWith('/')) {
+ return Promise.reject('需以斜杠(/)结尾');
+ }
+ return Promise.resolve();
+ },
+ trigger: 'blur'
+ }],
netUrl: [{ required: true, message: '请输入访问地址' },],
accountNo: [{ required: true, message: '请输入账号' },],
passwordText: [{ required: true, message: '请输入密码' },],