Explorar o código

修复培训管理报错;同步内外网地址变量及配置

cyy hai 1 ano
pai
achega
48a4c506ea

+ 54 - 30
public/config.js

@@ -1,73 +1,97 @@
 (function (global) {
-    const BASE_URL = 'http://192.168.2.209/'
+    const BASE_URL = "http://192.168.2.209/";
     global.__IBPS_CONFIG__ = {
         // 是否启用配置
         ENABLE_CONFIG: true,
+        //公网地址(文件预览下载、扫码回调)
+        PUBLIC_URL: BASE_URL,
+        // 内网地址(onlyoffice相关url默认使用该ip)
+        INTRANET_URL: BASE_URL,
         // 基础路径
         BASE_URL,
         //  api
-        BASE_API: `${ BASE_URL }ibps`,
+        BASE_API: `${BASE_URL}ibps`,
         // GATEWAY API
-        BASE_GATEWAY_API: `${ BASE_URL }ibps`,
+        BASE_GATEWAY_API: `${BASE_URL}ibps`,
         // WEBSOCKET api
-        BASE_WEBSOCKET_API: 'ws://127.0.0.1:28888',
+        BASE_WEBSOCKET_API: "ws://127.0.0.1:28888",
         // report api
-        BASE_REPORT_API: `${ BASE_URL }raqsoft`,
+        BASE_REPORT_API: `${BASE_URL}raqsoft`,
         // seal api
-        BASE_SEAL_API: 'http://120.77.249.241:9999/',
+        BASE_SEAL_API: "http://120.77.249.241:9999/",
 
         //是否单体应用
         SINGLE: false,
-        //是否启用多域名 
+        //是否启用多域名
         MULTIPLE_DOMAIN: false,
         // 域名
-        API_DOMAIN_NAMES: ['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'a10', 'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a17', 'a18', 'a19', 'a20'],
+        API_DOMAIN_NAMES: [
+            "a1",
+            "a2",
+            "a3",
+            "a4",
+            "a5",
+            "a6",
+            "a7",
+            "a8",
+            "a9",
+            "a10",
+            "a11",
+            "a12",
+            "a13",
+            "a14",
+            "a15",
+            "a16",
+            "a17",
+            "a18",
+            "a19",
+            "a20",
+        ],
 
         // 后台配置的Token key
-        HEADER_TOKEN_KEY: 'X-Authorization-access_token',
+        HEADER_TOKEN_KEY: "X-Authorization-access_token",
         // 后台配置的Token key(url使用的key)
-        FORM_TOKEN_KEY: 'access_token',
+        FORM_TOKEN_KEY: "access_token",
         // 系统ID
-        HEADER_SYSTEM_ID: 'X-Authorization-systemid',
+        HEADER_SYSTEM_ID: "X-Authorization-systemid",
         //  租户ID
-        HEADER_TENANT_ID: 'X-Authorization-tenantid',
+        HEADER_TENANT_ID: "X-Authorization-tenantid",
 
         //================认证中心=====================
         //申请应用时分配的AppKey
-        CLIENT_ID: 'ibps',
+        CLIENT_ID: "ibps",
         //申请应用时分配的AppSecret
-        CLIENT_SECRET: '58b65297-3467-0859-8337-8cbaf81ef68a',
+        CLIENT_SECRET: "58b65297-3467-0859-8337-8cbaf81ef68a",
         //授权方式:authorization_code :授权码方式,  password_credentials:密码模式
-        GRANT_TYPE: 'authorization_code',
+        GRANT_TYPE: "authorization_code",
 
         //================Token存储=====================
         //TOKEN存储方式  default:默认,domain:域名限制
-        TOKEN_STORE: 'default',
+        TOKEN_STORE: "default",
         //TOKEN 存储域名限制,TOKEN_STORE为domain有效,
-        TOKEN_DOMAIN: 'bpmhome.cn',
+        TOKEN_DOMAIN: "bpmhome.cn",
         //TOKEN存储的前缀  default:默认,加前缀和版本。 custom:自定义,写的输出什么
-        TOKEN_STORE_PREFIX: 'default',
+        TOKEN_STORE_PREFIX: "default",
         //TOKEN存储方式 key
-        TOKEN_STORE_KEY: 'token',
+        TOKEN_STORE_KEY: "token",
         //刷新TOKEN存储方式 key
-        REFRESH_TOKEN_STORE_KEY: 'refresh_token',
+        REFRESH_TOKEN_STORE_KEY: "refresh_token",
 
         //转换数据
-        TRANSFER_DATA: 'transfer',
+        TRANSFER_DATA: "transfer",
 
         //国际化配置
-        I18N_LOCALE: 'zh-CN',
-        I18N_FALLBACK_LOCALE: 'zh-CN',
+        I18N_LOCALE: "zh-CN",
+        I18N_FALLBACK_LOCALE: "zh-CN",
 
         //================其他配置=====================
         //element 颜色
-        ELEMENT_COLOR: '#409EFF',
+        ELEMENT_COLOR: "#409EFF",
         // 系统版本
-        VERSION: '1.0.0',
+        VERSION: "1.0.0",
         // 系统名称
-        SYSTEM_NAME: '17025实验室质量管理系统',
+        SYSTEM_NAME: "17025实验室质量管理系统",
         // 润乾报表根目录
-        REPORT_PATH: '17025实验室质量管理系统'
-    }
-
-})(window)
+        REPORT_PATH: "17025实验室质量管理系统",
+    };
+})(window);

