ifelse copy.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733
  1. <template>
  2. <div class="ifelse-box">
  3. <div class="flex jc-al-c">
  4. <span v-if="symbol!=='|'">IF条件执行</span>
  5. <el-select v-model="symbol" @change="setCondition()" size="medium" placeholder="请选择" >
  6. <el-option label="大于等于" value=">="></el-option>
  7. <el-option label="小于等于" value="<="></el-option>
  8. <el-option label="大于" value=">"></el-option>
  9. <el-option label="小于" value="<"></el-option>
  10. <el-option label="等于" value="="></el-option>
  11. <el-option label="小于且大于" value="<&&<"></el-option>
  12. <el-option label="小于等于且大于等于" value="<=&&<="></el-option>
  13. <el-option label="试验判断" value="|"></el-option>
  14. </el-select>
  15. <span class="mg-l-20 mg-r-10" v-if="symbol!=='|'">执行结果</span>
  16. <el-select v-model="result" @change="setTF()" size="medium" placeholder="请选择" v-if="symbol!=='|'">
  17. <el-option label="真假值" value="1"></el-option>
  18. <el-option label="运算" value="2"></el-option>
  19. </el-select>
  20. <el-button class="mg-l-10" size="small" type="info" @click="showSelectEle">选择参数</el-button>
  21. </div>
  22. <div class="mg-t-20 flex jc-al-c">
  23. <span class="textblod mg-r-20" v-if="symbol!=='|'">IF</span>
  24. <div class="flex jc-al-c" v-if="symbol == '<&&<' || symbol == '<=&&<='">
  25. <vue-tags-input v-model="tag1" :tags="tags1" @focus="curFocusIndex = 1" @blur="inputBlur(1)" placeholder="输入/参数" @before-adding-tag="beforeAddingTag"/>
  26. <span v-if="symbol == '<&&<'" class="mg-l-20 mg-r-20">&lt;</span>
  27. <span v-if="symbol == '<=&&<='" class="mg-l-20 mg-r-20">≤</span>
  28. </div>
  29. <vue-tags-input v-model="tag2" :tags="tags2" @focus="curFocusIndex = 2" @blur="inputBlur(2)" placeholder="输入/参数" @before-adding-tag="beforeAddingTag"/>
  30. <span class="mg-l-20 mg-r-20">
  31. <span v-if="symbol == '>='">≥</span>
  32. <span v-if="symbol == '<='">≤</span>
  33. <span v-if="symbol == '>'">&gt;</span>
  34. <span v-if="symbol == '<'">&lt;</span>
  35. <span v-if="symbol == '='">=</span>
  36. <span v-if="symbol == '<&&<'">&lt;</span>
  37. <span v-if="symbol == '|'">|</span>
  38. </span>
  39. <vue-tags-input v-model="tag3" :tags="tags3" @focus="curFocusIndex = 3" @blur="inputBlur(3)" placeholder="输入/参数" @before-adding-tag="beforeAddingTag"/>
  40. </div>
  41. <div class="flex jc-al-c mg-t-20" v-if="result == 1">
  42. <span class="textblod mg-r-10">真值</span>
  43. <vue-tags-input v-model="tag4" :tags="tags4" @focus="curFocusIndex = 4" @blur="inputBlur(4)" placeholder="输入/参数" @before-adding-tag="beforeAddingTag" @keyup.native="btKeyUp"/>
  44. <span class="textblod mg-r-10 mg-l-20">假值</span>
  45. <vue-tags-input v-model="tag5" :tags="tags5" @focus="curFocusIndex = 5" @blur="inputBlur(5)" placeholder="输入/参数" @before-adding-tag="beforeAddingTag" @keyup.native="btKeyUp"/>
  46. </div>
  47. <div class="mg-t-20" v-if="result == 2">
  48. <div class="flex">
  49. <span class="textblod mg-r-10">真值</span>
  50. <div class="border-grey sele-ele-box flex1" :class="{'border-green':curFocusIndex == 6}" @click="curFocusIndex = 6">
  51. <div class="flex jc-sb mg-b-20">
  52. <!-- <div>定位数据位置:</div> -->
  53. <div class="icon-box">
  54. <el-link :underline="false" icon="el-icon-delete" type="danger" @click="removeSelect"></el-link>
  55. <el-link :underline="false" type="primary" @click="addOperator('+')" icon="el-icon-circle-plus-outline"></el-link>
  56. <el-link :underline="false" type="primary" @click="addOperator('-')" icon="el-icon-remove-outline"></el-link>
  57. <el-link :underline="false" type="primary" @click="addOperator('*')" icon="el-icon-circle-close"></el-link>
  58. <el-link :underline="false" type="primary" @click="addOperator('%')">÷</el-link>
  59. </div>
  60. <div>
  61. <!-- <el-link :underline="false" type="primary" class="mg-r-20" @click="eleAddFormula">元素添加到公式</el-link> -->
  62. <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets('(',false)">(</el-link>
  63. <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets(')',true)">)</el-link>
  64. <!-- <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets('[',false)">【</el-link>
  65. <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets(']',true)">】</el-link> -->
  66. <el-link :underline="false" type="primary" @click="addText">输入值</el-link>
  67. </div>
  68. </div>
  69. <draggable v-model="selectEleFormula">
  70. <formula-item
  71. v-for="(item,index) in selectEleFormula" :key="index"
  72. :item="item" @click="obj => eleFormulaClick(obj,index)"
  73. >
  74. </formula-item>
  75. </draggable>
  76. </div>
  77. </div>
  78. <div class="flex mg-t-10">
  79. <span class="textblod mg-r-10">假值</span>
  80. <div class="border-grey sele-ele-box flex1" :class="{'border-green':curFocusIndex == 7}" @click="curFocusIndex = 7">
  81. <div class="flex jc-sb mg-b-20">
  82. <!-- <div>定位数据位置:</div> -->
  83. <div class="icon-box">
  84. <el-link :underline="false" icon="el-icon-delete" type="danger" @click="removeSelect"></el-link>
  85. <el-link :underline="false" type="primary" @click="addOperator('+')" icon="el-icon-circle-plus-outline"></el-link>
  86. <el-link :underline="false" type="primary" @click="addOperator('-')" icon="el-icon-remove-outline"></el-link>
  87. <el-link :underline="false" type="primary" @click="addOperator('*')" icon="el-icon-circle-close"></el-link>
  88. <el-link :underline="false" type="primary" @click="addOperator('%')">÷</el-link>
  89. </div>
  90. <div>
  91. <!-- <el-link :underline="false" type="primary" class="mg-r-20" @click="eleAddFormula">元素添加到公式</el-link> -->
  92. <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets('(',false)">(</el-link>
  93. <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets(')',true)">)</el-link>
  94. <!-- <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets('[',false)">【</el-link>
  95. <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets(']',true)">】</el-link> -->
  96. <el-link :underline="false" type="primary" @click="addText">输入值</el-link>
  97. </div>
  98. </div>
  99. <draggable v-model="selectEleFormula2">
  100. <formula-item
  101. v-for="(item,index) in selectEleFormula2" :key="index"
  102. :item="item" @click="obj => eleFormulaClick(obj,index)"
  103. >
  104. </formula-item>
  105. </draggable>
  106. </div>
  107. </div>
  108. </div>
  109. <el-dialog title="输入值" :visible.sync="inputVisible" width="300px" append-to-body :close-on-click-modal="false">
  110. <el-input v-model="inputText" placeholder="请输入内容"></el-input>
  111. <div class="text-align-c mg-t-10">
  112. <el-button size="small" @click="addTextHandle" type="primary">保存</el-button>
  113. <el-button size="small" @click="inputVisible = false">取消</el-button>
  114. </div>
  115. </el-dialog>
  116. </div>
  117. </template>
  118. <script>
  119. import VueTagsInput from '@johmun/vue-tags-input';
  120. import formulaItem from "../formulaItem";
  121. import draggable from 'vuedraggable';
  122. export default {
  123. name: "ifelse",
  124. components: {
  125. draggable,
  126. VueTagsInput,
  127. formulaItem,
  128. },
  129. props: {
  130. formulainfo: {
  131. type: Object,
  132. default: function () {
  133. return {};
  134. }
  135. },
  136. curele: {
  137. type: Object,
  138. default: function () {
  139. return {};
  140. }
  141. },
  142. formulamap:{
  143. type: Object,
  144. default: function () {
  145. return {};
  146. }
  147. }
  148. },
  149. data(){
  150. return{
  151. symbol:'>=',
  152. result:'1',
  153. selectEleFormula:[],
  154. selectEleFormula2:[],
  155. curFocusIndex:0,//当前在哪个输入框
  156. curSeleEleIndex:-1,//公式文字里面选中的元素索引
  157. symbolReg:/(\+|-|\*|\/)(.+)/,
  158. inputVisible:false,
  159. inputText:'',
  160. tag1: '',
  161. tags1: [],
  162. tag2: '',
  163. tags2: [],
  164. tag3: '',
  165. tags3: [],
  166. tag4: '',
  167. tags4: [],
  168. tag5: '',
  169. tags5: [],
  170. }
  171. },
  172. mounted(){
  173. //console.log(this.formulainfo.arguments[0])
  174. //console.log(this.formulainfo.arguments[1])
  175. let args0 = this.formulainfo.arguments[0];
  176. let args1 = this.formulainfo.arguments[1];
  177. let args2 = this.formulainfo.arguments[2];
  178. this.initCondition(args0);
  179. if((typeof args1 == 'string' || (typeof args1 == 'object' && (args1.type == 'Element' || args1.type == 'ParamData'))) &&
  180. (typeof args2 == 'string' || (typeof args2 == 'object' && (args2.type == 'Element' || args2.type == 'ParamData')))
  181. ){
  182. this.initTFInput(args1,args2);
  183. }else if(Array.isArray(args1) || Array.isArray(args2)){
  184. this.result = '2';
  185. this.initTFFormula(args1,args2)
  186. }
  187. },
  188. methods:{
  189. showSelectEle(){
  190. this.$set(this.formulainfo,'showSelectEle',!this.formulainfo.showSelectEle);
  191. },
  192. beforeAddingTag(){
  193. },
  194. btKeyUp(e) {
  195. //把中文标点符号转换成英文的
  196. e.target.value = e.target.value.replace(/“/g,'"');
  197. e.target.value = e.target.value.replace(/”/g,'"');
  198. e.target.value = e.target.value.replace(/’/g,"'");
  199. e.target.value = e.target.value.replace(/‘/g,"'");
  200. },
  201. inputHook(){
  202. console.log(111)
  203. },
  204. inputBlur(num){
  205. if(this['tag'+num]){
  206. if(this['tags'+num] && this['tags'+num][0]){
  207. this.$emit('uncheck',this['tags'+num][0].id)
  208. }
  209. this['tags'+num] = [];
  210. }
  211. if(num>=1&&num<=3){
  212. this.setCondition();
  213. }else if(num>=4&&num<=5){
  214. this.setTF();
  215. }
  216. },
  217. addText(){
  218. this.inputVisible = true;
  219. },
  220. //把元素加到公式里
  221. eleAddFormulaHandle(ele){
  222. let eleFormula;
  223. if(this.curFocusIndex == 6){
  224. eleFormula = this.selectEleFormula;
  225. }else if(this.curFocusIndex == 7){
  226. eleFormula = this.selectEleFormula2;
  227. }else{
  228. return;
  229. }
  230. if(ele.tableElementKey){
  231. //元素
  232. //简单语法判断
  233. if(eleFormula.length != 0){
  234. let lastEle = eleFormula[eleFormula.length-1];
  235. if(lastEle.type == 'Element'){
  236. this.$message({
  237. type: "warning",
  238. message: "元素无法连续出现在元素后面"
  239. });
  240. return;
  241. }
  242. if(lastEle.type == 'Text'){
  243. this.$message({
  244. type: "warning",
  245. message: "元素无法连续出现在输入值后面"
  246. });
  247. return;
  248. }
  249. if(lastEle.type == 'Brackets' && lastEle.name == ')'){
  250. this.$message({
  251. type: "warning",
  252. message: "元素无法连续出现在右括号后面"
  253. });
  254. return;
  255. }
  256. }
  257. eleFormula.push({
  258. type:'Element',
  259. name:ele.eName,
  260. id:ele.id,
  261. selected:false,
  262. tableElementKey:ele.tableElementKey,
  263. children:[],
  264. })
  265. }else if(ele.template && ele.example){
  266. //运算符号
  267. //简单语法判断
  268. if(eleFormula.length == 0){
  269. this.$message({
  270. type: "warning",
  271. message: "公式开头不能是运算符号"
  272. });
  273. return;
  274. }else{
  275. let lastEle = eleFormula[eleFormula.length-1];
  276. if(lastEle.type == 'Operator'){
  277. this.$message({
  278. type: "warning",
  279. message: "运算符号无法连续出现在运算符号后面"
  280. });
  281. return;
  282. }
  283. if(lastEle.type == 'Brackets' && lastEle.name == '('){
  284. this.$message({
  285. type: "warning",
  286. message: "运算符号无法连续出现在左括号后面"
  287. });
  288. return;
  289. }
  290. }
  291. eleFormula.push({
  292. type:'Operator',
  293. name:this.symbolReg.exec(ele.name)[1],
  294. selected:false,
  295. template:ele.template
  296. })
  297. }else if(ele.type == 'Brackets'){
  298. //括号
  299. eleFormula.splice(ele.selectIndex,0,{
  300. type:'Brackets',
  301. name:ele.name,
  302. selected:false,
  303. })
  304. }else if(ele.type == 'Text'){
  305. //输入值
  306. eleFormula.push({
  307. type:'Text',
  308. name:ele.name,
  309. selected:false,
  310. })
  311. }else if(ele.k){
  312. //节点参数
  313. eleFormula.push({
  314. type:'ParamData',
  315. name:ele.name,
  316. selected:false,
  317. id:ele.id,
  318. v:ele.v,
  319. k:ele.k,
  320. })
  321. }
  322. this.setTF();
  323. },
  324. //点选公式中的元素
  325. eleFormulaClick({selected,item},index){
  326. let eleFormula;
  327. if(this.curFocusIndex == 6){
  328. eleFormula = this.selectEleFormula;
  329. }else if(this.curFocusIndex == 7){
  330. eleFormula = this.selectEleFormula2;
  331. }else{
  332. return;
  333. }
  334. if(selected){
  335. eleFormula.forEach((ele)=>{
  336. ele.selected = false;
  337. })
  338. item.selected = true;
  339. this.curSeleEleIndex = index;
  340. }else{
  341. this.curSeleEleIndex = -1;
  342. }
  343. },
  344. //快捷添加运算符号
  345. addOperator(operator){
  346. this.eleAddFormulaHandle(this.formulamap[operator]);
  347. },
  348. //删除点选公式中的元素
  349. removeSelect(){
  350. let eleFormula;
  351. if(this.curFocusIndex == 6){
  352. eleFormula = this.selectEleFormula;
  353. }else if(this.curFocusIndex == 7){
  354. eleFormula = this.selectEleFormula2;
  355. }else{
  356. return;
  357. }
  358. if(this.curSeleEleIndex > -1){
  359. eleFormula.splice(this.curSeleEleIndex,1);
  360. this.curSeleEleIndex = -1;
  361. }
  362. this.setTF();
  363. },
  364. //添加括号
  365. addBrackets(text,type){
  366. //type 是true 表示在元素右边插入
  367. if(this.curSeleEleIndex == Number(this.curSeleEleIndex)){
  368. this.eleAddFormulaHandle({
  369. type:'Brackets',
  370. name:text,
  371. selectIndex:type?Number(this.curSeleEleIndex)+1:this.curSeleEleIndex
  372. })
  373. //如果在左边插入index要增1
  374. if(!type){
  375. this.curSeleEleIndex = Number(this.curSeleEleIndex)+1;
  376. }
  377. }
  378. },
  379. //添加输入值
  380. addTextHandle(){
  381. let eleFormula;
  382. if(this.curFocusIndex == 6){
  383. eleFormula = this.selectEleFormula;
  384. }else if(this.curFocusIndex == 7){
  385. eleFormula = this.selectEleFormula2;
  386. }else{
  387. return;
  388. }
  389. //简单语法判断
  390. if(eleFormula.length != 0){
  391. let lastEle = eleFormula[eleFormula.length-1];
  392. if(lastEle.type == 'Element'){
  393. this.$message({
  394. type: "warning",
  395. message: "输入值无法连续出现在元素后面"
  396. });
  397. return;
  398. }
  399. if(lastEle.type == 'Text'){
  400. this.$message({
  401. type: "warning",
  402. message: "输入值无法连续出现在输入值后面"
  403. });
  404. return;
  405. }
  406. if(lastEle.type == 'Brackets' && lastEle.name == ')'){
  407. this.$message({
  408. type: "warning",
  409. message: "输入值无法连续出现在右括号后面"
  410. });
  411. return;
  412. }
  413. }
  414. this.eleAddFormulaHandle({
  415. type:'Text',
  416. name:this.inputText
  417. })
  418. this.inputVisible = false;
  419. },
  420. setELe(ele){
  421. if(this.curFocusIndex){
  422. let obj = {};
  423. if(ele.k){
  424. obj = {
  425. type:'ParamData',
  426. name:ele.name,
  427. id:ele.id,
  428. selected:false,
  429. v:ele.v,
  430. k:ele.k,
  431. children:[],
  432. }
  433. }else{
  434. obj = {
  435. type:'Element',
  436. name:ele.eName,
  437. id:ele.id,
  438. selected:false,
  439. tableElementKey:ele.tableElementKey,
  440. children:[],
  441. }
  442. }
  443. if(this.curFocusIndex == 6 || this.curFocusIndex ==7){
  444. this.eleAddFormulaHandle(ele)
  445. }else{
  446. if(this['tags'+this.curFocusIndex] && this['tags'+this.curFocusIndex][0]){
  447. this.$emit('uncheck',this['tags'+this.curFocusIndex][0].id)
  448. }
  449. obj.text = obj.name;
  450. obj.style = 'background-color: #409EFF';
  451. this['tags'+this.curFocusIndex] = [obj];
  452. this['tag'+this.curFocusIndex] = '';
  453. if(this.curFocusIndex == 4 || this.curFocusIndex == 5){
  454. this.setTF();
  455. }else{
  456. this.setCondition();
  457. }
  458. //this.curFocusIndex = 0;
  459. }
  460. }
  461. },
  462. //初始化真假值判断if(xxx)部分
  463. initCondition(args0){
  464. if(args0){
  465. if(args0.length == 3){
  466. //运算符号
  467. this.symbol = args0[1];
  468. //第二个空
  469. if((typeof args0[0]) == 'object' && (args0[0].type == 'Element' || args0[0].type == 'ParamData')){
  470. let ele = args0[0];
  471. this.tags2 = [
  472. Object.assign({
  473. text:ele.name,
  474. style:'background-color: #409EFF',
  475. },ele)]
  476. }else if((typeof args0[0]) == 'string'){
  477. this.tag2 = args0[0];
  478. }
  479. //第三个空
  480. if((typeof args0[2]) == 'object' && (args0[2].type == 'Element' || args0[2].type == 'ParamData')){
  481. let ele = args0[2];
  482. this.tags3 = [
  483. Object.assign({
  484. text:ele.name,
  485. style:'background-color: #409EFF',
  486. },ele)]
  487. }else if((typeof args0[2]) == 'string'){
  488. this.tag3 = args0[2];
  489. }
  490. }else if(args0.length == 7){
  491. //运算符号
  492. this.symbol = args0[1]+args0[3]+args0[5];
  493. //第一个空
  494. if((typeof args0[0]) == 'object' && (args0[0].type == 'Element' || args0[0].type == 'ParamData')){
  495. let ele = args0[0];
  496. this.tags1 = [
  497. Object.assign({
  498. text:ele.name,
  499. style:'background-color: #409EFF',
  500. },ele)]
  501. }else if((typeof args0[0]) == 'string'){
  502. this.tag1 = args0[0];
  503. }
  504. //第二个空
  505. if((typeof args0[2]) == 'object' && (args0[2].type == 'Element' || args0[2].type == 'ParamData')){
  506. let ele = args0[2];
  507. this.tags2 = [
  508. Object.assign({
  509. text:ele.name,
  510. style:'background-color: #409EFF',
  511. },ele)]
  512. }else if((typeof args0[2]) == 'string'){
  513. this.tag2 = args0[2];
  514. }
  515. //第三个空
  516. if((typeof args0[6]) == 'object' && (args0[6].type == 'Element' || args0[6].type == 'ParamData')){
  517. let ele = args0[6];
  518. this.tags3 = [
  519. Object.assign({
  520. text:ele.name,
  521. style:'background-color: #409EFF',
  522. },ele)]
  523. }else if((typeof args0[6]) == 'string'){
  524. this.tag3 = args0[6];
  525. }
  526. }else if(typeof args0 == 'object' && (args0.type == 'Element' || args0.type == 'ParamData')){
  527. let ele = args0;
  528. this.tags2 = [
  529. Object.assign({
  530. text:ele.name,
  531. style:'background-color: #409EFF',
  532. },ele)]
  533. }
  534. }
  535. },
  536. //写入参数真假值判断if(xxx)部分
  537. setCondition(){
  538. if(this.symbol == '<&&<' || this.symbol == '<=&&<='){
  539. let arr = new Array(7).fill('');
  540. let symbolArr = this.symbol.split('&&');
  541. if(this.tags1.length == 0){
  542. arr[0] = this.tag1;
  543. }else{
  544. arr[0] = this.tags1[0];
  545. }
  546. arr[1] = symbolArr[0];
  547. if(this.tags2.length == 0){
  548. arr[2] = this.tag2;
  549. arr[4] = this.tag2;
  550. }else{
  551. arr[2] = this.tags2[0];
  552. arr[4] = this.tags2[0];
  553. }
  554. arr[3] = '&&';
  555. arr[5] = symbolArr[1];
  556. if(this.tags3.length == 0){
  557. arr[6] = this.tag3;
  558. }else{
  559. arr[6] = this.tags3[0];
  560. }
  561. this.formulainfo.arguments[0] = arr;
  562. }else{
  563. let arr = new Array(3).fill('');
  564. if(this.tags2.length == 0){
  565. arr[0] = this.tag2;
  566. }else{
  567. arr[0] = this.tags2[0];
  568. }
  569. arr[1] = this.symbol;
  570. if(this.tags3.length == 0){
  571. arr[2] = this.tag3;
  572. }else{
  573. arr[2] = this.tags3[0];
  574. }
  575. this.formulainfo.arguments[0] = arr;
  576. }
  577. //console.log(this.formulainfo.arguments[0])
  578. },
  579. //初始化输入框的真假值
  580. initTFInput(args1,args2){
  581. if((typeof args1) == 'object' && (args1.type == 'Element' || args1.type == 'ParamData')){
  582. let ele = args1;
  583. this.tags4 = [
  584. Object.assign({
  585. text:ele.name,
  586. style:'background-color: #409EFF',
  587. },ele)]
  588. }else if((typeof args1) == 'string'){
  589. this.tag4 = args1;
  590. }
  591. if((typeof args2) == 'object' && (args2.type == 'Element' || args2.type == 'ParamData')){
  592. let ele = args2;
  593. this.tags5 = [
  594. Object.assign({
  595. text:ele.name,
  596. style:'background-color: #409EFF',
  597. },ele)]
  598. }else if((typeof args2) == 'string'){
  599. this.tag5 = args2;
  600. }
  601. },
  602. //初始化运算的真假值
  603. initTFFormula(args1,args2){
  604. if(Array.isArray(args1)){
  605. args1.forEach((a,index)=>{
  606. if(typeof a == 'string'){
  607. this.$set(args1,index,{
  608. type:'Text',
  609. name:a,
  610. selected:false,
  611. })
  612. }
  613. })
  614. this.selectEleFormula = args1;
  615. }else if(typeof args1 == 'object' && (args1.type == 'Element' || args1.type == 'ParamData')){
  616. this.selectEleFormula = [Object.assign({},args1)];
  617. }else if(typeof args1 == 'string'){
  618. this.selectEleFormula = [{
  619. type:'Text',
  620. name:args1,
  621. selected:false,
  622. }]
  623. }
  624. if(Array.isArray(args2)){
  625. args2.forEach((a,index)=>{
  626. if(typeof a == 'string'){
  627. this.$set(args2,index,{
  628. type:'Text',
  629. name:a,
  630. selected:false,
  631. })
  632. }
  633. })
  634. this.selectEleFormula2 = args2;
  635. }else if(typeof args2 == 'object' && (args2.type == 'Element' || args2.type == 'ParamData')){
  636. this.selectEleFormula2 = [Object.assign({},args2)];
  637. }else if(typeof args2 == 'string'){
  638. this.selectEleFormula2 = [{
  639. type:'Text',
  640. name:args2,
  641. selected:false,
  642. }]
  643. }
  644. },
  645. //写入参数真假值
  646. setTF(){
  647. if(this.result == 1){
  648. if(this.tags4.length == 0){
  649. this.formulainfo.arguments[1] = this.tag4;
  650. }else{
  651. this.formulainfo.arguments[1] = this.tags4[0];
  652. }
  653. if(this.tags5.length == 0){
  654. this.formulainfo.arguments[2] = this.tag5;
  655. }else{
  656. this.formulainfo.arguments[2] = this.tags5[0];
  657. }
  658. }else if(this.result == 2){
  659. this.formulainfo.arguments[1] = this.selectEleFormula;
  660. this.formulainfo.arguments[2] = this.selectEleFormula2;
  661. }
  662. },
  663. }
  664. }
  665. </script>
  666. <style scoped lang="scss">
  667. .textblod{
  668. font-weight: bold;
  669. font-size: 18px;
  670. }
  671. .sele-ele-box{
  672. height: 100px;
  673. padding: 10px;
  674. // margin-top: 10px;
  675. }
  676. .icon-box .el-link{
  677. font-size: 20px;
  678. margin-right: 10px;
  679. }
  680. </style>