12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487 |
- <template>
- <div
- style="height:100%;"
- class="flexStar"
- >
- <div
- class="boxswai"
- style="width:26%;padding-left:0px;"
- >
- <div class="boxnei" style="display: flex;flex-direction: column;">
- <div style="overflow: auto;flex:1">
- <avue-tree
- :option="treeOption"
- :data="treeData"
- @node-click="nodeClick"
- ref="avueTree"
- style="display: inline-block;min-width: 100%;">
- <span
- class="custom-tree-node"
- slot-scope="{ data ,node }"
- @mouseover.stop="mouseOver(data)"
- @mouseleave.stop="mouseLeave(data)"
- style="box-sizing: border-box;padding-right:70px!important;;"
- >
- <div style="width:100%;">
- <span style="text-overflow: ellipsis;"> {{ data.title }} </span>
- <!-- <span> {{ node}} </span> -->
- <!-- 添加 -->
- <span>
- <!-- 调整排序 -->
- <el-link :underline="false">
- <i
- class="el-icon-sort"
- @click.stop="sortpai(data, node)"
- v-if="node.level == 2"
- title="调整排序"
- ></i>
- </el-link>
- </span>
- </div>
- </span>
- </avue-tree>
- </div>
- </div>
- </div>
- <div
- class="boxswai"
- style="width:74%;padding-left:0px;padding-right:0px;"
- >
- <div class="boxnei">
- <div
- class="marleft10"
- style="height:100%;
- display: flex;flex-direction: column;"
- >
- <!-- 上传、删除、下载操作栏 -->
- <div
- class="rightHeader"
- v-show="from.checkd"
- >
- </div>
- <el-empty
- style="height:80%;"
- v-show="false"
- description="该目录为根目录没有EXCEL文件"
- ></el-empty>
- <div
- class="martop20"
- v-if="true"
- style="flex:1;"
- >
- <avue-crud
- ref="crud"
- :data="loadData"
- :option="loadOption"
- v-model="obj"
- :page.sync="page"
- @on-load="onLoad"
- @selection-change="selectionChange"
- :table-loading="tabloading"
- @current-change="currentChange"
- @size-change="sizeChange"
- @refresh-change="refreshChange"
- >
- <template slot="menuRight">
- <el-button
- type="danger"
- size="small"
- icon="el-icon-delete"
- plain
- @click="handleDelete">删除元素表
- </el-button>
- <el-button
- size="small"
- type="primary"
- plain
- @click="editele"
- >编辑表单
- </el-button>
- </template>
- <template slot="menuLeft" slot-scope="{size}">
- <el-input placeholder="请输入你想搜索的表单名称" v-model="input3" :size="size" @clear="clearinput" clearable>
- <i class="el-icon-search" slot="append" @click="searchChange" style=" cursor:pointer;font-size: 16px;"></i>
- </el-input>
- </template>
- <template slot-scope="{type,size,row}" slot="menu">
- <el-button :size="size" :type="type" @click="distribution(row)">分配节点</el-button>
- <el-button :size="size" :type="type" @click="handleEditFormula(row)">公式配置</el-button>
- <el-button :size="size" :type="type" @click="editElement(row)">编辑元素</el-button>
- </template>
- </avue-crud>
- </div>
- </div>
- </div>
- </div>
- <!-- 编辑元素表单信息 -->
- <el-dialog
- title="编辑元素表单信息"
- :visible.sync="editElementFormTag"
- width="60%"
- :modal-append-to-body="false"
- >
- <div>
- <el-table
- :data="formDatass"
- border
- style="width: 100%"
- >
- <el-table-column
- prop="tableName"
- label="表名"
- >
- <template slot-scope="scope">
- <el-input
- v-model="scope.row.tableName"
- placeholder="请输入表名称"
- ></el-input>
- </template>
- </el-table-column>
- <el-table-column
- prop="tableType"
- label="表类型"
- >
- <template slot-scope="scope">
- <el-select
- v-model="scope.row.tableType"
- placeholder="请选择"
- >
- <el-option
- v-for="(item,key) in tableTypelist"
- :key="key"
- :label="item.dictValue"
- :value="item.dictKey"
- >
- </el-option>
- </el-select>
- </template>
- </el-table-column>
- <el-table-column
- prop="tableOwner"
- label="所属方"
- >
- <template slot-scope="scope">
- <el-select
- v-model="scope.row.tableOwner"
- placeholder="请选择"
- >
- <el-option
- v-for="(item,key) in ownerTypeList"
- :key="key"
- :label="item.dictValue"
- :value="item.dictKey"
- >
- </el-option>
- </el-select>
- </template>
- </el-table-column>
- <el-table-column
- prop="fillRate"
- label="填报率"
- >
- <template slot-scope="scope">
- <el-input
- v-model="scope.row.fillRate"
- placeholder="请输入填报率"
- ></el-input>
- </template>
- </el-table-column>
- </el-table>
- </div>
- <span
- slot="footer"
- class="dialog-footer"
- >
- <el-button @click="editElementFormTag = false">取 消</el-button>
- <el-button
- type="primary"
- @click="editeditElementFormMF()"
- >确 定</el-button>
- </span>
- </el-dialog>
- <!-- 公式配置 -->
- <el-dialog
- title="元素公式"
- :visible.sync="editEleFormulaVisible"
- width="800px"
- append-to-body
- :close-on-click-modal="false"
- >
- <div class="flex mg-b-10">
- <el-input
- v-model="formulaInput"
- placeholder="请输入名称"
- size="samll" clearable @clear="searchFormulaName"
- ></el-input>
- <el-button type="info" class="mg-l-10" @click="searchFormulaName">搜索</el-button>
- </div>
- <el-table
- :data="editEleListFilter"
- border
- style="width: 100%"
- height="400px"
- >
- <el-table-column align="center" prop="eName" label="字段信息">
- </el-table-column>
- <el-table-column align="center" label="操作" width="200">
- <template slot-scope="scope">
- <el-link
- :type="scope.row.globalFormula == 1 ? 'warning' : 'primary'"
- @click="toFormulaEdit(scope.row,1)"
- >全局公式</el-link
- >
- <!-- <el-link
- class="mg-l-10"
- :type="scope.row.isSaveFormula == 1 ? 'warning' : 'primary'"
- @click="toFormulaEdit(scope.row,10)"
- >节点公式</el-link
- > -->
- <!-- <el-link
- class="mg-l-10"
- type="danger"
- @click="delEleRowHandle(scope.$index,editEleListFilter)"
- >删除</el-link> -->
- </template>
- </el-table-column>
- </el-table>
- </el-dialog>
- <!-- 公式 -->
- <el-dialog
- title="元素公式"
- :visible.sync="formulaCompVisible"
- fullscreen
- append-to-body
- class="full-dialog"
- >
- <FormulaEdit
- :wbsid="id"
- :nodeid="curTreeData.id"
- :eleid="formulaCurRow.id"
- :projectid="projectid"
- :elementType="formulaCurRow.elementType"
- :globaltype="formulaCurRow.globaltype"
- @hideDialog="formulaCompVisible = false"
- v-if="formulaCompVisible"
- ></FormulaEdit>
- </el-dialog>
- <!-- 关联公共WBS模板 -->
- <PublicWbs ref="PublicWbs" :from="from"/>
- <!-- 编辑元素 -->
- <el-dialog
- :title="(curEleTable.title?curEleTable.title:'')+' 元素编辑'"
- :visible.sync="editEleVisible"
- width="80%"
- append-to-body
- :close-on-click-modal="false"
- >
- <p class="font-c-warning">编辑元素信息(请谨慎操作)</p>
- <el-table
- :data="editEleList"
- border
- style="width: 100%"
- height="400px"
- v-loading="editEleloading"
- >
- <el-table-column
- align="center"
- type="index"
- width="50"
- ></el-table-column>
- <el-table-column
- align="center"
- prop="eName"
- label="元素名称"
- >
- <template slot="header">
- <i class="required"></i>
- <span>元素名称</span>
- </template>
- <template slot-scope="scope">
- <el-input
- v-model="scope.row.eName"
- size="small"
- placeholder="请输入内容"
- ></el-input>
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- prop="eType"
- label="数据类型"
- width="120"
- >
- <template slot="header">
- <i class="required"></i>
- <span>数据类型</span>
- </template>
- <template slot-scope="scope">
- <el-select
- v-model="scope.row.eType"
- @change="setDefaultLength(scope.row)"
- size="small"
- placeholder="请选择"
- >
- <el-option
- v-for="item in dataTypeList"
- :key="item.id"
- :label="item.dictValue"
- :value="item.dictKey"
- ></el-option>
- </el-select>
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- prop="eLength"
- label="长度"
- width="120"
- >
- <template slot="header">
- <i class="required"></i>
- <span>长度</span>
- </template>
- <template slot-scope="scope">
- <el-input
- v-model="scope.row.eLength"
- size="small"
- placeholder="请输入内容"
- ></el-input>
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- prop="eAllowDeviation"
- label="允许偏差值"
- >
- <template slot-scope="scope">
- <div class="flex">
- <el-select
- v-model="scope.row.allow"
- size="small"
- placeholder="请选择"
- style="width:120px"
- >
- <el-option
- :key="1"
- label="-"
- value="-"
- ></el-option>
- <el-option
- :key="2"
- label=">"
- value=">"
- ></el-option>
- <el-option
- :key="3"
- label="<"
- value="<"
- ></el-option>
- <el-option
- :key="4"
- label="≥"
- value="≥"
- ></el-option>
- <el-option
- :key="5"
- label="≤"
- value="≤"
- ></el-option>
- <el-option
- :key="6"
- label="±"
- value="±"
- ></el-option>
- <el-option
- :key="7"
- label="【】"
- value="【】"
- ></el-option>
- </el-select>
- <el-input
- v-model="scope.row.deviation"
- size="small"
- placeholder="请输入内容"
- ></el-input>
- </div>
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- prop="eInspectionMethod"
- label="检查方法和频率"
- >
- <template slot-scope="scope">
- <el-input
- v-model="scope.row.eInspectionMethod"
- size="small"
- placeholder="请输入内容"
- ></el-input>
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- label="操作"
- width="120"
- >
- <template slot="header">
- <el-button
- @click="addEleRow(editEleList)"
- type="text"
- icon="el-icon-circle-plus-outline"
- class="text-icon"
- ></el-button>
- </template>
- <template slot-scope="scope">
- <el-button
- v-if="scope.row.id"
- icon="el-icon-remove-outline"
- type="text"
- @click="delEleRowHandle(scope.$index,editEleList)"
- class="text-icon text-icon-danger"
- ></el-button>
- <div
- class="flex"
- v-else
- >
- <el-button
- @click="saveNewEle(scope.row)"
- type="mini"
- >保存</el-button>
- <el-button
- icon="el-icon-remove-outline"
- type="text"
- @click="delEleRowHandle(scope.$index,editEleList)"
- class="text-icon text-icon-danger"
- ></el-button>
- </div>
- </template>
- </el-table-column>
- </el-table>
- <span
- slot="footer"
- class="dialog-footer"
- >
- <el-button @click="editEleVisible = false">取 消</el-button>
- <el-button
- type="primary"
- @click="saveEles"
- >确 定</el-button>
- </span>
- </el-dialog>
- <!-- 私有wbs树排序弹框 -->
- <el-dialog
- title="调整排序"
- :visible.sync="sortTag"
- width="50%"
- append-to-body
-
- >
- <ManualSorting v-if="sortTag2" @bianhua="bianhua()" :sort="sort" />
- <span slot="footer" class="dialog-footer">
- <el-button @click="(sortTag = false), (sortTag2 = false)"
- >取 消</el-button
- >
- <el-button type="primary" @click="editSort()">确 定</el-button>
- </span>
- </el-dialog>
- </div>
- </template>
- <script>
- import { excelType} from '@/api/exctab/excelmodel';
- import {
- updateBatchNodeTableInfoElement,
- selectByNodeTable,
- selectFormElements,
- selectPrivateFormElements
- } from "@/api/manager/wbstree";
- import {getTableElments} from "@/api/manager/wbstree";
- import {tabTypeLazyTreeAll,delTabInfoAll} from "@/api/manager/wbsprivate";
- import {saveElement, remove as removeElement, updateBatchElements, getTemplate,importWbsElement} from "@/api/manager/wbsformelement";
- import FormulaEdit from "@/views/formula/edit1.vue";
- import PublicWbs from './PublicWbs.vue'
- import { searchNodeTables, } from "@/api/exctab/excelmodel";
- import {wbsInfotabSort} from "@/api/manager/wbsinfo";
- import { getDictionary } from "@/api/system/dict";
- import ManualSorting from '@/components/WbsTree/ManualSorting'
- export default {
- components:{
- FormulaEdit,
- PublicWbs,
- ManualSorting
- },
- data () {
- return {
- input3:'',
- editElementFormTag:false,//编辑元素
- tabloading:false,
- formDatass: [],
- selectionList:[],
- tableTypelist:[],
- ownerTypeList:[],
- dataTypeList:[],
- //数据类型的默认长度
- dataTypeDefaultMap: {
- 1: 250,//字符串
- 2: 50,//整数
- 3: 50,//小数
- 4: 50,//日期
- 5: 50,//数值
- 6: 50,//签名
- 7: 100,//文件
- },
- page: {
- size: 10,
- current: 1,
- total: 2
- },
- loadOption: {
- height: 'auto',
- calcHeight: 30,
- tip: false,
- searchShow:false,
- searchMenuSpan: 6,
- border: true,
- index: true,
- viewBtn: false,
- selection: true,
- editBtn:false,
- delBtn:false,
- addBtn:false,
- menu:true,
- dialogClickModal: false,
- column: [
- {
- label: "元素表名称",
- prop: "title",
- editDisplay: false,
- addDisplay: false,
- },
- {
- label: "元素表类型",
- prop: "tabType",
- // search: true,
- rules: [
- {
- required: true,
- message: "请输入名称",
- trigger: "blur",
- },
- ],
- },
- {
- label: "元素总量",
- prop: "elementTotal",
- editDisplay: false,
- addDisplay: false,
- rules: [
- {
- message: "请输入表数量",
- trigger: "blur",
- },
- ],
- },
- {
- label: "所属方",
- prop: "tabOwner",
- editDisplay: false,
- addDisplay: false,
- rules: [
- {
- message: "请输入表数量",
- trigger: "blur",
- },
- ],
- },
- {
- label: "填报率",
- prop: "fillRate",
- editDisplay: false,
- addDisplay: false,
- rules: [
- {
- message: "请输入表数量",
- trigger: "blur",
- },
- ],
- },
- ],
- },
- formelemtfoelemtformrm: {},
- elementloading: false,
- elemtData:[
- {
- tableName:'张三',
- sex:'男',
- id:1
- }, {
- tableName:'李四',
- sex:'女',
- id:2
- }
- ],
- curEleTable:{},
- eleReg: /(-|>|<|≥|≤|±|【】)?([^≥≤±【】]*)/,
- editEleList:[],
- editEleListAll:[],
- editEleFormulaVisible:false,
- editEleListFilter:[],
- excelId:'',
- treeNode: {},
- //#region 鼠标
- leftTRee: '',//左侧树ID
- threessW: 400,
- //#endregion
- heightss: '',//
- data: [],//清表模板
- filterText:"",//搜索关键字
- treeloading:false,
- defaultProps: {
- children: "children",
- isLeaf: function (data) {
- return !data.hasChildren || (data.isExistForm == 1);
- },
- },
- wbsdata: [],//wbs模板
- //#region 右侧数据
- from:{
- checkd:false
- },
- rules: {
- nodeName: [
- { required: true, message: '请输入清表名称', trigger: 'blur' },
- ],
- tabType: [
- { required: true, message: '请选择清表类型', trigger: 'blur' },
- ],
- },
- wbsform: {
- id: '',
- wbsType: '',
- wbsName: '',
- },//wbs树选中的值
- tableData: [],//右侧表数据
- wbsmiddle: false,//选择wbs模板那块是否有
- tableList: [],//进行处理的wbs关联表
- exceltypeData: [],//清表类型枚举
- wbsmodel: [],//wbs模板名称枚举
- //#endregion
- saveExcelLoad:false,
- filterText1: "",
- addTableData:[],
- //编辑元素
- editEleVisible:false,
- editEleloading:false,
- formulaInput:"",//公式配置
- formulaCompVisible: false, //公式弹框
- formulaCurRow: {}, //当前元素
- id:'',
- curTreeData:{},
- loadData:[],
- treeOption:{
- defaultExpandedKeys:[],
- currentNode:{},
- filter:false,
- addBtn:false,
- props:{
- labelText:'标题',
- label:'title',
- value:'id',
- children:'children'
- },
-
- lazy: true,
- treeLoad: function (node, resolve) {
- const parentId = (node.level === 0) ? 12345678910 : node.data.id;
- tabTypeLazyTreeAll({parentId,current:1,size:1000}).then(res => {
- resolve(res.data.data.records.map(item => {
- return {
- ...item,
- leaf: !item.hasChildren
- }
- }))
- });
- },
- },
- treeData:'',
- projectid:"",
- curNode:{},
- defaultExpandKey:[],//默认展开的节点
- sortTag: false,
- sortTag2: false,
- sort:[]
- }
- },
- computed:{
- ids () {
- let ids = [];
- this.selectionList.forEach(ele => {
- ids.push(ele.id);
- });
- return ids.join(",");
- }
- },
- methods: {
- //#region 树形控件外层左侧事件
- mouseLeave (data) {
- if (data.moreShow) {
- this.$set(data, 'moreShow', false)
- }
- },
- mouseOver (data) {
- if (!data.moreShow) {
- this.$set(data, 'moreShow', true)
- }
- },
- async sortpai(data,node) {
- console.log(data,node);
- this.curNode=node;
- this.curTreeData=data;
- await this.findWbsTreePrivateSameLevel(node,data)
- this.sortTag = true;
- this.sortTag2 = true;
- },
- editSort() {
- this.wbsInfotabSort();
- },
- bianhua() {
- this.sortTag2 = false;
- this.$nextTick(() => {
- this.sortTag2 = true;
- });
- },
- async wbsInfotabSort() {
- //元素库、独立库节点排序
- var newArr=this.sort.map((v)=>{return v.id})
- newArr=newArr.join(',')
- const { data: res } = await wbsInfotabSort(newArr);
- console.log(res);
- if (res.code == 200) {
- this.sortTag = false;
- this.sortTag2 = false;
- this.refreshTreeData();
- }
- },
- async findWbsTreePrivateSameLevel(node,data) {
- const { data: res } =await tabTypeLazyTreeAll({parentId:node.data.parentId,current:1,size:1000});
- if (res.code == 200) {
- console.log(res.data,'res1111111');
- let tabArr=res.data.records
- tabArr.forEach((item)=>{
- item.tableName=item.title
- })
- console.log(tabArr,'tabArr');
- this.sort =tabArr
- }
- },
-
- addEleRow (list) {
- list.push({});
- },
- delEleRow (index, list) {
- list.splice(index, 1);
- },
- delEleRowHandle (index, list) {
- let row = list[index];
- if (row.id) {
- //有id需要请求删除
- this.$confirm('是否确认删除?', '删除元素', {
- distinguishCancelAndClose: true,
- confirmButtonText: '删除',
- cancelButtonText: '取消'
- }).then(() => {
- removeElement(row.id, this.curEleTable.initTableName, row.ekey).then(() => {
- list.splice(index, 1);
- })
- this.curEleTable.elementTotal --;
- })
- } else {
- list.splice(index, 1);
- }
- },
- formatTableType(cellValue) {
- for (let i = 0; i < this.tableTypelist.length; i++) {
- if (this.tableTypelist[i].dictValue == cellValue) {
- return this.tableTypelist[i].dictKey;
- }
- }
- return cellValue;
- //console.log(cellValue)
- },
- formatOwner( cellValue) {
- for (let i = 0; i < this.ownerTypeList.length; i++) {
- if (this.ownerTypeList[i].dictValue == cellValue) {
- return this.ownerTypeList[i].dictKey;
- }
- }
- return cellValue;
- //console.log(cellValue)
- },
- currentChange (currentPage) {
- this.page.current = currentPage;
- },
- sizeChange (pageSize) {
- this.page.size = pageSize;
- },
- selectionChange (list) {
- this.selectionList = list;
- },
- selectionClear () {
- this.selectionList = [];
- this.$refs.crud.toggleSelection();
- },
- async tabTypeLazyTreeAll ( parentId,current,size,titleName) {//清表树
- console.log(parentId);
- const { data: res } = await tabTypeLazyTreeAll({parentId,current,size,titleName} )
- if (res.code === 200) {
- return res.data
- }
- },
- nodeClick(data,node){
- console.log(data,node,'treedata');
- this.curNode=node
- this.curTreeData=data
- this.treeId=data.id
- this.page.current=1;
- this.page.currentPage=1
- if(data.hasChildren){
- this.onLoad(this.page)
- }
- if(data.hasChildren===false&&node.level==2){
- this.tabloading=true;
- let arr=[]
- arr.push(data)
- this.loadData=arr
- this.page.total=1
- setTimeout(() => {
- this.tabloading=false
-
- }, 1000);
- }else{
- this.loadData=[]
- this.page.total=0
- }
-
- },
- refreshChange () {
- this.searchChange();
- },
- onLoad(page, params = {}){
- if(this.treeId){
- this.tabloading=true;
- this.tabTypeLazyTreeAll(this.treeId, page.currentPage,page.pageSize).then((res)=>{
- this.loadData=res.records
- this.page.total=res.total
- this.tabloading=false
- })
- }
- },
- //编辑后刷新
- onLoad1(){
- if(this.curNode.level===1&&this.curNode.data.hasChildren){
- this.tabloading=true;
- this.tabTypeLazyTreeAll(this.treeId, this.page.current,this.page.size,this.input3).then((res)=>{
- this.loadData=res.records
- this.page.total=res.total
- this.tabloading=false
- })
- }else{
-
- this.tabTypeLazyTreeAll(this.curNode.data.parentId,this.page.current,1000,this.input3).then((res)=>{
- let faArr=res.records;
- this.loadData=faArr.filter((item)=>{
- if(item.id===this.treeId){
- return item
- }
- })
- })
- }
- },
- //搜索
- searchChange(){
- if(this.treeId){
- if(this.curTreeData.hasChildren){
- this.tabloading=true;
- this.tabTypeLazyTreeAll(this.curTreeData.id, this.page.current,this.page.size,this.input3).then((res)=>{
- this.loadData=res.records
- this.page.total=res.total
- this.tabloading=false;
- })
- }
- if(this.curTreeData.hasChildren===false&&this.curNode.level==2){
- this.tabloading=true;
- let arr=[]
- arr.push(this.curTreeData)
- this.loadData=arr
- this.page.total=1;
- setTimeout(() => {
- this.tabloading=false
-
- }, 1000);
- }else{
- this.tabloading=true;
- this.loadData=[]
- this.page.total=0
- setTimeout(() => {
- this.tabloading=false
-
- }, 1000);
- }
- }else{
- this.$message.warning("请选选择左侧节点");
- }
- },
- clearinput(){
- this.searchChange()
- },
- resetChange(item){
- console.log(item);
- this.tabTypeLazyTreeAll(this.treeId, this.page.current,this.page.size).then((res)=>{
- this.loadData=res.records
- this.page.total=res.total
- })
- },
- handleDelete () {
- if (this.selectionList.length === 0) {
- this.$message.warning("请选择至少一条数据");
- return;
- }
- this.$confirm("确定将选择数据删除?", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning"
- })
- .then(() => {
- return delTabInfoAll(this.ids);
- })
- .then(() => {
- this.onLoad(this.page);//刷新表格数据
- //刷新左边树形数据
- this.refreshTreeData()
- this.$message({
- type: "success",
- message: "操作成功!"
- });
- this.$refs.crud.toggleSelection();
- });
- },
- // //刷新左边树形数据
- // refreshTreeData(){
- // const parentId =12345678910
- // tabTypeLazyTreeAll({parentId,current:1,siez:1000}).then(res => {
- // this.treeData=res.data.data.records;
- // this.$nextTick(()=>{
- // //树默认展开
- // if(this.curNode.level===1){
- // this.treeOption.defaultExpandedKeys.push(this.curNode.data.id);
- // this.$refs.avueTree.setCurrentKey(this.curNode.data.id)
-
- // }else{
- // this.treeOption.defaultExpandedKeys.push(this.curNode.data.parentId);
- // // 设置选中的节点
- // this.treeOption.currentNode =this.curNode.data.id
- // this.$refs.avueTree.setCurrentKey(this.curNode.data.id)
- // }
-
- // })
- // });
- // },
- //刷新左边树形数据
- refreshTreeData(){
- if(this.curNode.level===1){
- const parentId =12345678910
- tabTypeLazyTreeAll({parentId,current:1,size:1000}).then(res => {
- this.data=res.data.data.records;
- this.$nextTick(()=>{
- this.defaultExpandKey.push(this.curNode.data.id);
- this.$refs.avueTree.setCurrentKey(this.curNode.data.id);
- })
- });
- }else{
- this.updateTreeNewNode()
- }
- },
- //编辑元素表单信息
- updateTreeNewNode() {
- tabTypeLazyTreeAll(
- {parentId:this.curTreeData.parentId,current:1,size:1000}
- ).then((res) => {
- var resarr= res.data.data.records.map(item=>{
- return{
- ...item,
- leaf: !item.hasChildren
- }
- })
- this.$refs.avueTree.updateKeyChildren(
- this.curTreeData.parentId,
- // res.data.data.records
- resarr
- );
- this.$refs.avueTree.setCurrentKey(this.curNode.data.id);
- });
- },
- editElement (row) {
- console.log(row,'row');
- this.curEleTable = row;
- this.editEleloading=true
- selectPrivateFormElements(this.curEleTable.id).then((res) => {
- this.editEleloading=false
- res.data.data.forEach((element) => {
- this.eleReg.exec(element.eAllowDeviation);
- //console.log(RegExp.$1)
- //console.log(RegExp.$2)
- element.allow = RegExp.$1 ? RegExp.$1 : '';
- element.deviation = RegExp.$2 ? RegExp.$2 : '';
- })
- this.editEleList = res.data.data;
- })
- this.editEleVisible = true;
- },
- //修改数据类型,给个默认值
- setDefatableTypeultLength (row) {
- this.$set(row, 'eLength', this.dataTypeDefaultMap[row.eType]);
- },
- //分配节点
- distribution(row){
- console.log(row);
- this.from.id=row.id;
- this.from.title=row.title;
- this.from.tableType=row.tabType
- this.from.tableType=this.formatTableType(this.from.tableType);
- this.from.tableOwner=row.tabOwner
- this.from.tableOwner=this.formatOwner(this.from.tableOwner);
- this.$refs.PublicWbs.show();
- },
- saveNewEle (row) {
- if (!row.eName) {
- this.$message({
- type: "warning",
- message: "请填写元素名称"
- });
- return;
- }
- if (!row.eType) {
- this.$message({
- type: "warning",
- message: "请选择数据类型"
- });
- return;
- }
- row.eAllowDeviation = (row.allow ? row.allow : '') + (row.deviation ? row.deviation : '');
- row.fId = this.curEleTable.id;
- row.initTableName = this.curEleTable.initTableName;
- if (!row.eLength) {
- this.$message({
- type: "warning",
- message: "请填写长度"
- });
- return;
- }
- saveElement(row).then((res) => {
- if (res.data.data) {
- this.$set(row, 'id', res.data.data.id);
- this.$set(row, 'ekey', res.data.data.ekey);
- this.$message({
- type: "success",
- message: "保存成功!"
- });
- }
- })
- },
- saveEles () {
- for (let i = 0; i < this.editEleList.length; i++) {
- if (!this.editEleList[i].id) {
- this.$message({
- type: "warning",
- message: "请先将新增的元素点击保存"
- });
- return;
- }
- if (!this.editEleList[i].eName) {
- this.$message({
- type: "warning",
- message: "请填写第" + (i + 1) + "条元素名称"
- });
- return;
- }
- if (!this.editEleList[i].eType) {
- this.$message({
- type: "warning",
- message: "请选择第" + (i + 1) + "条数据类型"
- });
- return;
- }
- if ( !this.editEleList[i].eLength) {
- this.$message({
- type: "warning",
- message: "请填写第" + (i + 1) + "条长度"
- });
- return;
- }
- }
- if (this.editEleList.length > 0) {
- this.editEleList.forEach((element) => {
- element.eAllowDeviation = (element.allow ? element.allow : '') + (element.deviation ? element.deviation : '');
- // if (element.eType == 4) {
- // this.$set(element, 'eLength', 0);
- // //element.eLength = 0;
- // }
- })
- console.log(this.editEleList,'this.editEleList');
- updateBatchElements(this.editEleList, this.curEleTable.initTableName).then(() => {
- this.editEleVisible = false;
- this.onLoad1(this.page);
- this.$message({
- type: "success",
- message: "保存成功!"
- });
- })
- } else {
- this.editEleVisible = false;
- this.onLoad1(this.page);
- this.$message({
- type: "success",
- message: "保存成功!"
- });
- }
- },
- handleEditFormula ( row) {
- console.log(row,'row');
- this.curEleTable = row;
- getTableElments(this.curEleTable.id).then((res) => {
- this.editEleListFilter = res.data.data;
- this.editEleListAll = [].concat(this.editEleListFilter);
- })
- this.editEleFormulaVisible = true;
- },
- //搜索 筛选
- searchFormulaName(){
- this.editEleListFilter = this.editEleListAll.filter((ele)=>{
- return ele.eName.indexOf(this.formulaInput) > -1;
- })
- },
- //跳转到公式配置页面
- toFormulaEdit(row,type) {
- this.formulaCurRow = row;
- this.formulaCurRow.globaltype = type;
- this.formulaCurRow.elementType = false;
- this.formulaCompVisible = true;
- },
- editele(){
- console.log('编辑元素表单信息');
- if (this.selectionList.length === 0) {
- this.$message.warning("请选择至少一条数据");
- return;
- }
- if (this.elemtData.length) {
- let da = []
- this.formDatass = [...this.selectionList];
- console.log(this.formDatass,'his.formDatass111');
- this.formDatass.forEach(val => {
- da.push({
- tableType: val.tabType,
- tableOwner: val.tabOwner,
- id: val.id,
- tableName: val.title,
- fillRate: val.fillRate,
- })
- })
- this.formDatass = da
- console.log(this.formDatass,'this.formDatass');
- let fa=[]
- this.formDatass.forEach(val=>{
- let newarr= this.tableTypelist.filter(e => e.dictValue===val.tableType);
- let newarr1= this.ownerTypeList.filter(e => e.dictValue===val.tableOwner);
- fa.push({
- tableType: newarr[0].dictKey,
- tableOwner: newarr1[0].dictKey,
- id: val.id,
- tableName: val.tableName,
- fillRate: val.fillRate,
- })
- })
- this.formDatass=fa
- this.editElementFormTag = true;
- }
- },
- getOwnerTypelist() {
- if (this.ownerTypeList.length > 1) {
- return;
- }
- getDictionary({
- code: "owner_type",
- }).then((res) => {
- res.data.data.forEach((element) => {
- element.dictKey = Number(element.dictKey);
- });
- this.ownerTypeList = res.data.data;
- });
- },
- getDataTypelist() {
- if (this.dataTypeList.length > 1) {
- return;
- }
- getDictionary({
- code: "data_type",
- }).then((res) => {
- res.data.data.forEach((element) => {
- element.dictKey = Number(element.dictKey);
- });
- this.dataTypeList = res.data.data;
- });
- },
- getTableTypelist() {
- if (this.tableTypelist.length > 1) {
- return;
- }
- getDictionary({
- code: "table_type",
- }).then((res) => {
- res.data.data.forEach((element) => {
- element.dictKey = Number(element.dictKey);
- });
- this.tableTypelist = res.data.data;
- });
- },
- editeditElementFormMF () {//保存按钮
- let da = []
- let tag = true
- console.log(this.tableTypelist,'tableTypelist');
- this.formDatass.forEach(val => {
- if (!val.tableName || !val.tableType || !val.tableOwner) {
- tag = false
- return
- } else {
- da.push({
- id: val.id,
- nodeName: val.tableName,
- tableType: val.tableType,
- tableOwner:val.tableOwner,
- fillRate: val.fillRate,
- Type:10
- })
- }
- })
- if (tag) {
- this.updateBatchNodeTableInfoElement(da)
- } else {
- this.$message({
- type: 'success',
- message: '请填写完整元素表单的所有信息!',
- })
- }
- },
- async updateBatchNodeTableInfoElement (da) {//共有编辑元素
- console.log(da,'编辑表单');
- const { data: res } = await updateBatchNodeTableInfoElement(da)
- if (res.code == 200) {
- this.$message.success('操作成功');
- this.editElementFormTag = false
- this.onLoad1(this.page);
- }
- },
- async excelType () {//清表类型
- const { data: res } = await excelType({ code: 'sys_excltab_type' })
- console.log(res);
- if (res.code === 200) {
- res.data.forEach(element => {
- element.dictKey = Number(element.dictKey)
- });
- this.exceltypeData = res.data
- }
- },
- //查看节点下已关联的元素表信息
- searchNodeTables(id) {
- searchNodeTables(id, this.from.id).then((res) => {
- if (res.data.data.length > 0) {
- res.data.data.forEach((val) => {
- if (val.isLinkTable == 2) {
- val.checknd = true;
- } else {
- val.checknd = false;
- }
- val.loading = false;
- });
- this.addTableData = res.data.data;
- } else {
- this.addTableData = [];
- }
- });
- },
- },
- created () {
- this.getTableTypelist();
- this.getOwnerTypelist();
- this.getDataTypelist();
- },
- mounted () {
- // this.heightss = this.$refs.rulesss.clientHeight
- }
- }
- </script>
- <style scoped lang="scss">
- .marleft10 {
- margin-left: 10px;
- }
- /deep/.el-tree-node__expand-icon {
- font-size: 16px;
- }
- .colorblue {
- color: rgb(0, 82, 217);
- }
- .treecontent /deep/.el-scrollbar {
- height: 100%;
- }
- .el-scrollbar {
- height: 100%;
- }
- .rightHeader {
- display: flex;
- justify-content: flex-start;
- align-items: top;
- font-size: 14px;
- background-color: #fff;
- .excelname {
- box-sizing: border-box;
- min-width: 200px;
- height: 28px;
- border: 1px solid rgb(220, 220, 220);
- padding: 0 10px;
- border-radius: 3px;
- display: flex;
- justify-content: space-between;
- align-items: center;
- }
- }
- .dialogModel {
- .dialogBox {
- .middle {
- display: flex;
- .left {
- border: 1px solid rgb(220, 220, 220);
- border-radius: 3px;
- height: 500px;
- width: 49%;
- .select {
- box-sizing: border-box;
- display: flex;
- justify-content: center;
- padding: 5px 0;
- border-bottom: 1px solid #e0e0e0;
- }
- .leftscroll {
- height: 450px;
- overflow-y: scroll;
- }
- }
- .right {
- height: auto;
- height: 60px;
- max-height: 500px;
- margin-left: 2%;
- // height: 500px;
- border-radius: 3px;
- td {
- box-sizing: border-box;
- padding: 5px 10px;
- height: 30px;
- line-height: 30px;
- }
- }
- }
- }
- .btbox {
- margin-top: 20px;
- display: flex;
- justify-content: center;
- }
- }
- .rightBox {
- flex: 1;
- }
- .boxswai{
- height: 100%;
- box-sizing: border-box;
- padding-bottom: 10px;
- }
- /deep/.avue-crud__left{
- width: 65% !important;
- }
- /deep/.el-input-group__append{
- background-color: #ecf5ff;
- color: #409EFF;
-
- }
- /deep/.el-input-group__append:hover{
- background-color: #409EFF;
- color: white;
- }
- /deep/.el-input-group__prepend:hover{
- background-color: #409EFF;
- color: white;
- }
- /deep/.el-input-group__append:active{
- background-color: #9dc5ee;
- color: white;
- }
- /deep/.el-input-group__prepend:active{
- background-color: #9dc5ee;
- color: white;
- }
- </style>
|