Selaa lähdekoodia

修复新建作业票选中sop之后默认渲染作业票类型和作业票名称前缀

pm 1 vuosi sitten
vanhempi
sitoutus
2e451fecdd

+ 1 - 0
src/main.js

@@ -41,6 +41,7 @@ import VueMeta from 'vue-meta'
 // 字典数据组件
 import DictData from '@/components/DictData'
 import webSite from '@/config/website'
+
 Vue.prototype.website = webSite
 
 // 全局方法挂载

+ 25 - 2
src/router/index.js

@@ -92,6 +92,7 @@ export const constantRoutes = [
 
 // 动态路由,基于用户权限动态去加载
 export const dynamicRoutes = [
+
   {
     path: '/system/user-auth',
     component: Layout,
@@ -344,8 +345,30 @@ Router.prototype.push = function push(location) {
   return routerPush.call(this, location).catch(err => err)
 }
 
-export default new Router({
+// export default new Router({
+//   mode: 'history', // 去掉url中的#
+//   scrollBehavior: () => ({ y: 0 }),
+//   routes: constantRoutes
+// })
+
+
+// 导出 Router 实例
+const router = new Router({
   mode: 'history', // 去掉url中的#
   scrollBehavior: () => ({ y: 0 }),
   routes: constantRoutes
-})
+});
+
+// 导航守卫
+router.beforeEach((to, from, next) => {
+  if (to.path === '/tool/build') {
+    // 重定向到另一个项目的 URL
+    window.location.href = 'http://localhost:8080/';
+  } else {
+    next();
+  }
+});
+
+
+
+export default router;

+ 112 - 18
src/utils/index.js

@@ -5,12 +5,12 @@ import { parseTime } from './ruoyi'
  */
 export function formatDate(cellValue) {
   if (cellValue == null || cellValue == "") return "";
-  var date = new Date(cellValue) 
+  var date = new Date(cellValue)
   var year = date.getFullYear()
   var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
-  var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() 
-  var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours() 
-  var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() 
+  var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
+  var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
+  var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
   var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
   return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
 }
@@ -249,7 +249,27 @@ export function debounce(func, wait, immediate) {
     return result
   }
 }
+function stringify(obj) {
+  return JSON.stringify(obj, (key, val) => {
+    if (typeof val === 'function') {
+      return `${val}`
+    }
+    return val
+  })
+}
 
+function parse(str) {
+  JSON.parse(str, (k, v) => {
+    if (v.indexOf && v.indexOf('function') > -1) {
+      return eval(`(${v})`)
+    }
+    return v
+  })
+}
+
+export function jsonClone(obj) {
+  return parse(stringify(obj))
+}
 /**
  * This is just a simple version of deep copy
  * Has a lot of edge cases bug
@@ -257,20 +277,58 @@ export function debounce(func, wait, immediate) {
  * @param {Object} source
  * @returns {Object}
  */
-export function deepClone(source) {
-  if (!source && typeof source !== 'object') {
-    throw new Error('error arguments', 'deepClone')
+// 深拷贝对象
+// 深拷贝对象
+export function deepClone(obj) {
+  const _toString = Object.prototype.toString
+
+  // null, undefined, non-object, function
+  if (!obj || typeof obj !== 'object') {
+    return obj
   }
-  const targetObj = source.constructor === Array ? [] : {}
-  Object.keys(source).forEach(keys => {
-    if (source[keys] && typeof source[keys] === 'object') {
-      targetObj[keys] = deepClone(source[keys])
-    } else {
-      targetObj[keys] = source[keys]
-    }
-  })
-  return targetObj
+
+  // DOM Node
+  if (obj.nodeType && 'cloneNode' in obj) {
+    return obj.cloneNode(true)
+  }
+
+  // Date
+  if (_toString.call(obj) === '[object Date]') {
+    return new Date(obj.getTime())
+  }
+
+  // RegExp
+  if (_toString.call(obj) === '[object RegExp]') {
+    const flags = []
+    if (obj.global) { flags.push('g') }
+    if (obj.multiline) { flags.push('m') }
+    if (obj.ignoreCase) { flags.push('i') }
+
+    return new RegExp(obj.source, flags.join(''))
+  }
+
+  const result = Array.isArray(obj) ? [] : obj.constructor ? new obj.constructor() : {}
+
+  for (const key in obj) {
+    result[key] = deepClone(obj[key])
+  }
+
+  return result
 }
+// export function deepClone(source) {
+//   if (!source && typeof source !== 'object') {
+//     throw new Error('error arguments', 'deepClone')
+//   }
+//   const targetObj = source.constructor === Array ? [] : {}
+//   Object.keys(source).forEach(keys => {
+//     if (source[keys] && typeof source[keys] === 'object') {
+//       targetObj[keys] = deepClone(source[keys])
+//     } else {
+//       targetObj[keys] = source[keys]
+//     }
+//   })
+//   return targetObj
+// }
 
 /**
  * @param {Array} arr
@@ -330,7 +388,7 @@ export function makeMap(str, expectsLowerCase) {
     ? val => map[val.toLowerCase()]
     : val => map[val]
 }
- 
+
 export const exportDefault = 'export default '
 
 export const beautifierConf = {
@@ -373,6 +431,29 @@ export const beautifierConf = {
     indent_empty_lines: true
   }
 }
+/**
+ * num 小于0,左缩进num*2个空格; 大于0,右缩进num*2个空格。
+ * @param {string} str 代码
+ * @param {number} num 缩进次数
+ * @param {number} len 【可选】缩进单位,空格数
+ */
+export function indent(str, num, len = 2) {
+  if (num === 0) return str
+  const isLeft = num < 0; const result = []; let reg; let
+    spaces = ''
+  if (isLeft) {
+    num *= -1
+    reg = new RegExp(`(^\\s{0,${num * len}})`, 'g')
+  } else {
+    for (let i = 0; i < num * len; i++) spaces += ' '
+  }
+
+  str.split('\n').forEach(line => {
+    line = isLeft ? line.replace(reg, '') : spaces + line
+    result.push(line)
+  })
+  return result.join('\n')
+}
 
 // 首字母大小
 export function titleCase(str) {
@@ -387,4 +468,17 @@ export function camelCase(str) {
 export function isNumberStr(str) {
   return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str)
 }
- 
+
+const toStr = Function.prototype.call.bind(Object.prototype.toString)
+export function isObjectObject(t) {
+  return toStr(t) === '[object Object]'
+}
+export function isObjectArray(t) {
+  return toStr(t) === '[object Array]'
+}
+export function isObjectNull(t) {
+  return toStr(t) === '[object Null]'
+}
+export function isObjectUnde(t) {
+  return toStr(t) === '[object Undefined]'
+}

+ 8 - 0
src/views/mes/job/jobm/NewOperations.vue

@@ -48,6 +48,7 @@
                       placeholder="请选择sop"
                       clearable
                       style="width: 100%"
+                      @clear="handleClearSop"
                       @change="handleSelectSOP"
                     >
                       <el-option
@@ -758,10 +759,17 @@ export default {
         console.log(this.form.sopId,this.form,'sop下拉change事件')
       }else{
         this.jobProps = this.sopOptions.filter((item) => item.sopId == value)
+        this.form.ticketType=this.jobProps[0].sopType
+        this.form.ticketName='sop_'
         console.log(this.jobProps, '父组件jobProps')
       }
 
     },
+    // 清除sop下拉框
+    handleClearSop(){
+      this.form.ticketType=''
+      this.form.ticketName=''
+    },
     // 上锁人下拉选择change事件
     handlelockerChage(val) {
       console.log(val, '上锁人chage')

+ 5 - 5
src/views/tool/build/DraggableItem.vue

@@ -26,9 +26,9 @@ const layouts = {
     if (this.formConf.unFocusedComponentBorder) className += ' unfocus-bordered'
     return (
       <el-col span={element.span} class={className}
-        nativeOnClick={event => { activeItem(element); event.stopPropagation() }}>
+              nativeOnClick={event => { activeItem(element); event.stopPropagation() }}>
         <el-form-item label-width={element.labelWidth ? `${element.labelWidth}px` : null}
-          label={element.label} required={element.required}>
+                      label={element.label} required={element.required}>
           <render key={element.renderKey} conf={element} onInput={ event => {
             this.$set(element, 'defaultValue', event)
           }} />
@@ -43,13 +43,13 @@ const layouts = {
     let child = renderChildren.apply(this, arguments)
     if (element.type === 'flex') {
       child = <el-row type={element.type} justify={element.justify} align={element.align}>
-              {child}
-            </el-row>
+        {child}
+      </el-row>
     }
     return (
       <el-col span={element.span}>
         <el-row gutter={element.gutter} class={className}
-          nativeOnClick={event => { activeItem(element); event.stopPropagation() }}>
+                nativeOnClick={event => { activeItem(element); event.stopPropagation() }}>
           <span class="component-name">{element.componentName}</span>
           <draggable list={element.children} animation={340} group="componentsGroup" class="drag-wrapper">
             {child}

+ 4 - 4
src/views/tool/build/RightPanel.vue

@@ -751,12 +751,12 @@ export default {
           <span>{node.label}</span>
           <span class="node-operation">
             <i on-click={() => this.append(data)}
-              class="el-icon-plus"
-              title="添加"
+               class="el-icon-plus"
+               title="添加"
             ></i>
             <i on-click={() => this.remove(node, data)}
-              class="el-icon-delete"
-              title="删除"
+               class="el-icon-delete"
+               title="删除"
             ></i>
           </span>
         </div>

+ 7 - 4
src/views/tool/build/TreeNodeDialog.vue

@@ -116,12 +116,14 @@ export default {
   computed: {},
   watch: {
     // eslint-disable-next-line func-names
-    'formData.value': function (val) {
+    'formData.value': function(val) {
       this.dataType = isNumberStr(val) ? 'number' : 'string'
     }
   },
-  created() {},
-  mounted() {},
+  created() {
+  },
+  mounted() {
+  },
   methods: {
     onOpen() {
       this.formData = {
@@ -129,7 +131,8 @@ export default {
         value: undefined
       }
     },
-    onClose() {},
+    onClose() {
+    },
     close() {
       this.$emit('update:visible', false)
     },

+ 1 - 1
vue.config.js

@@ -36,7 +36,7 @@ module.exports = {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
         // http://36.133.174.236:9090  http://192.168.1.127:9090 http://192.168.31.110:9090(动感光波)
-        target: `http://192.168.1.127:9090`,
+        target: `http://36.133.174.236:9090`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''