addChart.vue 39 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333
  1. <template>
  2. <div class="addchart-container" id="box">
  3. <span
  4. class="slide-icon slide-right"
  5. @click="isSlideLeft = !isSlideLeft"
  6. v-show="isSlideLeft"
  7. >
  8. <i class="el-icon-d-arrow-right"></i>
  9. </span>
  10. <div class="left-cont" v-show="!isSlideLeft" id="left">
  11. <div class="left-top">
  12. <el-button
  13. type="primary"
  14. @click="saveHandle"
  15. :disabled="chartInfo.ChartType === 5 && tableData.length !== 2"
  16. ><!-- 保存 -->{{$t('Dialog.confirm_save_btn')}}</el-button>
  17. <el-button type="primary" plain @click="$router.back()"><!-- 取消 -->{{$t('Dialog.cancel_btn')}}</el-button>
  18. </div>
  19. <div class="left-min">
  20. <el-form
  21. ref="diaForm"
  22. label-position="top"
  23. label-width="80px"
  24. :model="chartInfo"
  25. :rules="chartRules"
  26. >
  27. <el-form-item :label="$t('EtaChartAddPage.label_chart_type')" prop="ChartType">
  28. <el-select
  29. v-model="chartInfo.ChartType"
  30. placeholder="请选择生成样式"
  31. style="width: 90%"
  32. >
  33. <el-option
  34. v-for="item in styleArr"
  35. :key="item.key"
  36. :label="item.label"
  37. :value="item.key"
  38. >
  39. </el-option>
  40. </el-select>
  41. </el-form-item>
  42. <el-form-item :label="$t('EtaChartAddPage.label_chart_theme')" prop="Theme">
  43. <el-select
  44. v-model="chartInfo.ChartThemeId"
  45. placeholder="请选择图表主题"
  46. style="width: 90%"
  47. @change="changeThemeHandle"
  48. >
  49. <el-option
  50. v-for="item in chartThemeArr"
  51. :key="item.ChartThemeId"
  52. :label="item.ChartThemeName"
  53. :value="item.ChartThemeId"
  54. >
  55. </el-option>
  56. </el-select>
  57. </el-form-item>
  58. <el-form-item label="">
  59. <div class="search-cont" v-if="chartInfo.ChartType!==10">
  60. <div>
  61. <label><!-- 选择指标 -->{{$t('Edb.choose_edb')}}:</label>
  62. <el-radio-group v-model="edbFromType">
  63. <el-radio :label="0" style="margin-right: 15px"><!-- ETA指标 -->{{$t('Edb.eta_name')}}</el-radio>
  64. <el-radio :label="1"><!-- ETA预测指标 -->{{$t('Edb.eta_predictor_name')}}</el-radio>
  65. </el-radio-group>
  66. </div>
  67. <el-select
  68. v-model="search_txt"
  69. v-loadMore="searchLoad"
  70. ref="searchRef"
  71. :filterable="!search_txt"
  72. remote
  73. clearable
  74. :placeholder="$t('Edb.InputHolderAll.input_name_orid')"
  75. style="width:90%;margin-top: 10px;display: block;"
  76. :remote-method="searchHandle"
  77. @click.native="inputFocusHandle"
  78. @change="selectTarget($event && searchOptions.find(_ => _.EdbInfoId === $event))"
  79. >
  80. <i slot="prefix" class="el-input__icon el-icon-search"></i>
  81. <el-option
  82. v-for="item in searchOptions"
  83. :key="item.EdbInfoId"
  84. :label="chart_lang==='en'?(item.EdbNameEn||item.EdbName):item.EdbName"
  85. :value="item.EdbInfoId"
  86. :disabled="!item.HaveOperaAuth"
  87. >
  88. <edbDetailPopover :info="item">
  89. <div slot="reference">
  90. <img
  91. :src="$icons.lock_ico2"
  92. width="18"
  93. height="18"
  94. style="vertical-align:middle"
  95. v-if="!item.HaveOperaAuth"
  96. />
  97. {{chart_lang==='en'?(item.EdbNameEn||item.EdbName):item.EdbName }}
  98. </div>
  99. </edbDetailPopover>
  100. </el-option>
  101. </el-select>
  102. </div>
  103. </el-form-item>
  104. <el-form-item :label="$t('Chart.Detail.chart_name')" prop="ChartName">
  105. <el-input
  106. v-model="chartInfo.ChartName"
  107. style="width: 90%"
  108. :placeholder="$t('Dialog.require_vaild')"
  109. clearable
  110. />
  111. </el-form-item>
  112. <el-form-item :label="$t('Chart.Detail.chart_classify')" prop="classify">
  113. <el-cascader
  114. v-model="chartInfo.classify"
  115. :options="classifyOptions"
  116. :props="levelProps"
  117. style="width: 90%"
  118. :placeholder="$t('Chart.InputHolderAll.input_classify')"
  119. />
  120. </el-form-item>
  121. <el-form-item :label="$t('Chart.Detail.chart_unit')" prop="Unit" v-if="[7,11].includes(chartInfo.ChartType)">
  122. <el-select
  123. v-model="chartInfo.Unit"
  124. filterable
  125. allow-create
  126. default-first-option
  127. clearable
  128. @change="changeUnit"
  129. :placeholder="$t('Chart.InputHolderAll.input_common',{label:$t('Chart.Detail.chart_unit')})">
  130. <el-option
  131. v-for="item in UnitOptions"
  132. :key="item.label"
  133. :label="item.label"
  134. :value="item.value">
  135. </el-option>
  136. </el-select>
  137. </el-form-item>
  138. </el-form>
  139. <div class="xaxis-range-cont" v-if="chartInfo.ChartType===2 && tableData && tableData.length>0">
  140. <!-- 仅用于季节性图配置 -->
  141. <div style="margin-bottom: 12px;" class="xaxis-range-tip">
  142. {{$t('EtaChartAddPage.label_xserie_range')}}<!-- 横坐标显示范围 -->
  143. <el-tooltip>
  144. <div slot="content" v-html="$t('EtaChartAddPage.xserie_range_tip')">
  145. </div>
  146. <img src="~@/assets/img/icons/question_mark_black.png" style="height: 16px;cursor: pointer;margin-left: 6px;" />
  147. </el-tooltip>
  148. </div>
  149. <el-date-picker
  150. style="width: 45%;"
  151. v-model="SeasonExtraConfig.XStartDate"
  152. value-format="MM-dd"
  153. popper-class="x-range-picker-date"
  154. format="MM-dd"
  155. :placeholder="$t('Common.ph_time_start')"
  156. @change="xAxisChange"
  157. :clearable="false"
  158. ></el-date-picker>
  159. <el-date-picker
  160. style="width: 45%;"
  161. v-model="SeasonExtraConfig.XEndDate"
  162. value-format="MM-dd"
  163. popper-class="x-range-picker-date"
  164. format="MM-dd"
  165. :placeholder="$t('Common.ph_time_end')"
  166. @change="xAxisChange"
  167. :clearable="false"
  168. ></el-date-picker>
  169. <el-checkbox
  170. :label="$t('EtaChartAddPage.label_cross_year')"
  171. v-model="isSpanYear"
  172. :disabled="isSpanYearDisable"
  173. style="margin-top: 12px;"
  174. @change="changeIsSpanYear"
  175. ></el-checkbox>
  176. <br />
  177. <div class="legend-set-text" @click="openLegendEditDia">
  178. <span>{{$t('EtaChartAddPage.label_legend_set')}}<!-- 图例名称设置 --></span>
  179. <img src="~@/assets/img/icons/edit-blue.png" />
  180. </div>
  181. </div>
  182. <div class="targetset-cont">
  183. <!-- 仅用于散点图配置 -->
  184. <div class="scatter-setting" v-if="chartInfo.ChartType === 5 && tableData.length">
  185. <div style="display: flex;margin-right: 15px;">
  186. <span style="margin-right: 3px"><!-- 散点颜色: -->{{$t('Chart.Detail.scatter_color')}}:</span>
  187. <el-color-picker
  188. v-model="tableData[0].ChartColor"
  189. size="mini"
  190. show-alpha
  191. :predefine="predefineColors"
  192. ></el-color-picker>
  193. </div>
  194. <el-checkbox v-model="tableData[0].IsOrder"><!-- 逆序 -->{{$t('Chart.Detail.re_order')}}</el-checkbox>
  195. </div>
  196. <!-- 配置区 柱形 截面 雷达不需要-->
  197. <el-collapse v-model="activeNames" class="target-list" v-if="tableData.length&&![7,10,11].includes(chartInfo.ChartType)">
  198. <el-collapse-item v-for="(item,index) in tableData" :key="item.EdbInfoId" :disabled="[2,5].includes(chartInfo.ChartType)">
  199. <template slot="title">
  200. <span class="text_oneLine">{{currentLang==='en'?(item.EdbNameEn||item.EdbName):item.EdbName}}</span>
  201. <i class="el-icon-delete del-icon" @click.stop="delTarget(item)"></i>
  202. </template>
  203. <ul class="setting-cont" v-if="sameOptionType.includes(chartInfo.ChartType)">
  204. <!-- 堆叠图 或组合图中的堆叠类型 非第一项隐藏配置 -->
  205. <template v-if="showYOptionsHandle(item,index)">
  206. <li>
  207. <el-checkbox v-model="item.IsOrder"><!-- 逆序 -->{{$t('Chart.Detail.re_order')}}</el-checkbox>
  208. </li>
  209. <li>
  210. <el-radio-group v-model="item.IsAxis" size="mini" @input="isChangeEdbAxis=true">
  211. <el-radio-button :label="1"><!-- 左轴 -->{{$t('Chart.Detail.l_axis')}}</el-radio-button>
  212. <el-radio-button :label="0"><!-- 右轴 -->{{$t('Chart.Detail.r_axis')}}</el-radio-button>
  213. <!-- 指标有右轴时才可以选右2轴 不然没有右2这个概念的意义 -->
  214. <el-radio-button
  215. v-if="[1,6].includes(chartInfo.ChartType)"
  216. :label="2"
  217. :disabled="(tableData.findIndex(_ => _.IsAxis===0) === -1)
  218. || (tableData.findIndex(_ => _.IsAxis===0) === index
  219. && tableData.filter(_ => _.IsAxis===0).length === 1)"
  220. ><!-- 右2轴 -->{{$t('Chart.Detail.rtwo_axis')}}</el-radio-button>
  221. </el-radio-group>
  222. </li>
  223. </template>
  224. <li style="min-width: 250px">
  225. <el-radio
  226. v-model="item.EdbInfoType"
  227. :label="1"
  228. @change="getPreviewSplineInfo"
  229. ><!-- 标准指标 -->{{$t('Chart.Detail.stand_lead')}}</el-radio
  230. >
  231. <div style="margin-top: 15px">
  232. <el-radio
  233. v-model="item.EdbInfoType"
  234. :label="0"
  235. style="margin-right: 10px"
  236. @change="getPreviewSplineInfo"
  237. ><!-- 领先指标 -->{{$t('Chart.Detail.leading_lead')}}</el-radio
  238. >
  239. <template v-if="item.EdbInfoType === 0">
  240. <!-- 领先 -->{{$t('EtaChartAddPage.label_lead')}}
  241. <el-input
  242. style="width: 60px"
  243. size="mini"
  244. type="number"
  245. min="0"
  246. v-model="item.LeadValue"
  247. @change="getPreviewSplineInfo"
  248. @keyup.native="filterCode(item)"
  249. ></el-input>
  250. <el-select
  251. v-model="item.LeadUnit"
  252. placeholder=""
  253. style="width: 60px"
  254. size="mini"
  255. @change="getPreviewSplineInfo"
  256. >
  257. <el-option
  258. v-for="item in fre_options"
  259. :key="item"
  260. :label="item"
  261. :value="item"
  262. >
  263. </el-option>
  264. </el-select>
  265. </template>
  266. </div>
  267. </li>
  268. <li>
  269. <div style="display: flex">
  270. <span style="margin-right: 3px"><!-- 线条颜色 -->{{$t('Chart.Detail.line_color')}}:</span>
  271. <el-color-picker
  272. v-model="item.ChartColor"
  273. size="mini"
  274. show-alpha
  275. :predefine="predefineColors"
  276. ></el-color-picker>
  277. </div>
  278. <div style="display: flex;margin-top: 12px" v-if="item.EdbInfoCategoryType === 1">
  279. <span style="margin-right: 3px"><!-- 预测值颜色 -->{{$t('Chart.Detail.predict_color')}}:</span>
  280. <el-color-picker
  281. v-model="item.PredictChartColor"
  282. size="mini"
  283. show-alpha
  284. :predefine="predefineColors"
  285. ></el-color-picker>
  286. </div>
  287. <div
  288. style="margin-top: 12px"
  289. v-if="chartInfo.ChartType === 1
  290. || (chartInfo.ChartType === 6 &&item.ChartStyle==='spline')"
  291. >
  292. <!-- 线条粗细 -->{{$t('Chart.Detail.line_size')}}:
  293. <el-input
  294. style="width: 60px"
  295. size="mini"
  296. type="number"
  297. :min="1"
  298. v-model="item.ChartWidth"
  299. />
  300. </div>
  301. </li>
  302. <li v-if="chartInfo.ChartType === 6">
  303. <div style="display: flex">
  304. <span style="margin-right: 3px"><!-- 生成样式 -->{{$t('Chart.label_create_sty')}}:</span>
  305. <el-select
  306. v-model="item.ChartStyle"
  307. placeholder="请选择生成样式"
  308. style="width: 50%"
  309. class="edb-item-style"
  310. >
  311. <el-option
  312. v-for="item in chartItemStyleArr"
  313. :key="item.key"
  314. :label="item.label"
  315. :value="item.value"
  316. >
  317. </el-option>
  318. </el-select>
  319. </div>
  320. </li>
  321. </ul>
  322. <div style="margin: 10px;text-align: center;color: #999;" v-else><!-- 暂无配置 -->{{$t('EtaChartAddPage.no_set_msg')}}</div>
  323. </el-collapse-item>
  324. </el-collapse>
  325. <!-- 奇怪柱状图配置 雷达图也要用 -->
  326. <bar-option
  327. v-if="[7,11].includes(chartInfo.ChartType)"
  328. ref="BarOptRef"
  329. :chartInfo="chartInfo"
  330. :edblist="tableData"
  331. :datedata="chartInfo.ChartType===7?barDateList:radarChartData.YDataList"
  332. @getData="barOptionPreviewMap"
  333. />
  334. <!-- 截面散点图 -->
  335. <sectional-scatter-option
  336. v-if="chartInfo.ChartType===10"
  337. ref="SectionScatterOptRef"
  338. :chartInfo="chartInfo"
  339. @getData="getSectionScatterData"
  340. @modifySeriesName="IsNameDefault = false"
  341. />
  342. <!-- 标识区 标记线 图表说明 -->
  343. <markersSection
  344. v-if="tableData.length"
  345. ref="markerSectionRef"
  346. :chartInfo="chartInfo"
  347. @update="setChartMarkerInfo"
  348. />
  349. </div>
  350. </div>
  351. <span
  352. class="move-btn resize"
  353. v-drag
  354. id="resize"
  355. ></span>
  356. <span class="slide-icon slide-left" @click="isSlideLeft = !isSlideLeft">
  357. <i class="el-icon-d-arrow-left"></i>
  358. </span>
  359. </div>
  360. <div class="right-cont" id="right" :style="isSlideLeft ? 'width:100%' : `width:80%`">
  361. <div class="chart-min-cont" v-if="tableData.length">
  362. <div class="cont-top">
  363. <div class="top-left">
  364. <!-- 默认曲线图 -->
  365. <template v-if="sameOptionType.includes(chartInfo.ChartType)">
  366. <el-button
  367. type="primary"
  368. v-for="item in yearSelector"
  369. :key="item.value"
  370. size="medium"
  371. :plain="item.value !== year_select"
  372. class="year-btn"
  373. @click.native="changeYear(item)"
  374. >{{ item.name }}</el-button
  375. >
  376. <el-button type="text" class="btn-sty" @click="openDateDia">{{
  377. dateTip
  378. }}</el-button>
  379. </template>
  380. <!-- 季节性图选择年份区间 -->
  381. <!-- <date-picker
  382. v-else-if="chartInfo.ChartType === 2"
  383. v-model="season_year"
  384. type="month"
  385. value-type="format"
  386. range
  387. placeholder="年份日期选择"
  388. @change="seasonYearChange"
  389. /> -->
  390. <div v-else-if="chartInfo.ChartType === 2" @click="openDateDia" class="date-setting">
  391. {{ season_year && season_year.length>0 ? season_year[0]+'~'+season_year[1]:"年份日期选择" }}
  392. </div>
  393. </div>
  394. </div>
  395. <div class="cont-bottom">
  396. <div class="chart-show-cont" v-show="options.series">
  397. <div class="chartWrapper" id="chartWrapper">
  398. <h2
  399. class="chart-title"
  400. v-show="chartInfo.ChartName"
  401. :style="`
  402. textAlign:${JSON.parse(chartInfo.ChartThemeStyle).titleOptions.align};
  403. fontSize:${JSON.parse(chartInfo.ChartThemeStyle).titleOptions.style.fontSize}px;
  404. color:${JSON.parse(chartInfo.ChartThemeStyle).titleOptions.style.color}
  405. `"
  406. >
  407. {{ chartInfo.ChartName }}
  408. </h2>
  409. <Chart :options="options" :chartInfo="chartInfo" ref="chartRef"/>
  410. <!-- <div class="range-cont left" v-if="leftIndex != -1">
  411. <el-input
  412. style="width: 60px; display: block"
  413. size="mini"
  414. type="number"
  415. placeholder="上限"
  416. v-model="tableData[leftIndex].MaxData"
  417. />
  418. <el-input
  419. class="min-data-input"
  420. size="mini"
  421. type="number"
  422. placeholder="下限"
  423. v-model="tableData[leftIndex].MinData"
  424. />
  425. </div>
  426. <div class="range-cont right" v-if="rightIndex != -1">
  427. <el-input
  428. style="width: 60px; display: block"
  429. size="mini"
  430. type="number"
  431. placeholder="上限"
  432. v-model="tableData[rightIndex].MaxData"
  433. />
  434. <el-input
  435. class="min-data-input"
  436. size="mini"
  437. type="number"
  438. placeholder="下限"
  439. v-model="tableData[rightIndex].MinData"
  440. />
  441. </div>
  442. <div class="range-cont rightTwo" v-if="rightTwoIndex != -1">
  443. <el-input
  444. style="width: 60px; display: block"
  445. size="mini"
  446. type="number"
  447. placeholder="上限"
  448. v-model="tableData[rightTwoIndex].MaxData"
  449. />
  450. <el-input
  451. class="min-data-input"
  452. size="mini"
  453. type="number"
  454. placeholder="下限"
  455. v-model="tableData[rightTwoIndex].MinData"
  456. />
  457. </div> -->
  458. <!-- 需求:曲线图、堆积柱状图、组合图加入新指标时上下限自动调整 -->
  459. <template v-if="![7,10,11].includes(chartInfo.ChartType)">
  460. <div class="range-cont left" v-if="leftIndex !== -1">
  461. <el-input
  462. style="width: 60px; display: block"
  463. size="mini"
  464. type="number"
  465. placeholder="上限"
  466. v-model="chartLimit.max"
  467. @change="changeLimit"
  468. />
  469. <el-input
  470. class="min-data-input"
  471. size="mini"
  472. type="number"
  473. placeholder="下限"
  474. v-model="chartLimit.min"
  475. @change="changeLimit"
  476. />
  477. </div>
  478. <div class="range-cont right" v-if="rightIndex !== -1">
  479. <el-input
  480. style="width: 60px; display: block"
  481. size="mini"
  482. type="number"
  483. placeholder="上限"
  484. v-model="chartLimit.rightMax"
  485. @change="changeLimit"
  486. />
  487. <el-input
  488. class="min-data-input"
  489. size="mini"
  490. type="number"
  491. placeholder="下限"
  492. v-model="chartLimit.rightMin"
  493. @change="changeLimit"
  494. />
  495. </div>
  496. <!-- 右2上下限设置 -->
  497. <div class="range-cont rightTwo" v-if="rightTwoIndex !== -1">
  498. <el-input
  499. style="width: 60px; display: block"
  500. size="mini"
  501. type="number"
  502. placeholder="上限"
  503. v-model="chartLimit.rightTwoMax"
  504. @change="changeLimit"
  505. />
  506. <el-input
  507. class="min-data-input"
  508. size="mini"
  509. type="number"
  510. placeholder="下限"
  511. v-model="chartLimit.rightTwoMin"
  512. @change="changeLimit"
  513. />
  514. </div>
  515. </template>
  516. <!-- 后续新图专用上下限 和其他数据依赖不公用 柱形图 截面散点-->
  517. <template v-if="[7,10,11].includes(chartInfo.ChartType)">
  518. <div class="range-cont left">
  519. <el-input
  520. style="width: 60px; display: block"
  521. size="mini"
  522. type="number"
  523. placeholder="上限"
  524. v-model="chartLimit.max"
  525. @change="changeLimit"
  526. />
  527. <el-input
  528. class="min-data-input"
  529. size="mini"
  530. type="number"
  531. placeholder="下限"
  532. v-model="chartLimit.min"
  533. @change="changeLimit"
  534. />
  535. </div>
  536. <!-- x轴上下限 -->
  537. <div class="range-cont bottom" v-if="chartLimit.x_min||chartLimit.x_max">
  538. <el-input
  539. class="left"
  540. size="mini"
  541. type="number"
  542. placeholder="下限"
  543. v-model="chartLimit.x_min"
  544. @change="changeLimit"
  545. />
  546. <el-input
  547. class="left"
  548. size="mini"
  549. type="number"
  550. placeholder="上限"
  551. v-model="chartLimit.x_max"
  552. @change="changeLimit"
  553. />
  554. </div>
  555. </template>
  556. </div>
  557. <div class="chart-bottom-insruction-info">
  558. <div class="chart-source">
  559. <span
  560. v-if="chartInfo.SourcesFrom"
  561. :style="`
  562. color: ${JSON.parse(chartInfo.SourcesFrom).isShow ? JSON.parse(chartInfo.SourcesFrom).color : '#999'};
  563. fontSize: ${ JSON.parse(chartInfo.SourcesFrom).fontSize }px;
  564. `"
  565. ><!-- 来源 -->{{$t('Chart.Detail.source')}}:{{ JSON.parse(chartInfo.SourcesFrom).text}}
  566. </span>
  567. <el-switch
  568. v-if="chartInfo.SourcesFrom"
  569. v-model="chartInfo.SourcesFromVisable"
  570. :active-value="true"
  571. :inactive-value="false"
  572. style="margin:0 15px;"
  573. @change="changeSourceVisable"
  574. />
  575. <span class="editsty" @click="isShowSourceDialog=true"><!-- 编辑 -->{{$t('Chart.chart_edit_btn')}}</span>
  576. </div>
  577. <!-- 公历农历切换 只用于季节性图 -->
  578. <el-radio-group
  579. v-model="calendar_type"
  580. class="calendar-cont"
  581. v-if="chartInfo.ChartType === 2"
  582. @change="getPreviewSplineInfo"
  583. >
  584. <el-radio-button label="公历">{{$t('Chart.calendar_gre')}}</el-radio-button>
  585. <el-radio-button label="农历">{{$t('Chart.calendar_lunar')}}</el-radio-button>
  586. </el-radio-group>
  587. <!-- 图表说明 -->
  588. <div
  589. class="chart-instruction"
  590. v-if="chartInfo.Instructions&&JSON.parse(chartInfo.Instructions).isShow"
  591. v-text="JSON.parse(chartInfo.Instructions).text"
  592. :style="`
  593. color: ${JSON.parse(chartInfo.Instructions).color};
  594. fontSize: ${ JSON.parse(chartInfo.Instructions).fontSize }px
  595. `"
  596. ></div>
  597. </div>
  598. <span class="chart-author"
  599. ><!-- 作者 -->{{$t('Chart.Detail.author')}}:{{ chartInfo.SysUserRealName || roleName }}</span
  600. >
  601. </div>
  602. <!-- 关联指标 -->
  603. <chartRelationEdbList
  604. :chartInfo="chartInfo"
  605. :tableData="tableData"
  606. :updateData="updateData"
  607. @changeTableData="changeTableData"
  608. @delTarget="delTarget"
  609. @copyCode="copyCode"
  610. @viewTarget="viewTarget"
  611. />
  612. </div>
  613. </div>
  614. <div class="nodata" v-else>
  615. <tableNoData :text="$t('Common.no_info_msg')"/>
  616. </div>
  617. </div>
  618. <!-- 日期端选择弹窗 -->
  619. <DateChooseDia
  620. :isDateDia="isDateDia"
  621. :dateForm="dateForm"
  622. :earliestDate="earliestDate"
  623. @cancel="isDateDia = false"
  624. @dateBack="dataChangeBack"
  625. />
  626. <!-- 季节性 图例设置 -->
  627. <LegendEditDia
  628. :isEditLegend="legendEditDiaShow"
  629. :legendList="SeasonExtraConfig.ChartLegend"
  630. @cancel="legendEditDiaShow = false"
  631. @saveLegend="saveLegend"
  632. />
  633. <!-- 数据来源编辑弹窗 -->
  634. <chartSourceEditDia
  635. :isShow.sync="isShowSourceDialog"
  636. :chartInfo="chartInfo"
  637. @update="value => {chartInfo.SourcesFrom=JSON.stringify({...value,isShow:chartInfo.SourcesFromVisable})}"
  638. />
  639. </div>
  640. </template>
  641. <script>
  642. import { dataBaseInterface } from '@/api/api.js';
  643. import { chartSetMixin } from './mixins/chartPublic';
  644. import {unitSelectList} from '@/utils/defaultOptions.js';
  645. import addOrEditMixn from './mixins/addOreditMixin';
  646. import Chart from './components/chart';
  647. import DateChooseDia from './components/DateChooseDia';
  648. import barOption from './components/barOptionSection.vue';
  649. import sectionalScatterOption from './components/sectionalScatterOption.vue';
  650. import LegendEditDia from './components/LegendEditDia.vue';
  651. import markersSection from './components/markersSection.vue';
  652. import chartSourceEditDia from './components/chartSourceEditDialog.vue';
  653. import chartRelationEdbList from './components/chartReleationEdbTable.vue';
  654. export default {
  655. components: { Chart,DateChooseDia,barOption,sectionalScatterOption,LegendEditDia,markersSection,chartSourceEditDia,chartRelationEdbList},
  656. directives: {
  657. drag(el, bindings) {
  658. el.onmousedown = function (e) {
  659. var init = e.clientX;
  660. // console.log(init);
  661. var box = $('#box')[0];
  662. // console.log(box.clientWidth)
  663. let total_wid = box.offsetWidth;
  664. var left = $('#left')[0];
  665. var right = $('#right')[0];
  666. var initWidth = left.offsetWidth;
  667. document.onmousemove = function (e) {
  668. var end = e.clientX;
  669. var newWidth = end - init + initWidth;
  670. left.style.width = newWidth + 'px';
  671. right.style.width = newWidth > 300 ? total_wid - newWidth + 'px' : total_wid - 320 + 'px';
  672. };
  673. document.onmouseup = function () {
  674. document.onmousemove = document.onmouseup = null;
  675. e.releaseCapture && e.releaseCapture();
  676. };
  677. e.setCapture && e.setCapture();
  678. return false;
  679. };
  680. },
  681. },
  682. watch: {
  683. tableData: {
  684. handler(newval, oldval) {
  685. if(newval.length) {
  686. if([7,10,11].includes(this.chartInfo.ChartType)) {
  687. // 奇怪柱形图
  688. this.chartInfo.ChartType === 7 && this.barDateList.length && this.$refs.BarOptRef.getBarData();
  689. //雷达图
  690. this.chartInfo.ChartType === 11 && this.$refs.BarOptRef.getBarData();
  691. }else {
  692. //拼接标题
  693. this.chartInfo.ChartName = this.sameOptionType.includes(this.chartInfo.ChartType)
  694. ? newval.map((item,index) => index === newval.length-1
  695. ? (this.currentLang==='en'?item.EdbNameEn:item.EdbName)
  696. : `${(this.currentLang==='en'?item.EdbNameEn:item.EdbName)}和`).join('')
  697. : `${this.currentLang==='en'?newval[0].EdbNameEn:newval[0].EdbName}季节性`;
  698. if(this.updateLimit){
  699. this.EdbAxisChange()
  700. }
  701. this.setAddChartDefault();
  702. this.setChartOptionHandle(newval);
  703. }
  704. // 设置起始日期和最新日期
  705. this.setExtremumDate()
  706. }else {
  707. this.chartInfo.ChartName = '';
  708. }
  709. },
  710. deep: true,
  711. }
  712. },
  713. computed: {
  714. roleName() {
  715. return localStorage.getItem('userName');
  716. },
  717. UnitOptions(){
  718. return unitSelectList()
  719. }
  720. },
  721. mixins: [chartSetMixin,addOrEditMixn],
  722. data() {
  723. return {
  724. isSlideLeft: false,
  725. search_txt: '',
  726. calendar_type: '公历',//默认公历
  727. season_year:'',//季节图时间段
  728. activeNames:'',
  729. needWatch: true,
  730. IsNameDefault:true,
  731. /* UnitOptions:unitArr, */
  732. useUnit:''
  733. };
  734. },
  735. methods: {
  736. /* 保存 */
  737. saveHandle() {
  738. if(!this.tableData.length)
  739. return this.$message.warning(/* '暂未选择指标' */this.$t('ToolBox.CommodityPriceChart.tips_msg05'));
  740. console.log(this.chartInfo)
  741. this.$refs.diaForm.validate((valid) => {
  742. if(valid) {
  743. // 季节图只允许添加一个指标
  744. if(this.chartInfo.ChartType === 2 && this.tableData.length > 1)
  745. return this.$message.warning(/* '您选择的图表样式为季节性图表,只支持单指标画图' */this.$t('Chart.OptMsg.season_one_msg'));
  746. else if([7,11].includes(this.chartInfo.ChartType) && !this.$refs.BarOptRef.dateList.length)
  747. return this.$message.warning(/*'请添加日期'*/this.$t('ToolBox.CommodityPriceChart.tips_msg06'));
  748. else if(this.chartInfo.ChartType === 10 && !this.$refs.SectionScatterOptRef.seriesArr[0].edbs)
  749. return this.$message.warning(/* '请添加系列指标' */this.$t('Chart.OptMsg.season_add_hint'));
  750. if(this.chartInfo.ChartType === 2){
  751. if(!(this.SeasonExtraConfig.XStartDate && this.SeasonExtraConfig.XEndDate)){
  752. return this.$message.warning(/* '横坐标显示范围不能为空' */this.$t('Chart.OptMsg.season_area_hint'));
  753. }
  754. }
  755. let db_arr = this.tableData.map((item,index) => ({
  756. ChartColor: item.ChartColor,
  757. PredictChartColor: item.PredictChartColor,
  758. ChartStyle: item.ChartStyle,
  759. ChartWidth: Number(item.ChartWidth),
  760. EdbInfoId: item.EdbInfoId,
  761. EdbAliasName: item.EdbAliasName,
  762. EdbInfoType: item.EdbInfoType,
  763. IsAxis: item.IsAxis,
  764. IsOrder: item.IsOrder,
  765. LeadUnit: item.EdbInfoType ? '' : item.LeadUnit,
  766. LeadValue: item.EdbInfoType ? 0 : Number(item.LeadValue),
  767. MaxData: Number(item.MaxData),
  768. MinData: Number(item.MinData)
  769. })
  770. )
  771. let hasLimitChange = false
  772. //需检测上下限是否修改
  773. if(![7,10,11].includes(this.chartInfo.ChartType)){
  774. const limitSame= this.getLimitInfo()
  775. hasLimitChange = !limitSame
  776. }
  777. if(![10,11].includes(this.chartInfo.ChartType)){
  778. //每个数据转换需要检测是否合法
  779. for(let i=0;i<db_arr.length;i++){
  780. const {IsConvert,ConvertType,ConvertValue} = this.updateData[i]
  781. //计算方式是否合法
  782. if(IsConvert&&!this.checkConver(ConvertType,ConvertValue)){
  783. //提示语:第${i+1}个指标数据转换不合法,请检查数值
  784. return this.$message.warning(this.$t('EtaChartAddPage.data_transformation_list_hint',{num:i+1}))
  785. }
  786. //如果类型为对数,检测数据是否包含负数
  787. if(IsConvert&&ConvertType===3){
  788. if(!this.checkEdbData(this.tableData[i].DataList)){
  789. //提示语:第${i+1}个指标数据含有负数或0,无法进行对数运算,请检查
  790. return this.$message.warning(this.$t('EtaChartAddPage.data_transformation_list_hint2',{num:i+1}))
  791. }
  792. }
  793. }
  794. db_arr = db_arr.map((item,index)=>{
  795. const {IsConvert,ConvertType,ConvertValue,ConvertUnit,ConvertEnUnit} = this.updateData[index]
  796. return {
  797. ...item,
  798. IsConvert:Number(IsConvert),
  799. ConvertType:IsConvert?ConvertType:1,
  800. ConvertValue:IsConvert?Number(ConvertValue):100,
  801. ConvertUnit:IsConvert?ConvertUnit:'',
  802. ConvertEnUnit:IsConvert?ConvertEnUnit:''
  803. }
  804. })
  805. }
  806. const { ChartType,ChartName,ChartThemeId,SourcesFrom,Instructions,MarkersLines,MarkersAreas,ChartThemeStyle } = this.chartInfo;
  807. let public_param = {
  808. ChartClassifyId: this.chartInfo.classify.length ? this.chartInfo.classify[this.chartInfo.classify.length - 1] : 0,
  809. ChartEdbInfoList: db_arr,
  810. ChartName,
  811. ChartType,
  812. ChartThemeId,
  813. SourcesFrom,
  814. Instructions,
  815. MarkersLines,
  816. MarkersAreas,
  817. ChartThemeStyle
  818. }
  819. //提交参数
  820. const typePrams = this.getSaveParamsByChartType(public_param);
  821. let params = this.sameOptionType.includes(this.chartInfo.ChartType)
  822. ? {
  823. ...public_param,
  824. DateType: this.year_select,
  825. StartYear: this.count_year || 0,
  826. StartDate:
  827. [5,6].includes(this.year_select)
  828. ? this.select_date[0]
  829. : '',
  830. EndDate: this.year_select === 5 ? this.select_date[1] : '',
  831. }
  832. : typePrams
  833. if(![7,10,11].includes(this.chartInfo.ChartType)){
  834. const {
  835. min,max,rightMin,rightMax,rightTwoMin,rightTwoMax
  836. } = this.chartLimit
  837. params = {
  838. ...params,
  839. LeftMin:min+'',
  840. LeftMax:max+'',
  841. RightMin:rightMin+'',
  842. RightMax:rightMax+'',
  843. Right2Min:rightTwoMin+'',
  844. Right2Max:rightTwoMax+'',
  845. MinMaxSave:Number(hasLimitChange)
  846. }
  847. }
  848. dataBaseInterface.chartAdd(params).then(res => {
  849. if(res.Ret !== 200) return;
  850. this.setChartImage(res.Data);
  851. })
  852. }
  853. })
  854. },
  855. /* 设置图表封面图片 */
  856. setChartImage(data) {
  857. let svg = this.$refs.chartRef.chart.getSVG({
  858. chart: {
  859. width: 340,
  860. height: 230,
  861. }
  862. });
  863. let form = new FormData();
  864. form.append('Img', svg);
  865. this.setImageHandle(form,data);
  866. },
  867. async setImageHandle(form,{ UniqueCode,ChartInfoId }) {
  868. let { Data } = await dataBaseInterface.uploadImgSvg(form);
  869. // let { Data } = await dataBaseInterface.uploadImg(form);
  870. await dataBaseInterface.setChartImage({
  871. ChartInfoId: ChartInfoId,
  872. ImageUrl: Data.ResourceUrl,
  873. });
  874. // this.$message.success('添加成功');
  875. this.$message.success(this.$t('MsgPrompt.add_msg2'));
  876. this.$router.replace({
  877. path: '/chartsetting',
  878. query: {
  879. code: UniqueCode,
  880. id: ChartInfoId
  881. }
  882. })
  883. },
  884. },
  885. mounted() {
  886. this.getMenu();
  887. this.getChartBaseSetting()
  888. this.getThemeList('init');
  889. window.addEventListener('resize', this.reloadRightWid);
  890. },
  891. destroyed() {
  892. window.removeEventListener('resize', this.reloadRightWid);
  893. }
  894. };
  895. </script>
  896. <style lang="scss">
  897. .addchart-container {
  898. $font-small: 12px; $font-normal: 14px;
  899. display: flex;
  900. *{ box-sizing: border-box; }
  901. .el-form--label-top .el-form-item__label {
  902. padding: 0;
  903. }
  904. .el-form-item {
  905. margin-bottom: 8px;
  906. }
  907. .el-input-number .el-input__inner {
  908. padding: 0 34px 0 4px;
  909. }
  910. .target-other-name .el-input__inner {
  911. padding: 0 30px 0 5px !important;
  912. height: 40px !important;
  913. line-height: 40px !important;
  914. }
  915. .el-color-picker--mini .el-color-picker__trigger {
  916. width: 60px;
  917. height: 25px;
  918. padding: 0;
  919. }
  920. .el-color-picker--mini .el-color-picker__mask {
  921. width: 60px;
  922. height: 25px;
  923. }
  924. .slide-icon {
  925. padding: 20px 0;
  926. /* display: block; */
  927. box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.3);
  928. border-radius: 5px;
  929. cursor: pointer;
  930. position: absolute;
  931. top: 50%;
  932. transform: translateY(-50%);
  933. z-index: 99;
  934. &:hover {
  935. background-color: rgba(0, 0, 0, 0.05);
  936. }
  937. &.slide-left {
  938. right: 0;
  939. }
  940. &.slide-right {
  941. left: 0;
  942. }
  943. }
  944. .left-cont {
  945. width: 400px;
  946. min-width: 300px;
  947. background: #fff;
  948. margin-right: 20px;
  949. border: 1px solid #ececec;
  950. border-radius: 4px;
  951. box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.05);
  952. height: calc(100vh - 113px);
  953. overflow: hidden;
  954. position: relative;
  955. box-sizing: border-box;
  956. .left-top {
  957. padding: 15px 20px;
  958. border: 1px solid #ececec;
  959. box-shadow: 0px 3px 6px rgba(167, 167, 167, 0.09);
  960. }
  961. .left-min {
  962. padding: 30px 20px;
  963. max-height: calc(100vh - 194px);
  964. overflow-y: auto;
  965. .search-cont {
  966. color: #606266;
  967. }
  968. .xaxis-range-cont{
  969. color: #606266;
  970. margin-top: 20px;
  971. .xaxis-range-tip{
  972. display: flex;
  973. align-items: center;
  974. justify-content: flex-start;
  975. .hint-message{
  976. font-size: 15px;
  977. line-height: 22px;
  978. }
  979. }
  980. .legend-set-text{
  981. font-size: 15px;
  982. color: #1B7BDE;
  983. display: inline-flex;
  984. align-items: center;
  985. justify-content: flex-start;
  986. margin-top: 20px;
  987. cursor: pointer;
  988. img{
  989. height: 16px;
  990. margin-left: 5px;
  991. }
  992. }
  993. }
  994. .targetset-cont {
  995. padding: 30px 0 20px;
  996. .el-input__inner {
  997. height: 27px;
  998. line-height: 27px;
  999. padding: 0 4px;
  1000. }
  1001. .el-collapse-item.is-disabled .el-collapse-item__header {
  1002. color: #333;
  1003. }
  1004. .target-list {
  1005. border: 1px solid #DCDFE6;
  1006. .del-icon {
  1007. position: absolute;
  1008. right: 10px;
  1009. font-size: 16px;
  1010. color: #f00;
  1011. cursor: pointer;
  1012. }
  1013. .setting-cont {
  1014. padding: 20px 20px 0;
  1015. li {
  1016. padding-bottom: 20px;
  1017. margin-bottom: 20px;
  1018. border-bottom: 1px solid #DCDFE6;
  1019. &:last-child {
  1020. padding-bottom: 0;
  1021. margin-bottom: 0;
  1022. border-bottom: none;
  1023. }
  1024. }
  1025. }
  1026. }
  1027. .el-collapse-item__header {
  1028. background-color: #F0F2F5;
  1029. margin-bottom: 0;
  1030. border-bottom: 1px solid #DCDFE6;
  1031. padding: 0 30px;
  1032. .el-collapse-item__arrow {
  1033. position: absolute;
  1034. left: 8px;
  1035. }
  1036. }
  1037. .scatter-setting {
  1038. display: flex;
  1039. margin-bottom: 20px;
  1040. }
  1041. }
  1042. }
  1043. .move-btn {
  1044. height: 100%;
  1045. width: 4px;
  1046. position: absolute;
  1047. right: 0px;
  1048. top: 0;
  1049. &:hover {
  1050. cursor: col-resize;
  1051. }
  1052. }
  1053. }
  1054. .right-cont {
  1055. width: 80%;
  1056. .mx-datepicker {
  1057. width: 220px !important;
  1058. }
  1059. /* =================== */
  1060. .chart-min-cont {
  1061. background: #fff;
  1062. border: 1px solid #ececec;
  1063. height: calc(100vh - 118px);
  1064. overflow: auto;
  1065. /* overflow: hidden; */
  1066. border-radius: 4px;
  1067. box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.05);
  1068. .cont-top {
  1069. padding: 12px 30px;
  1070. border-bottom: 1px solid #ececec;
  1071. display: flex;
  1072. justify-content: space-between;
  1073. align-items: center;
  1074. box-shadow: 0px 3px 6px rgba(167, 167, 167, 0.09);
  1075. .top-left {
  1076. .year-btn {
  1077. margin-right: 5px;
  1078. margin-bottom: 5px;
  1079. }
  1080. .btn-sty {
  1081. border: 1px solid #409eff;
  1082. }
  1083. .date-setting{
  1084. border: 1px solid #DCDFE6;
  1085. border-radius: 4px;
  1086. cursor: pointer;
  1087. color: #333333;
  1088. line-height: 16px;
  1089. }
  1090. }
  1091. .top-right {
  1092. font-size: 16px;
  1093. .join_txt {
  1094. color: #409eff;
  1095. cursor: pointer;
  1096. &:hover {
  1097. text-decoration: underline;
  1098. }
  1099. }
  1100. .collected {
  1101. color: #f00;
  1102. cursor: pointer;
  1103. &:hover {
  1104. text-decoration: underline;
  1105. }
  1106. }
  1107. .span-item {
  1108. color: #409eff;
  1109. cursor: pointer;
  1110. &:hover {
  1111. text-decoration: underline;
  1112. }
  1113. .el-icon-collection,
  1114. .el-icon-document-copy {
  1115. color: #409eff;
  1116. }
  1117. }
  1118. }
  1119. }
  1120. .cont-bottom {
  1121. padding: 20px 30px;
  1122. /* height: calc(100vh - 250px);
  1123. overflow: auto; */
  1124. .el-input__inner {
  1125. height: 27px;
  1126. line-height: 27px;
  1127. padding: 0 4px;
  1128. }
  1129. .el-input-number .el-input__inner {
  1130. padding: 0 34px 0 4px;
  1131. }
  1132. .highcharts-range-selector-group {
  1133. display: none;
  1134. .highcharts-input-group {
  1135. display: none;
  1136. }
  1137. }
  1138. .highcharts-axis-title {
  1139. display: block;
  1140. }
  1141. /* =================== */
  1142. .chart-show-cont {
  1143. min-height: 300px;
  1144. padding: 0 150px 60px 120px;
  1145. position: relative;
  1146. .chart-title {
  1147. font-size: 16px;
  1148. font-weight: normal;
  1149. text-align: center;
  1150. margin-bottom: 10px;
  1151. }
  1152. .chart-author {
  1153. font-size: 14px;
  1154. color: #333;
  1155. position: absolute;
  1156. bottom: 20px;
  1157. right: 50px;
  1158. }
  1159. .chartWrapper {
  1160. position: relative;
  1161. .range-cont {
  1162. position: absolute;
  1163. top: 15%;
  1164. .min-data-input {
  1165. width: 60px;
  1166. display: block;
  1167. }
  1168. &.left {
  1169. left: -80px;
  1170. }
  1171. &.right {
  1172. right: -65px;
  1173. }
  1174. &.rightTwo {
  1175. right: -130px;
  1176. }
  1177. &.bottom {
  1178. width: 100%;
  1179. display: flex;
  1180. justify-content: space-between;
  1181. top: auto;
  1182. right: 0;
  1183. bottom: -2%;
  1184. .left {
  1185. width: 60px;
  1186. display: block;
  1187. flex-shrink: 0;
  1188. }
  1189. }
  1190. }
  1191. }
  1192. }
  1193. .options-cont {
  1194. display: flex;
  1195. flex-wrap: wrap;
  1196. justify-content: space-between;
  1197. }
  1198. }
  1199. }
  1200. .nodata {
  1201. height: calc(100vh - 120px);
  1202. background-color: #fff;
  1203. text-align: center;
  1204. font-size: 16px;
  1205. color: #666;
  1206. padding: 100px 0;
  1207. }
  1208. @media screen and (min-width: 1711px){
  1209. .min-data-input {
  1210. margin-top: 310px;
  1211. }
  1212. .btn-sty {
  1213. padding: 10px;
  1214. }
  1215. .year-btn,.btn-sty {
  1216. font-size: $font-normal;
  1217. }
  1218. .date-setting{
  1219. width: 210px;
  1220. height: 40px;
  1221. padding: 12px;
  1222. font-size: $font-normal;
  1223. }
  1224. }
  1225. @media screen and (max-width: 1710px){
  1226. .min-data-input {
  1227. margin-top: 230px;
  1228. }
  1229. .year-btn {
  1230. font-size: $font-small;
  1231. margin-left: 5px;
  1232. margin-right: 5px;
  1233. margin-bottom: 5px;
  1234. padding: 6px 12px;
  1235. }
  1236. .btn-sty {
  1237. font-size: $font-small;
  1238. margin-left: 5px;
  1239. padding: 6px;
  1240. border: 1px solid #409eff;
  1241. }
  1242. .date-setting{
  1243. width: 180px;
  1244. height: 36px;
  1245. padding: 10px;
  1246. font-size: $font-small;
  1247. }
  1248. }
  1249. }
  1250. .expand-wrap{
  1251. display: flex;
  1252. justify-content: center;
  1253. align-items: center;
  1254. gap:30px;
  1255. .el-checkbox{
  1256. margin-right: 15px;
  1257. }
  1258. .el-input{
  1259. width:100px;
  1260. height:27px;
  1261. line-height: 27px;
  1262. .el-input__icon{
  1263. line-height: 27px;
  1264. }
  1265. }
  1266. }
  1267. }
  1268. </style>
  1269. <style lang="scss">
  1270. .edb-item-style .el-input__icon {
  1271. line-height: 27px;
  1272. }
  1273. /*他不要下拉选择框 QAQ */
  1274. .x-range-picker-date {
  1275. display: none;
  1276. }
  1277. </style>