isun
Version:
快速创建vue项目
130 lines (115 loc) • 5.78 kB
JavaScript
import { PageBuilder, builder, getBody, addData, updateData } from '../util'
import { contract } from '../entity'
import Mock from 'mockjs'
import { sortBy } from 'lodash'
const releaseIdList = ['005', '006', '007']
const contractTypeList = ['DataSpecification', 'InfoRecord']
const userAuthList = ['0,1', '1,3,4', '0,1,2,3,4']
const nodeAuthList = ['0', '1', '0,1']
const ruleTypeList = ['字符串', '整数', '#jpg', '#png', 'zip']
// const ruleIdList = [0,1, '规 '规 '规则-2', '规则-3', '规则-4', '规则-5', '规则-6', '规则-7', '规则-8', '规则-9']
const ruleIdList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
export const contractList = Mock.mock({
'data|100': [
{
...contract,
'id|+1': 0, // 合约Id
contractName: '合约' + '@ctitle(3,12)', // 合约名称
releaseName: '发布方' + '@ctitle(2,5)', // 发布方
'releaseId|1': releaseIdList, // 发布方Id
'releaseAvatar|1': '@image("200x100")', // 发布方头像
version: '1.2', // 版本号
'contractType|1': contractTypeList, // 合约类型 DataSpecification(数据规范) InfoRecord (资料备案)
contractDesc: '合约描述' + '@ctitle(20,50)', // 合约描述
label: '标签', // 标签
'userAuth|1': userAuthList, // 合约用户授权 参照字典表 allianceUsers,用英文逗号隔开
'isSecretData|1': true, // 节点加密共享 true | false
'nodeAuth|1': nodeAuthList, // 节点授权 参照字典表 allianceNode,用英文逗号隔开
'ruleList|1-10': // 合约规则 string型,前端自动编写规则
[
{
'id|+1': ruleIdList, // 规则Id
title: '标题' + '@ctitle(0,5)', // 名称
'type|+1': ruleTypeList, // 类型
length: '@integer(0,100)', // 字段长度/ 允许资料数量
checkRule: '', // 校验规则 (正则)
'isNot|1': true, // 是否可以为空
desc: '描述' + '@ctitle(0,30)', // 字段描述
'isCheck|1': true // 是否需要节点审核
}
],
'isConnect|1': true, // 是否链接
blockHeight: '@integer(1000,1000000)', // 区块高度
involvesUser: '@integer(1,400)', // 涉及用户
transactions: '@integer(1000,1000000)', // 交易次数
'status|1': '@integer(0,2)', // 0代表暂存 1代表已发布 2代表已经生效
'signList|1-6': [
{
'id|+1': 0, // 签署用户ID
contractId: 0, // 关联的合约ID
avatar: '@image("200x100", "#00405d", "#FFF", "pic")', // 签署用户头像
name: '节点' + '@ctitle(3,10)', // 签署用户名称
signDate: '@datetime("yyyy/mm/dd HH:mm:ss")' // 签署时间
}
],
publishTime: '@datetime("yyyy/mm/dd HH:mm:ss")'
}
]
})
const contractSearch = (options) => {
const body = getBody(options)
const { current, size, releaseId, signedId, notSignedId, status, storage, keyWord } = body
let _data = contractList.data
if (releaseId !== '' && releaseId !== null && releaseId !== undefined) {
_data = sortBy(_data.filter((d) => d.releaseId === releaseId && d.status !== 0), (d) => d.sortNo)
}
if (storage !== '' && storage !== null && storage !== undefined) {
_data = sortBy(_data.filter((d) => d.releaseId === storage && d.status === 0), (d) => d.sortNo)
}
if (signedId !== '' && signedId !== null && signedId !== undefined) {
_data = sortBy(_data.filter((d) => JSON.stringify(d.signList).includes(signedId) && d.status !== 0), (d) => d.sortNo)
}
if (notSignedId !== '' && notSignedId !== null && notSignedId !== undefined) {
_data = sortBy(_data.filter((d) => JSON.stringify(d.signList).indexOf(notSignedId) !== -1 && d.status !== 2), (d) => d.sortNo)
}
if (status !== '' && status !== null && status !== undefined) {
_data = sortBy(_data.filter((d) => d.status === status), (d) => d.sortNo)
}
if (keyWord !== '' && keyWord !== null && keyWord !== undefined) {
_data = sortBy(_data.filter((d) => d.contractName.indexOf(keyWord) !== -1), (d) => d.sortNo)
}
return PageBuilder(_data, current, size)
}
const contractfindById = (options) => {
const body = getBody(options)
const { id } = body
let _data = contractList.data
if (id !== '' && id !== null && id !== undefined) {
_data = sortBy(_data.filter((d) => d.id === id), (d) => d.sortNo)
}
if (_data.length === 0) {
return builder(null, '此ID无数据', 400)
} else {
return builder(_data[0])
}
}
const contractHandle = (options) => {
const body = getBody(options)
let _data
const { id } = body
if (id !== '' && id !== null && id !== undefined) {
_data = { ...body }
contractList.data = updateData(contractList.data, body.id, _data)
return builder(_data, '更新成功.')
} else {
_data = Mock.mock({
'id|+1': 100 //
})
_data = { ..._data, ...body }
contractList.data = addData(contractList.data, _data)
return builder(_data, '添加成功.')
}
}
Mock.mock(/\/api\/contract\/list/, 'post', contractSearch)
Mock.mock(/\/api\/contract\/findById/, 'post', contractfindById)
Mock.mock(/\/api\/contract\/handle/, 'post', contractHandle)