+ 57 - 34
src/constant.js

@@ -2,60 +2,83 @@
  * 常量配置
  *
  */
-import env from '@/env'
+import env from "@/env";
 /**
  * 读取静态配置
  * @private
  */
-const __IBPS_CONFIG__ = window.__IBPS_CONFIG__ || {}
+const __IBPS_CONFIG__ = window.__IBPS_CONFIG__ || {};
 
-export default __IBPS_CONFIG__
+export default __IBPS_CONFIG__;
 
-const enableConfig = __IBPS_CONFIG__.ENABLE_CONFIG || false
+const enableConfig = __IBPS_CONFIG__.ENABLE_CONFIG || false;
 
 /**
  * 接口服务器
  * @type {*|string}
  */
-export const BASE_URL = enableConfig ? (__IBPS_CONFIG__.BASE_URL || env.VUE_APP_BASE_URL) : env.VUE_APP_BASE_URL
-export const BASE_API = enableConfig ? (__IBPS_CONFIG__.BASE_API || env.VUE_APP_BASE_API) : env.VUE_APP_BASE_API
-export const BASE_GATEWAY_API = enableConfig ? (__IBPS_CONFIG__.BASE_GATEWAY_API || env.VUE_APP_BASE_GATEWAY_API) : env.VUE_APP_BASE_GATEWAY_API
-export const BASE_WEBSOCKET = enableConfig ? (__IBPS_CONFIG__.BASE_WEBSOCKET || env.VUE_APP_BASE_WEBSOCKET) : env.VUE_APP_BASE_WEBSOCKET
-export const BASE_REPORT_API = enableConfig ? (__IBPS_CONFIG__.BASE_REPORT_API || env.VUE_APP_BASE_REPORT_API) : env.VUE_APP_BASE_REPORT_API
-export const BASE_SEAL_API = __IBPS_CONFIG__.BASE_SEAL_API || ''
+export const BASE_URL = enableConfig
+    ? __IBPS_CONFIG__.BASE_URL || env.VUE_APP_BASE_URL
+    : env.VUE_APP_BASE_URL;
+export const PUBLIC_URL = enableConfig
+    ? __IBPS_CONFIG__.PUBLIC_URL || env.VUE_APP_BASE_URL
+    : env.VUE_APP_BASE_URL;
+export const INTRANET_URL = enableConfig
+    ? __IBPS_CONFIG__.INTRANET_URL || env.VUE_APP_BASE_URL
+    : env.VUE_APP_BASE_URL;
+export const BASE_API = enableConfig
+    ? __IBPS_CONFIG__.BASE_API || env.VUE_APP_BASE_API
+    : env.VUE_APP_BASE_API;
+export const BASE_GATEWAY_API = enableConfig
+    ? __IBPS_CONFIG__.BASE_GATEWAY_API || env.VUE_APP_BASE_GATEWAY_API
+    : env.VUE_APP_BASE_GATEWAY_API;
+export const BASE_WEBSOCKET = enableConfig
+    ? __IBPS_CONFIG__.BASE_WEBSOCKET || env.VUE_APP_BASE_WEBSOCKET
+    : env.VUE_APP_BASE_WEBSOCKET;
+export const BASE_REPORT_API = enableConfig
+    ? __IBPS_CONFIG__.BASE_REPORT_API || env.VUE_APP_BASE_REPORT_API
+    : env.VUE_APP_BASE_REPORT_API;
+export const BASE_SEAL_API = __IBPS_CONFIG__.BASE_SEAL_API || "";
 
