whj 1 anno fa
parent
commit
8c898b7d97

+ 15 - 1
src/api/custom/form.js

@@ -16,7 +16,21 @@ export function getCustomFormPage (parameter) {
     }
   })
 }
-
+/**
+ * page func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function getCustomTree () {
+  return axios({
+    url: '/custom/form/tree',
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
 /**
  * add func
  * parameter: { }

+ 2 - 0
src/router/generator-platform-routers.js

@@ -448,6 +448,8 @@ const constantRouterComponents = {
   'SbPositionImg': () => import('@/views/sb-position/SbPositionImg.vue'),
   // test
   'Test1': () => import('@/views/test/Test1.vue'),
+  // 自定义
+  'CustomForm': () => import('@/views/custom/form/CustomForm.vue'),
   // threeJs
   'FactoryOne': () => import('@/views/threejs/factory/FactoryOne.vue')
 }

+ 281 - 248
src/views/custom/form/CustomForm.vue

@@ -1,260 +1,293 @@
 <template>
-    <a-card :bordered="false">
-        <div v-show="visible">
-            <div class="table-page-search-wrapper"  @keyup.enter="handleEnter">
-                <a-form layout="inline">
-                    <a-row :gutter="48" v-show="advanced">
-                        <a-col :md="6" :sm="24">
-                            <a-form-item label="关键字">
-                                <a-input v-model="queryParam.keyword" placeholder="请输入名称/类型名称"/>
-                            </a-form-item>
-                        </a-col>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </a-row>
-                    <a-row :gutter="48">
-                        <a-col :md="24 || 24" :sm="24" style="text-align: right">
-                            <span class="table-page-search-submitButtons">
-                              <a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
-                              <a-button style="margin-left: 8px" @click="resetSearchForm">重置</a-button>
-                              <a @click="()=>{ this.advanced = !this.advanced}" style="margin-left: 8px">
-                                  {{ advanced ? '收起' : '展开' }}
-                                  <a-icon :type="advanced ? 'up' : 'down'"/>
-                              </a>
-                            </span>
-                        </a-col>
-                    </a-row>
-                </a-form>
-            </div>
-
-            <div class="table-operator" style="margin-bottom: 8px;">
-                <a-row>
-                    <a-col :md="16">
-                        <a-button v-if="$auth('custom-form-add')" type="primary" icon="plus" @click="handleAdd()">新增</a-button>
-                        <a-button style="margin-left: 8px" v-if="$auth('custom-form-export')" type="primary" icon="download" @click="doExport">导出</a-button>
-                        <a-dropdown v-action:edit v-if="selectedRowKeys.length > 0 && $auth('custom-form-del')">
-                            <a-menu slot="overlay">
-                                <a-popconfirm title="是否要删除所选数据?" @confirm="batchDelete()">
-                                    <a-menu-item key="1"><a-icon type="delete" /><a>删除</a></a-menu-item>
-                                </a-popconfirm>
-                            </a-menu>
-                            <a-button style="margin-left: 8px">
-                                批量操作 <a-icon type="down" />
-                            </a-button>
-                        </a-dropdown>
-                    </a-col>
-                </a-row>
-            </div>
-
-            <s-table
-                    ref="table"
-                    size="default"
-                    rowKey="id"
-                    :columns="columns"
-                    :data="loadData"
-                    :alert="options.alert"
-                    :rowSelection="options.rowSelection"
-                    showPagination="auto"
-            >
-                <span slot="action" slot-scope="record">
-                  <template>
-                    <a @click="handleView(record)">查看</a>
-                    <operation-button
-                            v-if="$auth('custom-form-edit')" @click="handleEdit(record)"
-                          >修改</operation-button>
-                    <operation-button
-                            v-if="$auth('custom-form-del')"
-                            :type="2"
-                            title="是否要删除该条数据?"
-                            @confirm="batchDelete(record.id)">删除</operation-button>
-                  </template>
+  <a-card :bordered="false">
+    <a-row v-show="visible" :gutter="20">
+      <!-- <a-col :span="6">
+        <a-tree
+          @expand="onExpand"
+          :expandedKeys="expandedKeys"
+          :autoExpandParent="autoExpandParent"
+          @select="onSelect"
+          :selectedKeys="selectedKeys"
+          :treeData="treeData"
+        />
+      </a-col> -->
+      <a-col :span="24">
+        <div class="table-page-search-wrapper" @keyup.enter="handleEnter">
+          <a-form layout="inline">
+            <a-row :gutter="48" >
+              <a-col :md="6" :sm="24">
+                <a-form-item label="关键字">
+                  <a-input v-model="queryParam.keyword" placeholder="请输入名称/类型名称"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="6 || 24" :sm="24" >
+                <span class="table-page-search-submitButtons">
+                  <a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
+                  <a-button style="margin-left: 8px" @click="resetSearchForm">重置</a-button>
                 </span>
-            </s-table>
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
+
+        <div class="table-operator" style="margin-bottom: 8px;">
+          <a-row>
+            <a-col :md="16">
+              <a-button type="primary" icon="plus" @click="handleAdd()">新增</a-button>
+              <a-dropdown v-action:edit v-if="selectedRowKeys.length > 0 ">
+                <a-menu slot="overlay">
+                  <a-popconfirm title="是否要删除所选数据?" @confirm="batchDelete()">
+                    <a-menu-item key="1"><a-icon type="delete" /><a>删除</a></a-menu-item>
+                  </a-popconfirm>
+                </a-menu>
+                <a-button style="margin-left: 8px">
+                  批量操作 <a-icon type="down" />
+                </a-button>
+              </a-dropdown>
+            </a-col>
+          </a-row>
         </div>
-        <base-form ref="baseModal" @ok="handleOk"/>
-        <detail ref="detailModal" @ok="handleOk"/>
-    </a-card>
+
+        <s-table
+          ref="table"
+          size="default"
+          rowKey="id"
+          :columns="columns"
+          :data="loadData"
+          showPagination="auto"
+        >
+          <span slot="action" slot-scope="record">
+            <template>
+              <a @click="handleView(record)">查看</a>
+              <operation-button
+                v-if="$auth('custom-form-edit')"
+                @click="handleEdit(record)"
+              >修改</operation-button>
+              <operation-button
+                v-if="$auth('custom-form-del')"
+                :type="2"
+                title="是否要删除该条数据?"
+                @confirm="batchDelete(record.id)">删除</operation-button>
+            </template>
+          </span>
+        </s-table>
+      </a-col>
+    </a-row>
+    <base-form ref="baseModal" @ok="handleOk"/>
+    <detail ref="detailModal" @ok="handleOk"/>
+  </a-card>
 </template>
 
 <script>
-    import { STable, Ellipsis } from '@/components'
-    import BaseForm from './modules/BaseForm'
-    import Detail from './modules/Detail'
-    import { getCustomFormPage, deleteCustomForms, fetchCustomForm, exportCustomForm } from '@/api/custom/form'
+import { STable, Ellipsis } from '@/components'
+import BaseForm from './modules/BaseForm'
+import Detail from './modules/Detail'
+import { getCustomFormPage, deleteCustomForms, fetchCustomForm, getCustomTree } from '@/api/custom/form'
 
-    export default {
-        name: 'CustomFormList',
-        components: {
-            STable,
-            Ellipsis,
-            BaseForm,
-            Detail
+export default {
+  name: 'CustomFormList',
+  components: {
+    STable,
+    Ellipsis,
+    BaseForm,
+    Detail
+  },
+  data () {
+    return {
+      advanced: false,
+      visible: true,
+      treeData: [],
+      expandedKeys: [],
+      autoExpandParent: true,
+      // 查询参数
+      queryParam: {
+      },
+      // 表头
+      columns: [
+        {
+          title: '序号',
+          dataIndex: 'index',
+          customRender: (text, record, index) => {
+            return `${(this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1}`
+          }
         },
-        data () {
-            return {
-                advanced: false,
-                visible: true,
-                // 查询参数
-                queryParam: {
-                },
-                // 表头
-                columns: [
-                    {
-                        title: '序号',
-                        dataIndex: 'index',
-                        customRender: (text, record, index) => {
-                            return `${(this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1}`
-                        }
-                    },
-                                                                                                                                                {
-                                title: '报废单  调拨单。。。',
-                                dataIndex: 'type'
-                            },
-                                                                                                                                                        {
-                                title: '表单json',
-                                dataIndex: 'jsonString'
-                            },
-                                                                                                                                                        {
-                                title: '流程ID',
-                                dataIndex: 'flowId'
-                            },
-                                                                                                                                                        {
-                                title: '备注',
-                                dataIndex: 'remark'
-                            },
-                                                                                                                                                                                                    {
-                                title: '创建人',
-                                dataIndex: 'createdUserName'
-                            },
-                                                                                                                                                        {
-                                title: '创建时间',
-                                dataIndex: 'createdTime'
-                            },
-                                                                                                                                                                                                                                {
-                        title: '操作',
-                        key: 'action',
-                        width: '200px',
-                        align: 'center',
-                        scopedSlots: { customRender: 'action' }
-                    }
-                ],
-                // 下拉框map
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            // 加载数据方法 必须为 Promise 对象
-                loadData: parameter => {
-                    parameter = {
-                        ...parameter,
-                        ...this.queryParam,
-                        dataScope: {
-                            sortBy: 'desc',
-                            sortName: 'update_time'
-                        }
-                    }
-                    return getCustomFormPage(Object.assign(parameter, this.queryParam))
-                            .then(res => {
-                                return res.data
-                            })
-                },
-                selectedRowKeys: [],
-                selectedRows: [],
-
-                options: {
-                    alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
-                    rowSelection: {
-                        selectedRowKeys: this.selectedRowKeys,
-                        onChange: this.onSelectChange
-                    }
-                },
-                optionAlertShow: false
-            }
+        {
+          title: '表单名称',
+          dataIndex: 'name'
+        },
+        {
+          title: '表单类型',
+          dataIndex: 'type',
+          customRender: (text, record, index) => {
+            return this.BaseTool.Table.getMapText(this.typeMap, text)
+          }
         },
-        created () {
-            // 下拉框map
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            this.tableOption()
+        {
+          title: '模板分类',
+          dataIndex: 'category',
+          customRender: (text, record, index) => {
+            return this.BaseTool.Table.getMapText(this.categoryMap, text)
+          }
         },
-        methods: {
-            tableOption () {
-                if (!this.optionAlertShow) {
-                    this.options = {
-                        alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
-                        rowSelection: {
-                            selectedRowKeys: this.selectedRowKeys,
-                            onChange: this.onSelectChange,
-                            getCheckboxProps: record => ({
-                                props: {
-                                    disabled: false,
-                                    name: record.id
-                                }
-                            })
-                        }
-                    }
-                    this.optionAlertShow = true
-                } else {
-                    this.options = {
-                        alert: false,
-                        rowSelection: null
-                    }
-                    this.optionAlertShow = false
-                }
-            },
-            batchDelete (id) {
-                let ids = []
-                if (this.BaseTool.String.isBlank(id)) {
-                    const length = this.selectedRows.length
-                    if (length === 0) {
-                        this.$message.info('请选择要删除的记录')
-                                return
-                    }
-                    ids = this.selectedRows.map(item => item.id)
-                } else {
-                    ids = [id]
-                }
-                deleteCustomForms(ids).then(res => {
-                    this.$message.info('删除成功')
-                    this.handleOk()
-                    this.$refs.table.clearSelected()
-                })
-            },
-            handleAdd () {
-                this.visible = false
-                const modal = this.$refs.baseModal
-                modal.base()
-            },
-            handleEdit (record) {
-                this.visible = false;
-                fetchCustomForm({ id: record.id }).then(res => {
-                    const modal = this.$refs.baseModal
-                    modal.base(res.data)
-                })
-            },
-            handleView (record) {
-                this.visible = false;
-                fetchCustomForm({ id: record.id }).then(res => {
-                    const modal = this.$refs.detailModal
-                    modal.base(res.data)
-                })
-            },
-            handleOk (values) {
-                this.visible = true
-                this.$refs.table.refresh()
-            },
-            onSelectChange (selectedRowKeys, selectedRows) {
-                this.selectedRowKeys = selectedRowKeys
-                this.selectedRows = selectedRows
-            },
-            resetSearchForm () {
-                this.queryParam = {
-                }
-                this.$refs.table.refresh(true)
-            },
-            doExport () {
-                const parameter = {
-                    ...this.queryParam
-                }
-                exportCustomForm(parameter).then(file => {
-                    this.BaseTool.Util.downLoadExportExcel(file)
-                })
-            },
-            handleEnter () {
-                this.$refs.table.refresh(true)
-            }
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                            }
+        {
+          title: '备注',
+          dataIndex: 'remark'
+        },
+        {
+          title: '创建人',
+          dataIndex: 'createdUserName'
+        },
+        {
+          title: '创建时间',
+          dataIndex: 'createdTime'
+        },
+        {
+          title: '状态',
+          fixed: 'right',
+          dataIndex: 'status'
+        },
+        {
+          title: '操作',
+          key: 'action',
+          width: '200px',
+          fixed: 'right',
+          align: 'center',
+          scopedSlots: { customRender: 'action' }
+        }
+      ],
+      // 下拉框map
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        parameter = {
+          ...parameter,
+          ...this.queryParam,
+          dataScope: {
+            sortBy: 'desc',
+            sortName: 'update_time'
+          }
+        }
+        return getCustomFormPage(Object.assign(parameter, this.queryParam))
+          .then(res => {
+            return res.data
+          })
+      },
+      selectedRowKeys: [],
+      selectedRows: [],
+
+      options: {
+        alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+        rowSelection: {
+          selectedRowKeys: this.selectedRowKeys,
+          onChange: this.onSelectChange
+        }
+      },
+      optionAlertShow: false,
+      categoryMap: {},
+      typeMap: {}
+    }
+  },
+  created () {
+    // 下拉框map
+    this.typeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CUSTOM_FORM_TYPE)
+    this.categoryMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CATEGORY)
+    this.tableOption()
+    getCustomTree().then(res => {
+      this.treeData = res.data
+    })
+  },
+  methods: {
+    tableOption () {
+      if (!this.optionAlertShow) {
+        this.options = {
+          alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+          rowSelection: {
+            selectedRowKeys: this.selectedRowKeys,
+            onChange: this.onSelectChange,
+            getCheckboxProps: record => ({
+              props: {
+                disabled: false,
+                name: record.id
+              }
+            })
+          }
+        }
+        this.optionAlertShow = true
+      } else {
+        this.options = {
+          alert: false,
+          rowSelection: null
+        }
+        this.optionAlertShow = false
+      }
+    },
+    batchDelete (id) {
+      let ids = []
+      if (this.BaseTool.String.isBlank(id)) {
+        const length = this.selectedRows.length
+        if (length === 0) {
+          this.$message.info('请选择要删除的记录')
+          return
+        }
+        ids = this.selectedRows.map(item => item.id)
+      } else {
+        ids = [id]
+      }
+      deleteCustomForms(ids).then(res => {
+        this.$message.info('删除成功')
+        this.handleOk()
+        this.$refs.table.clearSelected()
+      })
+    },
+    handleAdd () {
+      this.visible = false
+      const modal = this.$refs.baseModal
+      modal.base()
+    },
+    handleEdit (record) {
+      this.visible = false
+      fetchCustomForm({ id: record.id }).then(res => {
+        const modal = this.$refs.baseModal
+        modal.base(res.data)
+      })
+    },
+    handleView (record) {
+      this.visible = false
+      fetchCustomForm({ id: record.id }).then(res => {
+        const modal = this.$refs.detailModal
+        modal.base(res.data)
+      })
+    },
+    handleOk (values) {
+      this.visible = true
+      this.$refs.table.refresh()
+    },
+    onSelectChange (selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    },
+    resetSearchForm () {
+      this.queryParam = {
+      }
+      this.$refs.table.refresh(true)
+    },
+    onSelect: function (selectedKeys, info) {
+      this.selectedKeys = selectedKeys
+      if (selectedKeys.length > 0) {
+        this.queryParam.deptId = selectedKeys[0]
+        this.rightSelectDept = info.node.dataRef.item
+      } else {
+        this.queryParam.deptId = ''
+        this.rightSelectDept = {}
+      }
+      this.$refs.table.refresh(true)
+    },
+    onExpand (expandedKeys) {
+      this.expandedKeys = expandedKeys
+      this.autoExpandParent = false
+    },
+    handleEnter () {
+      this.$refs.table.refresh(true)
     }
+  }
+}
 </script>

+ 144 - 137
src/views/custom/form/modules/BaseForm.vue

@@ -1,146 +1,153 @@
 <template>
-    <a-card :bordered="false" v-show="visible" class="card" :title="modalTitle">
-        <a-row :gutter="48" slot="extra">
-            <a-col :md="48" :sm="48">
-              <span class="table-page-search-submitButtons" style="float: right">
-                <a-button :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
-                <a-button style="margin-left: 8px" type="default" @click="handleCancel()">返回</a-button>
-              </span>
-            </a-col>
-        </a-row>
-        <a-form :form="form">
+  <a-card :bordered="false" v-show="visible" class="card" :title="modalTitle">
+    <a-row :gutter="48" slot="extra">
+      <a-col :md="48" :sm="48">
+        <span class="table-page-search-submitButtons" style="float: right">
+          <a-button :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
+          <a-button style="margin-left: 8px" type="default" @click="handleCancel()">返回</a-button>
+        </span>
+      </a-col>
+    </a-row>
+    <a-steps :current="current">
+      <a-step title="模板分类" />
+      <a-step title="表单配置" />
+      <a-step title="表单查询字段设置" />
+      <a-step title="关联流程" />
+    </a-steps>
+    <a-form :form="form">
+      <a-form-item v-show="false">
+        <a-input v-decorator="['id']" type="hidden"/>
+      </a-form-item>
+      <row-list :col="2">
+        <row-item>
+          <a-form-item
+            label="表单类型"
+            :labelCol="BaseTool.Constant.labelCol"
+            :wrapperCol="BaseTool.Constant.wrapperCol"
+          >
+            <a-input-number
+              style="width: 100%"
+              :min="0"
+              :formatter="BaseTool.Amount.formatter"
+              :parser="BaseTool.Amount.parser"
+              v-decorator="['type', {rules: [{required: true, message: '报废单  调拨单。。。不能为空'}]}]"/>
+          </a-form-item>
+        </row-item>
+        <row-item>
 
-            <a-form-item v-show="false">
-                <a-input v-decorator="['id']" type="hidden"/>
-                                                                                                                                                                                                                                                                                                                                                                                            </a-form-item>
+          <a-form-item
+            label="表单json"
+            :labelCol="BaseTool.Constant.labelCol"
+            :wrapperCol="BaseTool.Constant.wrapperCol"
+          >
+          </a-form-item>
+        </row-item>
+        <row-item>
 
-            <row-list :col="2">
-                                                                                                <row-item>
+          <a-form-item
+            label="流程ID"
+            :labelCol="BaseTool.Constant.labelCol"
+            :wrapperCol="BaseTool.Constant.wrapperCol"
+          >
+            <a-input
+              v-decorator="['flowId', {rules: [{required: true, message: '流程ID不能为空'}]}]"/>
+          </a-form-item>
+        </row-item>
+        <row-item>
 
-                            <a-form-item
-                                    label="报废单  调拨单。。。"
-                                    :labelCol="BaseTool.Constant.labelCol"
-                                    :wrapperCol="BaseTool.Constant.wrapperCol"
-                            >
-                                                                    <a-input-number
-                                            style="width: 100%"
-                                            :min="0"
-                                            :formatter="BaseTool.Amount.formatter"
-                                            :parser="BaseTool.Amount.parser"
-                                            v-decorator="['type', {rules: [{required: true, message: '报废单  调拨单。。。不能为空'}]}]"/>
-                                                            </a-form-item>
-                        </row-item>
-                                                                                <row-item>
-
-                            <a-form-item
-                                    label="表单json"
-                                    :labelCol="BaseTool.Constant.labelCol"
-                                    :wrapperCol="BaseTool.Constant.wrapperCol"
-                            >
-                                                            </a-form-item>
-                        </row-item>
-                                                                                <row-item>
-
-                            <a-form-item
-                                    label="流程ID"
-                                    :labelCol="BaseTool.Constant.labelCol"
-                                    :wrapperCol="BaseTool.Constant.wrapperCol"
-                            >
-                                                                    <a-input
-                                            v-decorator="['flowId', {rules: [{required: true, message: '流程ID不能为空'}]}]"/>
-                                                            </a-form-item>
-                        </row-item>
-                                                                                <row-item>
-
-                            <a-form-item
-                                    label="备注"
-                                    :labelCol="BaseTool.Constant.labelCol"
-                                    :wrapperCol="BaseTool.Constant.wrapperCol"
-                            >
-                                                                    <a-input
-                                            v-decorator="['remark', {rules: [{required: true, message: '备注不能为空'}]}]"/>
-                                                            </a-form-item>
-                        </row-item>
-                                                                                                                                                                                                                                                                        </row-list>
-        </a-form>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </a-card>
+          <a-form-item
+            label="备注"
+            :labelCol="BaseTool.Constant.labelCol"
+            :wrapperCol="BaseTool.Constant.wrapperCol"
+          >
+            <a-input
+              v-decorator="['remark', {rules: [{required: true, message: '备注不能为空'}]}]"/>
+          </a-form-item>
+        </row-item>
+      </row-list>
+    </a-form>
+  </a-card>
 </template>
 
 <script>
-    import pick from 'lodash.pick'
-    import {addCustomForm, updateCustomForm } from '@/api/custom/form'
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                        export default {
-        name: 'BaseCustomForm',
-        data() {
-            return {
-                confirmLoading: false,
-                modalTitle: null,
-                form: this.$form.createForm(this),
-                visible: false,
-            // 下拉框map
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        }
-        },
-        props: {},
-        created() {
-            // 下拉框map
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
-        methods: {
-            base(record) {
-                this.visible = true
-                // 如果是空标识添加
-                if (this.BaseTool.Object.isBlank(record)) {
-                    this.modalTitle = '添加'
-                    return
-                }
-                this.modalTitle = '编辑'
-                const {form: {setFieldsValue}} = this
-                // 日期处理
-                                this.$nextTick(() => {
-                    setFieldsValue(Object.assign(pick(record, [
-                                                                                    'id',
-                                                                                                                'type',
-                                                                                                                'jsonString',
-                                                                                                                'flowId',
-                                                                                                                'remark',
-                                                                                                                                                                                                                                                                                                                                                                            ])))
-                })
-            },
-            save() {
-                const {form: {validateFieldsAndScroll}} = this
-                this.confirmLoading = true
-                validateFieldsAndScroll((errors, values) => {
-                    if (errors) {
-                        this.confirmLoading = false
-                        return
-                    }
-                    // 日期处理
-                                        if (this.BaseTool.String.isBlank(values.id)) {
-                        addCustomForm(values)
-                                .then(() => {
-                                    this.handleCancel(values)
-                                }).catch(() => {
-                            this.confirmLoading = false
-                        })
-                    } else {
-                        updateCustomForm(values)
-                                .then(() => {
-                                    this.handleCancel(values)
-                                }).catch(() => {
-                            this.confirmLoading = false
-                        })
-                    }
-                })
-            },
-            handleCancel(values) {
-                this.visible = false
-                this.confirmLoading = false
-                this.form.resetFields()
-                if (this.BaseTool.Object.isNotBlank(values)) {
-                    this.$emit('ok', values)
-                } else {
-                    this.$emit('ok')
-                }
-            }
-                                                                                                                                                                                                                                                                                                                                        }
+import pick from 'lodash.pick'
+import { addCustomForm, updateCustomForm } from '@/api/custom/form'
+export default {
+  name: 'BaseCustomForm',
+  data () {
+    return {
+      confirmLoading: false,
+      modalTitle: null,
+      form: this.$form.createForm(this),
+      visible: false,
+      current: 0
+      // 下拉框map
+    }
+  },
+  props: {},
+  created () {
+    // 下拉框map
+    this.typeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CUSTOM_FORM_TYPE)
+    this.categoryMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CATEGORY)
+  },
+  methods: {
+    base (record) {
+      this.visible = true
+      // 如果是空标识添加
+      if (this.BaseTool.Object.isBlank(record)) {
+        this.modalTitle = '添加'
+        return
+      }
+      this.modalTitle = '编辑'
+      const { form: { setFieldsValue } } = this
+      // 日期处理
+      this.$nextTick(() => {
+        setFieldsValue(Object.assign(pick(record, [
+          'id',
+          'type',
+          'jsonString',
+          'flowId',
+          'remark'
+        ])))
+      })
+    },
+    save () {
+      const { form: { validateFieldsAndScroll } } = this
+      this.confirmLoading = true
+      validateFieldsAndScroll((errors, values) => {
+        if (errors) {
+          this.confirmLoading = false
+          return
+        }
+        // 日期处理
+        if (this.BaseTool.String.isBlank(values.id)) {
+          addCustomForm(values)
+            .then(() => {
+              this.handleCancel(values)
+            }).catch(() => {
+              this.confirmLoading = false
+            })
+        } else {
+          updateCustomForm(values)
+            .then(() => {
+              this.handleCancel(values)
+            }).catch(() => {
+              this.confirmLoading = false
+            })
+        }
+      })
+    },
+    handleCancel (values) {
+      this.visible = false
+      this.confirmLoading = false
+      this.current = 0
+      this.form.resetFields()
+      if (this.BaseTool.Object.isNotBlank(values)) {
+        this.$emit('ok', values)
+      } else {
+        this.$emit('ok')
+      }
     }
+  }
+}
 </script>