dataRefreshSetting.vue 59 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374
  1. <template>
  2. <!-- 数据源刷新设置 -->
  3. <div class="data-refresh-setting-wrap">
  4. <div class="top-top">
  5. <div class="tab-zone">
  6. <div class="tab-item" :class="item.value==settingTab?'active':''" v-for="item in tabList.filter(it => checkPer(it))" :key="item.value" @click="changeTab(item.value)">
  7. {{ item.label }}
  8. </div>
  9. </div>
  10. <div class="refresh-rule-setting" v-if="settingTab=='status'">
  11. <el-button type="danger" plain @click="setEdbsRefreshStatus('暂停')" :disabled="!hasStatusSelection">{{$t('SystemManage.DataRefresh.disabled')}}</el-button>
  12. <el-button type="primary" plain @click="setEdbsRefreshStatus('启用')" :disabled="!hasStatusSelection">{{$t('SystemManage.DataRefresh.enabled')}}</el-button>
  13. <el-button type="primary" @click="openDefaultRefreshStatusDia">{{$t('SystemManage.DataRefresh.default_refresh_rule')}}</el-button>
  14. </div>
  15. </div>
  16. <!-- 刷新时间 -->
  17. <template v-if="settingTab=='time'">
  18. <div class="top-box">
  19. <div class="select-box">
  20. <span>{{$t('SystemManage.DataRefresh.select_source')}}</span>
  21. <el-select :placeholder="$t('SystemManage.DataRefresh.select_source_pld')" v-model="Source" @change="handleSourceChange">
  22. <el-option v-for="item in SourceList" :key="item.Source"
  23. :label="item.SourceName" :value="item.Source"/>
  24. </el-select>
  25. <el-select :placeholder="$t('SystemManage.DataRefresh.select_source_pld')" v-model="SubSource" v-if="SubSourceList.length" @change="handleSubSourceChange">
  26. <el-option v-for="item in SubSourceList" :key="item.Source"
  27. :label="$i18nt.locale==='zh'?item.SubSourceName:item.SubSourceNameEn||item.SubSourceName" :value="item.SubSource"/>
  28. </el-select>
  29. <el-button type="primary" @click="showDialog(true)"
  30. v-permission="permissionBtn.sysDepartPermission.refresh_default"
  31. >{{$t('SystemManage.DataRefresh.default_time')}}</el-button>
  32. </div>
  33. <el-input :placeholder="$t('SystemManage.DataRefresh.indicator_name')" prefix-icon="el-icon-search" clearable
  34. v-model="selectOption.keyWord" @input="selectOptionChange('keyWord')"
  35. v-if="![34,11].includes(Source)&&Source"></el-input>
  36. </div>
  37. <div class="table-box" v-if="hasSelectOption">
  38. <div class="table-select" v-loading="selectOptionLoading">
  39. <div class="select-list">
  40. <el-select :placeholder="$t('SystemManage.DataRefresh.terminal_code_select')" :no-match-text="$t('SystemManage.DataRefresh.complete_data_source')" clearable
  41. v-model="selectOption.terminalCode" @change="selectOptionChange('terminalCode')">
  42. <el-option v-for="i in terminalCodeList" :key="i.TerminalCode"
  43. :label="i.Name" :value="i.TerminalCode"/>
  44. </el-select>
  45. <el-cascader :placeholder="$t('SystemManage.DataRefresh.eta_class_select')" :no-match-text="$t('SystemManage.DataRefresh.complete_data_source')" clearable
  46. v-model="selectOption.classify" @change="selectOptionChange('classify')"
  47. :options="edbClassifyList"
  48. :show-all-levels="false"
  49. collapse-tags
  50. :props="{
  51. emitPath:true,
  52. value:'ClassifyId',
  53. label:'ClassifyName',
  54. children:'Children',
  55. multiple:true
  56. }" />
  57. <el-cascader
  58. :placeholder="$t('SystemManage.DataRefresh.table_creator')" :no-match-text="$t('SystemManage.DataRefresh.complete_data_source')" style="height: 40px;"
  59. v-model="selectOption.user" @change="selectOptionChange('user')"
  60. :options="userList"
  61. :props="{
  62. value: 'ItemId',
  63. label: 'ItemName',
  64. children: 'Children',
  65. emitPath: false,
  66. multiple:true,
  67. }"
  68. collapse-tags
  69. :show-all-levels="false"
  70. clearable
  71. filterable
  72. />
  73. <el-select :placeholder="table_frequency" v-model="selectOption.frequency" @change="selectOptionChange('frequency')" multiple collapse-tags clearable>
  74. <el-option v-for="i in frequencyList" :key="i.value"
  75. :label="i.label" :value="i.value"
  76. />
  77. </el-select>
  78. <el-select :placeholder="$t('SystemManage.DataRefresh.table_status')" v-model="selectOption.state" @change="selectOptionChange('state')" clearable>
  79. <el-option :label="$t('SystemManage.DataRefresh.enable_op')" value="启用"/>
  80. <el-option :label="$t('SystemManage.DataRefresh.pause_op')" value="暂停"/>
  81. </el-select>
  82. </div>
  83. <div class="select-other">
  84. <el-checkbox :indeterminate="isIndeterminate" v-model="isCheckAll" @change="listCheckAllChange">{{$t('SystemManage.DataRefresh.all_list')}}</el-checkbox>
  85. <el-button type="primary" @click="showDialog(false)"
  86. v-permission="permissionBtn.sysDepartPermission.refresh_time"
  87. :disabled="!tableData.length"
  88. >{{$t('SystemManage.DataRefresh.set_time')}}</el-button>
  89. <el-button type="primary" @click="isSetStateDialogShow=true"
  90. v-permission="permissionBtn.sysDepartPermission.refresh_state"
  91. v-if="Source!=2"
  92. :disabled="!tableData.length"
  93. >{{$t('SystemManage.DataRefresh.set_status')}}</el-button>
  94. </div>
  95. </div>
  96. <el-table :data="tableData" border
  97. ref="edbDataRef"
  98. @selection-change="selectionChange"
  99. @select="selectHandle"
  100. @select-all="selectAllHandle"
  101. @sort-change="handleSortChange"
  102. >
  103. <!-- 多选 -->
  104. <el-table-column
  105. align="center"
  106. type="selection"
  107. width="55">
  108. </el-table-column>
  109. <el-table-column v-for="column in columns" :key="column.key"
  110. :prop="column.key"
  111. :label="column.label"
  112. :min-width="column.minWidth"
  113. :sortable="column.sortable?column.sortable:false"
  114. align="center"
  115. >
  116. <template slot-scope="{row}">
  117. <span v-if="column.key==='IsStop'">
  118. {{row.IsStop? $t('SystemManage.DataRefresh.pause_op') : $t('SystemManage.DataRefresh.enable_op') }}
  119. </span>
  120. <span v-else>
  121. {{row[column.key]}}
  122. </span>
  123. </template>
  124. </el-table-column>
  125. </el-table>
  126. <el-pagination
  127. :current-page="currentPage"
  128. :page-size="pageSize"
  129. :total="total"
  130. @current-change="handleCurrentChange"
  131. />
  132. </div>
  133. </template>
  134. <!-- 刷新状态 - 全拆开吧 -->
  135. <template v-if="settingTab=='status'">
  136. <div class="refresh-status-container">
  137. <div class="refresh-status-search">
  138. <div class="refresh-status-search-left">
  139. <div class="select-source-box">
  140. <span>{{$t('SystemManage.DataRefresh.select_source')}}</span>
  141. <el-select :placeholder="$t('SystemManage.DataRefresh.select_source_pld')" v-model="searchParams.Source">
  142. <el-option v-for="item in statusSourceList" :key="item.Source"
  143. :label="item.SourceName" :value="item.Source"/>
  144. </el-select>
  145. </div>
  146. <el-select :placeholder="$t('SystemManage.DataRefresh.table_status')" v-model="searchParams.Status" @change="searchList"
  147. class="select-item-small" clearable>
  148. <el-option :label="$t('SystemManage.DataRefresh.enable')" value="启用"/>
  149. <el-option :label="$t('SystemManage.DataRefresh.disable')" value="暂停"/>
  150. </el-select>
  151. <!-- 频度 -->
  152. <el-select :placeholder="$t('SystemManage.DataRefresh.table_frequency')" class="select-item-small"
  153. v-model="FrequencyArr" multiple collapse-tags clearable>
  154. <el-option v-for="i in frequencyList" :key="i.value"
  155. :label="i.label" :value="i.value"
  156. />
  157. </el-select>
  158. <!-- 指标库分类 -->
  159. <el-cascader :placeholder="$t('SystemManage.DataRefresh.edb_classify')"
  160. :no-match-text="$t('SystemManage.DataRefresh.complete_data_source')" clearable
  161. v-model="ClassifyIdArr" class="select-item-small"
  162. :options="statusEdbClassifyList" :show-all-levels="false" collapse-tags
  163. :props="{
  164. emitPath:true,
  165. value:'ClassifyId',
  166. label:'ClassifyName',
  167. children:'Children',
  168. multiple:true
  169. }" />
  170. <!-- 创建人 -->
  171. <el-cascader
  172. :placeholder="$t('SystemManage.DataRefresh.table_creator')"
  173. :no-match-text="$t('SystemManage.DataRefresh.complete_data_source')" style="height: 40px;"
  174. v-model="SysUserIdArr" class="select-item-small"
  175. :options="userList" collapse-tags :show-all-levels="false" clearable filterable
  176. :props="{
  177. value: 'ItemId',
  178. label: 'ItemName',
  179. children: 'Children',
  180. emitPath: false,
  181. multiple:true,
  182. }"
  183. />
  184. <div class="selection-box">
  185. <el-checkbox :indeterminate="statusDataSelectionItem.isIndeterminate" v-model="statusDataSelectionItem.isCheckAll"
  186. @change="statusListCheckAllChange">{{$t('SystemManage.DataRefresh.all_list')}}</el-checkbox>
  187. <span>{{$t('SystemManage.DataRefresh.selected')}}: {{ hasStatusSelection }}</span>
  188. </div>
  189. </div>
  190. <el-input :placeholder="$t('SystemManage.DataRefresh.indicator_name')" prefix-icon="el-icon-search" clearable
  191. v-model="searchParams.Keyword" @input="searchList" style="width: 360px;margin-left: 15px;"></el-input>
  192. </div>
  193. <el-table :data="statusTableData" border
  194. ref="statusTableRef"
  195. @selection-change="statusSelectionChange"
  196. @select="statusSelectHandle"
  197. @select-all="statusSelectAllHandle"
  198. @sort-change="handleStatusTableSortChange"
  199. >
  200. <!-- 多选 -->
  201. <el-table-column
  202. align="center"
  203. type="selection"
  204. width="55">
  205. </el-table-column>
  206. <el-table-column align="center" prop="EdbCode" :label="$t('SystemManage.DataRefresh.table_Id')" show-overflow-tooltip>
  207. <template slot-scope="scope">
  208. {{scope.row.EdbCode}}
  209. </template>
  210. </el-table-column>
  211. <el-table-column align="center" prop="EdbName" :label="$t('SystemManage.DataRefresh.table_name')" show-overflow-tooltip>
  212. <template slot-scope="scope">
  213. {{scope.row.EdbName}}
  214. </template>
  215. </el-table-column>
  216. <el-table-column align="center" prop="RelationTime" :label="$t('SystemManage.DataRefresh.table_recent_reference_time')"
  217. sortable="custom">
  218. <template slot-scope="scope">
  219. {{scope.row.RelationTime}}
  220. </template>
  221. </el-table-column>
  222. <el-table-column align="center" prop="RelationNum" :label="$t('SystemManage.DataRefresh.table_reference_count')"
  223. sortable="custom">
  224. <template slot-scope="scope">
  225. <span :class="scope.row.RelationNum>0?'table-text-button':''" @click="openReferenceCountDia(scope.row)">{{scope.row.RelationNum}}</span>
  226. </template>
  227. </el-table-column>
  228. <el-table-column align="center" prop="IsStop" :label="$t('SystemManage.DataRefresh.table_refresh_status')">
  229. <template slot-scope="scope">
  230. {{scope.row.IsStop? $t('SystemManage.DataRefresh.disabled'):$t('SystemManage.DataRefresh.enabled') }}
  231. </template>
  232. </el-table-column>
  233. <el-table-column align="center" prop="Operation" :label="$t('Table.column_operations')">
  234. <template slot-scope="scope">
  235. <span class="table-text-button" v-if="scope.row.IsStop" @click="enableToggle(scope.row)">{{$t('SystemManage.DataRefresh.enable')}}</span>
  236. <!-- v-permission="permissionBtn.outlinkConfigPermission.outlinkListConfig_del" -->
  237. <span class="table-text-button" style="color: #C54322;" @click="enableToggle(scope.row)" v-else>{{$t('SystemManage.DataRefresh.disable')}}</span>
  238. </template>
  239. </el-table-column>
  240. </el-table>
  241. <el-pagination
  242. :current-page="searchParams.CurrentIndex"
  243. :page-size="searchParams.PageSize"
  244. :total="statusDataTotal"
  245. @current-change="handleStatusListPageNoChange"
  246. />
  247. </div>
  248. </template>
  249. <!-- 默认刷新时间,设置刷新时间 -->
  250. <el-dialog custom-class="refresh-setting-dialog"
  251. :title="dlgTextLangShow((isDefault?'默认':'设置')+'刷新时间')"
  252. :visible.sync="isSetTimeDialogShow"
  253. :close-on-click-modal="false"
  254. :modal-append-to-body="false"
  255. @close="isSetTimeDialogShow=false"
  256. width="578px"
  257. top="5vh"
  258. v-dialogDrag
  259. center
  260. >
  261. <div class="dialog-container" v-loading="defaultDialogLoading">
  262. <!-- 默认刷新时间设置数据频度 -->
  263. <div class="default-box" v-if="isDefault&&Source!==11">
  264. <label style="display: block;width:88px;text-align:right;padding-right: 12px;">{{$t('SystemManage.DataRefresh.data_frequency')}}</label>
  265. <el-select style="margin-left: 10px;" v-model="defaultFrequency" @change="handleDefaultChange">
  266. <el-option v-for="i in frequencyList" :key="i.value"
  267. :label="i.label" :value="i.value"
  268. />
  269. </el-select>
  270. </div>
  271. <!-- 刷新配置 -->
  272. <div class="refresh-box">
  273. <RefreshConfig
  274. ref="refreshconfig"
  275. :Source="Source"
  276. :defaultForm="defaultForm"
  277. ></RefreshConfig>
  278. </div>
  279. </div>
  280. <!-- 弹窗按钮 -->
  281. <div class="dialog-btn">
  282. <el-button type="primary" plain @click="isSetTimeDialogShow=false">{{$t('Dialog.cancel_btn')}}</el-button>
  283. <el-button type="primary" @click="handleSetRefreshTime">{{$t('Dialog.confirm_btn')}}</el-button>
  284. </div>
  285. </el-dialog>
  286. <!-- 设置刷新状态 -->
  287. <el-dialog custom-class="refresh-setting-dialog"
  288. :title="$t('SystemManage.DataRefresh.set_status')"
  289. :visible.sync="isSetStateDialogShow"
  290. :close-on-click-modal="false"
  291. :modal-append-to-body="false"
  292. @close="isSetStateDialogShow=false"
  293. width="578px"
  294. top="5vh"
  295. v-dialogDrag
  296. center
  297. >
  298. <div class="dialog-container" style="text-align: center;margin:60px 0;">
  299. <el-radio label="暂停" v-model="isState">{{$t('SystemManage.DataRefresh.pause_op')}}</el-radio>
  300. <el-radio label="启用" v-model="isState">{{$t('SystemManage.DataRefresh.enable_op')}}</el-radio>
  301. </div>
  302. <!-- 弹窗按钮 -->
  303. <div class="dialog-btn">
  304. <el-button type="primary" plain @click="isSetStateDialogShow=false">{{$t('Dialog.cancel_btn')}}</el-button>
  305. <el-button type="primary" @click="setRefreshStatus">{{$t('Dialog.confirm_btn')}}</el-button>
  306. </div>
  307. </el-dialog>
  308. <!-- 默认刷新规则 -->
  309. <defaultRefreshStatusDia :show.sync="setDefaultRefreshStatusShow" :ruleData="settingRuleForm" @setRule="setDefaultRefreshRule"/>
  310. <referenceCountDia :show.sync="referenceCountShow" :dataList="statusEdbRelationDetailList" />
  311. </div>
  312. </template>
  313. <script>
  314. import RefreshConfig from './components/refreshConfig.vue';
  315. import { dataBaseInterface } from '@/api/api.js';
  316. import {dataRefreshInterface,dataAuthInterface} from '@/api/modules/dataApi.js';
  317. import defaultRefreshStatusDia from './components/defaultRefreshStatusDia.vue';
  318. import referenceCountDia from './components/referenceCountDia.vue';
  319. export default {
  320. components: { RefreshConfig ,defaultRefreshStatusDia,referenceCountDia},
  321. computed:{
  322. frequencyList() {
  323. return [
  324. {
  325. value: "日度",
  326. label: /* '日度' */ this.$t("Edb.FreAll.day"),
  327. },
  328. {
  329. value: "周度",
  330. label: /* '周度' */ this.$t("Edb.FreAll.week"),
  331. },
  332. {
  333. value: "旬度",
  334. label: /* '旬度' */ this.$t("Edb.FreAll.dekad"),
  335. },
  336. {
  337. value: "月度",
  338. label: /* '月度' */ this.$t("Edb.FreAll.month"),
  339. },
  340. {
  341. value: "季度",
  342. label: /* '季度' */ this.$t("Edb.FreAll.quarter"),
  343. },
  344. {
  345. value: "半年度",
  346. label: /* '半年度' */ this.$t("Edb.FreAll.month"),
  347. },
  348. {
  349. value: "年度",
  350. label: /* '年度' */ this.$t("Edb.FreAll.year"),
  351. },
  352. ];
  353. },
  354. columns() {
  355. return [
  356. { key: "IndexCode", label:/* '指标编码' */ this.$t('SystemManage.DataRefresh.table_code')},
  357. { key: "IndexName", label:/* '指标全称' */ this.$t('SystemManage.DataRefresh.table_name'), minWidth: 150 },
  358. { key: "EndDate", label:/* '最新日期' */ this.$t('SystemManage.DataRefresh.table_date'), sortable: "custom" },
  359. { key: "EndValue", label:/* '最新值' */ this.$t('SystemManage.DataRefresh.table_value')},
  360. { key: "SysUserRealName", label:/* '创建人' */ this.$t('SystemManage.DataRefresh.table_creator') },
  361. { key: "Frequency", label:/* '频度' */ this.$t('SystemManage.DataRefresh.table_frequency') },
  362. { key: "RefreshTime", label:/* '刷新时间' */ this.$t('SystemManage.DataRefresh.table_time'), minWidth: 150 },
  363. { key: "IsStop", label:/* '刷新状态' */ this.$t('SystemManage.DataRefresh.table_status')},
  364. ];
  365. },
  366. tabList(){
  367. return [
  368. { value: "time", label:/* '刷新时间设置' */ this.$t('SystemManage.DataRefresh.time_setting_tab')},
  369. { value: "status", label:/* '刷新状态设置' */ this.$t('SystemManage.DataRefresh.status_setting_tab')}
  370. ];
  371. },
  372. hasStatusSelection(){
  373. if(this.statusDataSelectionItem.isSelectAll){
  374. return this.statusDataTotal - (this.statusDataSelectionItem.selectList ? this.statusDataSelectionItem.selectList.length : 0)
  375. }else{
  376. return this.statusDataSelectionItem.selectList ? this.statusDataSelectionItem.selectList.length : 0
  377. }
  378. }
  379. },
  380. data() {
  381. return {
  382. settingTab:'time',
  383. Source:'',
  384. SourceList:[],
  385. SubSource:'',
  386. SubSourceList:[],
  387. terminalCodeList:[],
  388. edbClassifyList:[],
  389. userList:[],
  390. selectOption:{
  391. frequency:'',//频度
  392. user:'',//创建人
  393. classify:'',//分类
  394. state:'',//状态
  395. terminalCode:'',//终端编码
  396. keyWord:'',//关键字
  397. sortType:'',//升序降序
  398. sortParam:'',//排序字段
  399. },
  400. hasSelectOption:false,
  401. selectOptionLoading:false,
  402. tableData: [],
  403. tableDataIds:[],
  404. pageSize:10,
  405. currentPage:1,
  406. total:0,
  407. isSetTimeDialogShow: false,//设置刷新时间弹窗
  408. defaultDialogLoading:false,//可能需要获取默认设置,增加loading
  409. isDefault:false,//是否是默认刷新时间
  410. defaultForm:{},//默认刷新时间的配置
  411. defaultFrequency:'日度',//默认刷新时间的频率
  412. isSetStateDialogShow:false,//设置刷新状态弹窗
  413. isState:'启用',//启用刷新or暂停刷新
  414. //全部全选
  415. isIndeterminate:false,
  416. isCheckAll:false,
  417. isSelectAll:false,//为true时,selectList是剔除的指标,为false时selectList是已选择的指标
  418. //已选择/已剔除的指标id
  419. selectList:[],//监听table的select-all select
  420. selectionReactCancel:false,
  421. // 刷新状态设置
  422. settingRuleForm:{},
  423. setDefaultRefreshStatusShow:false,
  424. referenceCountShow:false,
  425. statusSourceList:[],
  426. statusEdbClassifyList:[],
  427. searchParams:{
  428. Source:'',
  429. Status:'',
  430. Frequency:'',
  431. SysUserId:'',
  432. ClassifyId:'',
  433. SortType:'',//排序类型
  434. SortParam:'',//排序字段
  435. Keyword:"",
  436. PageSize:10,
  437. CurrentIndex:1
  438. },
  439. SysUserIdArr:[],
  440. stopUserIdRequest:false, //阻止watch中的请求
  441. ClassifyIdArr:[],
  442. stopClassifyIdRequest:false, //阻止watch中的请求
  443. FrequencyArr:[],
  444. stopFrequencyArrRequest:false, //阻止watch中的请求
  445. statusTableData:[],
  446. statusTableDataIds:[],
  447. statusDataTotal:0,
  448. statusEdbRelationDetailList:[],
  449. statusDataSelectionItem:{
  450. isIndeterminate:false,
  451. isCheckAll:false,
  452. selectionReactCancel:false,
  453. isSelectAll:false,//为true时,selectList是剔除的指标,为false时selectList是已选择的指标
  454. //已选择/已剔除的指标id
  455. selectList:[],//监听table的select-all select
  456. }
  457. };
  458. },
  459. watch:{
  460. SysUserIdArr(value){
  461. if(value&&value.length>0){
  462. this.searchParams.SysUserId=value.join(',')
  463. }else{
  464. this.searchParams.SysUserId=''
  465. }
  466. if(!this.stopUserIdRequest){
  467. this.searchList()
  468. }else{
  469. this.stopUserIdRequest=false
  470. }
  471. },
  472. ClassifyIdArr(value){
  473. if(value&&value.length>0){
  474. this.searchParams.ClassifyId=value.join(',')
  475. }else{
  476. this.searchParams.ClassifyId=''
  477. }
  478. if(!this.stopClassifyIdRequest){
  479. this.searchList()
  480. }else{
  481. this.stopClassifyIdRequest=false
  482. }
  483. },
  484. FrequencyArr(value){
  485. if(value&&value.length>0){
  486. this.searchParams.Frequency=value.join(',')
  487. }else{
  488. this.searchParams.Frequency=''
  489. }
  490. if(!this.stopFrequencyArrRequest){
  491. this.searchList()
  492. }else{
  493. this.stopFrequencyArrRequest=false
  494. }
  495. },
  496. 'searchParams.Source':{
  497. handler:function (value) {
  498. if(!value) return
  499. this.searchParams.Status=''
  500. // this.searchParams.Frequency=''
  501. // this.searchParams.ClassifyId=''
  502. // this.searchParams.SysUserId=''
  503. this.FrequencyArr=[]
  504. this.stopFrequencyArrRequest=true
  505. this.ClassifyIdArr=[]
  506. this.stopClassifyIdRequest=true
  507. this.SysUserIdArr=[]
  508. this.stopUserIdRequest=true
  509. this.searchParams.SortType=''
  510. this.searchParams.SortParam=''
  511. this.searchParams.Keyword=''
  512. this.getStatusClassifyList()
  513. if(this.settingTab=='status') this.searchList()
  514. }
  515. }
  516. },
  517. methods: {
  518. checkPer(it){
  519. if(it.value == 'status'){
  520. // 同 设置刷新状态的权限按钮 控制整个刷新状态设置tab
  521. return this.permissionBtn.isShowBtn('sysDepartPermission','refresh_state')
  522. }
  523. return true
  524. },
  525. changeTab(e){
  526. this.settingTab=e||'time'
  527. if(this.settingTab=='time'){
  528. this.$nextTick(()=>{
  529. this.$refs.edbDataRef && this.adjustSelection()
  530. })
  531. }else{
  532. if(!(this.statusTableData && this.statusTableData.length>0)){
  533. this.searchList()
  534. }else{
  535. this.$nextTick(()=>{
  536. this.$refs.statusTableRef && this.adjustStatusSelection()
  537. })
  538. }
  539. }
  540. },
  541. //展示刷新时间弹窗
  542. showDialog(isDefault){
  543. this.isDefault = isDefault
  544. this.isSetTimeDialogShow = true
  545. if(isDefault){
  546. //判断数据源是否选择
  547. if(!this.Source){
  548. // this.$message.warning("请选择数据源")
  549. this.$message.warning(this.$t('SystemManage.DataRefresh.select_source_pld'))
  550. return
  551. }
  552. /* if(this.SubSourceList.length&&!this.SubSource){
  553. this.$message.warning("$t('SystemManage.DataRefresh.complete_data_source')")
  554. return
  555. } */
  556. //SMM不带频度
  557. if(this.Source===11){
  558. this.defaultFrequency=''
  559. }else{
  560. this.defaultFrequency = '日度'
  561. }
  562. this.handleDefaultChange()
  563. }else{
  564. //单独设置指标,需判断指标是否为单个
  565. if((this.total===1&&!this.selectList.length)||(!this.isSelectAll&&this.selectList.length===1)){
  566. //单个则回显刷新时间
  567. this.getEdbRefreshDetail()
  568. }else{
  569. this.defaultForm={}
  570. }
  571. }
  572. },
  573. //获取对应频度下的默认刷新时间
  574. handleDefaultChange(){
  575. this.defaultDialogLoading = true
  576. dataRefreshInterface.getDefaultConfig({
  577. Frequency:this.defaultFrequency,
  578. Source:Number(this.Source),
  579. SubSource:Number(this.SubSource)
  580. }).then(res=>{
  581. this.defaultDialogLoading = false
  582. if(res.Ret!==200) return
  583. let configList = res.Data||[]
  584. configList = configList.map((item,index)=>{
  585. return {
  586. ...item,
  587. key:index
  588. }
  589. })
  590. this.defaultForm = {
  591. configList
  592. }
  593. })
  594. },
  595. //获取单个指标的刷新时间
  596. getEdbRefreshDetail(){
  597. this.defaultDialogLoading = true
  598. let EdbInfoId = 0
  599. if(this.total===1){
  600. EdbInfoId = this.tableData[0].EdbInfoId
  601. }else{
  602. EdbInfoId = this.selectList[0]
  603. }
  604. dataRefreshInterface.getSimgleEdbRefreshTime({
  605. EdbInfoId,
  606. Source:Number(this.Source),
  607. SubSource:Number(this.SubSource)
  608. }).then(res=>{
  609. this.defaultDialogLoading = false
  610. if(res.Ret!==200) return
  611. let configList = res.Data||[]
  612. configList = configList.map((item,index)=>{
  613. return {
  614. ...item,
  615. key:index
  616. }
  617. })
  618. this.defaultForm = {
  619. configList
  620. }
  621. })
  622. },
  623. //获取数据源列表
  624. getSourceList(){
  625. dataRefreshInterface.getDataSourceList().then(res=>{
  626. if(res.Ret!==200) return
  627. this.SourceList = res.Data||[]
  628. this.statusSourceList=this.SourceList.filter(it => [2,34].includes(it.Source))
  629. this.searchParams.Source = this.statusSourceList[0]?this.statusSourceList[0].Source:''
  630. })
  631. },
  632. //一级数据源改变时,二级数据源和筛选项也重新赋值
  633. handleSourceChange(){
  634. const source = this.SourceList.find(i=>i.Source===this.Source)||{Child:[]}
  635. this.SubSourceList = source.Child
  636. this.SubSource=''
  637. this.hasSelectOption = ![34,11].includes(this.Source)
  638. if(this.hasSelectOption){
  639. this.resetSelect()
  640. this.tableData = []
  641. }
  642. //如果没有二级数据源,则请求表格筛选项数据;钢联化工,SMM没有筛选项数据
  643. if(!this.SubSourceList.length&&this.hasSelectOption){
  644. this.getSelectOption()
  645. this.selectOptionChange()
  646. }
  647. //如果有二级数据源,默认选中第一个
  648. if(this.SubSourceList.length){
  649. this.SubSource = this.SubSourceList[0].SubSource
  650. this.handleSubSourceChange()
  651. }
  652. },
  653. handleSubSourceChange(){
  654. this.getSelectOption()
  655. this.selectOptionChange()
  656. },
  657. //获取终端编码列表
  658. async getTerminalCodeList(){
  659. if(!this.Source) return
  660. const res = await dataRefreshInterface.getTerminalList({
  661. Source:Number(this.Source)
  662. })
  663. if(res.Ret!==200) return
  664. this.terminalCodeList = res.Data?res.Data.List||[]:[]
  665. },
  666. //获取分类列表
  667. async getClassifyList(){
  668. if(!this.Source) return
  669. const res = await dataRefreshInterface.getClassifyList({
  670. Source:Number(this.Source)
  671. })
  672. if(res.Ret!==200) return
  673. this.edbClassifyList = res.Data||[]
  674. },
  675. //获取用户列表
  676. getUserList() {
  677. dataAuthInterface.userSearch({
  678. KeyWord: ''
  679. }).then(res => {
  680. if(res.Ret !== 200) return
  681. this.userList = res.Data||[]
  682. })
  683. },
  684. async getSelectOption(){
  685. this.selectOptionLoading = true
  686. //获取终端编码列表
  687. await this.getClassifyList()
  688. //获取分类列表
  689. await this.getTerminalCodeList()
  690. this.selectOptionLoading = false
  691. },
  692. //切换数据源时重置表格选项
  693. resetSelect(){
  694. this.terminalCodeList=[]
  695. this.edbClassifyList = []
  696. this.selectOption = {
  697. frequency:'',
  698. user:'',
  699. classify:'',
  700. state:'',
  701. terminalCode:''
  702. }
  703. this.selectList=[]
  704. },
  705. //表格筛选项改变时触发
  706. selectOptionChange(type){
  707. this.currentPage = 1
  708. this.getTableData('optionChange')
  709. },
  710. handleCurrentChange(page){
  711. this.currentPage = page
  712. this.getTableData()
  713. },
  714. async getTableData(type){
  715. const {frequency,user,classify,state,terminalCode,keyWord,sortParam,sortType} = this.selectOption
  716. const classifyArr = Array.isArray(classify)?classify:[]
  717. const classifyId = [...new Set(classifyArr.join(',').split(','))]
  718. const res = await dataRefreshInterface.getEdbTableList({
  719. Source:Number(this.Source),
  720. SubSource:Number(this.SubSource),
  721. ClassifyId:classifyId.join(','),
  722. TerminalCode:terminalCode,
  723. SysUserId:Array.isArray(user)?user.join(','):user,
  724. Frequency:Array.isArray(frequency)?frequency.join(','):frequency,
  725. Keyword:keyWord,
  726. Status:state,
  727. SortParam:sortParam,
  728. SortType:sortType,
  729. PageSize:Number(this.pageSize),
  730. CurrentIndex:Number(this.currentPage)
  731. })
  732. if(res.Ret!==200) return
  733. const {Paging,List} = res.Data||{}
  734. this.tableData = List||[]
  735. this.total = Paging.Totals||0
  736. if(this.tableData.length>0){
  737. this.tableDataIds = this.tableData.map(it => it.EdbInfoId)
  738. }else{
  739. this.tableDataIds = []
  740. }
  741. if(type==='optionChange'){
  742. //如果是表格筛选项改变导致重新请求数据
  743. //数据获取完成后,列表全选,表格全选
  744. this.selectList = []
  745. this.listCheckAllChange(true)
  746. }else{
  747. //若不是,数据获取完成后,查询列表全选的值
  748. //若当页有数据在selectList内,则勾选/剔除
  749. this.adjustSelection()
  750. }
  751. },
  752. //勾选/取消勾选表格项
  753. adjustSelection(){
  754. this.selectionReactCancel=true
  755. if(!this.isSelectAll){
  756. this.selectList.map(it =>{
  757. let row = this.tableData.find(da => da.EdbInfoId==it)
  758. if(row){
  759. setTimeout(()=>{
  760. this.$refs.edbDataRef && this.$refs.edbDataRef.toggleRowSelection(row,true)
  761. },10)
  762. }
  763. })
  764. }else{
  765. this.$refs.edbDataRef && this.$refs.edbDataRef.clearSelection()
  766. this.$refs.edbDataRef &&this.$refs.edbDataRef.toggleAllSelection()
  767. this.selectList.map(it =>{
  768. let row = this.tableData.find(da => da.EdbInfoId==it)
  769. if(row){
  770. setTimeout(()=>{
  771. this.$refs.edbDataRef && this.$refs.edbDataRef.toggleRowSelection(row,false)
  772. },50)
  773. }
  774. })
  775. }
  776. setTimeout(()=>{
  777. this.selectionReactCancel=false
  778. },50)
  779. },
  780. //列表全选改变
  781. listCheckAllChange(value){
  782. this.selectList = []
  783. this.isSelectAll = value
  784. this.$refs.edbDataRef && this.$refs.edbDataRef.clearSelection()
  785. if(value){
  786. this.$refs.edbDataRef && this.$refs.edbDataRef.toggleAllSelection()
  787. }
  788. },
  789. selectionChange(selection){
  790. if(this.selectionReactCancel) return
  791. // selectAllHandle的触发在selectionChange后面,将selectionChange的逻辑延迟一下
  792. setTimeout(()=>{
  793. // 去重
  794. let duplicateArr = Array.from(new Set(this.selectList))
  795. //isSelectAll为true时,selectList表示需要剔除的项
  796. //isSelectAll为false时,selectList表示需要勾选的项
  797. //全选
  798. if((duplicateArr.length == this.total && (!this.isSelectAll))|| (duplicateArr.length == 0 && this.isSelectAll)){
  799. this.isCheckAll = true
  800. this.isIndeterminate=false
  801. //全不选
  802. }else if((duplicateArr.length == 0 && (!this.isSelectAll))|| (duplicateArr.length == this.total && this.isSelectAll)){
  803. this.isCheckAll = false
  804. this.isIndeterminate=false
  805. //半选
  806. }else{
  807. this.isCheckAll = false
  808. this.isIndeterminate=true
  809. }
  810. },1)
  811. },
  812. selectHandle(selection,row){
  813. if(this.selectionReactCancel) return
  814. let check = false;
  815. if(selection.some(it => it.EdbInfoId == row.EdbInfoId)){
  816. // 勾选
  817. if(this.isSelectAll){
  818. check=false
  819. }else{
  820. check=true
  821. }
  822. }else{
  823. // 取消勾选
  824. if(this.isSelectAll){
  825. check=true
  826. }else{
  827. check=false
  828. }
  829. }
  830. if(check){
  831. this.selectList.push(row.EdbInfoId)
  832. }else{
  833. this.selectList=this.selectList.filter(it => it!=row.EdbInfoId)
  834. }
  835. },
  836. selectAllHandle(selection){
  837. if(this.selectionReactCancel) return
  838. let check = false;
  839. if(selection && selection.length>0){
  840. // 全选
  841. if(this.isSelectAll){
  842. check=false
  843. }else{
  844. check=true
  845. }
  846. }else{
  847. // 全不选
  848. if(this.isSelectAll){
  849. check=true
  850. }else{
  851. check=false
  852. }
  853. }
  854. if(check){
  855. this.selectList = [...this.selectList,...this.tableDataIds]
  856. }else{
  857. this.selectList = this.selectList.filter(it => !this.tableDataIds.includes(it))
  858. }
  859. },
  860. //设置刷新时间
  861. async handleSetRefreshTime(){
  862. //校验表格
  863. try{
  864. await this.$refs.refreshconfig.$refs.dynamicForm.validate()
  865. }catch(e){
  866. console.log(e)
  867. return
  868. }
  869. //转换数据格式
  870. const list = this.$refs.refreshconfig.getFormList()
  871. //判断是否是默认时间,走不同接口
  872. if(this.isDefault){
  873. this.setDefaultTime(list)
  874. }else{
  875. this.setRefreshTime(list)
  876. }
  877. },
  878. setRefreshTime(list){
  879. const {frequency,user,classify,state,terminalCode,keyWord} = this.selectOption
  880. const classifyArr = Array.isArray(classify)?classify:[]
  881. const classifyId = [...new Set(classifyArr.join(',').split(','))]
  882. dataRefreshInterface.setRefreshTime({
  883. Source:Number(this.Source),
  884. SubSource:Number(this.SubSource),
  885. ClassifyId:classifyId.join(','),
  886. TerminalCode:terminalCode,
  887. SysUserId:Array.isArray(user)?user.join(','):user,
  888. Frequency:Array.isArray(frequency)?frequency.join(','):frequency,
  889. Keyword:keyWord,
  890. Status:state,
  891. IsSelectAll:this.isSelectAll,
  892. EdbSelectIdList:this.selectList,
  893. List:list
  894. }).then(res=>{
  895. if(res.Ret!==200) return
  896. // this.$message.success("设置刷新时间成功")
  897. this.$message.success(this.$t('SystemManage.DataRefresh.time_success_msg'))
  898. this.selectOptionChange()
  899. this.isSetTimeDialogShow = false
  900. })
  901. },
  902. setDefaultTime(list){
  903. dataRefreshInterface.setDefaultTime({
  904. Source:Number(this.Source),
  905. SubSource:Number(this.SubSource),
  906. Frequency:this.defaultFrequency,
  907. List:list
  908. }).then(res=>{
  909. if(res.Ret!==200) return
  910. // this.$message.success("设置默认刷新时间成功")
  911. this.$message.success(this.$t('SystemManage.DataRefresh.refresh_success_msg'))
  912. this.isSetTimeDialogShow = false
  913. })
  914. },
  915. setRefreshStatus(){
  916. const {frequency,user,classify,state,terminalCode,keyWord} = this.selectOption
  917. const classifyArr = Array.isArray(classify)?classify:[]
  918. const classifyId = [...new Set(classifyArr.join(',').split(','))]
  919. dataRefreshInterface.setRefreshStatus({
  920. Source:Number(this.Source),
  921. SubSource:Number(this.SubSource),
  922. ClassifyId:classifyId.join(','),
  923. TerminalCode:terminalCode,
  924. SysUserId:Array.isArray(user)?user.join(','):user,
  925. Frequency:Array.isArray(frequency)?frequency.join(','):frequency,
  926. Keyword:keyWord,
  927. Status:state,
  928. IsSelectAll:this.isSelectAll,
  929. EdbSelectIdList:this.selectList,
  930. ModifyStatus:this.isState
  931. }).then(res=>{
  932. if(res.Ret!==200) return
  933. this.$message.success(this.$t('SystemManage.DataRefresh.status_success_msg'))
  934. // this.$message.success("设置刷新状态成功")
  935. this.selectOptionChange()
  936. this.isSetStateDialogShow = false
  937. })
  938. },
  939. handleSortChange({prop,order}){
  940. if(order){
  941. this.selectOption.sortParam = 'end_date'
  942. this.selectOption.sortType = order==='ascending'?'asc':'desc'
  943. }else{
  944. this.selectOption.sortParam = ''
  945. this.selectOption.sortType = ''
  946. }
  947. this.selectOptionChange()
  948. },
  949. dlgTextLangShow(e){
  950. if(e==='默认刷新时间') return this.$t('SystemManage.DataRefresh.default_time')
  951. if(e==='设置刷新时间') return this.$t('SystemManage.DataRefresh.set_time')
  952. return e
  953. },
  954. // -----------------------------刷新状态设置
  955. //获取分类列表
  956. async getStatusClassifyList(){
  957. if(!this.searchParams.Source) return
  958. const res = await dataRefreshInterface.getClassifyList({
  959. Source:Number(this.searchParams.Source)
  960. })
  961. if(res.Ret!==200) return
  962. this.statusEdbClassifyList = res.Data||[]
  963. },
  964. getStatusDataList(type){
  965. dataRefreshInterface.getRelationEdbDataList(this.searchParams).then(res=>{
  966. if(res.Ret!==200) return
  967. this.statusTableData=res.Data.List || []
  968. this.statusDataTotal=res.Data.Paging.Totals || this.statusTableData.length
  969. if(this.statusDataTotal>0){
  970. this.statusTableDataIds = this.statusTableData.map(it => it.EdbInfoId)
  971. }else{
  972. this.statusTableDataIds = []
  973. }
  974. if(type==='search'){
  975. //如果是表格筛选项改变导致重新请求数据
  976. //数据获取完成后,清空所选
  977. this.statusDataSelectionItem.selectList = []
  978. this.statusListCheckAllChange(false)
  979. }else{
  980. //若不是,数据获取完成后,查询列表全选的值
  981. //若当页有数据在selectList内,则勾选/剔除
  982. this.adjustStatusSelection()
  983. }
  984. })
  985. },
  986. handleStatusListPageNoChange(page){
  987. this.searchParams.CurrentIndex = page
  988. this.getStatusDataList()
  989. },
  990. // 列表
  991. searchList(){
  992. this.searchParams.CurrentIndex=1
  993. this.getStatusDataList('search')
  994. },
  995. handleStatusTableSortChange({prop,order}){
  996. if(order){
  997. this.searchParams.SortParam = prop
  998. this.searchParams.SortType = order==='ascending'?'asc':'desc'
  999. }else{
  1000. this.searchParams.SortParam = ''
  1001. this.searchParams.SortType = ''
  1002. }
  1003. this.searchParams.CurrentIndex=1
  1004. this.getStatusDataList()
  1005. },
  1006. //勾选/取消勾选表格项-刷新状态设置
  1007. adjustStatusSelection(){
  1008. this.statusDataSelectionItem.selectionReactCancel=true
  1009. if(!this.statusDataSelectionItem.isSelectAll){
  1010. this.statusDataSelectionItem.selectList.map(it =>{
  1011. let row = this.statusTableData.find(da => da.EdbInfoId==it)
  1012. if(row){
  1013. setTimeout(()=>{
  1014. this.$refs.statusTableRef && this.$refs.statusTableRef.toggleRowSelection(row,true)
  1015. },10)
  1016. }
  1017. })
  1018. }else{
  1019. this.$refs.statusTableRef && this.$refs.statusTableRef.clearSelection()
  1020. this.$refs.statusTableRef &&this.$refs.statusTableRef.toggleAllSelection()
  1021. this.statusDataSelectionItem.selectList.map(it =>{
  1022. let row = this.statusTableData.find(da => da.EdbInfoId==it)
  1023. if(row){
  1024. setTimeout(()=>{
  1025. this.$refs.statusTableRef && this.$refs.statusTableRef.toggleRowSelection(row,false)
  1026. },50)
  1027. }
  1028. })
  1029. }
  1030. setTimeout(()=>{
  1031. this.statusDataSelectionItem.selectionReactCancel=false
  1032. },50)
  1033. },
  1034. //列表全选改变-刷新状态设置
  1035. statusListCheckAllChange(value){
  1036. this.statusDataSelectionItem.selectList = []
  1037. this.statusDataSelectionItem.isSelectAll = value
  1038. this.$refs.statusTableRef && this.$refs.statusTableRef.clearSelection()
  1039. if(value){
  1040. this.$refs.statusTableRef && this.$refs.statusTableRef.toggleAllSelection()
  1041. }
  1042. },
  1043. statusSelectionChange(selection){
  1044. if(this.statusDataSelectionItem.selectionReactCancel) return
  1045. // selectAllHandle的触发在selectionChange后面,将selectionChange的逻辑延迟一下
  1046. setTimeout(()=>{
  1047. // 去重
  1048. let duplicateArr = Array.from(new Set(this.statusDataSelectionItem.selectList))
  1049. //isSelectAll为true时,selectList表示需要剔除的项
  1050. //isSelectAll为false时,selectList表示需要勾选的项
  1051. //全选
  1052. if((duplicateArr.length == this.statusDataTotal && (!this.statusDataSelectionItem.isSelectAll))
  1053. || (duplicateArr.length == 0 && this.statusDataSelectionItem.isSelectAll)){
  1054. this.statusDataSelectionItem.isCheckAll = true
  1055. this.statusDataSelectionItem.isIndeterminate=false
  1056. //全不选
  1057. }else if((duplicateArr.length == 0 && (!this.statusDataSelectionItem.isSelectAll))
  1058. || (duplicateArr.length == this.statusDataTotal && this.statusDataSelectionItem.isSelectAll)){
  1059. this.statusDataSelectionItem.isCheckAll = false
  1060. this.statusDataSelectionItem.isIndeterminate=false
  1061. //半选
  1062. }else{
  1063. this.statusDataSelectionItem.isCheckAll = false
  1064. this.statusDataSelectionItem.isIndeterminate=true
  1065. }
  1066. },1)
  1067. },
  1068. statusSelectHandle(selection,row){
  1069. if(this.statusDataSelectionItem.selectionReactCancel) return
  1070. let check = false;
  1071. if(selection.some(it => it.EdbInfoId == row.EdbInfoId)){
  1072. // 勾选
  1073. if(this.statusDataSelectionItem.isSelectAll){
  1074. check=false
  1075. }else{
  1076. check=true
  1077. }
  1078. }else{
  1079. // 取消勾选
  1080. if(this.statusDataSelectionItem.isSelectAll){
  1081. check=true
  1082. }else{
  1083. check=false
  1084. }
  1085. }
  1086. if(check){
  1087. this.statusDataSelectionItem.selectList.push(row.EdbInfoId)
  1088. }else{
  1089. this.statusDataSelectionItem.selectList=this.statusDataSelectionItem.selectList.filter(it => it!=row.EdbInfoId)
  1090. }
  1091. },
  1092. statusSelectAllHandle(selection){
  1093. if(this.statusDataSelectionItem.selectionReactCancel) return
  1094. let check = false;
  1095. if(selection && selection.length>0){
  1096. // 全选
  1097. if(this.statusDataSelectionItem.isSelectAll){
  1098. check=false
  1099. }else{
  1100. check=true
  1101. }
  1102. }else{
  1103. // 全不选
  1104. if(this.statusDataSelectionItem.isSelectAll){
  1105. check=true
  1106. }else{
  1107. check=false
  1108. }
  1109. }
  1110. if(check){
  1111. this.statusDataSelectionItem.selectList = [...this.statusDataSelectionItem.selectList,...this.statusTableDataIds]
  1112. }else{
  1113. this.statusDataSelectionItem.selectList = this.statusDataSelectionItem.selectList.filter(it => !this.statusTableDataIds.includes(it))
  1114. }
  1115. },
  1116. openReferenceCountDia(row){
  1117. if(row.RelationNum==0) return
  1118. dataRefreshInterface.getRelationEdbDetail({EdbInfoId:row.EdbInfoId,CurrentIndex:1,PageSize:9999999}).then(res=>{
  1119. if(res.Ret == 200){
  1120. this.statusEdbRelationDetailList=res.Data.List || []
  1121. this.referenceCountShow=true
  1122. }
  1123. })
  1124. },
  1125. async enableToggle(row){
  1126. let isRequest=true
  1127. if(!row.IsStop){
  1128. isRequest=false
  1129. await this.$confirm(this.$t('SystemManage.DataRefresh.disable_indicator_prompt'),this.$t('Confirm.prompt'),{
  1130. type:"warning"
  1131. }).then(res=>{
  1132. isRequest=true
  1133. }).catch(()=>{})
  1134. }
  1135. if(isRequest){
  1136. dataBaseInterface.edbRefreshStatusSet({EdbInfoId:row.EdbInfoId,ModifyStatus:row.IsStop==1?'启用':'暂停'}).then(res=>{
  1137. if(res.Ret == 200){
  1138. row.IsStop=1-row.IsStop
  1139. this.$message.success(this.$t('MsgPrompt.operate_success_msg'))
  1140. }
  1141. })
  1142. }
  1143. },
  1144. async setEdbsRefreshStatus(state){
  1145. let isRequest=true
  1146. if(state=='暂停'){
  1147. isRequest=false
  1148. await this.$confirm(this.$t('SystemManage.DataRefresh.disable_indicator_prompt'),this.$t('Confirm.prompt'),{
  1149. type:"warning"
  1150. }).then(res=>{
  1151. isRequest=true
  1152. }).catch(()=>{})
  1153. }
  1154. if(!isRequest) return
  1155. let params={
  1156. Source:Number(this.searchParams.Source),
  1157. ClassifyId:this.searchParams.ClassifyId,
  1158. SysUserId:this.searchParams.SysUserId,
  1159. Frequency:this.searchParams.Frequency,
  1160. Keyword:this.searchParams.Keyword,
  1161. Status:this.searchParams.Status,
  1162. IsSelectAll:this.statusDataSelectionItem.isSelectAll,
  1163. EdbSelectIdList:this.statusDataSelectionItem.selectList,
  1164. ModifyStatus:state
  1165. }
  1166. dataRefreshInterface.setRelationEdbsRefreshStatus(params).then(res=>{
  1167. if(res.Ret == 200){
  1168. this.$message.success(this.$t('MsgPrompt.operate_success_msg'))
  1169. this.getStatusDataList()
  1170. }
  1171. })
  1172. },
  1173. openDefaultRefreshStatusDia(){
  1174. dataRefreshInterface.getEdbStopRefreshRule({ConfKey:'EdbStopRefreshRule'}).then(res=>{
  1175. if(res.Ret == 200){
  1176. this.settingRuleForm=res.Data.ConfVal?JSON.parse(res.Data.ConfVal):{}
  1177. this.setDefaultRefreshStatusShow=true
  1178. }
  1179. })
  1180. },
  1181. setDefaultRefreshRule(rule){
  1182. let ruleText = rule?JSON.stringify({...rule,IsOpen:rule.IsOpen?1:0}):''
  1183. dataRefreshInterface.setEdbStopRefreshRule({ConfKey:'EdbStopRefreshRule',ConfVal:ruleText}).then(res=>{
  1184. if(res.Ret == 200){
  1185. this.$message.success(this.$t('MsgPrompt.operate_success_msg'))
  1186. this.setDefaultRefreshStatusShow=false
  1187. }
  1188. })
  1189. },
  1190. },
  1191. mounted(){
  1192. this.getSourceList()
  1193. this.getUserList()
  1194. }
  1195. };
  1196. </script>
  1197. <style scoped lang="scss">
  1198. .data-refresh-setting-wrap{
  1199. min-height: calc(100vh - 120px);
  1200. background-color: #fff;
  1201. border:1px solid #C8CDD9;
  1202. border-radius: 4px;
  1203. display: flex;
  1204. flex-direction: column;
  1205. .top-top{
  1206. display: flex;
  1207. align-items: center;
  1208. justify-content: space-between;
  1209. border-bottom:solid 1px #E7E7E7 ;
  1210. padding-right: 30px;
  1211. height: 62px;
  1212. .tab-zone{
  1213. display: flex;
  1214. align-items: center;
  1215. flex: 1;
  1216. height: 100%;
  1217. .tab-item{
  1218. cursor: pointer;
  1219. color: #666666;
  1220. padding: 0 16px;
  1221. height: 100%;
  1222. font-size: 16px;
  1223. display: flex;
  1224. align-items: center;
  1225. box-sizing: border-box;
  1226. border-bottom: solid 2px #ffffff;
  1227. }
  1228. .tab-item.active{
  1229. color: #0052D9;
  1230. border-bottom: solid 2px #0052D9;
  1231. }
  1232. }
  1233. }
  1234. .top-box,.table-box{
  1235. box-sizing: border-box;
  1236. padding:20px;
  1237. }
  1238. .top-box{
  1239. // margin-bottom: 20px;
  1240. display: flex;
  1241. justify-content: space-between;
  1242. .el-input{
  1243. width:260px;
  1244. }
  1245. .select-box{
  1246. .el-select{
  1247. margin:0 20px;
  1248. }
  1249. }
  1250. }
  1251. .table-box{
  1252. flex:1;
  1253. .el-select{
  1254. min-width:180px;
  1255. }
  1256. .table-select{
  1257. display: flex;
  1258. justify-content: space-between;
  1259. .select-list{
  1260. flex:1;
  1261. display: flex;
  1262. flex-wrap: wrap;
  1263. gap:20px;
  1264. }
  1265. .select-other{
  1266. .el-button{
  1267. margin-left:30px;
  1268. }
  1269. }
  1270. }
  1271. .el-table{
  1272. margin:20px 0;
  1273. }
  1274. .el-pagination{
  1275. text-align: right;
  1276. }
  1277. }
  1278. .refresh-setting-dialog{
  1279. margin-bottom: 0;
  1280. .dialog-container{
  1281. overflow: hidden;
  1282. .default-box{
  1283. display: flex;
  1284. align-items: center;
  1285. padding-bottom: 30px;
  1286. margin-bottom: 30px;
  1287. border-bottom: 1px solid #EBEFF6;
  1288. }
  1289. .refresh-box{
  1290. max-height: 65vh;
  1291. overflow-y: auto;
  1292. }
  1293. }
  1294. .dialog-btn{
  1295. text-align: center;
  1296. padding: 25px 0;
  1297. }
  1298. }
  1299. // 刷新状态设置
  1300. .refresh-status-container{
  1301. padding: 20px 30px;
  1302. .refresh-status-search{
  1303. display: flex;
  1304. align-items: flex-start;
  1305. justify-content: space-between;
  1306. margin-left: -15px;
  1307. margin-bottom: 12px;
  1308. .select-source-box{
  1309. display: flex;
  1310. align-items: center;
  1311. margin-left:15px;
  1312. white-space: nowrap;
  1313. margin-bottom: 8px;
  1314. .el-select{
  1315. margin-left:15px;
  1316. margin-bottom: 0;
  1317. }
  1318. }
  1319. .el-select{
  1320. margin-left:15px;
  1321. margin-bottom: 8px;
  1322. }
  1323. .refresh-status-search-left{
  1324. display: flex;
  1325. align-items: center;
  1326. flex-wrap: wrap;
  1327. }
  1328. .select-item-small{
  1329. max-width: 140px;
  1330. margin-bottom: 8px;
  1331. margin-left:15px;
  1332. }
  1333. .selection-box{
  1334. margin-bottom: 8px;
  1335. margin-left:15px;
  1336. white-space: nowrap;
  1337. span{
  1338. margin-left: 12px;
  1339. }
  1340. }
  1341. }
  1342. .el-table{
  1343. margin:12px 0 20px;
  1344. }
  1345. .table-text-button{
  1346. cursor: pointer;
  1347. color: #0052D9;
  1348. padding: 0 4px;
  1349. }
  1350. .el-pagination{
  1351. text-align: right;
  1352. }
  1353. }
  1354. }
  1355. </style>