-export const SINGLE = __IBPS_CONFIG__.SINGLE || false
-export const API_DOMAIN_NAMES = __IBPS_CONFIG__.API_DOMAIN_NAMES || []
-export const MULTIPLE_DOMAIN = __IBPS_CONFIG__.MULTIPLE_DOMAIN || false
+export const SINGLE = __IBPS_CONFIG__.SINGLE || false;
+export const API_DOMAIN_NAMES = __IBPS_CONFIG__.API_DOMAIN_NAMES || [];
+export const MULTIPLE_DOMAIN = __IBPS_CONFIG__.MULTIPLE_DOMAIN || false;
 
 // ================认证中心=====================
 
-export const GRANT_TYPE = __IBPS_CONFIG__.GRANT_TYPE || ''
-export const CLIENT_ID = __IBPS_CONFIG__.CLIENT_ID || ''
-export const CLIENT_SECRET = __IBPS_CONFIG__.CLIENT_SECRET || ''
+export const GRANT_TYPE = __IBPS_CONFIG__.GRANT_TYPE || "";
+export const CLIENT_ID = __IBPS_CONFIG__.CLIENT_ID || "";
+export const CLIENT_SECRET = __IBPS_CONFIG__.CLIENT_SECRET || "";
 
 // ================请求头=====================
-export const HEADER_TOKEN_KEY = __IBPS_CONFIG__.HEADER_TOKEN_KEY || 'X-Authorization-access_token'
-export const FORM_TOKEN_KEY = __IBPS_CONFIG__.TOKEN_KEY || 'access_token'
-export const HEADER_SYSTEM_ID = __IBPS_CONFIG__.HEADER_SYSTEM_ID || 'X-Authorization-systemid'
-export const HEADER_TENANT_ID = __IBPS_CONFIG__.HEADER_TENANT_ID || 'X-Authorization-tenantid'
-export const TENANT_ID = __IBPS_CONFIG__.TENANT_ID || 'tenant_id'
+export const HEADER_TOKEN_KEY =
+    __IBPS_CONFIG__.HEADER_TOKEN_KEY || "X-Authorization-access_token";
+export const FORM_TOKEN_KEY = __IBPS_CONFIG__.TOKEN_KEY || "access_token";
+export const HEADER_SYSTEM_ID =
+    __IBPS_CONFIG__.HEADER_SYSTEM_ID || "X-Authorization-systemid";
+export const HEADER_TENANT_ID =
+    __IBPS_CONFIG__.HEADER_TENANT_ID || "X-Authorization-tenantid";
+export const TENANT_ID = __IBPS_CONFIG__.TENANT_ID || "tenant_id";
 
 // ================Cookies 存储=====================
-export const UUID_KEY = __IBPS_CONFIG__.UUID_KEY || 'uuid'
-export const LANG_KEY = __IBPS_CONFIG__.LANG_KEY || 'lang'
+export const UUID_KEY = __IBPS_CONFIG__.UUID_KEY || "uuid";
+export const LANG_KEY = __IBPS_CONFIG__.LANG_KEY || "lang";
 
-export const TOKEN_STORE = __IBPS_CONFIG__.TOKEN_STORE || 'default'
-export const TOKEN_DOMAIN = __IBPS_CONFIG__.TOKEN_DOMAIN || 'bpmhome.cn'
-export const TOKEN_STORE_PREFIX = __IBPS_CONFIG__.TOKEN_STORE_PREFIX || 'default'
-export const TOKEN_STORE_KEY = __IBPS_CONFIG__.TOKEN_STORE_KEY || 'token'
-export const REFRESH_TOKEN_STORE_KEY = __IBPS_CONFIG__.REFRESH_TOKEN_STORE_KEY || 'refresh_token'
+export const TOKEN_STORE = __IBPS_CONFIG__.TOKEN_STORE || "default";
+export const TOKEN_DOMAIN = __IBPS_CONFIG__.TOKEN_DOMAIN || "bpmhome.cn";
+export const TOKEN_STORE_PREFIX =
+    __IBPS_CONFIG__.TOKEN_STORE_PREFIX || "default";
+export const TOKEN_STORE_KEY = __IBPS_CONFIG__.TOKEN_STORE_KEY || "token";
+export const REFRESH_TOKEN_STORE_KEY =
+    __IBPS_CONFIG__.REFRESH_TOKEN_STORE_KEY || "refresh_token";
 
