From 5515a793e08f2c9f0c8116960d3043f5bd32ccad Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 15 六月 2021 11:07:02 +0800
Subject: [PATCH] 2021-06-15

---
 src/menu/components/share/pastecomponent/index.jsx        |    7 +
 src/views/pcdesign/index.jsx                              |    2 
 src/tabviews/zshare/mutilform/checkCard/index.jsx         |    7 +
 src/menu/components/form/normal-form/index.jsx            |   44 ++++++++++
 src/templates/modalconfig/checkCard/index.scss            |    1 
 src/tabviews/custom/components/form/normal-form/index.jsx |   70 +++++++++++------
 public/options.json                                       |    1 
 src/tabviews/zshare/mutilform/checkCard/index.scss        |   38 +++++++++
 src/tabviews/zshare/mutilform/index.jsx                   |    2 
 src/tabviews/tabmanage/index.jsx                          |    6 
 src/views/appmanage/index.jsx                             |   15 +++
 src/views/mobdesign/index.jsx                             |    2 
 src/tabviews/zshare/mutilform/customTextArea/index.jsx    |    2 
 src/views/menudesign/index.jsx                            |    2 
 src/utils/utils.js                                        |    4 
 src/assets/css/main.scss                                  |    4 +
 16 files changed, 163 insertions(+), 44 deletions(-)

diff --git a/public/options.json b/public/options.json
index a741dc9..40ee2e8 100644
--- a/public/options.json
+++ b/public/options.json
@@ -8,6 +8,7 @@
   "filter": "false",
   "defaultApp": "",
   "defaultLang": "zh-CN",
+  "WXAppID": "",
   "debugger": false,
   "host": "http://qingqiumarket.cn",
   "service": "mkwms/"
diff --git a/src/assets/css/main.scss b/src/assets/css/main.scss
index 3d90a6e..c5c13e3 100644
--- a/src/assets/css/main.scss
+++ b/src/assets/css/main.scss
@@ -386,4 +386,8 @@
       padding: 5px 20px;
     }
   }
+}
+
+.ant-input[disabled] {
+  background-color: #fafafa!important;
 }
\ No newline at end of file
diff --git a/src/menu/components/form/normal-form/index.jsx b/src/menu/components/form/normal-form/index.jsx
index 7ccde07..7c7771e 100644
--- a/src/menu/components/form/normal-form/index.jsx
+++ b/src/menu/components/form/normal-form/index.jsx
@@ -450,6 +450,7 @@
     group.fields = group.fields.filter(item => !item.focus)
 
     this.setState({group, visible: false, editform: null})
