lph 1 год назад
Родитель
Сommit
7a638c8c6a

+ 13 - 4
ruoyi-ui/src/api/dataEngine/index.js

@@ -5,7 +5,7 @@ export function tableInfoList(query) {
     url: '/tableInfo/tableInfoList',
     method: 'get',
     params: query,
-    baseURL:process.env.VUE_APP_BASE_API2
+    baseURL: process.env.VUE_APP_BASE_API2
   })
 }
 
@@ -23,7 +23,7 @@ export function removeTable(data) {
     url: '/tableInfo/removeTable',
     method: 'post',
     data: data,
-    baseURL:process.env.VUE_APP_BASE_API2
+    baseURL: process.env.VUE_APP_BASE_API2
   })
 }
 
@@ -40,7 +40,7 @@ export function tableInfo(data) {
     url: '/tableInfo/tableFieldInfo',
     method: 'post',
     data: data,
-    baseURL:process.env.VUE_APP_BASE_API2
+    baseURL: process.env.VUE_APP_BASE_API2
   })
 }
 
@@ -49,6 +49,15 @@ export function editTable(data) {
     url: '/tableInfo/editTable',
     method: 'post',
     data: data,
-    baseURL:process.env.VUE_APP_BASE_API2
+    baseURL: process.env.VUE_APP_BASE_API2
+  })
+}
+
+export function changeDatasource(data = {}) {
+  return request({
+    url: '/dataSource/changeDatasource',
+    method: 'post',
+    data: data,
+    // baseURL: process.env.VUE_APP_BASE_API2
   })
 }

+ 3 - 0
ruoyi-ui/src/store/modules/user.js

@@ -1,4 +1,5 @@
 import { login, logout, getInfo } from '@/api/login'
+import { changeDatasource } from '@/api/dataEngine/index'
 import { getToken, setToken, removeToken } from '@/utils/auth'
 
 const user = {
@@ -70,10 +71,12 @@ const user = {
           if (res.tenant != null) {
             commit('SET_TENANT', res.tenant)
             commit('SET_DATASOURCE', res.dataSource)
+
           }
           commit('SET_NAME', user.userName)
           commit('SET_AVATAR', avatar)
           resolve(res)
+
         }).catch(error => {
           reject(error)
         })

+ 175 - 69
ruoyi-ui/src/views/bpmprocess/index.vue

@@ -1,6 +1,13 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
       <el-form-item label="流程名称" prop="processName">
         <el-input
           v-model="queryParams.processName"
@@ -26,11 +33,13 @@
         />
       </el-form-item>
       <el-form-item label="流程部署时间" prop="processDeployTime">
-        <el-date-picker clearable
+        <el-date-picker
+          clearable
           v-model="queryParams.processDeployTime"
           type="date"
           value-format="yyyy-MM-dd"
-          placeholder="请选择流程部署时间">
+          placeholder="请选择流程部署时间"
+        >
         </el-date-picker>
       </el-form-item>
       <el-form-item label="版本状态" prop="processVersion">
@@ -50,8 +59,16 @@
         />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
       </el-form-item>
     </el-form>
 
@@ -64,7 +81,8 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['system:process:add']"
-        >新增</el-button>
+          >新增</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -75,7 +93,8 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['system:process:edit']"
-        >修改</el-button>
+          >修改</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -86,7 +105,8 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['system:process:remove']"
-        >删除</el-button>
+          >删除</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -96,53 +116,105 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['system:process:export']"
-        >导出</el-button>
+          >导出</el-button
+        >
       </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="processList" @selection-change="handleSelectionChange">
+    <el-table
+      v-loading="loading"
+      :data="processList"
+      @selection-change="handleSelectionChange"
+    >
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="主键" align="center" prop="processId" />
       <el-table-column label="流程名称" align="center" prop="processName" />
       <el-table-column label="流程别名" align="center" prop="processKey" />