-export const TRANSFER_DATA = __IBPS_CONFIG__.TRANSFER_DATA || 'transfer'
+export const TRANSFER_DATA = __IBPS_CONFIG__.TRANSFER_DATA || "transfer";
 
-export const I18N_LOCALE = __IBPS_CONFIG__.I18N_LOCALE || 'zh-CN'
-export const I18N_FALLBACK_LOCALE = __IBPS_CONFIG__.I18N_FALLBACK_LOCALE || 'zh-CN'
+export const I18N_LOCALE = __IBPS_CONFIG__.I18N_LOCALE || "zh-CN";
+export const I18N_FALLBACK_LOCALE =
+    __IBPS_CONFIG__.I18N_FALLBACK_LOCALE || "zh-CN";
 
-export const ELEMENT_COLOR = __IBPS_CONFIG__.ELEMENT_COLOR || '#409EFF'
-export const SYSTEM_NAME = __IBPS_CONFIG__.SYSTEM_NAME || '17025实验室质量管理系统'
-export const REPORT_PATH = __IBPS_CONFIG__.REPORT_PATH || ''
+export const ELEMENT_COLOR = __IBPS_CONFIG__.ELEMENT_COLOR || "#409EFF";
+export const SYSTEM_NAME =
+    __IBPS_CONFIG__.SYSTEM_NAME || "17025实验室质量管理系统";
+export const REPORT_PATH = __IBPS_CONFIG__.REPORT_PATH || "";

+ 108 - 0
src/views/component/qrcodeedDialog.vue

