【fix ESLint】components/jero、components/layouts、components/tools、utils、views/account/center、views/demo、views/system

This commit is contained in:
zhaoxiao
2023-03-08 15:20:31 +08:00
parent e37d7c0c4e
commit 5bad1fef61
36 changed files with 98 additions and 70 deletions
@@ -117,7 +117,7 @@ export default {
const data = this.pcaa[value]
if (data) {
for (const key in data) {
if (data.hasOwnProperty(key)) {
if (Object.prototype.hasOwnProperty.call(data, key)) {
options.push({ value: key, label: data[key] })
}
}
+17 -12
View File
@@ -946,7 +946,9 @@ export default {
showClearSelectButton () {
let count = 0
for (const key in this.disabledRows) {
if (this.disabledRows.hasOwnProperty(key)) count++
if (Object.prototype.hasOwnProperty.call(this.disabledRows, key)) {
count++
}
}
return count > 0
},
@@ -1318,7 +1320,8 @@ export default {
// 解析disabledRows
for (const columnKey in this.disabledRows) {
// 判断是否有该属性
if (this.disabledRows.hasOwnProperty(columnKey) && data.hasOwnProperty(columnKey)) {
// if (this.disabledRows.hasOwnProperty(columnKey) && data.hasOwnProperty(columnKey)) {
if (Object.prototype.hasOwnProperty.call(this.disabledRows, columnKey) && Object.prototype.hasOwnProperty.call(data, columnKey)) {
if (disabled !== true) {
const temp = this.disabledRows[columnKey]
// 禁用规则可以是一个数组
@@ -1659,7 +1662,8 @@ export default {
if (asyncCount === 0) {
clearInterval(timer)
if (typeof callback === 'function') {
callback({ error, values })
const params = { error, values }
callback(params)
}
}
}, 10)
@@ -1741,7 +1745,7 @@ export default {
let { rowKey, values: newValues } = item
rowKey = this.getCleanId(rowKey)
for (const newValueKey in newValues) {
if (newValues.hasOwnProperty(newValueKey)) {
if (Object.prototype.hasOwnProperty.call(newValues, newValueKey)) {
let edited = false // 已被修改
for (const column of this.columns) {
if (column.key === newValueKey) {
@@ -1749,7 +1753,7 @@ export default {
this.inputValues.forEach(value => {
// 在inputValues中找到了该字段
if (rowKey === this.getCleanId(value.id)) {
if (value.hasOwnProperty(newValueKey)) {
if (Object.prototype.hasOwnProperty.call(value, newValueKey)) {
edited = true
value[newValueKey] = newValue
}
@@ -1839,10 +1843,10 @@ export default {
},
valuesHasOwnProperty (values, ownProperty) {
const key = ownProperty
if (values.hasOwnProperty(key)) {
if (Object.prototype.hasOwnProperty.call(values, key)) {
return key
}
if (values.hasOwnProperty(key + this.tempId)) {
if (Object.prototype.hasOwnProperty.call(values, key + this.tempId)) {
return key + this.tempId
}
return null
@@ -1900,7 +1904,8 @@ export default {
}
if (typeof callback === 'function') {
callback([tooltips[inputId], notPassedIds])
const param = [tooltips[inputId], notPassedIds]
callback(param)
}
}
@@ -2026,7 +2031,7 @@ export default {
const { idx } = tr.dataset
const value = this.inputValues[idx]
for (const key in value) {
if (value.hasOwnProperty(key)) {
if (Object.prototype.hasOwnProperty.call(value, key)) {
const elid = `${key}${value.id}`
const el = document.getElementById(elid)
if (el) {
@@ -2052,7 +2057,7 @@ export default {
// 重新计算单个统计列
recalcOneStatisticsColumn (key) {
if (this.hasStatisticsColumn) {
if (this.statisticsColumns.hasOwnProperty(key)) {
if (Object.prototype.hasOwnProperty.call(this.statisticsColumns, key)) {
// 计算合计值
let count = 0
this.inputValues.forEach(item => {
@@ -2073,7 +2078,7 @@ export default {
/** 获取某个统计字段的值 */
getStatisticsValue (key) {
if (this.hasStatisticsColumn) {
if (this.statisticsColumns.hasOwnProperty(key)) {
if (Object.prototype.hasOwnProperty.call(this.statisticsColumns, key)) {
return this.statisticsColumns[key]
}
}
@@ -2707,7 +2712,7 @@ export default {
// 解析props
if (typeof col.props === 'object') {
for (const prop in col.props) {
if (col.props.hasOwnProperty(prop)) {
if (Object.prototype.hasOwnProperty.call(col.props, prop)) {
props[prop] = this.replaceProps(col, col.props[prop])
}
}
+2 -2
View File
@@ -101,11 +101,11 @@ export default {
.drag_bg{
background-color: #7ac23c;
height: 34px;
width: 0px;
width: 0;
}
.drag_text{
position: absolute;
top: 0px;
top: 0;
width: 100%;text-align: center;
-moz-user-select: none;
-webkit-user-select: none;
@@ -178,7 +178,7 @@ export default {
}
// slot 组件特殊处理
if (column.$type === JVXETypes.slot) {
if (this.$scopedSlots.hasOwnProperty(column.slotName)) {
if (Object.prototype.hasOwnProperty.call(this.$scopedSlots, column.slotName)) {
renderOptions.slot = this.$scopedSlots[column.slotName]
renderOptions.target = this
}
@@ -264,7 +264,7 @@ export default {
// 用户传递的事件,进行合并操作
Object.keys(this.$listeners).forEach(key => {
let listen = this.$listeners[key]
if (events.hasOwnProperty(key)) {
if (Object.prototype.hasOwnProperty.call(events, key)) {
if (Array.isArray(listen)) {
listen.push(events[key])
} else {
@@ -1,5 +1,5 @@
import Vue from 'vue'
import { getEventPath } from '@/utils/util'
import { getEventPath, evil } from '@/utils/util'
import JVxeTable, { AllCells, JVXETypes } from './index'
import './less/j-vxe-table.less'
// 引入 vxe-table
@@ -14,7 +14,7 @@ import { getEnhancedMixins, installAllCell, installOneCell } from '@/components/
const VxeGridMethodsMap = {}
Object.keys(Grid.methods).forEach(key => {
// 使用eval可以避免闭包(但是要注意不要写es6的代码)
VxeGridMethodsMap[key] = eval(`(function(){return this.$refs.vxe.${key}.apply(this.$refs.vxe,arguments)})`)
VxeGridMethodsMap[key] = evil(`(function(){return this.$refs.vxe.${key}.apply(this.$refs.vxe,arguments)})`)
})
// 将Grid所有的方法都映射(继承)到JVxeTable上
JVxeTable.methods = Object.assign({}, VxeGridMethodsMap, JVxeTable.methods)
@@ -105,7 +105,9 @@ export default {
const res = this.enhanced.translate.handler.call(this, value)
// 异步翻译,目前仅【多级联动】使用
if (res instanceof Promise) {
res.then(value => this.innerValue = value)
res.then(value => {
this.innerValue = value
})
} else {
this.innerValue = res
}
@@ -99,7 +99,7 @@ export function getEnhancedMixins (type, name) {
if (enhanced) {
Object.keys(defEnhanced).forEach(key => {
const def = defEnhanced[key]
if (enhanced.hasOwnProperty(key)) {
if (Object.prototype.hasOwnProperty.call(enhanced, key)) {
// 方法如果存在就不覆盖
if (typeof def !== 'function' && typeof def !== 'string') {
enhanced[key] = Object.assign({}, def, enhanced[key])
+3
View File
@@ -34,6 +34,8 @@ import JSelectRole from '../jerobiz/JSelectRole.vue'
import JSelectUserByDep from '../jerobiz/JSelectUserByDep.vue'
// 引入需要全局注册的js函数和变量
import { Modal, notification, message } from 'ant-design-vue'
// eslint-disable-next-line camelcase
import lodash_object from 'lodash'
import debounce from 'lodash/debounce'
import pick from 'lodash.pick'
@@ -81,6 +83,7 @@ export default {
Vue.prototype.$Jnotification = notification
Vue.prototype.$Jmodal = Modal
Vue.prototype.$Jmessage = message
// eslint-disable-next-line camelcase
Vue.prototype.$Jlodash = lodash_object
Vue.prototype.$Jdebounce = debounce
Vue.prototype.$Jpick = pick
@@ -1,7 +1,5 @@
<template>
<iframe :id="id" :src="url" frameborder="0" width="100%" height="800px" scrolling="auto"></iframe>
<iframe :id="id" :src="url" frameborder="0" width="100%" height="800px" scrolling="auto"></iframe>
</template>
<script>
@@ -39,6 +37,7 @@ export default {
if (url !== null && url !== undefined) {
// -----------------------------------------------------------------------------------------
// url支持通过 ${token}方式传递当前登录TOKEN
// eslint-disable-next-line no-template-curly-in-string
const tokenStr = '${token}'
if (url.indexOf(tokenStr) !== -1) {
const token = Vue.ls.get(ACCESS_TOKEN)
@@ -217,7 +217,7 @@ export default {
},
websocketOnmessage: function (e) {
console.log('-----接收消息-------', e.data)
const data = eval('(' + e.data + ')') // 解析对象
const data = JSON.parse(e.data) // 解析对象
if (data.cmd + '' === 'topic') {
// 系统通知
this.loadData()
+1
View File
@@ -64,6 +64,7 @@ const updateTheme = primaryColor => {
const lessConfigNode = document.createElement('script')
const lessScriptNode = document.createElement('script')
lessStyleNode.setAttribute('rel', 'stylesheet/less')
// eslint-disable-next-line camelcase,no-undef
lessStyleNode.setAttribute('href', __webpack_public_path__ + 'color.less')
lessConfigNode.innerHTML = `
window.less = {
+1 -1
View File
@@ -71,7 +71,7 @@ function globalDisabledAuth (code) {
// 设置全局配置是否有命中
let gFlag = false// 禁用命中
let invalidFlag = false// 无效命中
if (allPermissionList != null && allPermissionList != '' && allPermissionList !== undefined && allPermissionList.length > 0) {
if (allPermissionList && allPermissionList.length > 0) {
for (const itemG of allPermissionList) {
if (code === itemG.action) {
if (itemG.status + '' === '0') {
@@ -1,3 +1,4 @@
/* eslint-disable */
import { getAction } from '@/api/manage'
import { ENCRYPTED_STRING } from '@/store/mutation-types'
import Vue from 'vue'
@@ -9,7 +9,7 @@ export default class signMd5Utils {
*/
static sortAsc (jsonObj) {
const arr = new Array()
const arr = []
let num = 0
for (const i in jsonObj) {
arr[num] = i
@@ -76,7 +76,7 @@ export default class signMd5Utils {
static mergeObject (objectOne, objectTwo) {
if (objectTwo && Object.keys(objectTwo).length > 0) {
for (const key in objectTwo) {
if (objectTwo.hasOwnProperty(key) === true) {
if (Object.prototype.hasOwnProperty.call(objectTwo, key) === true) {
// 数字值转为string类型,前后端加密规则保持一致
if (this.myIsNaN(objectTwo[key])) {
objectTwo[key] = objectTwo[key].toString()
@@ -92,7 +92,7 @@ export default class signMd5Utils {
if (param == null) return ''
let paramStr = ''
const t = typeof (param)
if (t == 'string' || t == 'number' || t == 'boolean') {
if (t === 'string' || t === 'number' || t === 'boolean') {
paramStr += '&' + key + '=' + ((encode == null || encode) ? encodeURIComponent(param) : param)
} else {
for (const i in param) {
+1 -1
View File
@@ -84,7 +84,7 @@ export function filterGlobalPermission (el, binding) {
}
// 设置全局配置是否有命中
let invalidFlag = false// 无效命中
if (allPermissionList != null && allPermissionList != '' && allPermissionList !== undefined && allPermissionList.length > 0) {
if (allPermissionList && allPermissionList.length > 0) {
for (const itemG of allPermissionList) {
if (binding.value === itemG.action) {
if (itemG.status + '' !== '0') {
+1 -1
View File
@@ -19,7 +19,7 @@ function classNames () {
}
} else if (argType === 'object') {
for (const key in arg) {
if (arg.hasOwnProperty(key) && arg[key]) {
if (Object.prototype.hasOwnProperty.call(arg, key) && arg[key]) {
classes.push(key)
}
}
+13 -5
View File
@@ -37,8 +37,7 @@ export function filterObj (obj) {
}
for (const key in obj) {
if (obj.hasOwnProperty(key) &&
(obj[key] == null || obj[key] === undefined || obj[key] === '')) {
if (Object.prototype.hasOwnProperty.call(obj, key) && (obj[key] == null || obj[key] === undefined || obj[key] === '')) {
delete obj[key]
}
}
@@ -110,8 +109,7 @@ function generateChildRouters (data) {
} else {
component = 'views/' + item.component
}
// eslint-disable-next-line
let URL = (item.meta.url|| '').replace(/{{([^}}]+)?}}/g, (s1, s2) => eval(s2)) // URL支持{{ window.xxx }}占位符变量
const URL = (item.meta.url || '').replace(/{{([^}}]+)?}}/g, (s1, s2) => eval(s2)) // URL支持{{ window.xxx }}占位符变量
if (isURL(URL) || (item.meta.url && item.meta.url.indexOf('{{') === 0)) {
item.meta.url = URL
}
@@ -581,7 +579,7 @@ export function isOAuth2AppEnv () {
*/
export function getReportPrintUrl (url, id, open) {
// URL支持{{ window.xxx }}占位符变量
url = url.replace(/{{([^}]+)?}}/g, (s1, s2) => eval(s2))
url = url.replace(/{{([^}]+)?}}/g, (s1, s2) => evil(s2))
if (url.includes('?')) {
url += '&'
} else {
@@ -594,3 +592,13 @@ export function getReportPrintUrl (url, id, open) {
}
return url
}
/**
* 解决eval的eslint问题
* @param fn
* @returns {*}
*/
export function evil (fn) {
const Fn = Function // 一个变量指向Function,防止有些前端编译工具报错
return new Fn('return ' + fn)()
}
+2 -3
View File
@@ -46,7 +46,7 @@
@blur="handleTagInputConfirm"
@keyup.enter="handleTagInputConfirm"
/>
<a-tag v-else @click="showTagInput" style="background: #fff; borderStyle: dashed;">
<a-tag v-else @click="showTagInput" style="background: #fff; border-style: dashed;">
<a-icon type="plus" />
New Tag
</a-tag>
@@ -188,10 +188,9 @@ export default {
margin-bottom: 24px;
& > .avatar {
margin: 0 auto;
width: 104px;
height: 104px;
margin-bottom: 20px;
margin: 0 auto 20px;
border-radius: 50%;
overflow: hidden;
+2
View File
@@ -432,6 +432,8 @@ export default {
this.changeImg()
const list = [].slice.call(document.querySelectorAll('pre code'))
list.forEach((val) => {
// 这个变量全局搜不到,就选择了单行不校验
// eslint-disable-next-line no-undef
hljs.highlightBlock(val)
})
}
+2 -1
View File
@@ -10,10 +10,11 @@
</template>
<a-button @click="sureChange" type="primary" style="margin-top: 115px">确定</a-button>
</draggable>
<br/>
<br />
<a-row>
<a-col :span="12">
<p>拖拽前json数据</p>
<!-- 这个改成v-modal后无法按照展开的json样式进行展示-->
<textarea rows="25" style="width: 780px">{{ oldDateSource }}</textarea>
</a-col>
<a-col :span="12">
@@ -39,7 +39,7 @@
import moment from 'moment'
import { pushIfNotExist, randomNumber, randomUUID } from '@/utils/util'
import { JVXETypes } from '@/components/jero/JVxeTable'
/* eslint-disable no-template-curly-in-string */
export default {
name: 'JVxeDemo1',
data () {
@@ -14,7 +14,7 @@
<script>
import { JVXETypes } from '@/components/jero/JVxeTable'
/* eslint-disable no-template-curly-in-string */
export default {
name: 'JVxeDemo3',
data () {
@@ -10,16 +10,16 @@
@cancel="handleCancel">
<a-spin :spinning="confirmLoading">
<a-form-model ref="form" :label-col="labelCol" :wrapper-col="wrapperCol" :model="model" >
<a-form-model ref="form" :label-col="labelCol" :wrapper-col="wrapperCol" :model="model">
<!-- 主表单区域 -->
<a-row class="form-row" :gutter="0">
<a-col :lg="8">
<a-form-model-item label="订单号" prop="orderCode" :rules="[{ required: true, message: '请输入订单号!' }]">
<a-input placeholder="请输入订单号" v-model="model.orderCode"/>
<a-form-model-item label="订单号" prop="orderCode" :rules="[{ required: true, message: '请输入订单号!' }]">
<a-input placeholder="请输入订单号" v-model="model.orderCode" />
</a-form-model-item>
</a-col>
<a-col :lg="8">
<a-form-model-item label="订单类型">
<a-form-model-item label="订单类型">
<a-select placeholder="请选择订单类型" v-model="model.ctype">
<a-select-option value="1">国内订单</a-select-option>
<a-select-option value="2">国际订单</a-select-option>
@@ -27,20 +27,20 @@
</a-form-model-item>
</a-col>
<a-col :lg="8">
<a-form-model-item label="订单日期">
<a-date-picker showTime valueFormat="YYYY-MM-DD HH:mm:ss" style="width: 100%" v-model="model.orderDate"/>
<a-form-model-item label="订单日期">
<a-date-picker showTime valueFormat="YYYY-MM-DD HH:mm:ss" style="width: 100%" v-model="model.orderDate" />
</a-form-model-item>
</a-col>
</a-row>
<a-row class="form-row" :gutter="0">
<a-col :lg="8">
<a-form-model-item label="订单金额">
<a-input-number placeholder="请输入订单金额" style="width: 100%" v-model="model.orderMoney"/>
<a-form-model-item label="订单金额">
<a-input-number placeholder="请输入订单金额" style="width: 100%" v-model="model.orderMoney" />
</a-form-model-item>
</a-col>
<a-col :lg="8">
<a-form-model-item label="订单备注">
<a-input placeholder="请输入订单备注" v-model="model.content"/>
<a-form-model-item label="订单备注">
<a-input placeholder="请输入订单备注" v-model="model.content" />
</a-form-model-item>
</a-col>
</a-row>
@@ -59,7 +59,7 @@
:loading="table1.loading"
:dataSource="table1.dataSource"
:columns="table1.columns"
style="margin-top: 8px;"/>
style="margin-top: 8px;" />
</a-tab-pane>
@@ -74,7 +74,7 @@
:loading="table2.loading"
:dataSource="table2.dataSource"
:columns="table2.columns"
style="margin-top: 8px;"/>
style="margin-top: 8px;" />
</a-tab-pane>
</a-tabs>
@@ -87,7 +87,7 @@
import { VALIDATE_FAILED, getRefPromise, validateFormModelAndTables } from '@/components/jero/JVxeTable/utils/vxeUtils'
import { httpAction, getAction } from '@/api/manage'
import { JVXETypes } from '@/components/jero/JVxeTable'
/* eslint-disable no-template-curly-in-string */
export default {
name: 'jeroOrderModalForJvexTable',
data () {
@@ -279,7 +279,8 @@ export default {
},
/** 发起新增或修改的请求 */
requestAddOrEdit (formData) {
let url = this.url.add; let method = 'post'
let url = this.url.add
let method = 'post'
if (this.model.id) {
url = this.url.edit
method = 'put'
+1 -1
View File
@@ -595,7 +595,7 @@ export default {
},
computed: {
nameList: function () {
let names = []
const names = []
for (let a = 0; a < this.selectList.length; a++) {
names.push(this.selectList[a].name)
}
+1 -1
View File
@@ -143,7 +143,7 @@ export default {
newArr.point = point
arrs[i].push(newArr)
}
let newDataSource = []
const newDataSource = []
for (let i = 0; i < arrs.length; i++) {
const arr = arrs[i]
for (const j in arr) {
@@ -106,7 +106,7 @@ export default {
validate (rule, value, callback) {
const regex = /^user-(.*)$/
if (!regex.test(value)) {
callback('需要以 user- 开头')
callback(new Error('需要以 user- 开头'))
}
callback()
}
@@ -38,6 +38,7 @@ import { FormTypes } from '@/utils/JEditableTableUtil'
import { randomUUID, randomNumber } from '@/utils/util'
import JEditableTable from '@/components/jero/JEditableTable'
/* eslint-disable no-template-curly-in-string */
export default {
name: 'DefaultTable',
components: { JEditableTable },
@@ -234,6 +235,7 @@ export default {
/** 获取值,忽略表单验证 */
handleTableGet () {
this.$refs.editableTable.getValues((error, values) => {
console.log('error:', error)
console.log('values:', values)
}, false)
console.log('deleteIds:', this.$refs.editableTable.getDeleteIds())
@@ -87,7 +87,7 @@
import { VALIDATE_FAILED, getRefPromise, validateFormModelAndTables } from '@/components/jero/JVxeTable/utils/vxeUtils'
import { httpAction, getAction } from '@/api/manage'
import { JVXETypes } from '@/components/jero/JVxeTable'
/* eslint-disable no-template-curly-in-string */
export default {
name: 'JeroOrderModalForJvexTable',
data () {
@@ -26,6 +26,7 @@ export default {
type: FormTypes.select,
width: '240px',
options: [],
// eslint-disable-next-line no-template-curly-in-string
placeholder: '请选择${title}'
},
{
@@ -34,6 +35,7 @@ export default {
type: FormTypes.select,
width: '240px',
options: [],
// eslint-disable-next-line no-template-curly-in-string
placeholder: '请选择${title}'
},
{
@@ -42,6 +44,7 @@ export default {
type: FormTypes.select,
width: '240px',
options: [],
// eslint-disable-next-line no-template-curly-in-string
placeholder: '请选择${title}'
}
],
@@ -86,7 +86,7 @@
</a-col>
<a-col :span="2">
<a-form-model-item>
<a-icon type="minus-circle" @click="delRowCustom(index)" style="fontSize :20px"/>
<a-icon type="minus-circle" @click="delRowCustom(index)" style="font-size :20px"/>
</a-form-model-item>
</a-col>
</a-row>
@@ -121,7 +121,7 @@
</a-col>
<a-col :span="6">
<a-form-model-item>
<a-icon type="minus-circle" @click="delRowTicket(index)" style="fontSize :20px"/>
<a-icon type="minus-circle" @click="delRowTicket(index)" style="font-size :20px"/>
</a-form-model-item>
</a-col>
</a-row>
@@ -86,6 +86,7 @@ import JEditableTable from '@/components/jero/JEditableTable'
import { FormTypes, VALIDATE_NO_PASSED, getRefPromise, validateFormModelAndTables } from '@/utils/JEditableTableUtil'
import { httpAction, getAction } from '@/api/manage'
/* eslint-disable no-template-curly-in-string */
export default {
name: 'JeroOrderModalForJEditableTable',
components: {
+2 -2
View File
@@ -202,7 +202,7 @@ import DashChartDemo from '@/components/chart/DashChartDemo'
import BarMultid from '@/components/chart/BarMultid'
import Bar from '@/components/chart/Bar'
import { getAction } from '@/api/manage'
import { filterObj } from '@/utils/util'
import { filterObj, evil } from '@/utils/util'
import moment from 'dayjs'
const rankList = []
@@ -448,7 +448,7 @@ export default {
return filterObj(param)
},
formatRespectiveHoldCert (value) {
return (value + '' === '1' || eval(value)) ? '是' : '否'
return (value + '' === '1' || evil(value)) ? '是' : '否'
},
formatCertFormat (value) {
if (value + '' === '1') {
@@ -184,7 +184,7 @@ export default {
method = 'put'
}
const formData = Object.assign({}, this.model)
if (this.fileList != '') {
if (this.fileList && this.fileList.length > 0) {
formData.idcardPic = this.fileList
} else {
formData.idcardPic = ''
+1 -2
View File
@@ -194,8 +194,7 @@ export default {
UserRoleModal,
SelectUserModal,
RoleModal,
UserModal,
moment
UserModal
},
data () {
return {
@@ -162,6 +162,7 @@ export default {
width: '20%',
type: FormTypes.input,
validateRules: [
// eslint-disable-next-line no-template-curly-in-string
{ required: true, message: '${title}不能为空' }
]
},
@@ -184,6 +185,7 @@ export default {
width: '15%',
type: FormTypes.inputNumber,
validateRules: [
// eslint-disable-next-line no-template-curly-in-string
{ required: true, message: '${title}不能为空' },
{ pattern: /^[1-9]\d*$/, message: '请输入零以上的正整数' }
]
@@ -204,6 +206,7 @@ export default {
width: '20%',
type: FormTypes.input,
validateRules: [
// eslint-disable-next-line no-template-curly-in-string
{ required: true, message: '${title}不能为空' }
]
},
@@ -47,14 +47,12 @@ import { httpAction, getAction } from '@/api/manage'
// import { validateDuplicateValue } from '@/utils/util'
import JFormContainer from '@/components/jero/JFormContainer'
import JDate from '@/components/jero/JDate'
import JDictSelectTag from '@/components/dict/JDictSelectTag'
export default {
name: 'TenantForm',
components: {
JFormContainer,
JDate,
JDictSelectTag
JDate
},
props: {
formData: {