Parcourir la source

删除无用库等

zhoujump il y a 1 mois
Parent
commit
a055d2ff1e

+ 0 - 26
package.json

@@ -15,39 +15,20 @@
     "test:ci": "npm run lint && npm run test:unit"
   },
   "dependencies": {
-    "@google/genai": "^0.13.0",
     "axios": "^0.27.0",
-    "clipboard": "2.0.4",
     "core-js": "3.6.5",
     "dom-to-image-more": "^3.7.1",
-    "driver.js": "0.9.5",
-    "dropzone": "5.5.1",
-    "echarts": "4.2.1",
     "element-china-area-data": "^6.1.0",
     "element-ui": "2.13.2",
-    "file-saver": "2.0.1",
-    "font-awesome": "^4.7.0",
-    "fuse.js": "3.4.4",
     "hugerte": "^1.0.9",
     "js-cookie": "2.2.0",
-    "js-md5": "^0.8.3",
-    "jsonlint": "1.6.3",
-    "jszip": "3.2.1",
     "normalize.css": "7.0.0",
-    "nprogress": "0.2.0",
-    "path-to-regexp": "2.4.0",
-    "screenfull": "4.2.0",
     "script-loader": "0.7.2",
     "sortablejs": "1.8.4",
-    "tui-editor": "1.3.3",
     "vue": "2.6.10",
-    "vue-count-to": "1.0.13",
-    "vue-cropper": "^0.4.9",
-    "vue-highlightjs": "^1.3.3",
     "vue-i18n": "^8.28.2",
     "vue-qr": "^4.0.9",
     "vue-router": "^3.5.2",
-    "vue-splitpane": "1.0.4",
     "vuedraggable": "2.24.3",
     "vuex": "3.1.0",
     "xlsx": "0.14.1"
@@ -55,12 +36,9 @@
   "devDependencies": {
     "@vue/cli-plugin-babel": "4.4.4",
     "@vue/cli-plugin-eslint": "4.4.4",
-    "@vue/cli-plugin-unit-jest": "4.4.4",
     "@vue/cli-service": "4.4.4",
-    "@vue/test-utils": "1.0.0-beta.29",
     "autoprefixer": "9.5.1",
     "babel-eslint": "10.1.0",
-    "babel-jest": "23.6.0",
     "babel-plugin-dynamic-import-node": "2.3.3",
     "chalk": "2.4.2",
     "chokidar": "2.1.5",
@@ -70,12 +48,8 @@
     "html-webpack-plugin": "3.2.0",
     "lint-staged": "8.1.5",
     "mockjs": "1.0.1-beta3",
-    "monaco-editor": "^0.30.1",
-    "monaco-editor-locales-plugin": "^0.0.3",
-    "monaco-editor-webpack-plugin": "^6.0.0",
     "plop": "2.3.0",
     "postcss-px-to-viewport": "^1.1.1",
-    "raw-loader": "^4.0.2",
     "runjs": "4.3.2",
     "sass": "1.26.2",
     "sass-loader": "8.0.2",

+ 3 - 0
src/App.vue

@@ -19,6 +19,7 @@ import i18n from '@/locales/i18n'
 import packetList from '@/views/components/packetList.vue'
 import router from '@/router'
 import { canIShow } from '@/permission'
+import hugerte from 'hugerte'
 export default {
   name: 'App',
   components: {
@@ -65,6 +66,8 @@ export default {
           if (router.app.$store.getters.user.isAdmin) {
             canIShow(to.meta.roles).then(res => {
               this.isAnimation = true
+              hugerte.remove('#editor-creat')
+              hugerte.remove('#editor')
               setTimeout(() => {
                 this.isAnimation = false
                 if (res) {

+ 0 - 2
src/main.js

@@ -3,7 +3,6 @@ import Cookies from 'js-cookie'
 
 // import 'normalize.css/normalize.css' // a modern alternative to CSS resets
 import Element from 'element-ui'
-import VueHighlightJS from 'vue-highlightjs'
 // import enLang from 'element-ui/lib/locale/lang/en'// 如果使用中文语言包请默认支持,无需额外引入,请删除该依赖
 import permission from '@/permission' // permission control
 // import 'font-awesome/css/font-awesome.min.css'
@@ -30,7 +29,6 @@ Vue.use(Element, {
   size: Cookies.get('size') || 'medium' // set element-ui default size
   // locale: enLang // 如果使用中文,无需设置,请删除
 })
-Vue.use(VueHighlightJS)
 
 // register global utility filters
 Object.keys(filters).forEach(key => {

Fichier diff supprimé car celui-ci est trop grand
+ 2 - 2
src/permission.js


+ 2 - 0
src/router/index.js

@@ -367,6 +367,7 @@ export const constantRoutes = [
               title: '系统账号管理',
               icon: 'el-icon-user',
               roles: 'setting.account',
+              hidden: true,
               func: [
                 {
                   name: '添加账号',
@@ -395,6 +396,7 @@ export const constantRoutes = [
               title: '系统角色管理',
               icon: 'el-icon-suitcase-1',
               roles: 'setting.roles',
+              hidden: true,
               func: [
                 {
                   name: '添加角色',

+ 1 - 1
src/views/exhibitorManage/exhibitorSetting.vue

@@ -198,7 +198,7 @@ export default Vue.extend({
         </div>
         <div v-permission="'exhibitor.copyright'" class="form-item required">
           <div class="label">表单底部显示系统信息</div>
-          <el-switch :active-value="1" :inactive-value="0" v-model="exhibitorSetting.show_official_footer" class="input" />
+          <el-switch active-value="1" inactive-value="0" v-model="exhibitorSetting.show_official_footer" class="input" />
         </div>
         <div class="form-item required">
           <div class="label">url短名称</div>

+ 55 - 171
src/views/invitationManage/edit.vue

@@ -1,10 +1,15 @@
 <script>
 import Vue from 'vue'
 import domtoimage from 'dom-to-image-more'
-import * as monaco from 'monaco-editor'
+import hugerte from 'hugerte'
+import 'hugerte/models/dom'
+import 'hugerte/icons/default'
+import 'hugerte/themes/silver'
+import 'hugerte/skins/ui/oxide/skin.js'
+import 'hugerte/skins/ui/oxide/content.js'
+import 'hugerte/skins/content/default/content.js'
 import { upload } from '@/api/system'
 import { saveTemplate } from '@/api/template'
-import { getExpoList } from '@/api/expo'
 export default Vue.extend({
   name: 'Index',
   components: {
@@ -280,29 +285,6 @@ export default Vue.extend({
   </div>
 </body>
 </html>`,
-      viewCode: '',
-      exhibitorSetting: {},
-      userSetting: {
-        first_name: '张',
-        last_name: '三',
-        full_name: '张三',
-        id_type: '中国居民身份证',
-        id_number: '430111200001011111',
-        mobile: '18888888888',
-        mobile_country_code: '+86',
-        email: 'zhansan@gmail.com',
-        company: '北京某某有限公司',
-        department: '销售部门',
-        position: '客户专员',
-        country: '中国',
-        province: '北京市',
-        city: '北京',
-        address: '烟袋斜街',
-        interested_products: '预制菜',
-        business_type: '销售'
-      },
-      expoList: [],
-      expoId: 0,
       timer: null,
       editor: null,
       templateInfo: {
@@ -326,134 +308,53 @@ export default Vue.extend({
         this.templateInfo.name = templateInfo.name
         this.templateInfo.description = templateInfo.description
         this.code = templateInfo.content
+        hugerte.init({
+          selector: '#editor-creat',
+          plugins: [
+            "advlist", "anchor", "autolink", "charmap", "code", "fullscreen",
+            "help", "image", "insertdatetime", "link", "lists", "media",
+            "preview", "searchreplace", "table", "visualblocks",
+          ],
+          toolbar: "undo redo | styles | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",
+          skin_url: 'default',
+          content_css: 'default',
+          statusbar: false,
+          height: '100%',
+          width: '100%'
+        }).then(editor => {
+          hugerte.activeEditor.setContent(this.code)
+        }).catch(err => {
+        })
         this.loading = false
       }
-      getExpoList(1, 1000).then(res => {
-        this.expoList = res.data.data
-        for (var i = 0; i < this.expoList.length; i++) {
-          if (this.expoList[i].status === 0) {
-            this.expoId = 0
-            this.exhibitorSetting = this.expoList[i]
-            break
-          }
-        }
-        this.initEditor()
-        this.parseCode()
-      }).catch(err => {
-        this.loading = false
-      })
-    },
-    changeExpo(index) {
-      this.exhibitorSetting = this.expoList[index]
-      this.parseCode()
     },
     saveTemp() {
       if (this.loading) { return }
       this.loading = true
-      domtoimage
-        .toPng(document.querySelector('#invitation-viewer'))
-        .then((dataUrl) => {
-          var arr = dataUrl.split(','); var mime = arr[0].match(/:(.*?);/)[1]
-          var bstr = atob(arr[1]); var n = bstr.length; var u8arr = new Uint8Array(n)
-          while (n--) {
-            u8arr[n] = bstr.charCodeAt(n)
-          }
-          const picFile = new File([u8arr], 'invitation.png', { type: mime })
-          upload(picFile).then(res => {
-            saveTemplate(this.templateInfo.id, this.templateInfo.name, this.templateInfo.description, this.code, res.data.file)
-              .then(res => {
-                this.$router.push('/invitation/list')
-                this.loading = false
-              }).catch(err => {
-                this.loading = false
-              })
-          }).catch(err => {
-            this.loading = false
-          })
-        })
-    },
-    parseCode() {
-      if (this.timer) { clearTimeout(this.timer) }
-      this.timer = setTimeout(() => {
-        let processedCode = this.code
-        const regex = /\{\{([^}]+)\}\}/g
-        processedCode = processedCode.replace(regex, (match, key) => {
-          const trimmedKey = key.trim()
-          if (Object.prototype.hasOwnProperty.call(this.exhibitorSetting, trimmedKey)) {
-            return this.exhibitorSetting[trimmedKey]
-          }
-          if (Object.prototype.hasOwnProperty.call(this.userSetting, trimmedKey)) {
-            return this.userSetting[trimmedKey]
-          }
-          return match
-        })
-        this.viewCode = processedCode
-      }, 500)
-    },
-    initEditor() {
-      if (this.$getIsInit() === false) {
-        this.$setIsInit()
-        monaco.languages.registerCompletionItemProvider('html', {
-          triggerCharacters: ['{'],
-          provideCompletionItems: (model, position) => {
-            const textUntilPosition = model.getValueInRange({
-              startLineNumber: position.lineNumber,
-              startColumn: 1,
-              endLineNumber: position.lineNumber,
-              endColumn: position.column
-            })
-            const match = textUntilPosition.match(/\{\{$/)
-            if (!match) {
-              return { suggestions: [] }
+      this.code = hugerte.activeEditor.getContent()
+      setTimeout(() => {
+        domtoimage
+          .toPng(document.querySelector('#shot'))
+          .then((dataUrl) => {
+            var arr = dataUrl.split(','); var mime = arr[0].match(/:(.*?);/)[1]
+            var bstr = atob(arr[1]); var n = bstr.length; var u8arr = new Uint8Array(n)
+            while (n--) {
+              u8arr[n] = bstr.charCodeAt(n)
             }
-            const suggestions = Object.keys(this.exhibitorSetting).map(key => {
-              return {
-                label: key,
-                kind: monaco.languages.CompletionItemKind.Field,
-                insertText: key,
-                detail: `插入展会数据: ${key}`,
-                range: {
-                  startLineNumber: position.lineNumber,
-                  startColumn: position.column,
-                  endLineNumber: position.lineNumber,
-                  endColumn: position.column
-                }
-              }
-            })
-            const suggestions_2 = Object.keys(this.userSetting).map(key => {
-              return {
-                label: key,
-                kind: monaco.languages.CompletionItemKind.Field,
-                insertText: key,
-                detail: `插入用户信息: ${key}`,
-                range: {
-                  startLineNumber: position.lineNumber,
-                  startColumn: position.column,
-                  endLineNumber: position.lineNumber,
-                  endColumn: position.column
-                }
-              }
+            const picFile = new File([u8arr], 'invitation.png', { type: mime })
+            upload(picFile).then(res => {
+              saveTemplate(this.templateInfo.id, this.templateInfo.name, this.templateInfo.description, this.code, res.data.file)
+                .then(res => {
+                  this.$router.push('/invitation/list')
+                  this.loading = false
+                }).catch(err => {
+                  this.loading = false
+                })
+            }).catch(err => {
+              this.loading = false
             })
-            return { suggestions: [...suggestions, ...suggestions_2] }
-          }
-        })
-      }
-      this.editor = monaco.editor.create(document.getElementById('editor'), {
-        value: this.code,
-        language: 'html',
-        theme: 'vs-light',
-        automaticLayout: true,
-        minimap: {
-          enabled: false
-        }
-      })
-      this.editor.onDidChangeModelContent(() => {
-        this.code = this.editor.getValue()
-        this.parseCode()
-      })
-    },
-    popoverOpen() {
-
+          })
+      }, 500)
     }
   }
 })
@@ -463,10 +364,7 @@ export default Vue.extend({
   <div v-loading="loading" class="main-box">
     <div class="head">
       <div class="head-left">
-        <el-input v-permission="'invitation.rename'" v-model="templateInfo.name" class="name" />
-        <el-select v-permission="'invitation.select'" v-model="expoId" @change="changeExpo">
-          <el-option v-for="(expo,index) in expoList" :key="expo.id" :label="expo.expo_name" :value="index" />
-        </el-select>
+        <el-input v-model="templateInfo.name" v-permission="'invitation.rename'" class="name" />
       </div>
 
       <el-popover
@@ -474,13 +372,12 @@ export default Vue.extend({
         placement="left-start"
         width="500"
         trigger="click"
-        @after-enter="popoverOpen"
       >
         <div class="body">
           <span class="label">模板名称</span>
-          <el-input v-permission="'invitation.rename'" v-model="templateInfo.name" placeholder="请输入模板名称" />
+          <el-input v-model="templateInfo.name" v-permission="'invitation.rename'" placeholder="请输入模板名称" />
           <span class="label">模板描述</span>
-          <el-input v-permission="'invitation.desc'" v-model="templateInfo.description" type="textarea" rows="6" placeholder="请输入模板描述" />
+          <el-input v-model="templateInfo.description" v-permission="'invitation.desc'" type="textarea" rows="6" placeholder="请输入模板描述" />
           <el-button v-permission="'invitation.save'" class="button" type="primary" @click="saveTemp()">保存</el-button>
         </div>
         <el-button slot="reference" icon="el-icon-plus" type="primary">保存模板</el-button>
@@ -488,12 +385,12 @@ export default Vue.extend({
 
     </div>
     <div class="body">
-      <div class="editor">
-        <div v-permission="'invitation.editor'" id="editor" class="editor-box" />
-      </div>
       <div class="viewer">
+        <div class="shot-viwer">
+          <div id="shot" v-html="code" />
+        </div>
         <div class="viewer-box">
-          <div id="invitation-viewer" v-html="viewCode" />
+          <div id="editor-creat" />
         </div>
       </div>
     </div>
@@ -512,26 +409,13 @@ export default Vue.extend({
     position: relative;
     display: grid;
     grid-gap: 16px;
-    grid-template-columns: 1fr 1fr;
-    .editor{
-      border: 1px lightgray solid;
-      border-radius: 8px;
-      overflow: hidden;
-      position: relative;
-      .editor-box{
-        position: absolute;
-        top: 0;
-        left: 0;
-        height: 100%;
-        width: 100%;
-      }
-    }
+    grid-template-columns: 1fr;
     .viewer{
       overflow: hidden;
       border: 1px lightgray solid;
       border-radius: 8px;
       position: relative;
-      .viewer-box{
+      .viewer-box,.shot-viwer{
         overflow: hidden;
         overflow-y: auto;
         position: absolute;

+ 1 - 1
src/views/setting/systemSetting.vue

@@ -62,7 +62,7 @@ export default Vue.extend({
             <div class="label">
               发件邮箱密码/授权码
             </div>
-            <el-input v-permission="'setting.system.sentEmailPassword'" v-model="mailSetting.auth_code" placeholder="请输入发件邮箱密码/授权码" />
+            <el-input type="password" show-password v-permission="'setting.system.sentEmailPassword'" v-model="mailSetting.auth_code" placeholder="请输入发件邮箱密码/授权码" />
           </div>
           <div class="setting-item">
             <div class="label">

+ 0 - 7
vue.config.js

@@ -1,8 +1,6 @@
 'use strict'
 const path = require('path')
 const defaultSettings = require('./src/settings.js')
-const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')
-const MonacoLocalesPlugin = require('monaco-editor-locales-plugin');
 function resolve(dir) {
   return path.join(__dirname, dir)
 }
@@ -67,11 +65,6 @@ module.exports = {
       }
     },
     plugins: [
-      new MonacoWebpackPlugin(),
-      new MonacoLocalesPlugin({
-        languages: ['zh-cn', 'en'],
-        defaultLanguage: 'zh-cn'
-      })
     ]
   },
   chainWebpack(config) {