-      <el-table-column label="流程开启状态" align="center" prop="processOpneState" />
-      <el-table-column label="流程类型。例如" align="center" prop="processType" />
-      <el-table-column label="流程部署时间" align="center" prop="processDeployTime" width="180">
+      <el-table-column
+        label="流程状态"
+        align="center"
+        prop="processOpneState"
+      />
+      <el-table-column label="流程类型" align="center" prop="processType" />
+      <el-table-column
+        label="流程部署时间"
+        align="center"
+        prop="processDeployTime"
+        width="180"
+      >
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.processDeployTime, '{y}-{m}-{d}') }}</span>
+          <span>{{
+            parseTime(scope.row.processDeployTime, "{y}-{m}-{d}")
+          }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="启动事件类型" align="center" prop="startEventType" />
+      <el-table-column
+        label="启动事件类型"
+        align="center"
+        prop="startEventType"
+      />
       <el-table-column label="版本注释" align="center" prop="note" />
       <el-table-column label="版本状态" align="center" prop="processVersion" />
-      <el-table-column label="xml流文件" align="center" prop="processXml" />
-      <el-table-column label="节点json串" align="center" prop="processJson" />
-      <el-table-column label="xml标签内容" align="center" prop="processXmlContent" />
-      <el-table-column label="xml文件存放地址" align="center" prop="processXmlPath" />
+      <!-- <el-table-column label="节点json串" align="center" prop="processJson" /> -->
+      <!-- <el-table-column
+        label="xml文件存放地址"
+        align="center"
+        prop="processXmlPath"
+      /> -->
       <el-table-column label="备注" align="center" prop="remark" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
         <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:process:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['system:process:remove']"
-          >删除</el-button>
+          <el-dropdown>
+            <el-button type="warning" plain size="small">
+              处理<i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item
+                ><el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-edit"
+                  @click="handleUpdate(scope.row)"
+                  v-hasPermi="['system:user:edit']"
+                  >修改</el-button
+                ></el-dropdown-item
+              >
+              <el-dropdown-item
+                ><el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-edit"
+                  @click="handleEditbpmn(scope.row)"
+                  v-hasPermi="['system:user:edit']"
+                  >编辑流程图</el-button
+                ></el-dropdown-item
+              >
+              <el-dropdown-item
+                ><el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-delete"
+                  @click="handleDelete(scope.row)"
+                  v-hasPermi="['system:user:remove']"
+                  >删除</el-button
+                >
+              </el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
-      v-show="total>0"
+      v-show="total > 0"
       :total="total"
       :page.sync="queryParams.pageNum"
       :limit.sync="queryParams.pageSize"
@@ -159,30 +231,49 @@
           <el-input v-model="form.processKey" placeholder="请输入流程别名" />
         </el-form-item>
         <el-form-item label="流程开启状态" prop="processOpneState">
-          <el-input v-model="form.processOpneState" placeholder="请输入流程开启状态" />
+          <el-input
+            v-model="form.processOpneState"
+            placeholder="请输入流程开启状态"
+          />
         </el-form-item>
         <el-form-item label="流程部署时间" prop="processDeployTime">
-          <el-date-picker clearable
+          <el-date-picker
+            clearable
             v-model="form.processDeployTime"
             type="date"
             value-format="yyyy-MM-dd"
-            placeholder="请选择流程部署时间">
+            placeholder="请选择流程部署时间"
+          >
           </el-date-picker>
         </el-form-item>
         <el-form-item label="版本注释" prop="note">
-          <el-input v-model="form.note" type="textarea" placeholder="请输入内容" />
+          <el-input
+            v-model="form.note"
+            type="textarea"
+            placeholder="请输入内容"
+          />
         </el-form-item>
         <el-form-item label="版本状态" prop="processVersion">
-          <el-input v-model="form.processVersion" placeholder="请输入版本状态" />
+          <el-input
+            v-model="form.processVersion"
+            placeholder="请输入版本状态"
+          />
         </el-form-item>
         <el-form-item label="节点json串" prop="processJson">
-          <el-input v-model="form.processJson" type="textarea" placeholder="请输入内容" />
+          <el-input
+            v-model="form.processJson"
+            type="textarea"
+            placeholder="请输入内容"
+          />
         </el-form-item>
         <el-form-item label="xml标签内容">
-          <editor v-model="form.processXmlContent" :min-height="192"/>
+          <editor v-model="form.processXmlContent" :min-height="192" />
         </el-form-item>
         <el-form-item label="xml文件存放地址" prop="processXmlPath">
-          <el-input v-model="form.processXmlPath" placeholder="请输入xml文件存放地址" />
+          <el-input
+            v-model="form.processXmlPath"
+            placeholder="请输入xml文件存放地址"
+          />
         </el-form-item>
         <el-form-item label="删除标志" prop="delFlag">
           <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
@@ -200,7 +291,13 @@
 </template>
 
 <script>
-import { listProcess, getProcess, delProcess, addProcess, updateProcess } from "@/api/bpmprocess/process";
+import {
+  listProcess,
+  getProcess,
+  delProcess,
+  addProcess,
+  updateProcess,
+} from "@/api/bpmprocess/process";
 
 export default {
   name: "Process",
@@ -244,8 +341,7 @@ export default {
       // 表单参数
       form: {},
       // 表单校验
-      rules: {
-      }
+      rules: {},
     };
   },
   created() {
@@ -255,7 +351,7 @@ export default {
     /** 查询流程定义列表 */
     getList() {
       this.loading = true;
-      listProcess(this.queryParams).then(response => {
+      listProcess(this.queryParams).then((response) => {
         this.processList = response.rows;
         this.total = response.total;
         this.loading = false;
@@ -287,7 +383,7 @@ export default {
         updateBy: null,
         updateTime: null,
         delFlag: null,
-        remark: null
+        remark: null,
       };
       this.resetForm("form");
     },
@@ -303,9 +399,9 @@ export default {
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.processId)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
+      this.ids = selection.map((item) => item.processId);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
     },
     /** 新增按钮操作 */
     handleAdd() {
@@ -316,25 +412,27 @@ export default {
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const processId = row.processId || this.ids
-      getProcess(processId).then(response => {
+      const processId = row.processId || this.ids;
+      getProcess(processId).then((response) => {
         this.form = response.data;
         this.open = true;
         this.title = "修改流程定义";
       });
     },
+    /** */
+    handleEditbpmn(row) {},
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs["form"].validate((valid) => {
         if (valid) {
           if (this.form.processId != null) {
-            updateProcess(this.form).then(response => {
+            updateProcess(this.form).then((response) => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
-            addProcess(this.form).then(response => {
+            addProcess(this.form).then((response) => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -346,19 +444,27 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const processIds = row.processId || this.ids;
-      this.$modal.confirm('是否确认删除流程定义编号为"' + processIds + '"的数据项?').then(function() {
-        return delProcess(processIds);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      this.$modal
+        .confirm('是否确认删除流程定义编号为"' + processIds + '"的数据项?')
+        .then(function () {
+          return delProcess(processIds);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
     },
     /** 导出按钮操作 */
     handleExport() {
-      this.download('system/process/export', {
-        ...this.queryParams
-      }, `process_${new Date().getTime()}.xlsx`)
-    }
-  }
+      this.download(
+        "system/process/export",
+        {
+          ...this.queryParams,
+        },
+        `process_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
 };
 </script>

+ 2 - 0
ruoyi-ui/src/views/login.vue

@@ -160,6 +160,7 @@
 
 <script>
 import { getCodeImg } from "@/api/login";
+import { changeDatasource } from "@/api/dataEngine";
 import Cookies from "js-cookie";
 import { encrypt, decrypt } from "@/utils/jsencrypt";
 
@@ -247,6 +248,7 @@ export default {
           this.$store
             .dispatch("Login", this.loginForm)
             .then(() => {
+              changeDatasource(); //切换数据源
               this.$router.push({ path: this.redirect || "/" }).catch(() => {});
             })
             .catch(() => {

+ 52 - 1
ruoyi-ui/src/views/system/bpmnPro/components/Toolbar/tools/Save.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-button v-popover:popover type="primary" size="small"
+  <el-button @click="saveHandler" type="primary" size="small"
     >保存
     <!-- <div class="button-list_column">
         <el-button type="primary" size="small" @click="getProcessAsBpmn"
@@ -18,6 +18,7 @@
 <script>
 import { downloadFile, setEncoded } from "@utils/files";
 import { mapGetters } from "vuex";
+import { addProcess } from "@/api/bpmprocess/process";
 
 export default {
   name: "BpmnSave",
@@ -67,6 +68,56 @@ export default {
       let process = this.getProcess("svg");
       console.log(process);
     },
+    async getProcessJson() {
+      try {
+        if (!this.getModeler)
+          return this.$message.error("流程图引擎初始化失败");
+        const { xml } = await this.getModeler.saveXML({
+          format: true,
+          preamble: true,
+        });
+        const jsonStr = await this.getModeler.get("moddle").fromXML(xml);
+        return jsonStr;
+      } catch (e) {
+        catchError(e);
+      }
+    },
+    async saveHandler() {
+      let _this = this;
+      let processJsonObj = await this.getProcessJson();
+      let { rootElements } = processJsonObj.rootElement;
+      let processKey = rootElements[0].id;
+      let processName = rootElements[0].name;
+      let processType = ""; //流程类型
+      let processXml = ""; //xml文件流
+      let xmlPro = await this.getProcess("xml");
+      console.log(xmlPro);
+      let processXmlContent = xmlPro; //xml标签内容
+      let blob = new Blob([xmlPro], { type: "text/xml" });
+      let reader = new FileReader();
+      reader.onloadend = function () {
+        console.log("xml流文件", reader.result);
+        processXml = reader.result;
+        // 获取所有xml标签内容
+        let data = {
+          processKey,
+          processName,
+          processType,
+          processXml,
+          processXmlContent,
+          processJson: JSON.stringify(processJsonObj),
+        };
+        addProcess(data).then((res) => {
+          if (res.code == 200) {
+            _this.$message.success("保存成功");
+            console.log(res);
+          } else {
+            _this.$message.error("保存失败");
+          }
+        });
+      };
+      reader.readAsDataURL(blob);
+    },
   },
 };
 </script>