+    this.updateGroup(group)
   }
 
   /**
@@ -622,6 +623,47 @@
     })
   }
 
+  pasteForm = (res) => {
+    let _config = fromJS(this.state.group).toJS()
+    let fieldrepet = false // 瀛楁閲嶅
+    let labelrepet = false // 鎻愮ず鏂囧瓧閲嶅
+
+    _config.fields.forEach(item => {
+      if (res.field && item.field && item.field.toLowerCase() === res.field.toLowerCase()) {
+        fieldrepet = true
+      } else if (res.label && item.label === res.label) {
+        labelrepet = true
+      }
+    })
+
+    if (fieldrepet) {
+      notification.warning({
+        top: 92,
+        message: '瀛楁宸插瓨鍦紒',
+        duration: 10
+      })
+      return
+    } else if (labelrepet) {
+      notification.warning({
+        top: 92,
+        message: '鍚嶇О宸插瓨鍦紒',
+        duration: 10
+      })
+      return
+    }
+    _config.fields.push(res)
+
+    this.updateGroup(_config)
+
+    this.handleForm(res)
+
+    notification.success({
+      top: 92,
+      message: '绮樿创鎴愬姛锛�',
+      duration: 2
+    })
+  }
+
   clickComponent = (e) => {
     if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') {
       e.stopPropagation()
@@ -639,7 +681,7 @@
             <Icon className="plus" title="娣诲姞鍒嗙粍" onClick={this.addCard} type="plus" />
             <WrapComponent config={card} updateConfig={this.updateComponent} />
             <CopyComponent type="propcard" card={card}/>
-            <PasteComponent config={card} options={['cardcell']} updateConfig={this.updateComponent} />
+            <PasteComponent config={card} options={['form']} updateConfig={this.pasteForm} />
             <Icon className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle} type="font-colors" />
             <UserComponent config={card}/>
             <Icon className="close" title="鍒犻櫎缁勪欢" type="delete" onClick={() => this.props.deletecomponent(card.uuid)} />
diff --git a/src/menu/components/share/pastecomponent/index.jsx b/src/menu/components/share/pastecomponent/index.jsx
index e4d8edf..73de275 100644
--- a/src/menu/components/share/pastecomponent/index.jsx
+++ b/src/menu/components/share/pastecomponent/index.jsx
@@ -129,6 +129,7 @@
   pasteSubmit = () => {
     const { options } = this.props
     this.pasteFormRef.handleConfirm().then(res => {
+
       if (!options.includes(res.copyType)) {
         notification.warning({ top: 92, message: '閰嶇疆淇℃伅鏍煎紡閿欒锛�', duration: 5 })
         return
@@ -147,7 +148,11 @@
         MKEmitter.emit('copyButtons', copyBtns)
       }
 
-      if (type === 'action') {
+      if (config.type === 'form' && config.subtype === 'stepform') {
+        this.props.updateConfig(res)
+        this.setState({visible: false})
+        return
+      } else if (type === 'action') {
         config.action = config.action || []
         config.action = config.action.filter(item => !item.origin)
 
diff --git a/src/tabviews/custom/components/form/normal-form/index.jsx b/src/tabviews/custom/components/form/normal-form/index.jsx
index aa6387c..03e0350 100644
--- a/src/tabviews/custom/components/form/normal-form/index.jsx
+++ b/src/tabviews/custom/components/form/normal-form/index.jsx
@@ -33,7 +33,6 @@
     BID: '',                   // 涓婄骇ID
     config: null,              // 鍥捐〃閰嶇疆淇℃伅
     loading: false,            // 鏁版嵁鍔犺浇鐘舵��
-    activeKey: '',             // 閫変腑鏁版嵁
     sync: false,               // 鏄惁缁熶竴璇锋眰鏁版嵁
     data: null,                  // 鏁版嵁
     group: null,
@@ -66,6 +65,7 @@
       group.subButton.uuid = group.uuid
       group.subButton.$menuId = group.uuid
       group.subButton.Ot = 'requiredSgl'
+      group.subButton.$forbid = true
       group.subButton.OpenType = 'formSubmit'
       group.subButton.execError = 'never'
 
@@ -180,6 +180,26 @@
       MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
     }
 
+    if (config.wrap.datatype !== 'static' && config.setting) {
+      this.loadData(btn)
+    } else {
+      this.execSuccess(btn)
+    }
+  }
+
+  resetParentParam = (MenuID, id) => {
+    const { config } = this.state
+    if (config.wrap.datatype === 'static' || !config.setting.supModule || config.setting.supModule !== MenuID) return
+    if (id !== this.state.BID) {
+      this.setState({ BID: id }, () => {
+        this.loadData()
+      })
+    }
+  }
+
+  execSuccess = (btn) => {
+    const { config, group } = this.state
+
     if (config.subcards.length > group.sort) {
       let _group = config.subcards.filter(item => item.sort === (group.sort + 1))[0]
   
@@ -217,17 +237,7 @@
     }
   }
 
-  resetParentParam = (MenuID, id) => {
-    const { config } = this.state
-    if (config.wrap.datatype === 'static' || !config.setting.supModule || config.setting.supModule !== MenuID) return
-    if (id !== this.state.BID) {
-      this.setState({ BID: id }, () => {
-        this.loadData()
-      })
-    }
-  }
-
-  async loadData () {
+  async loadData (btn) {
     const { mainSearch, menuType } = this.props
     const { config, arr_field, BID, group } = this.state
 
@@ -236,6 +246,7 @@
         data: {},
         loading: false
       })
+      btn && this.execSuccess(btn)
       return
     }
 
@@ -254,6 +265,7 @@
       this.setState({
         loading: false
       })
+      btn && this.execSuccess(btn)
       return
     }
 
@@ -267,20 +279,27 @@
     let result = await Api.genericInterface(param)
     if (result.status) {
       let _data = result.data && result.data[0] ? result.data[0] : {}
-      let _group = group
-      if (config.wrap.statusControl && _data[config.wrap.statusControl]) {
-        let _status = _data[config.wrap.statusControl]
-        let _groups = config.subcards.filter(item => item.setting.status === _status)[0]
-        _group = _groups || _group
-      }
 
-      this.setState({
-        group: _group,
-        step: _group.sort - 1,
-        activeKey: '',
-        data: _data || {},
-        loading: false
-      })
+      if (btn) {
+        this.setState({
+          data: _data || {},
+          loading: false
+        })
+        this.execSuccess(btn)
+      } else {
+        let _group = group
+        if (config.wrap.statusControl && _data[config.wrap.statusControl]) {
+          let _status = _data[config.wrap.statusControl]
+          let _groups = config.subcards.filter(item => item.setting.status === _status)[0]
+          _group = _groups || _group
+        }
+        this.setState({
+          group: _group,
+          step: _group.sort - 1,
+          data: _data || {},
+          loading: false
+        })
+      }
     } else {
       this.setState({
         loading: false,
@@ -290,6 +309,7 @@
         message: result.message,
         duration: 10
       })
+      btn && this.execSuccess(btn)
     }
   }
 
diff --git a/src/tabviews/tabmanage/index.jsx b/src/tabviews/tabmanage/index.jsx
index 7be8cb2..5d37c1d 100644
--- a/src/tabviews/tabmanage/index.jsx
+++ b/src/tabviews/tabmanage/index.jsx
@@ -49,9 +49,9 @@
             return {
               uuid: temp.MenuID,
               value: temp.MenuID,
-              MenuName: temp.MenuName,
+              MenuName: temp.MenuName || '',
               type: temp.Template,
-              MenuNo: temp.MenuNo,
+              MenuNo: temp.MenuNo || '',
               Remark: temp.Remark
             }
           })
@@ -504,7 +504,7 @@
 
     let _tabviews = []
     if (tabviews) {
-      _tabviews = tabviews.filter(tab => tab.MenuName.toLowerCase().indexOf(searchKey.toLowerCase()) >= 0)
+      _tabviews = tabviews.filter(tab => tab.MenuName.toLowerCase().indexOf(searchKey.toLowerCase()) >= 0 || tab.MenuNo.toLowerCase().indexOf(searchKey.toLowerCase()) >= 0)
     }
 
     return (
diff --git a/src/tabviews/zshare/mutilform/checkCard/index.jsx b/src/tabviews/zshare/mutilform/checkCard/index.jsx
index c8ceec6..f9e8ecf 100644
--- a/src/tabviews/zshare/mutilform/checkCard/index.jsx
+++ b/src/tabviews/zshare/mutilform/checkCard/index.jsx
@@ -29,8 +29,10 @@
   }
 
   changeCard = (item) => {
-    const { multiple } = this.props.card
+    const { multiple, readonly } = this.props.card
     const { selectKeys } = this.state
+
+    if (readonly) return
 
     if (multiple === 'true') {
       let keys = []
@@ -107,8 +109,9 @@
   }
 
   render() {
+    const { card } = this.props
     return (
-      <div className="check-card-form-box">
+      <div className={'check-card-form-box' + (card.readonly ? ' readonly' : '')}>
         <Row gutter={12}>{this.getCards()}</Row>
       </div>
     )
diff --git a/src/tabviews/zshare/mutilform/checkCard/index.scss b/src/tabviews/zshare/mutilform/checkCard/index.scss
index 3d87dc7..0887939 100644
--- a/src/tabviews/zshare/mutilform/checkCard/index.scss
+++ b/src/tabviews/zshare/mutilform/checkCard/index.scss
@@ -2,6 +2,7 @@
   margin-top: 10px;
   margin-bottom: -10px;
   .card-cell {
+    position: relative;
     border: 1px solid #bcbcbc;
     border-radius: 4px;
     padding: 6px;
@@ -16,7 +17,7 @@
       white-space: nowrap;
     }
   }
-  .card-cell:hover, .card-cell.active {
+  .card-cell.active {
     border-color: #1890ff;
     background: #1890ff;
     span {
@@ -24,6 +25,7 @@
     }
   }
   .card-pic-cell {
+    position: relative;
     border: 1px solid #bcbcbc;
     border-radius: 4px;
     background-size: cover;
@@ -32,8 +34,40 @@
     line-height: 1.5;
     cursor: pointer;
   }
-  .card-pic-cell:hover, .card-pic-cell.active {
+  .card-pic-cell.active {
     border-color: #1890ff;
     box-shadow: 0px 0px 4px #1890ff;
   }
+
+  .card-cell.active::after {
+    content: ' ';
+    position: absolute;
+    display: table;
+    border: 2px solid #ffffff;
+    border-top: 0;
+    border-left: 0;
+    bottom: 0;
+    right: 12px;
+    width: 6px;
+    height: 12px;
+    transform: rotate(45deg) scale(1) translate(-50%, -50%);
+  }
+}
+.check-card-form-box:not(.readonly) {
+  .card-cell:hover {
+    border-color: #1890ff;
+    background: #1890ff;
+    span {
+      color: #ffffff!important;
+    }
+  }
+  .card-pic-cell:hover {
+    border-color: #1890ff;
+    box-shadow: 0px 0px 4px #1890ff;
+  }
+}
+.check-card-form-box.readonly {
+  .card-cell, .card-pic-cell {
+    cursor: not-allowed;
+  }
 }
\ No newline at end of file
diff --git a/src/tabviews/zshare/mutilform/customTextArea/index.jsx b/src/tabviews/zshare/mutilform/customTextArea/index.jsx
index 457e5f2..e7f2a38 100644
--- a/src/tabviews/zshare/mutilform/customTextArea/index.jsx
+++ b/src/tabviews/zshare/mutilform/customTextArea/index.jsx
@@ -80,7 +80,7 @@
     const { value } = this.state
 
     return (
-      <TextArea value={value} autoSize={{ minRows: 2, maxRows: Item.maxRows || 6 }} onChange={this.onChange} disabled={Item.readonly === 'true'} />
+      <TextArea value={value} autoSize={{ minRows: 2, maxRows: Item.maxRows || 6 }} onChange={this.onChange} disabled={Item.readonly} />
     )
   }
 }
diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx
index 80d4c3a..77a19e4 100644
--- a/src/tabviews/zshare/mutilform/index.jsx
+++ b/src/tabviews/zshare/mutilform/index.jsx
@@ -380,7 +380,7 @@
               _cell.Text = cell[item.valueText]
               if ((!_cell.Value && _cell.Value !== 0) || (!_cell.Text && _cell.Text !== 0)) return
             } else {
-              _cell.$value = cell[item.valueField]
+              _cell.$value = cell[item.cardValField]
               _cell = {..._cell, ...cell}
               if (!_cell.$value && _cell.$value !== 0) return
             }
diff --git a/src/templates/modalconfig/checkCard/index.scss b/src/templates/modalconfig/checkCard/index.scss
index 985c786..ddc72cb 100644
--- a/src/templates/modalconfig/checkCard/index.scss
+++ b/src/templates/modalconfig/checkCard/index.scss
@@ -1,4 +1,5 @@
 .check-card-edit-box {
+  line-height: 1.5;
   .card-cell {
     border: 1px solid #bcbcbc;
     border-radius: 4px;
diff --git a/src/utils/utils.js b/src/utils/utils.js
index 891d2fd..acc7f97 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -702,7 +702,7 @@
       arrfield.push(...item.linkSubField)
     } else if (item.type === 'checkcard') {
       arrfield = item.fields.map(f => f.field)
-      arrfield.push(item.valueField)
+      arrfield.push(item.cardValField)
     }
 
     arrfield = Array.from(new Set(arrfield))
@@ -1157,7 +1157,7 @@
   }
 
   // 娣诲姞鏁版嵁涓瓧娈碉紝琛ㄥ崟鍊间紭鍏�(鎸夐挳涓嶉�夎鎴栧琛屾嫾鎺ユ椂璺宠繃)
-  if (data && btn.Ot !== 'notRequired' && btn.Ot !== 'requiredOnce') {
+  if (data && !btn.$forbid && btn.Ot !== 'notRequired' && btn.Ot !== 'requiredOnce') {
     datavars = {...data, ...datavars}
 
     const setField = (col) => {
diff --git a/src/views/appmanage/index.jsx b/src/views/appmanage/index.jsx
index 3efc3ba..9814d18 100644
--- a/src/views/appmanage/index.jsx
+++ b/src/views/appmanage/index.jsx
@@ -1,6 +1,6 @@
 import React, {Component} from 'react'
 import { fromJS } from 'immutable'
-import { Spin, notification, Button, Table, Modal, ConfigProvider } from 'antd'
+import { Spin, notification, Button, Table, Modal, ConfigProvider, Typography } from 'antd'
 import moment from 'moment'
 import md5 from 'md5'
 import enUS from 'antd/es/locale/en_US'
@@ -12,11 +12,19 @@
 import './index.scss'
 
 const { confirm } = Modal
+const { Paragraph } = Typography
 
 const _locale = sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS
 const Header = asyncComponent(() => import('@/mob/header'))
 const MutilForm = asyncComponent(() => import('./mutilform'))
 const SubMutilForm = asyncComponent(() => import('./submutilform'))
+
+let base_url = ''
+if (process.env.NODE_ENV === 'production') {
+  base_url = document.location.origin + '/' + window.GLOB.service
+} else {
+  base_url = window.GLOB.location + '/' + window.GLOB.service
+}
 
 class AppManage extends Component {
   state = {
@@ -100,11 +108,12 @@
         title: '鎿嶄綔',
         key: 'action',
         align: 'center',
-        width: '190px',
+        width: '250px',
         render: (text, record) => (
           <div>
             <Button type="link" onClick={() => this.deleteSubApp(record)} style={{color: '#ff4d4f'}}>鍒犻櫎</Button>
             <Button type="link" onClick={() => this.jumpApp(record)}>缂栬緫搴旂敤</Button>
+            <Paragraph style={{display: 'inline-block', margin: 0}} copyable={{ text: `${base_url}${record.typename}/index.html#/index/${this.state.selectApp.kei_no}/${record.lang}` }}></Paragraph>
           </div>
         )
       },
@@ -152,7 +161,7 @@
 
           return item
         })
-
+        
         this.setState({
           loading: false,
           applist: applist,
diff --git a/src/views/menudesign/index.jsx b/src/views/menudesign/index.jsx
index 375ea08..e89a971 100644
--- a/src/views/menudesign/index.jsx
+++ b/src/views/menudesign/index.jsx
@@ -845,7 +845,7 @@
           check(item.components)
           return
         }
-        if (['propcard', 'brafteditor', 'sandbox'].includes(item.subtype) && item.wrap.datatype === 'static') return
+        if (['propcard', 'brafteditor', 'sandbox', 'stepform'].includes(item.subtype) && item.wrap.datatype === 'static') return
   
         if (item.setting) {
           if (item.setting.interType === 'system' && item.setting.execute !== 'false' && !item.setting.dataresource) {
diff --git a/src/views/mobdesign/index.jsx b/src/views/mobdesign/index.jsx
index d44e5f9..3f3f415 100644
--- a/src/views/mobdesign/index.jsx
+++ b/src/views/mobdesign/index.jsx
@@ -1290,7 +1290,7 @@
           error = `瀵艰埅鏍忋��${item.name}銆嬫湭璁剧疆鑿滃崟鍙傛暟锛乣
         }
 
-        if (['propcard', 'brafteditor', 'sandbox', 'tabbar'].includes(item.subtype) && item.wrap.datatype === 'static') return
+        if (['propcard', 'brafteditor', 'sandbox', 'tabbar', 'stepform'].includes(item.subtype) && item.wrap.datatype === 'static') return
   
         if (item.setting) {
           if (item.setting.interType === 'system' && item.setting.execute !== 'false' && !item.setting.dataresource) {
diff --git a/src/views/pcdesign/index.jsx b/src/views/pcdesign/index.jsx
index 2ed7bdc..837911a 100644
--- a/src/views/pcdesign/index.jsx
+++ b/src/views/pcdesign/index.jsx
@@ -1330,7 +1330,7 @@
           check(item.components)
           return
         }
-        if (['propcard', 'brafteditor', 'sandbox'].includes(item.subtype) && item.wrap.datatype === 'static') return
+        if (['propcard', 'brafteditor', 'sandbox', 'stepform'].includes(item.subtype) && item.wrap.datatype === 'static') return
   
         if (item.setting) {
           if (item.setting.interType === 'system' && item.setting.execute !== 'false' && !item.setting.dataresource) {

--
Gitblit v1.8.0