@@ -0,0 +1,108 @@
+<template>
+    <div>
+        <el-dialog
+            title="扫码签到"
+            :visible.sync="dialogVisible"
+            :close-on-click-modal="false"
+            :close-on-press-escape="false"
+            :append-to-body="true"
+            class="qrcode-dialog"
+            width="50%"
+            top="6vh"
+            center
+        >
+            <div class="codePic">
+                <div id="qrcode" ref="qrcodes" class="qrCode" />
+            </div>
+            <span slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="downloadCode()">下载二维码</el-button>
+                <el-button @click="dialogVisible = false">关 闭</el-button>
+            </span>
+        </el-dialog>
+
+    </div>
+</template>
+
+<script>
+import QRCode from 'qrcodejs2' // 引入qrcode
+import { PUBLIC_URL } from '@/constant'
+export default {
+    name: 'qrcode',
+    props: {
+        visible: {
+            type: Boolean,
+            default: false
+        },
+        codeId: {
+            type: String,
+            default: ''
+        },
+        type: {
+            type: String,
+            default: ''
+        }
+    },
+    data () {
+        return {
+            qrCode: '',
+            dialogVisible: this.visible,
+            url:'http://192.168.2.16:8080/',
+        }
+    },
+    // mounted () {
+    //     this.$nextTick(() => {
+    //         this.qrcodeRender()
+    //     })
+    // },
+    watch:{
+        dialogVisible: {
+            handler: function(val, oldVal) {
+                if(val == true){
+                    this.$nextTick(() => {
+                        this.qrcodeRender()
+                    })
+                }
+            },
+            deep:true,
+            immediate:true
+        },
+    },
+    methods: {
+        downloadCode () {
+            const myCanvas = document.getElementById('qrcode').getElementsByTagName('canvas')
+            const a = document.createElement('a')
+            a.href = myCanvas[0].toDataURL('image/png')
+            a.download = name
+            a.click()
+        },
+        qrcodeRender () {
+            if (this.qrCode) {
+                this.$refs.qrcodes.innerHTML = ''
+            }
+            this.qrCode = new QRCode('qrcode', {
+                width: 200,
+                height: 200,
+                // text: `${this.url}h5/#/pages/signin/signin?codeId=${this.codeId}`,
+                text: `${PUBLIC_URL}#/bpmn/siginin/index?codeId=${this.codeId}&type=${this.type}`,
+                // text: `http://demo2.local/#/bpmn/siginin/index?codeId=${this.codeId}&type=${this.type}`,
+                colorDark: '#000000', // 前景色
+                colorLight: '#FFFFFF', // 背景色
+                correctLevel: QRCode.CorrectLevel.L
+            })
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+    .qrcode-dialog {
+        .qrCode {
+            display: flex;
+            justify-content: center;
+            margin: 5% 0;
+        }
+        .qrCode >img{
+            width: 50%;
+        }
+    }
+</style>

+ 130 - 0
src/views/platform/data/custom-dialog/dialog.vue

@@ -0,0 +1,130 @@
+<template>
+    <data-template-dialog
+        :visible.sync="selectorVisible"
+        :data="dataTemplate"
+        :dynamic-params="dynamicParams"
+        :multiple="multiple"
+        :value="selectorValue"
+        :label-key="labelKey"
+        :preview="false"
+        type="dialog"
+        @close="closeDialog"
+        @action-event="handleSelectorActionEvent"
+    />
+</template>
+<script>
+import { getByKey } from '@/api/platform/data/dataTemplate'
+import DataTemplateDialog from '@/business/platform/data/templaterender/preview'
+import { buildLabelTitle } from '@/business/platform/data/templaterender/utils'
+
+export default {
+    components: {
+        DataTemplateDialog
+    },
+    props: {
+        visible: Boolean, // 是否可见
+        value: [Object, Array],
+        templateKey: { // 数据模版key
+            type: String
+        },
+        dynamicParams: { // 动态参数
+            type: Object
+        },
+        multiple: {
+            type: Boolean,
+            default: true
+        },
+        previousDataTemplate: {
+            type: Object
+        }
+
+    },
+    data () {
+        return {
+            dataTemplate: {},
+            labelKey: '',
+            valueKey: '',
+            selectorVisible: false,
+            selectorValue: this.multiple ? [] : {},
+            cacheData: {},
+            bindIdValue: ''
+        }
+    },
+    watch: {
+        visible: {
+            handler: function (val, oldVal) {
+                if (val) {
+                    this.loadTemplateData()
+                } else {
+                    this.selectorVisible = val
+                }
+            },
+            immediate: true
+        },
+        value: {
+            handler (val, oldVal) {
+                this.initData()
+            },
+            immediate: true
+        }
+    },
+    methods: {
+        loadTemplateData () {
+            if (this.$utils.isEmpty(this.templateKey)) {
+                return
+            }
+            getByKey({
+                dataTemplateKey: this.templateKey
+            }).then(response => {
+                this.dataTemplate = this.$utils.parseData(response.data)
+                this.initDataTemplate()
+                this.selectorVisible = true
+            }).catch(() => {
+            })
+        },
+        initDataTemplate () {
+            this.valueKey = this.dataTemplate.unique
+            this.labelKey = buildLabelTitle(this.dataTemplate)
+        },
+        handleLabel (data) {
+            const config = this.labelKey
+            if (typeof config === 'function') {
+                return config(data)
+            } else if (typeof config === 'string') {
+                return data[config]
+            } else if (typeof config === 'undefined') {
+                const dataProp = data['name']
+                return dataProp === undefined ? '' : dataProp
+            }
+        },
+        /**
+         * 初始化数据
+         */
+        initData (init = true) {
+            this.selectorValue = this.multiple ? [] : {}
+        },
+        // ===================事件处理=========
+        closeDialog () {
+            this.$emit('close', false)
+        },
+        handleSelectorActionEvent (buttonKey, data) {
+            switch (buttonKey) {
+                case 'ok':// 确定
+                    this.closeDialog()
+                    this.$emit('action-event', buttonKey, data)
+                    break
+                case 'cleanClose': // 清空关闭
+                    this.closeDialog()
+                    this.selectorValue = this.multiple ? [] : {}
+                    this.$emit('action-event', buttonKey, this.selectorValue)
+                    break
+                case 'cancel':// 取消
+                    this.closeDialog()
+                    this.selectorValue = this.multiple ? [] : {}
+                    break
+                // TODO:自定义按钮事件处理
+            }
+        }
+    }
+}
+</script>