<template>
|
<basic-container style="height: 350px;">
|
|
<!-- 编码规则信息展示区域 -->
|
<basic-container>
|
<p style="margin-top: -12px; margin-bottom: 4px; font-weight: 570; font-size: 19px; color: #0e2d5f;">编码规则</p>
|
<avue-crud :option="optionRule"
|
:table-loading="loading"
|
:data="data"
|
:page.sync="page"
|
:permission="permissionList"
|
v-model="ruleForm"
|
ref="crud"
|
:before-open="beforeOpen"
|
@row-click="codeRuleRowClick"
|
@row-update="rowUpdate"
|
@row-save="rowSave"
|
@search-change="searchChange"
|
@search-reset="searchReset"
|
@selection-change="selectionChange"
|
@current-change="currentChange"
|
@size-change="sizeChange"
|
@refresh-change="refreshChange"
|
@on-load="onLoad">
|
<!-- 表格内操作按钮 -->
|
<template slot="menu" slot-scope="scope">
|
<el-button type="text"
|
size="small"
|
icon="el-icon-edit"
|
v-show="scope.row.lcStatus=='Editing' ? true:false"
|
plain
|
@click="openEdit(scope.row)">编 辑
|
</el-button>
|
<el-button type="text"
|
size="small"
|
icon="el-icon-position"
|
v-show="scope.row.lcStatus=='Editing' ? true:false"
|
plain
|
@click="enableOrDeactivatse(scope.row.oid,'release')">发 布
|
</el-button>
|
<el-button type="text"
|
size="small"
|
v-show="scope.row.lcStatus=='Released' ? true:false"
|
icon="el-icon-video-pause"
|
plain
|
@click="enableOrDeactivatse(scope.row.oid,'disable')">停 用
|
</el-button>
|
<el-button type="text"
|
size="small"
|
v-show="scope.row.lcStatus=='Disabled' ? true:false"
|
icon="el-icon-video-play"
|
plain
|
@click="enableOrDeactivatse(scope.row.oid,'enable')">启 用
|
</el-button>
|
</template>
|
<!-- 表格左上方按钮区域 -->
|
<template slot="menuLeft" slot-scope="scope">
|
<el-button type="danger"
|
size="small"
|
icon="el-icon-delete"
|
plain
|
@click="handleDelete">删 除
|
</el-button>
|
<el-button size="small"
|
icon="icon-kelong"
|
plain
|
@click="cloneCodeSetting">克 隆
|
</el-button>
|
<el-button size="small"
|
icon="icon-lianjiekelong"
|
style="font-size: 12px;"
|
plain
|
@click="handleDelete">从其他规则中克隆码段
|
</el-button>
|
<el-button size="small"
|
icon="el-icon-s-help"
|
plain
|
@click="handleRange">使用范围
|
</el-button>
|
<el-button size="small"
|
icon="icon-qingkong"
|
plain
|
@click="handleDelete">清空码值
|
</el-button>
|
</template>
|
</avue-crud>
|
</basic-container>
|
|
<!-- 编码规则相关对话框 -->
|
<el-dialog title="编码规则使用范围"
|
append-to-body
|
:visible.sync="codeRangeSettingBox"
|
width="800px">
|
<avue-crud
|
:option="dialogeOption"
|
:table-loading="dialogLoading"
|
:data="useRangeData"
|
@refresh-change="refreshUseRangeChange">
|
</avue-crud>
|
</el-dialog>
|
<!-- 编码规则相关克隆对话框 -->
|
<el-dialog title="克隆编码规则"
|
append-to-body
|
:visible.sync="cloneSettingBox"
|
width="800px">
|
<clone-code></clone-code>
|
</el-dialog>
|
|
<!-- 基础码段展示区域 -->
|
<basic-container>
|
<p style="margin-top: -12px; margin-bottom: 4px; font-weight: 570; font-size: 19px; color: #0e2d5f;">码段管理</p>
|
<avue-crud :option="optionBasic"
|
ref="crudBasic"
|
:table-loading="loadingBasic"
|
:data="basicData"
|
:permission="permissionList"
|
@selection-change="selectionBasicChange"
|
@refresh-change="refreshChangeBasicSec">
|
|
<!-- 基础码段表格内操作按钮 -->
|
<template slot="menu" slot-scope="scope">
|
<el-button
|
type="text"
|
size="small"
|
icon="el-icon-view"
|
v-show="currentRuleLcStatus != 'Editing'"
|
plain
|
@click="openBasicDialog('view',scope.row)">查看
|
</el-button>
|
<el-button
|
type="text"
|
size="small"
|
icon="el-icon-edit"
|
v-show="currentRuleLcStatus === 'Editing'"
|
plain
|
@click="openBasicDialog('edit',scope.row)">编辑
|
</el-button>
|
<el-button
|
type="text"
|
size="small"
|
icon="el-icon-setting"
|
v-show="scope.row.secType === 'codeclassifysec' || scope.row.secType == 'codefixedsec'"
|
plain
|
@click="openBasicSecCodeValueMgr(scope.row)">码值管理
|
</el-button>
|
<el-button
|
type="text"
|
size="small"
|
icon="el-icon-arrow-up"
|
v-show="scope.row.orderNum > 1"
|
plain
|
@click="upOrderNum(scope.row)">上移
|
</el-button>
|
<el-button
|
type="text"
|
size="small"
|
icon="el-icon-arrow-down"
|
plain
|
@click="downOrderNum(scope.row)">下移
|
</el-button>
|
</template>
|
|
<!-- 基础码段表格左上方按钮区域 -->
|
<template slot="menuLeft" slot-scope="scope">
|
<el-button type="primary"
|
size="small"
|
icon="el-icon-plus"
|
@click="addBasicCodeSec">新 增
|
</el-button>
|
<el-button type="danger"
|
size="small"
|
icon="el-icon-delete"
|
plain
|
@click="deleteBasicCode(scope.row)">删 除
|
</el-button>
|
</template>
|
|
</avue-crud>
|
</basic-container>
|
|
<!-- 码段码值管理对话框 -->
|
<el-dialog title="码段码值管理"
|
:visible.sync="isShowBasicSecCodeValueMgr"
|
:width="isShowFixedForm ? '68vw':'50vw'"
|
append-to-body
|
style="height: 116vh; margin-top: -10vh;"
|
@close="clearFixedOrClassifyForm('close')"
|
destroy-on-close>
|
<!-- 分类码段码值管理 -->
|
<el-row v-show="!isShowFixedForm">
|
<el-col :span="11">
|
<basic-container>
|
<div class="box" style="height:65vh; margin-bottom:-40px">
|
<el-scrollbar style="border-bottom-right-radius:8px ">
|
<basic-container>
|
<div class="abox" style="height:54vh">
|
<avue-tree
|
:data="attrClassifyTreeData"
|
:option="treeOption"
|
@node-click="nodeClick"
|
style="overflow-y: auto; height: 54vh"/>
|
</div>
|
</basic-container>
|
</el-scrollbar>
|
</div>
|
<div style="margin-top:20px; display: flex; align-items:center; justify-content:center;">
|
<el-button size="mini" type="primary" icon="el-icon-arrow-up" class="button">上移</el-button>
|
<el-button size="mini" type="primary" icon="el-icon-arrow-down" class="button">下移</el-button>
|
</div>
|
</basic-container>
|
</el-col>
|
<el-col :span="13">
|
<basic-container>
|
<div class="box" style="height:65vh; margin-bottom:-40px">
|
<el-form>
|
<el-form-item label="码值:" :label-width="50" required>
|
<el-input style="width: 18vw" v-model="codeClassifyForm.id"></el-input>
|
</el-form-item >
|
<el-form-item label="名称:" :label-width="50" required>
|
<el-input style="width: 18vw" v-model="codeClassifyForm.name"></el-input>
|
</el-form-item>
|
</el-form>
|
</div>
|
<div style="margin-top:20px; display: flex; align-items:center; justify-content:center;">
|
<el-button size="mini" type="primary" icon="el-icon-circle-plus" class="button">添加</el-button>
|
<el-button size="mini" type="success" plain icon="el-icon-edit-outline" class="button">修改</el-button>
|
<el-button size="mini" type="danger" icon="el-icon-close" class="button">删除</el-button>
|
<el-button size="mini" type="warning" plain icon="el-icon-close" class="button">取消</el-button>
|
</div>
|
</basic-container>
|
</el-col>
|
</el-row>
|
<!-- 固定码段码值管理 -->
|
<el-row v-show="isShowFixedForm">
|
<el-col :span="15">
|
<basic-container>
|
<div class="box fixedbox" style="height:65vh; margin-bottom:-40px">
|
<avue-crud
|
ref="crudFixedValue"
|
:data="fixedValueData"
|
:option="fixedValueOption"
|
:table-loading="fixedValueOptionLoading"
|
@row-click="selectedCodeValueRow">
|
<!-- 表格内按钮配置 -->
|
<template slot="menu" slot-scope="scope">
|
<el-button size="mini" type="text" icon="el-icon-arrow-up" @click="codeFixedValueOpetion('up',scope.row)">上移</el-button>
|
<el-button size="mini" type="text" icon="el-icon-arrow-down" @click="codeFixedValueOpetion('down',scope.row)">下移</el-button>
|
<el-button size="mini" type="text"icon="el-icon-minus" @click="codeFixedValueOpetion('remove',scope.row)">移除</el-button>
|
</template>
|
</avue-crud>
|
</div>
|
<div style="margin-top:20px;">
|
<el-button size="mini" type="primary" icon="el-icon-success" class="button" @click="saveCodeFixedValueOption">保存</el-button>
|
</div>
|
</basic-container>
|
</el-col>
|
<el-col :span="9">
|
<basic-container>
|
<div class="box" style="height: 65vh; margin-bottom:-40px; overflow:hidden;" >
|
<div style="overflow-y:auto;height: 60vh;">
|
<el-form>
|
<el-form-item label="码值:" label-width="54px" required>
|
<el-input style="width: 19.5vw" v-model="codeFixdForm.id"></el-input>
|
</el-form-item >
|
<el-form-item label="描述:">
|
<el-input type="textarea" style="width: 20vw; "v-model="codeFixdForm.description"></el-input>
|
</el-form-item>
|
</el-form>
|
</div>
|
</div>
|
<div style="margin-top:20px; display: flex; align-items:center; justify-content:center;">
|
<el-button :disabled="selectedFixedOrCodeclassifyValue!=''" size="mini" type="primary" icon="el-icon-circle-plus" class="button" @click="addCodeSecValue('codefixedsec')">添加</el-button>
|
<el-button :disabled="selectedFixedOrCodeclassifyValue==''" size="mini" type="success" plain plain icon="el-icon-edit-outline" class="button" @click="editCodeSecValue('codefixedsec')">修改</el-button>
|
<el-button :disabled="selectedFixedOrCodeclassifyValue==''" size="mini" type="danger" icon="el-icon-close" class="button" @click="delCodeSecValue('codefixedsec')">删除</el-button>
|
<el-button size="mini" type="warning" plain icon="el-icon-close" class="button" @click = "clearFixedOrClassifyForm('codefixedsec')">取消</el-button>
|
</div>
|
</basic-container>
|
</el-col>
|
</el-row>
|
</el-dialog>
|
|
<!-- 基础码段新增相关对话框 -->
|
<el-dialog :title="basicSecDialogTitle"
|
:visible.sync="addBasicCodeSettingBox"
|
width="60vw"
|
append-to-body
|
style="height: 115vh; margin-top: -13vh; overflow: hidden"
|
destroy-on-close
|
@close="clearBasicAddForm">
|
|
|
<!-- 第一层对话框,添加码段信息对话框中的内容 -->
|
<div class="total" style="overflow-y: auto; height: 70vh">
|
<el-form :model="form" :rules="formRules" ref="form" >
|
<span class="left">
|
<el-form-item label="码段编号:" :label-width="leftFormLabelWidth" required prop="id">
|
<el-input v-model="form.id" :readonly="basicSecOnlyRead"></el-input>
|
</el-form-item>
|
|
<el-form-item label="码段名称:" :label-width="leftFormLabelWidth" required prop="name">
|
<el-input v-model="form.name" :readonly="basicSecOnlyRead"></el-input>
|
</el-form-item>
|
<el-form-item label="码段类型" :label-width="leftFormLabelWidth" required prop="secType">
|
<el-select v-model="form.secType" placeholder="请选择" @change="changeSectypeFormItems(null)" :disabled="basicSecOnlyRead">
|
<el-option
|
v-for="item in sectypeList"
|
:key="item.dictValue"
|
:label="item.dictValue"
|
:value="item.dictKey">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
|
<el-form-item label="描述:" :label-width="leftFormLabelWidth">
|
<el-input type="textarea" v-model="form.description" :readonly="basicSecOnlyRead"></el-input>
|
</el-form-item>
|
|
<el-form-item label="是否流水依赖:" :label-width="leftFormLabelWidth">
|
<el-switch v-model="form.serialDependFlag" :disabled="basicSecOnlyRead"></el-switch>
|
<el-input-number v-show="form.serialDependFlag" v-model="form.serialDependOrder" controls-position="right" :readonly="basicSecOnlyRead"></el-input-number>
|
</el-form-item>
|
|
<el-form-item label="是否为空:" :label-width="leftFormLabelWidth">
|
<el-switch v-model="form.nullableFlag" :disabled="basicSecOnlyRead"></el-switch>
|
</el-form-item>
|
</span>
|
<el-divider direction="vertical"></el-divider>
|
<span class="right">
|
<!-- 固定码段 -->
|
<div v-show="form.secType==='codefixedsec' ? true:false">
|
<el-form-item label="码段长度类型:" :label-width="rightFormLabelWidth" required prop="codeSecLengthType">
|
<el-select v-model="form.codeSecLengthType" placeholder="请选择" :disabled="basicSecOnlyRead">
|
<el-option
|
v-for="item in codeSecLengthType"
|
:key="item.dictValue"
|
:label="item.dictValue"
|
:value="item.dictKey">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required prop="codeSecLength">
|
<el-input v-model="form.codeSecLength" :readonly="basicSecOnlyRead"></el-input>
|
</el-form-item>
|
</div>
|
<!-- 属性码段 -->
|
<div v-show="form.secType==='codeattrsec' ? true:false">
|
<el-form-item label="属性:" :label-width="rightFormLabelWidth" required prop="referAttributeName">
|
<el-input
|
placeholder="请选择"
|
prefix-icon="el-icon-search"
|
readonly="true"
|
v-model="form.referAttributeName"
|
@focus="openAttrSelectOrGetValue('attr')"
|
:disabled="basicSecOnlyRead">
|
<i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('attr')" style="cursor: pointer;"></i>
|
</el-input>
|
</el-form-item>
|
<el-form-item label="属性所在分类:" :label-width="rightFormLabelWidth">
|
<el-input
|
v-model="form.referCodeClassifyOidName"
|
disabled>
|
</el-input>
|
</el-form-item>
|
<el-form-item label="取值规则:" :label-width="rightFormLabelWidth">
|
<el-input
|
placeholder="请选择"
|
prefix-icon="el-icon-search"
|
readonly="true"
|
v-model="form.getValueClass"
|
:disabled="basicSecOnlyRead"
|
@focus="openAttrSelectOrGetValue('value')">
|
<i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('value')" style="margin-right: 5px;cursor: pointer;"></i>
|
</el-input>
|
</el-form-item>
|
</div>
|
<!-- 流水码段 -->
|
<div v-show="form.secType==='codeserialsec' ? true:false">
|
<el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required prop="codeSecLength">
|
<el-input v-model="form.codeSecLength" :readonly="basicSecOnlyRead"></el-input>
|
</el-form-item>
|
<el-form-item label="流水号的起始值:" :label-width="rightFormLabelWidth" prop="serialStart">
|
<el-input v-model="form.serialStart" :readonly="basicSecOnlyRead"></el-input>
|
</el-form-item>
|
<el-form-item label="流水的步长:" :label-width="rightFormLabelWidth" prop="serialStep">
|
<el-input v-model="form.serialStep" :readonly="basicSecOnlyRead"></el-input>
|
</el-form-item>
|
<el-form-item label="编码补位方式:" :label-width="rightFormLabelWidth" required prop="codeFillType">
|
<el-select v-model="form.codeFillType" placeholder="请选择" :disabled="basicSecOnlyRead">
|
<el-option label="左补位" value="codeattrsec"
|
v-for="item in codeFillType"
|
:key="item.dictValue"
|
:label="item.dictValue"
|
:value="item.dictKey">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="补位时的字符:" :label-width="rightFormLabelWidth" prop="codeFillSeparatorSelect">
|
<el-select v-model="form.codeFillSeparatorSelect" filterable placeholder="请选择" :disabled="basicSecOnlyRead">
|
<el-option
|
v-for="item in codeFillSeparator"
|
:key="item.dictValue"
|
:label="item.dictValue"
|
:value="item.dictKey">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="填充长度:" :label-width="rightFormLabelWidth" required prop="codeFillLength">
|
<el-input v-model="form.codeFillLength" :readonly="basicSecOnlyRead"></el-input>
|
</el-form-item>
|
<el-form-item label="流水上限:" :label-width="rightFormLabelWidth" required prop="codeFillLimit">
|
<el-input v-model="form.codeFillLimit" :readonly="basicSecOnlyRead"></el-input>
|
</el-form-item>
|
<el-form-item label="流水是否补码:" :label-width="rightFormLabelWidth" required>
|
<el-switch v-model="form.codeFillFlag" :disabled="basicSecOnlyRead"></el-switch>
|
</el-form-item>
|
<el-form-item label="自定义的流水算法:" :label-width="rightFormLabelWidth">
|
<el-input v-model="form.customCodeSerialClass" :readonly="basicSecOnlyRead"></el-input>
|
</el-form-item>
|
</div>
|
<!-- 层级码段 -->
|
<div v-show="form.secType==='codelevelsec' ? true:false">
|
<el-form-item label="层级类型:" :label-width="rightFormLabelWidth" required prop="codeLevelType">
|
<el-select v-model="form.codeLevelType" placeholder="请选择" :disabled="basicSecOnlyRead">
|
<el-option
|
v-for="item in codeLevelType"
|
:key="item.dictValue"
|
:label="item.dictValue"
|
:value="item.dictKey">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="层级的值:" :label-width="rightFormLabelWidth" prop="codeLevelValue">
|
<el-input v-model="form.codeLevelValue" :readonly="basicSecOnlyRead"></el-input>
|
</el-form-item>
|
<el-form-item label="字符截取类型:" :label-width="rightFormLabelWidth" required prop="valueCutType">
|
<el-select v-model="form.valueCutType" placeholder="请选择" :disabled="basicSecOnlyRead">
|
<el-option
|
v-for="item in codeCutType"
|
:key="item.dictValue"
|
:label="item.dictValue"
|
:value="item.dictKey">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="取值类型:" :label-width="rightFormLabelWidth">
|
<el-select v-model="form.codeGetValueType" placeholder="请选择" :disabled="basicSecOnlyRead">
|
<el-option
|
v-for="item in codeGetValueType"
|
:key="item.dictValue"
|
:label="item.dictValue"
|
:value="item.dictKey">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</div>
|
<!-- 引用码段 -->
|
<div v-show="form.secType==='coderefersec' ? true:false">
|
<el-form-item label="参照引用的业务类型:" label-width="152px" required prop="referBtmId">
|
<el-input
|
placeholder="请选择"
|
prefix-icon="el-icon-search"
|
readonly="true"
|
v-model="form.referBtmId"
|
@focus="openAttrSelectOrGetValue('referBtmId')"
|
:disabled="basicSecOnlyRead">
|
<i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('referBtmId')" style="margin-right: 5px;cursor: pointer;"></i>
|
</el-input>
|
</el-form-item>
|
<el-form-item label="参照配置:" label-width="152px" required prop="referConfig">
|
<el-input
|
placeholder="请选择"
|
prefix-icon="el-icon-search"
|
readonly="true"
|
v-model="form.referConfig"
|
@focus="openAttrSelectOrGetValue('referConfig')"
|
:disabled="basicSecOnlyRead">
|
<i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('referConfig')" style="margin-right: 5px;cursor: pointer;"></i>
|
</el-input>
|
</el-form-item>
|
</div>
|
<!-- 日期码段 -->
|
<div v-show="form.secType==='codedatesec' ? true:false">
|
<el-form-item label="日期格式:" :label-width="rightFormLabelWidth" required prop="codeDateFormatStr">
|
<el-input v-model="form.codeDateFormatStr" :readonly="basicSecOnlyRead"></el-input>
|
</el-form-item>
|
</div>
|
<!-- 分类码段 -->
|
<div v-show="form.secType==='codeclassifysec' ? true:false">
|
<el-form-item label="码段长度类型:" :label-width="rightFormLabelWidth" required prop="codeSecLengthType">
|
<el-select v-model="form.codeSecLengthType" placeholder="请选择" :disabled="basicSecOnlyRead">
|
<el-option
|
v-for="item in codeSecLengthType"
|
:key="item.dictValue"
|
:label="item.dictValue"
|
:value="item.dictKey">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required prop="codeSecLength">
|
<el-input v-model="form.codeSecLength" :readonly="basicSecOnlyRead"></el-input>
|
</el-form-item>
|
<el-form-item label="是否自动分配分类值:" :label-width="rightFormLabelWidth">
|
<el-switch v-model="form.matchClassifyValueFlag" :disabled="basicSecOnlyRead"></el-switch>
|
</el-form-item>
|
<el-form-item label="父分类码段:" :label-width="rightFormLabelWidth">
|
<el-input
|
placeholder="请选择"
|
prefix-icon="el-icon-search"
|
readonly="true"
|
v-model="form.parentClassifySecOid"
|
@focus="openAttrSelectOrGetValue('parentClassifySecOid')"
|
:disabled="basicSecOnlyRead">
|
<i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('parentClassifySecOid')" style="margin-right: 5px;cursor: pointer;"></i>
|
</el-input>
|
</el-form-item>
|
</div>
|
<!-- 可变码段 -->
|
<div v-show="form.secType==='codevariablesec' ? true:false">
|
<el-form-item label="码段的长度:" :label-width="rightFormLabelWidth" required prop="codeSecLength">
|
<el-input v-model="form.codeSecLength" :readonly="basicSecOnlyRead"></el-input>
|
</el-form-item>
|
<el-form-item label="编码补位方式:" :label-width="rightFormLabelWidth" required prop="codeFillType">
|
<el-select v-model="form.codeFillType" placeholder="请选择" :disabled="basicSecOnlyRead">
|
<el-option
|
v-for="item in codeFillType"
|
:key="item.dictValue"
|
:label="item.dictValue"
|
:value="item.dictKey">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="补位时的字符:" :label-width="rightFormLabelWidth">
|
<el-select v-model="form.codeFillSeparatorSelect" placeholder="请选择" :disabled="basicSecOnlyRead">
|
<el-option
|
v-for="item in codeFillSeparator"
|
:key="item.dictValue"
|
:label="item.dictValue"
|
:value="item.dictKey">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</div>
|
</span>
|
</el-form>
|
</div>
|
<!-- 第一层对话框的按钮和,线条 -->
|
<el-divider direction="horizontal"></el-divider>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="addBasicCodeSettingBox = false" v-show="showbtn">取 消</el-button>
|
<el-button type="primary" @click="saveOrEditBasicCode" v-show="showbtn">保 存</el-button>
|
</div>
|
|
<!-- 第二层对话框,属性码段,属性选择弹窗 -->
|
<el-dialog title="为【属性】选取值"
|
append-to-body
|
:visible.sync="isShowSelectAttrOption"
|
width="78%"
|
style="height: 100%; margin-top: -8vh; overflow: hidden">
|
<div style="overflow-y: auto; height: 60vh">
|
<el-row>
|
<!-- 左侧主题库分类树 -->
|
<el-col :span="5">
|
<div class="box">
|
<el-scrollbar style="height: auto; border-bottom-right-radius:8px ">
|
<basic-container>
|
<div class="abox">
|
<avue-tree :data="attrClassifyTreeData" :option="treeOption" @node-click="nodeClick"/>
|
</div>
|
</basic-container>
|
</el-scrollbar>
|
</div>
|
</el-col>
|
|
<!-- 右侧表格显示区域 -->
|
<el-col span="19">
|
<basic-container>
|
<div class="bbox">
|
<avue-crud
|
:data="selectattrData"
|
:option="attrOption"
|
:table-loading="selectAttrOptionLoading"
|
@search-change="selectAttrOptionSearchChange"
|
@search-reset="searchAttrReset"
|
@selection-change="selectionChangeAttr">
|
</avue-crud>
|
</div>
|
</basic-container>
|
</el-col>
|
|
</el-row>
|
</div>
|
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="isShowSelectAttrOption = false">取 消</el-button>
|
<el-button type="primary" @click="selectedListClassifyLinkAttr">确 定</el-button>
|
</div>
|
|
</el-dialog>
|
|
<!-- 第二层对话框,属性码段,公式编辑框弹窗 -->
|
<el-dialog title="公式编辑框"
|
append-to-body
|
:visible.sync="isShowformulaEdit"
|
@close="closeFormulaEdit"
|
width="78%"
|
style="height: 150vh; margin-top: -13vh; overflow: hidden">
|
|
<div style="overflow-y: auto; height: 80vh">
|
<el-row>
|
<!-- 左侧公式内容 -->
|
<el-col :span="14" style="overflow: hidden">
|
<el-card class="box-card" style="height: 33vh; overflow-y: auto; overflow-x: auto;">
|
<div slot="header" class="clearfix">
|
<span style="font-size: medium;" >公式内容</span>
|
<el-button type="primary" size="mini" style="float: right;" @click="saveFormulaContent">确定</el-button>
|
<el-button type="warning" size="mini" style="margin-right: 10px; float: right;" @click="resetFormulaContent">清空内容</el-button>
|
</div>
|
<div class="text item">
|
<el-input type="textarea" :rows="5" style="width: 560px;" v-model="formulaContent"></el-input>
|
</div>
|
|
</el-card>
|
</el-col>
|
<!-- 右侧运算符 -->
|
<el-col :span="10">
|
<el-card class="box-card" style="height: 33vh; overflow-y: auto; overflow-x: auto;">
|
<div slot="header" class="clearfix">
|
<span style="font-size: medium;">运算符</span>
|
</div>
|
<div class="text item">
|
<div class="formula-editor">
|
<div class="one">
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'7'})">7</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'8'})">8</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'9'})">9</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'/'})">/</button><br/>
|
</div>
|
<div class="one">
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'4'})">4</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'5'})">5</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'6'})">6</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'*'})">*</button><br/>
|
</div>
|
<div class="one">
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'1'})">1</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'2'})">2</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'3'})">3</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'>'})">-</button><br/>
|
</div>
|
<div class="one">
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'0'})">0</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'00'})">00</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'.'})">.</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'+'})">+</button><br/>
|
</div>
|
<div class="one">
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'->'})">-></button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'=='})">==</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'('})">(</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':')'})">)</button><br/>
|
</div>
|
<div class="one">
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'<'})"><</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'>'})">></button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'<='})"><=</button>
|
<button class="formula-editor-btn-sm" @click="dbClickAddContent({'formula':'>='})">>=</button>
|
</div>
|
</div>
|
</div>
|
</el-card>
|
</el-col>
|
</el-row>
|
|
<el-row>
|
<!-- 左侧公式选择区域 -->
|
<el-col :span="14" style="overflow: hidden">
|
<el-card class="box-card" style="height: 40vh; overflow-y: auto; overflow-x: auto;">
|
<div slot="header" class="clearfix">
|
<span style="font-size: medium;">公式选择</span>
|
</div>
|
<div class="text item">
|
<el-tabs v-model="activeName">
|
|
<el-tab-pane label="常用" name="first">
|
<el-table
|
:data="commonFormulaTableData"
|
:show-header="false"
|
@row-dblclick="dbClickAddContent"
|
style="width: 100%">
|
<el-table-column
|
prop="formula"
|
width="300">
|
</el-table-column>
|
<el-table-column
|
prop="desc"
|
width="300">
|
</el-table-column>
|
</el-table>
|
</el-tab-pane>
|
|
<el-tab-pane label="财务" name="second">
|
<el-table
|
:data="financialFormulaTableData"
|
@row-dblclick="dbClickAddContent"
|
:show-header="false"
|
style="width: 100%">
|
<el-table-column
|
prop="formula"
|
width="300">
|
</el-table-column>
|
<el-table-column
|
prop="desc"
|
width="300">
|
</el-table-column>
|
</el-table>
|
</el-tab-pane>
|
|
<el-tab-pane label="日期" name="third">
|
<el-table
|
:data="dateFormulaTableData"
|
:show-header="false"
|
@row-dblclick="dbClickAddContent"
|
style="width: 100%">
|
<el-table-column
|
prop="formula"
|
width="300">
|
</el-table-column>
|
<el-table-column
|
prop="desc"
|
width="300">
|
</el-table-column>
|
</el-table>
|
</el-tab-pane>
|
|
<el-tab-pane label="数学" name="fourth">
|
<el-table
|
:data="mathFormulaTableData"
|
:show-header="false"
|
@row-dblclick="dbClickAddContent"
|
style="width: 100%">
|
<el-table-column
|
prop="formula"
|
width="300">
|
</el-table-column>
|
<el-table-column
|
prop="desc"
|
width="300">
|
</el-table-column>
|
</el-table>
|
</el-tab-pane>
|
|
<el-tab-pane label="其他" name="five">
|
<el-table
|
:data="otherFormulaTableData"
|
@row-dblclick="dbClickAddContent"
|
:show-header="false"
|
style="width: 100%">
|
<el-table-column
|
prop="formula"
|
width="300">
|
</el-table-column>
|
<el-table-column
|
prop="desc"
|
width="300">
|
</el-table-column>
|
</el-table>
|
</el-tab-pane>
|
|
</el-tabs>
|
|
</div>
|
</el-card>
|
</el-col>
|
<!-- 右侧变量选择区域 -->
|
<el-col :span="10" style="overflow: hidden">
|
<el-card class="box-card" style="height: 40vh; overflow-y: auto; overflow-x: auto;">
|
<div slot="header" class="clearfix">
|
<span style="font-size: medium;">变量</span>
|
</div>
|
<div class="text item">
|
<el-tabs v-model="activeNameAttr">
|
<el-tab-pane label="本场景变量" name="first">
|
<el-table
|
:data="thisSceneTableData"
|
@row-dblclick="dbClickAddContent"
|
:show-header="false"
|
style="width: 100%">
|
<el-table-column
|
prop="formula"
|
width="40">
|
</el-table-column>
|
<el-table-column
|
prop="desc"
|
width="100">
|
</el-table-column>
|
</el-table>
|
</el-tab-pane>
|
<el-tab-pane label="系统变量" name="second">
|
<el-table
|
:data="systemVariableTableData"
|
@row-dblclick="dbClickAddContent"
|
:show-header="false"
|
style="width: 100%">
|
<el-table-column
|
prop="formula"
|
width="150">
|
</el-table-column>
|
<el-table-column
|
prop="desc"
|
width="150">
|
</el-table-column>
|
</el-table>
|
</el-tab-pane>
|
</el-tabs>
|
</div>
|
</el-card>
|
</el-col>
|
</el-row>
|
</div>
|
|
</el-dialog>
|
|
<!-- 第二层对话框,为【父分类码段】选取值弹窗 -->
|
<el-dialog title="为【父分类码段】选取值"
|
append-to-body
|
:visible.sync="isShowParentClassifyOption"
|
width="65%"
|
style="height: 150vh; margin-top: -13vh;"
|
destroy-on-close>
|
|
<avue-crud
|
:page.sync="parentClassifyDataPage"
|
ref="crudParentClassify"
|
:option="parentClassifyParentOption"
|
:table-loading="classifyDialogLoading"
|
:data="parentClassifyData"
|
@refresh-change="refreshParentClassifyDataChange"
|
@search-change="parentClassifySearchChange"
|
@search-reset="parentClassifySearchReset"
|
@selection-change="parentClassifySelectionChange"
|
@current-change="parentClassifyCurrentChange"
|
@size-change="parentClassifySizeChange"
|
@on-load="parentClassifyOnLoad">
|
</avue-crud>
|
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="isShowParentClassifyOption = false">取 消</el-button>
|
<el-button type="primary" @click="saveSelectedParentClassify">保 存</el-button>
|
</div>
|
</el-dialog>
|
|
<!-- 第二层对话框,为【参照引用的业务类型】选取值弹窗 -->
|
<el-dialog title="为【参照引用的业务类型】选取值"
|
append-to-body
|
:visible.sync="isShowSelectReferBtmOption"
|
width="65%"
|
style="height: 150vh; margin-top: -13vh;"
|
destroy-on-close>
|
|
<avue-crud
|
:page.sync="referBtmDataPage"
|
ref="crudReferBtm"
|
:option="referBtmOption"
|
:table-loading="referBtmDialogLoading"
|
:data="referBtmData"
|
@refresh-change="referBtmDataChange"
|
@search-change="referBtmSearchChange"
|
@search-reset="referBtmSearchReset"
|
@selection-change="referBtmSelectionChange"
|
@current-change="referBtmCurrentChange"
|
@size-change="referBtmSizeChange"
|
@on-load="referBtmOnLoad">
|
</avue-crud>
|
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="isShowSelectReferBtmOption = false">取 消</el-button>
|
<el-button type="primary" @click="saveSelectedreferBtm">保 存</el-button>
|
</div>
|
</el-dialog>
|
|
</el-dialog>
|
|
</basic-container>
|
|
</template>
|
|
<script>
|
import { gridCodeRule, getDetail, add, update, remove, listUseRange, updateStatus } from "@/api/code/mdmrule";
|
import {
|
gridCodeBasicSec,
|
downOrderNum,
|
upOrderNum,
|
deleteData,
|
editSave,
|
getObjectByOid,
|
listDataByOids,
|
refDataGrid,
|
addSave,
|
refDataGridClassifySec,
|
} from "@/api/code/codebasic";
|
import { treeTopCodeClassify, listClassifyLinkAttr } from "@/api/code/codeclassify";
|
import { gridCodeFixedValue,addSaveCodeFixedValue,deleteCodeFixedValue,editCodeFixedValue,saveOrder } from "@/api/code/codeFixedValue";
|
import { treeCodeClassifyValue } from "@/api/code/codeClassifyValue";
|
import optionBasic from "@/const/code/codebasic";
|
import optionRule from "@/const/code/mdmrule";
|
import attrOption from "@/const/code/selectAttrOptionDialog";
|
import treeOption from "@/const/code/classifyTreeOptionDialog";
|
import parentClassifyParentOption from "@/const/code/parentClassifyParentOptionDialog";
|
import referBtmOption from "@/const/code/referBtmDialog";
|
import fixedValueOption from "@/const/code/fixedValueMgrDialog";
|
import { getDictionary } from "@/api/omd/dict";
|
import {mapGetters} from "vuex";
|
|
export default {
|
data() {
|
return {
|
ruleForm: {},
|
query: {},
|
loading: true,
|
currentCodeRuleOid: '',
|
page: {
|
pageSize: 10,
|
currentPage: 1,
|
total: 0
|
},
|
selectionList: [],
|
/*编码规则表格配置*/
|
optionRule: optionRule,
|
data: [],
|
currentRuleLcStatus: '',
|
/*克隆按钮对话框控制*/
|
cloneSettingBox: false,
|
optionBasic: optionBasic,
|
/*使用范围对话框显示控制*/
|
codeRangeSettingBox: false,
|
useRangeData: [],
|
dialogLoading: true,
|
/*使用范围对话框配置*/
|
dialogeOption: {
|
height: 'auto',
|
calcHeight: 30,
|
tip: false,
|
searchShow: false,
|
searchMenuSpan: 6,
|
border: true,
|
index: true,
|
disablePage:false,
|
viewBtn: false,
|
addBtn: false,
|
menu: false,
|
selection: false,
|
dialogClickModal: false,
|
align: 'center',
|
dialogWidth: 400,
|
column: [
|
{
|
label: "分类编号",
|
prop: "id",
|
span: 24
|
},
|
{
|
label: "分类名称",
|
prop: "name",
|
span: 24,
|
}
|
]
|
},
|
|
/*基础码段相关数据*/
|
basicData:[],
|
loadingBasic: true,
|
selectionBasicList: [],
|
addBasicCodeSettingBox: false,
|
showbtn: false, //基础码段新增是否显示基础码段
|
basicSecDialogTitle: '', //基础码段第一层对话框标题
|
basicSecOnlyRead: false, //新增基础码段表单是否只读
|
|
|
/** 码值管理相关数据 */
|
isShowBasicSecCodeValueMgr: false, //码段码值管理对话框
|
codefixedsecOrCodeclassifysecOid: '', //存放基础码段点击码值管理时的当前行id,用于保存码值时使用
|
selectedFixedOrCodeclassifyValue: '', //当前选中的码值数据
|
//固定码段码值表单
|
codeFixdForm: {
|
codeFixedSecOid: "",
|
description: "",
|
id: "",
|
},
|
isShowFixedForm: true, //true显示固定码段码值管理界面,false显示分类码段码值管理界面
|
fixedValueData: [], //固定码段码值表格数据
|
fixedValueOption: fixedValueOption, //表格配置
|
fixedValueOptionLoading: false, //加载表格的动态效果
|
fixedValueSelectList: [], //固定码段码值当前选中的行
|
|
//分类码段码值表单
|
codeClassifyForm: {
|
codeclassifysecoid: "",
|
id: "",
|
name: "",
|
oid: "",
|
parentclassifyvalueoid: "",
|
},
|
|
|
/* 为属性选取值窗口显示打开控制变量 */
|
isShowSelectAttrOption: false,
|
/* 为属性选值左侧树数据 */
|
attrClassifyTreeData: [],
|
treeOption: treeOption,
|
currentSelectTreeData: '', //当前选中的树节点
|
/* 为属性选值右侧表格相关数据 */
|
attrOption: attrOption,
|
selectattrData: [],
|
selectAttrOptionLoading: false,
|
selectionChangeAttrList: [],
|
|
/*公式编辑框对话框相关数据*/
|
isShowformulaEdit: false, //公式编辑框对话框显示控制
|
formulaContent: '', //公式编辑框内容
|
activeName: 'first', //当前活动的tab
|
activeNameAttr: 'first', //变量中的当前活动tab
|
//常用公式
|
commonFormulaTableData: [{
|
"formula": 'if(compare,trueResult,falseResult)',
|
"desc": '如果compare的表达式为true,则执行trueResult的表达式,否则执行flaseResult.例如if(3>2,2*(3+2),3/(2-4)),值等于10',
|
},
|
{
|
"formula": 'sum(douber1,douber2)',
|
"desc": '两个格式为douber的参数求和',
|
},
|
{
|
"formula": 'sub(douber1,douber2)',
|
"desc": '格式为douber的参数douber1减去格式为douber的参数douber2',
|
},
|
{
|
"formula": 'mul(douber1,douber2)',
|
"desc": '两个格式为douber的参数相乘',
|
},
|
{
|
"formula": 'div(douber1,douber2)',
|
"desc": '格式为douber的参数douber1除以格式为douber的参数douber2.当douber2等于0的时候,返回0;如果除不尽的时候保留10位小数',
|
},
|
{
|
"formula": 'mod(int,int)',
|
"desc": '求余数',
|
},
|
{
|
"formula": 'toInt(string)',
|
"desc": '转换为int格式',
|
},
|
{
|
"formula": 'doubleRound(string,count)',
|
"desc": '处理douber的小数位数,count表示小数位数',
|
},
|
{
|
"formula": 'zeroIfNull(value)',
|
"desc": '如果参数的值为null或者"",将返回0',
|
},
|
{
|
"formula": 'endsWith(string,str1)',
|
"desc": '字符串string是不是以str1结尾',
|
},
|
{
|
"formula": 'startsWith(string,str1)',
|
"desc": '字符串string是否以str1开头',
|
},
|
{
|
"formula": 'charAt(string,index)',
|
"desc": '获取字符串string中第index位置的字符,如果长度小于index,则返回',
|
},
|
{
|
"formula": 'equalsIgnoreCase(str1,str2)',
|
"desc": '字符串str1和字符串str2是否相等',
|
},
|
{
|
"formula": 'indexOf(str1,str2)',
|
"desc": '字符串str2在字符串str1中首次出现的位置',
|
},
|
{
|
"formula": 'isEmpty(str1)',
|
"desc": '参数str1是否为空,其中null这个字符串也表示为空',
|
},
|
{
|
"formula": 'lastIndexOf(str1,str2)',
|
"desc": '字符串str2在字符串str1中最后出现的位置',
|
},
|
{
|
"formula": 'leftStr(str1,index)',
|
"desc": '获取index位置左侧的所有字符',
|
},
|
{
|
"formula": 'rightStr(str1,str2)',
|
"desc": '获取index位置右侧的所有字符',
|
},
|
{
|
"formula": 'length(str1)',
|
"desc": '参数str1的长度',
|
},
|
{
|
"formula": 'mid(str1,start,end)',
|
"desc": '获取str1的从start到end直接的字符串,出现异常时返回',
|
},
|
{
|
"formula": 'tolowercase(str1)',
|
"desc": '将字符串str1转为小写',
|
},
|
{
|
"formula": 'touppercase(str1)',
|
"desc": '将字符串str1转为大写',
|
},
|
{
|
"formula": 'trimzero(str1)',
|
"desc": '去除字符串str1中的0',
|
},
|
{
|
"formula": 'MD5(str1)',
|
"desc": '将字符串进行MD5加密',
|
},
|
],
|
//财务公式
|
financialFormulaTableData: [{
|
"formula": 'toChinese(value)',
|
"desc": '将阿拉伯数字转为为汉字大写方式'
|
},
|
{
|
"formula": 'getChineseCurrency(value)',
|
"desc": '将阿拉伯数字转为为汉字金额大写方式,与tochiness的区别是这个会显示元、角、分'
|
},
|
{
|
"formula": 'setThmark(value)',
|
"desc": '为参数value设置千分位'
|
}
|
],
|
//日期公式
|
dateFormulaTableData: [{
|
"formula": 'compareDate(d1,d2)',
|
"desc": '对比参数d1,d2的大小。d1,d2为yyyy-MM-dd格式的日期字符串'
|
},
|
{
|
"formula": 'nowDate()',
|
"desc": '获取当前日期'
|
},
|
{
|
"formula": 'chinaDate(d1)',
|
"desc": '将时间转换为农历,d1是yyyy-MM-dd格式的日期字符串'
|
},
|
{
|
"formula": 'dateAdd(d1,count)',
|
"desc": '在d1的基础上添加count天,d1为yyyy-MM-dd HH:mm:ss格式的时间字符串'
|
},
|
{
|
"formula": 'dateBalanceYear(sourceDate,targetDate,false)',
|
"desc": '计算相差的年份,比如计算年龄,targetDate为""表示当前时间,第三个参数为true表示有多余的月份或者天数时,就加1;'
|
},
|
{
|
"formula": 'dateBalanceDay(sourceDate,targetDate)',
|
"desc": '计算相差的天数,targetDate为""表示当前时间'
|
},
|
{
|
"formula": 'dateformat(d1,format)<',
|
"desc": '将当前的日期(时间)字符串转为指定的字符串,如果format的内容有空格,请使用&代替'
|
},
|
{
|
"formula": 'nowDatetime()',
|
"desc": '获取当前日期和时间。格式为yyyy-MM-dd HH:mm:ss'
|
},
|
{
|
"formula": 'dayOf(d1)',
|
"desc": '获取格式为yyyy-MM-dd的日期的天数'
|
},
|
{
|
"formula": 'nowMon()',
|
"desc": '获取当前的月份,格式为MM'
|
},
|
{
|
"formula": 'monOf(d1)',
|
"desc": '获取日期d1的月份数'
|
},
|
{
|
"formula": 'nowTime()',
|
"desc": '获取当前时间,格式为HH:mm:ss'
|
},
|
{
|
"formula": 'nowYear()',
|
"desc": '获取年份,格式为yyyy'
|
},
|
{
|
"formula": 'yearOf()',
|
"desc": '获取时间d1的年份'
|
}
|
],
|
//数学公式
|
mathFormulaTableData: [{
|
"formula": 'abs(value)',
|
"desc": '求参数value的绝对值,value必须为数字格式'
|
},
|
{
|
"formula": 'acos(value)',
|
"desc": '求参数value的反余弦,value必须为数字格式'
|
},
|
{
|
"formula": 'asin(value)',
|
"desc": '求参数value的反正弦,value必须为数字格式'
|
},
|
{
|
"formula": 'atan(value)',
|
"desc": '求参数value的反正切,value必须为数字格式'
|
},
|
{
|
"formula": 'cbrt(value)',
|
"desc": '求参数value的立方根,value必须为数字格式'
|
},
|
{
|
"formula": 'ceil(value)',
|
"desc": '返回不大于参数value的最小整数,例如ceil(1.7)就等于2,value必须为数字格式'
|
},
|
{
|
"formula": 'cos(value)',
|
"desc": '求参数value的余弦值,value必须为数字格式'
|
},
|
{
|
"formula": 'cosh(value)',
|
"desc": '求参数value的双曲余弦值,value必须为数字格式'
|
},
|
{
|
"formula": 'exp(n)',
|
"desc": '欧拉数 e 的n次幂,n必须为数字格式'
|
},
|
{
|
"formula": 'floor(n)',
|
"desc": '欧拉数 e 的n次幂减1,n必须为数字格式'
|
},
|
{
|
"formula": 'log(value)',
|
"desc": '返回不小于参数value的最大整数,例如floor(1.7)等于1,n必须为数字格式'
|
},
|
{
|
"formula": 'log10(value)',
|
"desc": '自然对数,value必须为数字格式'
|
},
|
{
|
"formula": 'log1p(value)',
|
"desc": '计算底数为 10 的对数,value必须为数字格式'
|
},
|
{
|
"formula": 'random()',
|
"desc": '返回参数与 1 之和的自然对数,value必须为数字格式'
|
},
|
{
|
"formula": 'rint(value)',
|
"desc": '返回一个伪随机数,该值大于等于 0.0 且小于 1.0'
|
},
|
{
|
"formula": 'round(value)',
|
"desc": '返回其值最接近参数并且是整数的 double 值。如果两个整数的 double 值都同样接近,那么结果取偶数。特殊情况是:如果参数值是整数,那么结果就是该参数。如果参数是 NaN 或无穷大或正零或负零,那么结果与参数相同'
|
},
|
{
|
"formula": 'signum(value)',
|
"desc": '符号函数;如果参数为 0,则返回 0;如果参数大于 0, 则返回 1.0;如果参数小于 0,则返回 -1.0'
|
},
|
{
|
"formula": 'sin(value)',
|
"desc": '求参数value的正弦值,value必须为数字格式'
|
},
|
{
|
"formula": 'sinh(value)',
|
"desc": '求参数value的双曲正弦值,value必须为数字格式'
|
},
|
{
|
"formula": 'tan(value)',
|
"desc": '求参数value的正切值,value必须为数字格式'
|
},
|
{
|
"formula": 'tanh(value)',
|
"desc": '求参数value的双曲正切值,value必须为数字格式'
|
},
|
{
|
"formula": 'max(v1,v2)',
|
"desc": '求两个数中的较大的值,v1,v2都必须为数字格式,例如max(3.2,3)就等于3.2'
|
},
|
{
|
"formula": 'min(v1,v2)',
|
"desc": '求两个数中的较小的值,v1,v2都必须为数字格式,例如max(3.2,3)就等于3'
|
},
|
{
|
"formula": 'sqrt(value)',
|
"desc": '求平方根'
|
},
|
],
|
//其他公式
|
otherFormulaTableData: [{
|
"formula": 'getcolvalue(servername,tablename,fieldname,pkField,pkValue)',
|
"desc": '查询servername中tablename数据库表中fieldname字段的值,pkfield表示主键的字段名称,pkValue表示主键的值,serverName现在默认为localServer'
|
},
|
],
|
//本场景变量
|
thisSceneTableData: [{
|
"formula": '${}',
|
"desc": ' '
|
},
|
],
|
//系统变量
|
systemVariableTableData: [{
|
"formula": '#CURRENTUSER.OID#',
|
"desc": '当前用户的主键'
|
},
|
{
|
"formula": '#CURRENTUSER.ID#',
|
"desc": '当前用户的账户'
|
},
|
{
|
"formula": '#CURRENTTIME#',
|
"desc": '当前时间'
|
},
|
{
|
"formula": '#CURRENTDATE#',
|
"desc": '当前日期'
|
},
|
{
|
"formula": '#CURRENTDATETIME#',
|
"desc": '当前日期时间'
|
},
|
{
|
"formula": '#CURRENTUSER_NAME#',
|
"desc": '当前用户的姓名'
|
},
|
{
|
"formula": '#CURRENTUSER.SECRETGRADE#',
|
"desc": '当前用户密级'
|
},
|
{
|
"formula": '#CURRENTUSER.IPSECRET#',
|
"desc": '当前用户的IP密级'
|
},
|
{
|
"formula": '#CURRENTUSER.BUSINESSUNIT#',
|
"desc": '当前用户所属业务单元'
|
},
|
{
|
"formula": '#CURRENTUSER.BUSINESSUNITNAME#',
|
"desc": '当前用户所属业务单元名称'
|
},
|
{
|
"formula": '#CURRENTUSER.GROUPOID#',
|
"desc": '当前用户的部门主键'
|
},
|
{
|
"formula": '#CURRENTUSER.GROUPNAME#',
|
"desc": '当前用户所属部门名称'
|
},
|
{
|
"formula": '#CURRENTUSER.EMAIL#',
|
"desc": '当前用户邮件地址'
|
},
|
{
|
"formula": '#CURRENTUSER.ROLENAME#',
|
"desc": '当前用户所属角色名称'
|
}
|
],
|
|
|
/* 父分类码段对话框 */
|
isShowParentClassifyOption: false, //父分类码段对话框显示控制
|
classifyDialogLoading: true, //表格数据加载提示
|
parentClassifyParentOption: parentClassifyParentOption, //表格配置
|
parentClassifyData: [], //表格数据
|
//分页参数配置
|
parentClassifyDataPage: {
|
pageSize: 10,
|
currentPage: 1,
|
total: 0
|
},
|
parentClassifyQuery: {}, //查询条件
|
parentClassifySelectionList: [], //当前选中行
|
|
|
/** 参照引用的业务类型对话框相关数据 */
|
isShowSelectReferBtmOption: false, //对话框显示控制
|
referBtmDialogLoading: true, //表格数据加载提示
|
referBtmDataPage: {
|
pageSize: 10,
|
currentPage: 1,
|
total: 0
|
},
|
referBtmOption: referBtmOption, //表格配置
|
referBtmData: [], //表格数据
|
referBtmQuery: {}, //查询条件
|
referBtmSelectionList: [], //当前选中行
|
|
/** 基础码段新增表单 */
|
form: {
|
id: '', //编号
|
name: '', //名称
|
secType: 'codefixedsec', //码段类型
|
description: '', //描述
|
serialDependFlag: false, //是否流水依赖
|
serialDependOrder: '', //流水依赖顺序
|
nullableFlag: false, //是否为空
|
displayFlag: false, //
|
componentCodeFlag: false, //是否参与编码
|
pkCodeRule: '', //所属编码规则
|
},
|
formRules: {
|
id: [
|
{ required: true, message: '请输入码段编号', trigger: 'blur' },
|
],
|
name: [
|
{ required: true, message: '请输入码段名称', trigger: 'blur' },
|
],
|
secType: [
|
{ required: true, message: '请输入码段名称', trigger: 'blur' },
|
],
|
codeSecLengthType: [
|
{ required: true, message: '请选择码段长度类型', trigger: 'change' },
|
],
|
codeSecLength: [
|
{ required: true, message: '请输入码段的长度', trigger: 'blur' },
|
{ type: 'number', message: '码段的长度必须为数字值'}
|
],
|
referAttributeName: [
|
{ required: true, message: '请选择属性', trigger: 'blur' },
|
],
|
serialStart: [
|
{ type: 'number', message: '码段的长度必须为数字值'}
|
],
|
serialStep: [
|
{ type: 'number', message: '码段的长度必须为数字值'}
|
],
|
codeFillType: [
|
{ required: true, message: '请选择编码补位方式', trigger: 'blur' },
|
],
|
// 设置补位时的字符,需要自定义方法来做判断
|
codeFillSeparatorSelect: [
|
{ required: true, message: '请输入补位时的字符', trigger: 'blur' },
|
],
|
codeFillLength: [
|
{ required: true, message: '请输入填充长度', trigger: 'blur' },
|
{ type: 'number', message: '填充长度必须为数字值'}
|
],
|
codeFillLimit: [
|
{ required: true, message: '请输入流水上限', trigger: 'blur' },
|
{ type: 'number', message: '流水上限必须为数字值'}
|
],
|
codeLevelType: [
|
{ required: true, message: '请选择层级类型', trigger: 'change' },
|
],
|
codeLevelValue: [
|
{ type: 'number', message: '层级的值必须为数字值'}
|
],
|
valueCutType: [
|
{ required: true, message: '请选择字符截取类型', trigger: 'change' },
|
],
|
referBtmId: [
|
{ required: true, message: '请选参照应用的业务类型', trigger: 'change' },
|
],
|
referConfig: [
|
{ required: true, message: '请选择参照配置', trigger: 'change' },
|
],
|
codeDateFormatStr: [
|
{ required: true, message: '请输入日期格式', trigger: 'blur' },
|
],
|
|
},
|
//枚举和可输可选查询
|
sectypeList:[], //码段类型
|
codeSecLengthType:[], //码段长度类型
|
codeFillType:[], //编码补位方式
|
codeFillSeparator:[], //补位时的字符,可输可选内容
|
codeLevelType:[], //层级类型
|
codeCutType:[], //字符截取类型
|
codeGetValueType:[], //取值类型
|
|
//表单元素标签宽度
|
leftFormLabelWidth: '110px',
|
rightFormLabelWidth: '150px',
|
|
};
|
},
|
computed: {
|
...mapGetters(["permission"]),
|
permissionList() {
|
return {
|
addBtn: this.vaildData(this.permission.codeRule_add, true),
|
viewBtn: this.vaildData(this.permission.codeRule_view, false),
|
delBtn: this.vaildData(this.permission.plCodeRule_delete, false),
|
editBtn: this.vaildData(this.permission.codeRule_edit, true)
|
};
|
},
|
},
|
methods: {
|
|
/** 选中参照引用的业务类型,第二层嵌套对话框,及其相关方法 */
|
saveSelectedreferBtm(){
|
if(this.referBtmSelectionList.length != 1){
|
this.$message.warning("只能选择一条数据!");
|
return false;
|
}
|
//调用子组件并传递当前选中的参数值,实现回显
|
this.form.referBtmId = this.referBtmSelectionList[0].id;
|
this.form.referBtmName = this.referBtmSelectionList[0].name;
|
//清空当前选中的行
|
this.referBtmSelectionClear();
|
this.isShowSelectReferBtmOption = false;
|
},
|
referBtmSearchReset() {
|
this.referBtmQuery = {};
|
this.referBtmOnLoad(this.referBtmDataPage);
|
},
|
referBtmSearchChange(params, done) {
|
this.referBtmQuery = params;
|
this.referBtmDataPage.currentPage = 1;
|
this.referBtmOnLoad(this.page, params);
|
done();
|
},
|
referBtmSelectionChange(list) {
|
//console.log(list);
|
this.referBtmSelectionList = list;
|
},
|
referBtmSelectionClear() {
|
this.referBtmSelectionList = [];
|
this.$refs.crudReferBtm.toggleSelection();
|
},
|
referBtmCurrentChange(currentPage){
|
this.referBtmDataPage.currentPage = currentPage;
|
},
|
referBtmSizeChange(pageSize){
|
this.referBtmDataPage.pageSize = pageSize;
|
},
|
refreshReferBtmDataChange() {
|
this.referBtmOnLoad(this.referBtmDataPage, this.referBtmQuery);
|
},
|
//加载中参照引用的业务类型的数据
|
referBtmOnLoad(page, params = {}) {
|
this.referBtmDialogLoading = true;
|
let oid = this.selectionList.length==0 ? this.form.pkCodeRule:this.selectionList[0].oid;
|
Object.assign(params,{pkCodeRule:oid})
|
//接口还未提供,待更改
|
refDataGridClassifySec(page.currentPage, page.pageSize, Object.assign(params, this.parentClassifyQuery)).then(res => {
|
//console.log(res.data);
|
const data = res.data.data;
|
this.referBtmDataPage.total = data.total;
|
this.referBtmData = data.records;
|
this.referBtmDialogLoading = false;
|
this.referBtmSelectionClear();
|
});
|
},
|
|
|
/** 父分类选择对话框,第二层嵌套对话框,及其相关方法 */
|
// 保存当前父分类码段的选中行,并进行子组件回显
|
saveSelectedParentClassify(){
|
//console.log(this.parentClassifySelectionList.length);
|
if(this.parentClassifySelectionList.length != 1){
|
this.$message.warning("只能选择一条数据!");
|
return false;
|
}
|
//调用子组件并传递当前选中的参数值,实现回显
|
this.form.parentClassifySecOid = this.parentClassifySelectionList[0].id;
|
this.form.parentClassifySecText = this.parentClassifySelectionList[0].name;
|
//清空当前选中的行
|
this.parentClassifySelectionClear();
|
this.isShowParentClassifyOption = false;
|
},
|
parentClassifySearchReset() {
|
this.parentClassifyQuery = {};
|
this.parentClassifyOnLoad(this.parentClassifyDataPage);
|
},
|
parentClassifySearchChange(params, done) {
|
this.parentClassifyQuery = params;
|
this.parentClassifyDataPage.currentPage = 1;
|
this.parentClassifyOnLoad(this.page, params);
|
done();
|
},
|
parentClassifySelectionChange(list) {
|
//console.log(this.parentClassifyCurrentChange);
|
this.parentClassifySelectionList = list;
|
},
|
parentClassifySelectionClear() {
|
this.parentClassifySelectionList = [];
|
this.$refs.crudParentClassify.toggleSelection();
|
},
|
parentClassifyCurrentChange(currentPage){
|
this.parentClassifyDataPage.currentPage = currentPage;
|
},
|
parentClassifySizeChange(pageSize){
|
this.parentClassifyDataPage.pageSize = pageSize;
|
},
|
refreshParentClassifyDataChange() {
|
this.parentClassifyOnLoad(this.parentClassifyDataPage, this.parentClassifyQuery);
|
},
|
parentClassifyOnLoad(page, params = {}) {
|
this.classifyDialogLoading = true;
|
let oid = this.selectionList.length==0 ? this.form.pkCodeRule:this.selectionList[0].oid;
|
Object.assign(params,{pkCodeRule:oid})
|
refDataGridClassifySec(page.currentPage, page.pageSize, Object.assign(params, this.parentClassifyQuery)).then(res => {
|
//console.log(res.data);
|
const data = res.data.data;
|
this.parentClassifyDataPage.total = data.total;
|
this.parentClassifyData = data.records;
|
this.classifyDialogLoading = false;
|
this.parentClassifySelectionClear();
|
});
|
},
|
|
|
/** 打开公式编辑框,第二层嵌套对话框,及其相关方法 */
|
openformulaEdit(){
|
this.isShowformulaEdit = true;
|
},
|
//双击添加公式内容
|
dbClickAddContent(row){
|
//console.log(row.formula);
|
this.formulaContent = this.formulaContent + row.formula;
|
},
|
//清空公式内容
|
resetFormulaContent(){
|
this.formulaContent = '';
|
},
|
//关闭时清空上次公式内容
|
closeFormulaEdit(){
|
this.resetFormulaContent();
|
},
|
//编辑完成公式内容并回显
|
saveFormulaContent(){
|
//console.log(this.formulaContent);
|
if(this.formulaContent.trim == null || this.formulaContent.trim == ''){
|
this.$message.warning("公式内容不能为空!");
|
return;
|
}
|
//公式内容回显
|
this.form.getValueClass = this.formulaContent;
|
this.isShowformulaEdit = false;
|
},
|
|
/** 打开属性选取值,第二层嵌套对话框,及其相关方法 */
|
// 获取当前被选中树节点的oid
|
nodeClick(data) {
|
this.currentSelectTreeData = data;
|
this.loadlistClassifyLinkAttr()
|
},
|
// 加载分类连接属性表格数据
|
loadlistClassifyLinkAttr(){
|
this.selectAttrOptionLoading = true;
|
listClassifyLinkAttr({"page": 1,"limit": -1,'conditionMap[codeClassifyOid]':this.currentSelectTreeData.oid}).then(res=>{
|
//console.log(res.data.data);
|
//造假数据
|
let dataInfo =[
|
{"id":"address","name":"会议室地址","oid":"058D840D-1010-A7DE-7C52-B39C03CE89C1","attrLength":"150","description":"","attributeDataTypeText":"字符串"},
|
{"id":"businesslicensetype","name":"营业执照类型","oid":"BDAC6D3E-1827-35A0-F3CA-0E58A43F6A07","attrLength":"255","description":"营业执照类型","attributeDataTypeText":"字符串"},
|
{"id":"certificatenumber","name":"保密证编号","oid":"E2BC8332-A721-3713-26C3-C9F6340C2C1D","attrLength":"255","description":"保密证编号","attributeDataTypeText":"字符串"},
|
]
|
this.selectattrData = dataInfo;
|
this.selectAttrOptionLoading = false;
|
})
|
},
|
// 点击搜索后触发该事件
|
selectAttrOptionSearchChange(params, done) {
|
this.query = params;
|
console.log(params); //这儿需要改
|
this.loadlistClassifyLinkAttr({"page":1,"limit":-1 ,'conditionMap[codeClassifyOid]':this.currentSelectTreeData.oid});
|
done();
|
},
|
// 属性取值当前选中行发生变化时触发
|
selectionChangeAttr(list){
|
this.selectionChangeAttrList = list;
|
},
|
// 重置位属性选取值表格的搜索框之后的回调
|
searchAttrReset() {
|
this.loadlistClassifyLinkAttr()
|
},
|
// 为属性选取值之后的回显
|
selectedListClassifyLinkAttr(){
|
if(this.selectionChangeAttrList.length != 1){
|
this.$message.warning("只能选择一条数据!");
|
return false;
|
}
|
//调用子组件并传递当前选中的参数值,实现回显
|
this.form = Object.assign({}, this.form, {
|
referAttributeId:this.selectionChangeAttrList[0].id,
|
referAttributeName:this.selectionChangeAttrList[0].name,
|
referCodeClassifyOid: this.currentSelectTreeData.key,
|
referCodeClassifyOidName: this.currentSelectTreeData.title,
|
})
|
this.isShowSelectAttrOption = false;
|
},
|
|
|
/** 基础码段表中的码值管理的相关方法 */
|
// 码值管理弹窗控制
|
openBasicSecCodeValueMgr(row){
|
//当前为固定码段码值管理码值管理
|
if(row.secType === "codefixedsec"){
|
this.isShowFixedForm = true;
|
this.loadFixedValueTableData(row);
|
}else{
|
//分类码段
|
this.isShowFixedForm = false;
|
}
|
this.codefixedsecOrCodeclassifysecOid = row.oid;
|
this.isShowBasicSecCodeValueMgr = true;
|
},
|
//加载固定码段码值表数据
|
loadFixedValueTableData(row){
|
this.fixedValueOptionLoading = true;
|
gridCodeFixedValue(1, -1, {"codeFixedSecOid":row.oid}).then(res=>{
|
this.fixedValueData = res.data.data.records;
|
//console.log(this.fixedValueData);
|
this.fixedValueOptionLoading = false;
|
})
|
},
|
//加载分类码段码值管理页面tree数据
|
|
//单击固定码段的码值表中行时触发的事件
|
selectedCodeValueRow(row){
|
//console.log(row);
|
this.selectedFixedOrCodeclassifyValue = row;
|
this.codeFixdForm.id = row.id;
|
this.codeFixdForm.description = row.description;
|
this.codeFixdForm.codeFixedSecOid = row.codefixedsecoid;
|
},
|
//新增码值
|
addCodeSecValue(condition){
|
if(condition === "codefixedsec"){
|
if(this.codeFixdForm.id.trim() == ''){
|
this.$message.warning("码值不能为空!");
|
return;
|
}
|
this.codeFixdForm.codeFixedSecOid = this.codefixedsecOrCodeclassifysecOid;
|
addSaveCodeFixedValue(this.codeFixdForm).then(() => {
|
this.loadFixedValueTableData({"oid":this.codefixedsecOrCodeclassifysecOid});
|
this.clearFixedOrClassifyForm('codefixedsec');
|
this.$message({
|
type: "success",
|
message: "操作成功!"
|
});
|
}, error => {
|
window.console.log(error);
|
});
|
}else {
|
|
}
|
},
|
// 清空码值表单
|
clearFixedOrClassifyForm(condition){
|
//点击取消时清空表单与当前选中的码值,并禁用按钮
|
this.selectedFixedOrCodeclassifyValue = '';
|
if(condition === "close"){
|
this.codeFixdForm.id = '';
|
}
|
if(condition === "codefixedsec" || condition === "close"){
|
this.codeFixdForm.description = '';
|
this.codeFixdForm.codeFixedSecOid = '';
|
}else {
|
this.codeClassifyForm = '';
|
}
|
},
|
//修改码值
|
editCodeSecValue(condition){
|
if(condition=='codefixedsec'){
|
//以前是直接把当前选中行的所有数据都进行提交,但其实只需要传输一些比要参数即可,这儿做了修改,需要穿其他参数的请自行添加
|
let editData = {
|
"oid": this.selectedFixedOrCodeclassifyValue.oid,
|
"ts": new Date().getTime(),
|
"description": this.codeFixdForm.description,
|
"id": this.codeFixdForm.id,
|
"codeFixedSecOid": this.selectedFixedOrCodeclassifyValue.codefixedsecoid
|
}
|
editCodeFixedValue(editData).then(() => {
|
this.loadFixedValueTableData({"oid":this.codefixedsecOrCodeclassifysecOid})
|
this.$message({
|
type: "success",
|
message: "操作成功!"
|
});
|
}, error => {
|
window.console.log(error);
|
});
|
}else {
|
|
}
|
|
},
|
//删除码值
|
delCodeSecValue(condition){
|
//固定码段码值删除
|
if(condition == 'codefixedsec'){
|
console.log(this.selectedFixedOrCodeclassifyValue.oid);
|
this.$confirm("是否删除这条数据?如果被引用将不能被删除!", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning"
|
})
|
.then(() => {
|
let ts = new Date(this.selectedFixedOrCodeclassifyValue.ts).getTime();
|
return deleteCodeFixedValue({"oid": this.selectedFixedOrCodeclassifyValue.oid,"ts": ts});
|
})
|
.then(() => {
|
this.loadFixedValueTableData({"oid":this.codefixedsecOrCodeclassifysecOid})
|
this.clearFixedOrClassifyForm('codefixedsec');
|
this.$message({
|
type: "success",
|
message: "操作成功!"
|
});
|
});
|
}else{
|
//分类码段码值删除
|
|
this.selectedFixedOrCodeclassifyValue = '';
|
}
|
|
},
|
//对码值表进行:上移、下移、移除操作
|
codeFixedValueOpetion(condition,row){
|
//console.log(this.fixedValueData[row.$index].orderNum);
|
const index = row.$index;
|
if(condition == 'up'){
|
//对ordeNum排序字段进行调整
|
this.fixedValueData[index].orderNum = this.fixedValueData[index].orderNum-1
|
this.fixedValueData[index-1].orderNum = this.fixedValueData[index].orderNum+1
|
//当下标减去1小于0或者orderNum字段减去1小于0的时候不执行上移操作
|
if(index-1<0 || this.fixedValueData[row.$index].orderNum-1<0){
|
return;
|
}
|
//调整数组值顺序
|
let tempOption = this.fixedValueData[index-1];
|
this.$set(this.fixedValueData, index - 1, this.fixedValueData[index])
|
this.$set(this.fixedValueData, index , tempOption)
|
|
//console.log(this.fixedValueData);
|
}else if(condition == 'down'){
|
//对ordeNum排序字段进行调整
|
this.fixedValueData[index].orderNum = this.fixedValueData[index].orderNum+1
|
this.fixedValueData[index+1].orderNum = this.fixedValueData[index].orderNum-1
|
//调整数组值顺序
|
let tempOption = this.fixedValueData[index+1];
|
this.$set(this.fixedValueData, index + 1, this.fixedValueData[index]);
|
this.$set(this.fixedValueData, index, tempOption)
|
}else {
|
for(let i=index+1; i<this.fixedValueData.length-1; i++){
|
//console.log(this.fixedValueData[i].orderNum);
|
this.fixedValueData[i].orderNum = this.fixedValueData[i].orderNum-1;
|
//console.log(this.fixedValueData[i].orderNum);
|
}
|
this.$delete(this.fixedValueData, index);
|
}
|
//console.log(this.fixedValueData);
|
},
|
//保存对固定码段码值的操作
|
saveCodeFixedValueOption(){
|
let data = {
|
"codeFixedSecOid": this.codefixedsecOrCodeclassifysecOid,
|
"dtoList": JSON.stringify(this.fixedValueData),
|
}
|
saveOrder(data).then(() => {
|
this.$message({
|
type: "success",
|
message: "保存成功!"
|
});
|
}, error => {
|
window.console.log(error);
|
});
|
},
|
|
|
/** 基础码段相关方法 */
|
//防止打开过编辑窗口之后表单中存在值,所以需要清空之后初始化form表单
|
clearBasicAddForm(){
|
this.form = '';
|
this.form = {
|
secType:'codefixedsec'
|
};
|
this.changeSectypeFormItems(null);
|
},
|
// 打开新增窗口
|
addBasicCodeSec(){
|
if(!this.tipsMessage(this.selectionList)){
|
return;
|
}
|
if(this.selectionList[0].lcStatus != 'Editing'){
|
this.$message.warning('编码规则状态不是"编辑中",不允许编辑码段!');
|
return;
|
}
|
this.openBasicDialog('add',null);
|
this.loadCodeSecType();
|
},
|
//打开新增或编辑基础码段对话框
|
openBasicDialog(condition,row){
|
//console.log(row);
|
if(condition == 'add') {
|
this.basicSecDialogTitle = '添加码段信息';
|
this.showbtn = true;
|
this.basicSecOnlyRead = false;
|
}else if(condition == 'edit'){
|
if(this.selectionList.length!=1){
|
this.$message.warning('请选择一条编码规则数据!');
|
return;
|
}
|
this.basicSecDialogTitle = '修改码段信息';
|
this.showbtn = true;
|
this.basicSecOnlyRead = false;
|
//为form绑定值
|
this.changeSectypeFormItems(row);
|
}else{
|
this.basicSecDialogTitle = '查看码段信息';
|
this.showbtn = false;
|
this.basicSecOnlyRead = true;
|
this.changeSectypeFormItems(row);
|
}
|
//console.log(this.form);
|
this.addBasicCodeSettingBox = true;
|
},
|
// 新增基础码段
|
saveOrEditBasicCode(){
|
if(this.selectionList[0].oid == null || this.selectionList[0].oid == ''){
|
this.$message.warning('缺失必要参数,请重新选择编码规则后重试!');
|
return;
|
}
|
this.form.pkCodeRule = this.selectionList[0].oid;
|
//console.log(this.form);
|
if(this.form.oid == '' || this.form.oid == null){
|
addSave(this.form).then(() => {
|
this.$message({
|
type: "success",
|
message: "操作成功!"
|
});
|
}, error => {
|
window.console.log(error);
|
});
|
}else{
|
editSave(this.form).then(() => {
|
this.$message({
|
type: "success",
|
message: "操作成功!"
|
});
|
}, error => {
|
window.console.log(error);
|
});
|
}
|
|
// 关闭窗口
|
this.addBasicCodeSettingBox = false
|
// 点击新增基础码段,关闭窗口之后触发重新加载
|
this.loadBasic(this.selectionList[0]);
|
},
|
// 判断数据是否选择以及只能选择单条数据
|
tipsMessage(list){
|
if(list.length != 1){
|
this.$message.warning("请选择一条编码规则数据!");
|
return false;
|
}
|
return true;
|
},
|
// 基础码段删除
|
deleteBasicCode(){
|
if(!this.tipsMessage(this.selectionBasicList)){
|
return;
|
}
|
let oid = this.selectionBasicList[0].oid;
|
this.$confirm("是否删除这条数据?如果被引用将不能被删除!", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning"
|
})
|
.then(() => {
|
let ts = new Date(this.selectionBasicList[0].ts).getTime();
|
return deleteData({"oid": oid,"ts": ts});
|
})
|
.then(() => {
|
this.loadBasic({"oid":this.currentCodeRuleOid == null || this.currentCodeRuleOid == '' ? this.selectionList[0].oid:this.currentCodeRuleOid});
|
this.$message({
|
type: "success",
|
message: "操作成功!"
|
});
|
this.$refs.crudBasic.toggleSelection();
|
});
|
},
|
// 点击触发加载基础码段信息
|
loadBasic(row){
|
this.loadingBasic = true;
|
//console.log(row.oid);
|
//存储当前关联的编码规则相关信息
|
this.currentCodeRuleOid = row.oid;
|
this.currentRuleLcStatus = row.lcStatus;
|
gridCodeBasicSec(1, -1, {"pkCodeRule":row.oid}).then(res => {
|
const data = res.data.data;
|
this.basicData = data.records;
|
//console.log(this.basicData);
|
this.loadingBasic = false;
|
});
|
},
|
// 基础码段选中时触发
|
selectionBasicChange(list) {
|
this.selectionBasicList = list;
|
//console.log(this.selectionBasicList);
|
},
|
// 上移下移基础码段
|
upOrderNum(row){
|
//console.log(row.oid);
|
if(!this.tipsMessage(this.selectionList)){
|
return;
|
}
|
let codeRuleOid = this.selectionList[0].oid;
|
if (this.selectionList[0].lcStatus != 'Editing') {
|
this.$message.warning("只有编码规则的状态是 [编辑中] 的时候,才能调整码段顺序!");
|
return;
|
}
|
if(row.oid==null || row.oid==''){
|
this.$message.warning("未获取到必填参数!");
|
return;
|
}
|
upOrderNum(row.oid).then(() => {
|
this.loadBasic({"oid":codeRuleOid});
|
this.$message({
|
type: "success",
|
message: "操作成功!"
|
});
|
})
|
},
|
downOrderNum(row){
|
//console.log(row.oid);
|
if(!this.tipsMessage(this.selectionList)){
|
return;
|
}
|
let codeRuleOid = this.selectionList[0].oid;
|
//console.log(this.selectionList);
|
if (this.selectionList[0].lcStatus != 'Editing') {
|
this.$message.warning("只有编码规则的状态是 [编辑中] 的时候,才能调整码段顺序!");
|
return;
|
}
|
if(row.oid==null || row.oid==''){
|
this.$message.warning("未获取到必填参数!");
|
return;
|
}
|
downOrderNum(row.oid).then(() => {
|
this.loadBasic({"oid":codeRuleOid});
|
this.$message({
|
type: "success",
|
message: "操作成功!"
|
});
|
})
|
},
|
//基础码段查询
|
refreshChangeBasicSec(){
|
this.loadBasic({"oid":this.currentCodeRuleOid == null || this.currentCodeRuleOid == '' ? this.selectionList[0].oid:this.currentCodeRuleOid});
|
},
|
|
|
/** 编码规则相关方法 */
|
// 查询使用范围
|
handleRange(){
|
if(!this.tipsMessage(this.selectionList)){
|
return;
|
}
|
this.codeRangeSettingBox = true;
|
this.getRangeCodeList()
|
},
|
//加载使用范围列表
|
getRangeCodeList(){
|
this.dialogLoading = true;
|
if(this.selectionList[0].oid==null){
|
this.$message.error("未获取到参数!");
|
}
|
|
listUseRange(this.selectionList[0].oid).then(res => {
|
this.useRangeData = res.data.data;
|
//console.log(this.useRangeData);
|
this.dialogLoading = false;
|
});
|
},
|
//刷新使用范围列表
|
refreshUseRangeChange(){
|
this.getRangeCodeList();
|
},
|
//单击编码规则实现行选择
|
codeRuleRowClick (row) {
|
//console.log(row);
|
this.$refs.crud.toggleRowSelection(row);
|
this.loadBasic(row);
|
},
|
// 启用与停用
|
enableOrDeactivatse(oId,update){
|
updateStatus({"oid":oId,"ts":new Date().getTime,"update":update}).then(() => {
|
this.onLoad(this.page);
|
this.$message({
|
type: "success",
|
message: "操作成功!"
|
});
|
}, error => {
|
window.console.log(error);
|
});
|
},
|
// 克隆
|
cloneCodeSetting() {
|
if (this.selectionList.length === 0) {
|
this.$message.warning("请选择至少一条数据!");
|
return;
|
}
|
if (this.selectionList.length > 1) {
|
this.$message.warning("每次只能选择一条数据!");
|
return;
|
}
|
localStorage.setItem("cloneOid",this.selectionList[0].oid)
|
this.cloneSettingBox = true;
|
},
|
// 添加
|
rowSave(row, done, loading) {
|
add(row).then(() => {
|
this.onLoad(this.page);
|
this.$message({
|
type: "success",
|
message: "操作成功!"
|
});
|
done();
|
}, error => {
|
loading();
|
window.console.log(error);
|
});
|
},
|
openEdit(row){
|
this.$refs.crud.rowEdit(row,row.$index);
|
},
|
// 修改
|
rowUpdate(row, index, done, loading) {
|
row.ts = new Date().getTime;
|
update(row).then(() => {
|
this.onLoad(this.page);
|
this.$message({
|
type: "success",
|
message: "操作成功!"
|
});
|
done();
|
}, error => {
|
loading();
|
console.log(error);
|
});
|
},
|
// 删除
|
handleDelete() {
|
if(!this.tipsMessage(this.selectionList)){
|
return;
|
}
|
this.$confirm("确定将选择数据删除?", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning"
|
})
|
.then(() => {
|
// 只支持每次单条记录删除
|
let oid = this.selectionList[0].oid;
|
let ts = new Date(this.selectionList[0].ts).getTime();
|
return remove({oid: oid,ts: ts});
|
})
|
.then(() => {
|
this.onLoad(this.page);
|
this.$message({
|
type: "success",
|
message: "操作成功!"
|
});
|
this.$refs.crud.toggleSelection();
|
});
|
},
|
// 打开修改
|
beforeOpen(done, type) {
|
if (["edit", "view"].includes(type)) {
|
getDetail(this.ruleForm.oid).then(res => {
|
this.ruleForm = res.data.data;
|
});
|
}
|
done();
|
},
|
searchReset() {
|
this.query = {};
|
this.onLoad(this.page);
|
},
|
searchChange(params, done) {
|
this.query = params;
|
this.page.currentPage = 1;
|
this.onLoad(this.page, params);
|
done();
|
},
|
// 编码规则当前选中行变化的时候触发
|
selectionChange(list) {
|
this.selectionList = list;
|
this.$refs.crud.setCurrentRow(this.selectionList [list.length-1]);
|
if(this.selectionList.length > 0){
|
this.currentCodeRuleOid = this.selectionList[list.length-1].oid;
|
this.currentRuleLcStatus = this.selectionList [list.length-1].lcStatus;
|
//console.log(this.currentRuleLcStatus);
|
this.loadBasic(this.selectionList[list.length-1]);
|
}
|
},
|
selectionClear() {
|
this.selectionList = [];
|
this.$refs.crud.toggleSelection();
|
},
|
currentChange(currentPage){
|
this.page.currentPage = currentPage;
|
},
|
sizeChange(pageSize){
|
this.page.pageSize = pageSize;
|
},
|
refreshChange() {
|
this.onLoad(this.page, this.query);
|
},
|
onLoad(page, params = {}) {
|
this.loading = true;
|
gridCodeRule(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
|
//console.log(res.data);
|
const data = res.data.data;
|
this.page.total = data.total;
|
this.data = data.records;
|
this.loading = false;
|
this.loadBasic(this.data[0])
|
this.$nextTick(() => {
|
this.$refs.crud.toggleRowSelection(this.data[0]);
|
this.$refs.crud.setCurrentRow(this.data[0]);
|
})
|
this.selectionList = data.records[0];
|
//this.selectionClear();
|
});
|
},
|
|
|
/** 第一层对话框相关方法 */
|
// 打开二层弹窗方法
|
openAttrSelectOrGetValue(condition){
|
if(condition === 'attr'){
|
this.isShowSelectAttrOption = true;
|
}else if(condition === 'value'){
|
this.isShowformulaEdit = true;
|
}else if(condition === 'parentClassifySecOid'){
|
this.isShowParentClassifyOption = true;
|
}else if(condition === 'referBtmId'){
|
this.isShowSelectReferBtmOption = true;
|
}else if(condition === 'referConfig'){
|
//this.$emit('openSelectreferConfig')
|
}
|
},
|
|
// 点击输入框的×号,清空输入框中的内容
|
clearAttrDataByIcon(condition){
|
if(condition === 'attr'){
|
this.form.referAttributeName = '';
|
this.form.referAttributeId = '';
|
this.form.referCodeClassifyOid = '';
|
this.form.referCodeClassifyOidName = '';
|
}else if(condition === 'value'){
|
this.form.getValueClass = '';
|
}else if(condition === 'parentClassifySecOid'){
|
this.form.parentClassifySecOid = '';
|
}else if(condition === 'referBtmId'){
|
this.form.referBtmId = '';
|
}else if(condition === 'referConfig'){
|
this.form.referBtmId = '';
|
}
|
},
|
|
// 码段类型改变时,增加对应的form表单中的属性
|
changeSectypeFormItems(row){
|
console.log(row);
|
if(this.sectypeList.length==0){
|
this.loadCodeSecType();
|
}
|
if(row != null){
|
this.form = {};
|
this.form = Object.assign({},this.form,{
|
oid: row.oid,
|
id: row.id, //编号,
|
name: row.name,//名称
|
secType: row.secType,//码段类型
|
description: row.description,//描述
|
serialDependFlag: row.serialDependFlag=='true' ? true:false,//是否流水依赖
|
serialDependOrder: row.serialDependOrder,//流水依赖顺序
|
nullableFlag: row.nullableFlag=='true' ? true:false,//是否为空
|
displayFlag: row.displayFlag=='true' ? true:false,
|
componentCodeFlag: row.componentCodeFlag=='true' ? true:false,//是否参与编码
|
pkCodeRule: row.pkCodeRule, //所属编码规则
|
}
|
);
|
}else {
|
this.form = {
|
oid: this.form.oid,
|
id: this.form.id, //编号
|
name: this.form.name, //名称
|
secType: this.form.secType, //码段类型
|
description: this.form.description, //描述
|
serialDependFlag: this.form.serialDependFlag, //是否流水依赖
|
serialDependOrder: this.form.serialDependOrder, //流水依赖顺序
|
nullableFlag: this.form.nullableFlag, //是否为空
|
displayFlag: this.form.displayFlag, //
|
componentCodeFlag: this.form.componentCodeFlag, //是否参与编码
|
pkCodeRule: this.form.pkCodeRule, //所属编码规则
|
};
|
//console.log(this.form);
|
}
|
if(this.form.secType==='codefixedsec'){
|
//固定码段
|
this.form = Object.assign({}, this.form,{
|
codeSecLength: row!=null&&row.codeSecLength != '' ? row.codeSecLength:'',
|
codeSecLengthType: row!=null&&row.codeSecLengthType != '' ? row.codeSecLengthType:'code_sec_length_variable'
|
});
|
this.loadCodeSecLength();
|
}else if(this.form.secType==='codeattrsec'){
|
//属性码段
|
this.form = Object.assign({}, this.form, {
|
referCodeClassifyOid: row!=null&&row.referCodeClassifyOid != '' ? row.referCodeClassifyOid:'', //属性id
|
referCodeClassifyOidName: row!=null&&row.referCodeClassifyOidName != '' ? row.referCodeClassifyOidName:'', //属性所在分类
|
referAttributeId: row!=null&&row.referAttributeId != '' ? row.referAttributeId:'', //属性编号
|
referAttributeName: row!=null&&row.referAttributeName != '' ? row.referAttributeName:'', //属性
|
getValueClass: row!=null&&row.getValueClass != '' ? row.getValueClass:'' //取值规则
|
});
|
}else if(this.form.secType==='codeserialsec'){
|
//流水码段
|
this.form = Object.assign({}, this.form,{
|
codeSecLength: row!=null&&row.codeSecLength != '' ? row.codeSecLength:'', //码段的长度
|
serialStart: row!=null&&row.serialStart != '' ? row.serialStart:'1', //流水号起始值
|
serialStep: row!=null&&row.serialStep != '' ? row.serialStep:'1', //流水的步长
|
codeFillType: row!=null&&row.codeFillType != '' ? row.codeFillType:'code_fill_right', //编码补位方式
|
codeFillSeparatorSelect: row!=null&&row.codeFillSeparatorSelect != '' ? row.codeFillSeparatorSelect:'0', //补位时的字符,选中的下拉框的下标
|
codeFillSeparator: row!=null&&row.codeFillSeparator != '' ? row.codeFillSeparator:'0', //补位时的字符
|
codeFillLength: row!=null&&row.codeFillLength != '' ? row.codeFillLength:'', //填充长度
|
codeFillLimit: row!=null&&row.codeFillLimit != '' ? row.codeFillLimit:'', //流水上限
|
codeFillFlag: row!=null&&row.codeFillFlag != '' ? row.codeFillFlag=='true' ? true:false :false, //流水是否补码
|
customCodeSerialClass: row!=null&&row.customCodeSerialClass != '' ? row.customCodeSerialClass:'', //自定义流水算法
|
});
|
this.loadCodeFillType();
|
this.loadCodeFillSeparator();
|
}else if(this.form.secType==='codelevelsec'){
|
//层级码段
|
this.form = Object.assign({}, this.form,{
|
codeLevelType: row!=null&&row.codeLevelType != '' ? row.codeLevelType:'code_level_min', //层级类型 枚举查询
|
codeLevelValue: row!=null&&row.codeLevelValue != '' ? row.codeLevelValue:'', //层级的值
|
valueCutType: row!=null&&row.valueCutType != '' ? row.valueCutType:'code_cut_none', //字符截取类型 枚举查询
|
valueCutLength: row!=null&&row.valueCutLength != '' ? row.valueCutLength:'', //
|
codeGetValueType: row!=null&&row.codeGetValueType != '' ? row.codeGetValueType:'code_get_value_all_up', //取值类型 枚举查询
|
});
|
this.loadCodeLevelType();
|
this.loadCodeCutType();
|
this.loadCodeGetValueType();
|
}else if(this.form.secType==='coderefersec'){
|
//引用码段
|
this.form = Object.assign({}, this.form,{
|
referBtmId: row!=null&&row.referBtmId != '' ? row.referBtmId:'', //参照引用的业务类型,的id
|
referBtmName: row!=null&&row.referBtmName != '' ? row.referBtmName:'', //参照引用的业务类型
|
referConfig: row!=null&&row.referConfig != '' ? row.referConfig:'', //参照配置
|
});
|
}else if(this.form.secType==='codedatesec'){
|
//日期码段
|
this.form = Object.assign({}, this.form,{
|
codeDateFormatStr: row!=null&&row.codeDateFormatStr != '' ? row.codeDateFormatStr:'', //日期格式
|
});
|
}else if(this.form.secType==='codeclassifysec'){
|
//分类码段
|
this.form = Object.assign({}, this.form,{
|
codeSecLengthType: row!=null&&row.codeSecLengthType != '' ? row.codeSecLengthType:'code_sec_length_variable', //码段长度类型
|
codeSecLength: row!=null&&row.codeSecLength != '' ? row.codeSecLength:'', //码段的长度
|
matchClassifyValueFlag: row!=null&&row.matchClassifyValueFlag != '' ? row.matchClassifyValueFlag=='true' ? true:false :false, //是否自动匹配值
|
parentClassifySecOid: row!=null&&row.parentClassifySecOid != '' ? row.parentClassifySecOid:'', //父分类码段选中的id
|
parentClassifySecText: row!=null&&row.parentClassifySecText != '' ? row.parentClassifySecText:'', //父分类码段
|
});
|
this.loadCodeSecLength();
|
}else if(this.form.secType==='codevariablesec'){
|
//可变码段
|
this.form = Object.assign({}, this.form,{
|
codeSecLength: row!=null&&row.codeSecLength != '' ? row.codeSecLength:'', //码段的长度
|
codeFillType: row!=null&&row.codeFillType != '' ? row.codeFillType:'code_fill_right', //编码部位方式,枚举查询
|
codeFillSeparatorSelect: row!=null&&row.codeFillSeparatorSelect != '' ? row.codeFillSeparatorSelect:'0', //选中的补位时的字符的下标
|
codeFillSeparator: row!=null&&row.codeFillSeparator != '' ? row.codeFillSeparator:'', //补位时的字符,可输可选查询
|
});
|
this.loadCodeFillType();
|
this.loadCodeFillSeparator();
|
}
|
//console.log(this.form);
|
},
|
//枚举和可输可选内容查询
|
loadCodeSecType(){
|
getDictionary({code: "codeBasicSecType"}).then(res=>{
|
this.sectypeList = res.data.data;
|
})
|
this.loadCodeSecLength();
|
//console.log(this.sectypeList);
|
},
|
loadCodeSecLength(){
|
getDictionary({code: "codeSecLength"}).then(res=>{
|
this.codeSecLengthType = res.data.data;
|
})
|
},
|
loadCodeFillType(){
|
getDictionary({code: "codeFillType"}).then(res=>{
|
this.codeFillType = res.data.data;
|
})
|
},
|
loadCodeFillSeparator(){
|
getDictionary({code: "codeFillSeparator"}).then(res=>{
|
this.codeFillSeparator = res.data.data;
|
})
|
},
|
loadCodeLevelType(){
|
getDictionary({code: "codeLevelType"}).then(res=>{
|
this.codeLevelType = res.data.data;
|
})
|
},
|
loadCodeCutType(){
|
getDictionary({code: "codeCutType"}).then(res=>{
|
this.codeCutType = res.data.data;
|
})
|
},
|
loadCodeGetValueType(){
|
getDictionary({code: "codeGetValueType"}).then(res=>{
|
this.codeGetValueType = res.data.data;
|
//console.log(this.codeGetValueType);
|
})
|
},
|
|
|
}
|
};
|
</script>
|
|
<style>
|
|
.el-divider--horizontal {
|
margin-top: 19px !important;
|
margin-bottom: -20px !important;
|
height: 2px;
|
margin: 0;
|
position: fixed;
|
width: 57.5vw;
|
}
|
|
.el-card__body > .abox {
|
height: 50vh;
|
}
|
|
.el-col-5 > .box {
|
height: 55vh;
|
}
|
|
.operator_,filter, .layui-btn{
|
width:60px;
|
}
|
|
.el-input-number {
|
width: 120px;
|
}
|
|
.el-input-number >.el-input > .el-input__inner {
|
width:120px;
|
}
|
|
.formula-editor{
|
margin-top: -15px;
|
margin-left: 2vw;
|
/*设置弹性盒子*/
|
display: flex;
|
/*子元素以竖列排列,一共有6列*/
|
flex-direction:column;
|
width: 360px;
|
height: 285px;
|
/*左右均匀排列*/
|
justify-content: space-around;
|
/*上下均匀排列*/
|
align-items: center;
|
}
|
|
.one{
|
display: flex;
|
/*以行排列*/
|
flex-direction: row;
|
width: 296px;
|
height: 60px;
|
justify-content: space-between;
|
align-items: center;
|
}
|
|
.formula-editor-btn-sm {
|
width: 72px;
|
height: 45px;
|
background: rgb(153, 214, 240);
|
border-radius: 10%;
|
}
|
|
.el-col>.el-card > .el-card__header {
|
background: rgb(213 231 239);
|
border-radius: inherit;
|
}
|
|
/** 新增码段 */
|
.total{
|
height: 500px;
|
width: 100%;
|
}
|
|
.total .el-input__inner,.total .el-textarea__inner {
|
width: 220px;
|
}
|
|
.el-divider--vertical {
|
width: 2px;
|
height: 72vh;
|
margin: 0 5px;
|
position: fixed;
|
}
|
|
.left {
|
float: left;
|
width: 49%;
|
}
|
.right {
|
float: right;
|
margin-right: 2.5vw;
|
/* width: 40%; */
|
}
|
.right > .el-form > .el-form-item{
|
margin-bottom: 8px;
|
}
|
|
</style>
|