Index.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842
  1. <template>
  2. <div class="app-container space">
  3. <el-card class="box-card" v-loading="robotLoading">
  4. <div slot="header" class="clearfix">手动移库(机器人)</div>
  5. <el-form ref="form" :model="form" :rules="rules4" label-width="80px">
  6. <el-row :gutter="12">
  7. <el-col :xs="6" :sm="5">
  8. <el-form-item label="起始位:" prop="start">
  9. <el-tooltip content="例如:100" placement="top">
  10. <el-input v-model="form.start" placeholder="起始库位"></el-input>
  11. </el-tooltip>
  12. </el-form-item>
  13. </el-col>
  14. <el-col :xs="6" :sm="5">
  15. <el-form-item label="目的位:" prop="goal">
  16. <el-tooltip content="例如:101" placement="top">
  17. <el-input v-model="form.goal" placeholder="目的库位"></el-input>
  18. </el-tooltip>
  19. </el-form-item>
  20. </el-col>
  21. </el-row>
  22. <el-form-item>
  23. <el-button type="primary" @click="updateStorgeByRobot" >更改</el-button>
  24. </el-form-item>
  25. </el-form>
  26. </el-card>
  27. <el-card class="box-card">
  28. <div slot="header" class="clearfix">手动更新点位(无操作)</div>
  29. <el-form ref="form" :model="form" :rules="rules4" label-width="80px">
  30. <el-row :gutter="12">
  31. <el-col :xs="6" :sm="5">
  32. <el-form-item label="起始位:" prop="start">
  33. <el-tooltip content="例如:100" placement="top">
  34. <el-input v-model="form.start" placeholder="起始库位"></el-input>
  35. </el-tooltip>
  36. </el-form-item>
  37. </el-col>
  38. <el-col :xs="6" :sm="5">
  39. <el-form-item label="目的位:" prop="goal">
  40. <el-tooltip content="例如:101" placement="top">
  41. <el-input v-model="form.goal" placeholder="目的库位"></el-input>
  42. </el-tooltip>
  43. </el-form-item>
  44. </el-col>
  45. </el-row>
  46. <el-form-item>
  47. <el-button type="primary" @click="updateStorge" >更改</el-button>
  48. </el-form-item>
  49. </el-form>
  50. </el-card>
  51. <el-card class="box-card">
  52. <div slot="header" class="clearfix">查询指令完成状态</div>
  53. <el-form ref="form1" :model="form1" :rules="rules1" label-width="80px">
  54. <el-row :gutter="12">
  55. <el-col :xs="6" :sm="5">
  56. <el-form-item label="节点ID:" prop="taskNodeId">
  57. <el-input v-model="form1.taskNodeId" placeholder="节点ID"></el-input>
  58. </el-form-item>
  59. </el-col>
  60. <el-col :xs="6" :sm="5">
  61. <el-form-item label="任务ID:" prop="taskId">
  62. <el-input v-model="form1.taskId" placeholder="任务ID"></el-input>
  63. </el-form-item>
  64. </el-col>
  65. </el-row>
  66. <el-form-item>
  67. <el-button type="primary" @click="getCallbackList" >查询</el-button>
  68. </el-form-item>
  69. </el-form>
  70. </el-card>
  71. <el-card class="box-card">
  72. <div slot="header" class="clearfix">读取RFID数据</div>
  73. <el-form ref="form2" :model="form2" :rules="rules2" label-width="80px">
  74. <el-row :gutter="12" >
  75. <el-col :xs="6" :sm="5">
  76. <el-form-item label="节点ID:" prop="taskNodeId">
  77. <el-input v-model="form2.taskNodeId" placeholder="节点ID"></el-input>
  78. </el-form-item>
  79. </el-col>
  80. <el-col :xs="6" :sm="5">
  81. <el-form-item label="任务ID:" prop="taskId">
  82. <el-input v-model="form2.taskId" placeholder="任务ID"></el-input>
  83. </el-form-item>
  84. </el-col>
  85. <el-col :xs="6" :sm="5">
  86. <el-form-item label="次序号:" prop="positionIndex">
  87. <el-input-number v-model="form.positionIndex" :min="1" :max="6"></el-input-number>
  88. </el-form-item>
  89. </el-col>
  90. </el-row>
  91. <el-form-item>
  92. <el-button type="primary" @click="getRFID" >读取</el-button>
  93. </el-form-item>
  94. </el-form>
  95. </el-card>
  96. <el-card class="box-card">
  97. <div slot="header" class="clearfix">设置设备上线\离线</div>
  98. <el-form ref="form3" :model="form3" :rules="rules3" label-width="80px">
  99. <el-row :gutter="12" >
  100. <el-col :xs="6" :sm="5">
  101. <el-form-item label="设备IP:" prop="ip">
  102. <el-tooltip content="例如:192.168.11.240" placement="top">
  103. <el-input v-model="form3.ip" placeholder="设备IP"></el-input>
  104. </el-tooltip>
  105. </el-form-item>
  106. </el-col>
  107. </el-row>
  108. <el-form-item>
  109. <el-button type="primary" @click="updateOnlineStatus" >设置</el-button>
  110. </el-form-item>
  111. </el-form>
  112. </el-card>
  113. <el-card class="box-card">
  114. <div slot="header" class="clearfix">创建AGV任务</div>
  115. <el-form ref="form4" :model="form4" :rules="rules4" label-width="80px">
  116. <el-row :gutter="12" >
  117. <el-col :xs="6" :sm="5">
  118. <el-form-item label="起点:" prop="start">
  119. <el-tooltip content="例如:BZ_361" placement="top">
  120. <el-input v-model="form4.start" placeholder="起点"></el-input>
  121. </el-tooltip>
  122. </el-form-item>
  123. </el-col>
  124. <el-col :xs="6" :sm="5">
  125. <el-form-item label="终点:" prop="goal">
  126. <el-tooltip content="例如:KT_121" placement="top">
  127. <el-input v-model="form4.goal" placeholder="终点"></el-input>
  128. </el-tooltip>
  129. </el-form-item>
  130. </el-col>
  131. </el-row>
  132. <el-form-item>
  133. <el-button type="primary" @click="addHikTask">创建</el-button>
  134. </el-form-item>
  135. </el-form>
  136. </el-card>
  137. <el-card class="box-card">
  138. <div slot="header" class="clearfix">重发指令</div>
  139. <el-form ref="form5" :model="form5" :rules="rules1" label-width="80px">
  140. <el-row :gutter="12" >
  141. <el-col :xs="6" :sm="5">
  142. <el-form-item label="节点ID:" prop="taskNodeId">
  143. <el-input v-model="form5.taskNodeId" placeholder="节点ID"></el-input>
  144. </el-form-item>
  145. </el-col>
  146. <el-col :xs="6" :sm="5">
  147. <el-form-item label="任务ID:" prop="taskId">
  148. <el-input v-model="form5.taskId" placeholder="任务ID"></el-input>
  149. </el-form-item>
  150. </el-col>
  151. </el-row>
  152. <el-form-item>
  153. <el-button type="primary" @click="resend">重发</el-button>
  154. </el-form-item>
  155. </el-form>
  156. </el-card>
  157. <el-card class="box-card">
  158. <div slot="header" class="clearfix">发送回调指令</div>
  159. <el-form ref="form6" :model="form6" :rules="rules1" label-width="80px">
  160. <el-row :gutter="12" >
  161. <el-col :xs="6" :sm="5">
  162. <el-form-item label="节点ID:" prop="taskNodeId">
  163. <el-input v-model="form6.taskNodeId" placeholder="节点ID"></el-input>
  164. </el-form-item>
  165. </el-col>
  166. <el-col :xs="6" :sm="5">
  167. <el-form-item label="任务ID:" prop="taskId">
  168. <el-input v-model="form6.taskId" placeholder="任务ID"></el-input>
  169. </el-form-item>
  170. </el-col>
  171. </el-row>
  172. <el-form-item>
  173. <el-button type="primary" @click="sendCallback" >发送</el-button>
  174. </el-form-item>
  175. </el-form>
  176. </el-card>
  177. <el-card class="box-card">
  178. <div slot="header" class="clearfix">动态移动零件(产线内)</div>
  179. <el-form ref="form7" :model="form7" :rules="rules5" label-width="80px">
  180. <el-row :gutter="12" >
  181. <el-col :xs="6" :sm="5">
  182. <el-select v-model="form7.zoneId" placeholder="选择产线">
  183. <el-option v-for="deviceUnit in lineList " :label="deviceUnit.name" :value="deviceUnit.id" :key="deviceUnit.id" ></el-option>
  184. </el-select>
  185. </el-col>
  186. <el-col :xs="6" :sm="5">
  187. <el-form-item label="起始位:" prop="start">
  188. <el-input-number v-model="form7.startpointId" :min="1" ></el-input-number>
  189. </el-form-item>
  190. </el-col>
  191. <el-col :xs="6" :sm="5">
  192. <el-form-item label="目的位:" prop="goal">
  193. <el-input-number v-model="form7.endpointId" :min="1" ></el-input-number>
  194. </el-form-item>
  195. </el-col>
  196. </el-row>
  197. <el-form-item>
  198. <el-button type="primary" @click="manualTask">执行</el-button>
  199. </el-form-item>
  200. </el-form>
  201. </el-card>
  202. <el-card class="box-card">
  203. <div slot="header" class="clearfix">零件动态入线边库(产线内)</div>
  204. <el-form ref="form8" :model="form8" :rules="rules6" label-width="80px">
  205. <el-row :gutter="12" >
  206. <el-col :xs="6" :sm="5">
  207. <el-select v-model="form8.zoneId" placeholder="选择产线">
  208. <el-option v-for="deviceUnit in lineList " :label="deviceUnit.name" :value="deviceUnit.id" :key="deviceUnit.id" ></el-option>
  209. </el-select>
  210. </el-col>
  211. <el-col :xs="6" :sm="5">
  212. <el-form-item label="节点ID:" prop="startpointId">
  213. <el-input v-model="form8.startpointId" placeholder="起始点位"></el-input>
  214. </el-form-item>
  215. </el-col>
  216. </el-row>
  217. <el-form-item>
  218. <el-button type="primary" @click="manualXbk">执行</el-button>
  219. </el-form-item>
  220. </el-form>
  221. </el-card>
  222. <el-card class="box-card">
  223. <div slot="header" class="clearfix">释放节点锁定</div>
  224. <el-form ref="form9" :model="form9" :rules="rules1" label-width="80px">
  225. <el-row :gutter="12" >
  226. <el-col :xs="6" :sm="5">
  227. <el-form-item label="节点ID:" prop="taskNodeId">
  228. <el-input v-model="form9.taskNodeId" placeholder="节点ID"></el-input>
  229. </el-form-item>
  230. </el-col>
  231. <el-col :xs="6" :sm="5">
  232. <el-form-item label="任务ID:" prop="taskId">
  233. <el-input v-model="form9.taskId" placeholder="任务ID"></el-input>
  234. </el-form-item>
  235. </el-col>
  236. </el-row>
  237. <el-form-item>
  238. <el-button type="primary" @click="freeLock" >发送</el-button>
  239. </el-form-item>
  240. </el-form>
  241. </el-card>
  242. <el-card class="box-card">
  243. <div slot="header" class="clearfix">刷新线边库排产</div>
  244. <el-form ref="form10" :model="form10" :rules="rules7" label-width="80px">
  245. <el-row :gutter="12" >
  246. <el-col :xs="6" :sm="5">
  247. <el-form-item label="节点ID:" prop="deviceType">
  248. <el-select v-model="form10.deviceType" placeholder="选择设备类型">
  249. <el-option v-for="deviceType in typeList" :label="deviceType.name" :value="deviceType.value" :key="deviceType.value" ></el-option>
  250. </el-select>
  251. </el-form-item>
  252. </el-col>
  253. </el-row>
  254. <el-form-item>
  255. <el-button type="primary" @click="refreshXbk" >发送</el-button>
  256. </el-form-item>
  257. </el-form>
  258. </el-card>
  259. </div>
  260. </template>
  261. <script>
  262. // 【锁定记录、出入库记录】-API
  263. import toolbarApi from "@/api/systemMgr/toolbar"
  264. import warnLogApi from "@/api/lineSideLibrary/warnLog"
  265. import areaMgrApi from "@/api/resourceProductMgr/areaMgr"
  266. import { convertEnum, initDicts, initQueryParams } from '@/utils/commons'
  267. export default {
  268. name: "Tools",
  269. directives: { },
  270. components: { },
  271. props: {
  272. },
  273. data () {
  274. return {
  275. form:{
  276. start: "",
  277. goal: ""
  278. },
  279. form1:{
  280. taskNodeId: '',
  281. taskId: '',
  282. },
  283. form2:{
  284. taskNodeId: '',
  285. taskId: '',
  286. positionIndex: 1
  287. },
  288. form3:{
  289. ip: ''
  290. },
  291. form4:{
  292. start: "",
  293. goal: "",
  294. },
  295. form5:{
  296. taskNodeId: '',
  297. taskId: '',
  298. },
  299. form6:{
  300. taskNodeId: '',
  301. taskId: '',
  302. },
  303. form7:{
  304. zoneId: "",
  305. startpointId: "",
  306. endpointId: "",
  307. },
  308. form8:{
  309. zoneId: "",
  310. startpointId: ""
  311. },
  312. form9:{
  313. taskNodeId: '',
  314. taskId: '',
  315. },
  316. form10:{
  317. deviceType: "0"
  318. },
  319. lineList: [],
  320. typeList: [{"name":"全部","value":"0"},{"name":"FANUC","value":"1"},{"name":"HEIDENHAIN","value":"2"},{"name":"DMG","value":"3"},{"name":"HELLER","value":"4"}],
  321. tenantViewVisible: false,
  322. tableKey: 0,
  323. queryParams: initQueryParams({}),
  324. selection: [],
  325. loading: false,
  326. robotLoading: false,
  327. rules1: {
  328. taskNodeId: [
  329. { required: true, message: this.$t("rules.require"), trigger: 'blur' }
  330. ],
  331. taskId: [
  332. { required: true, message: this.$t("rules.require"), trigger: 'blur' }
  333. ]
  334. },
  335. rules2: {
  336. taskNodeId: [
  337. { required: true, message: this.$t("rules.require"), trigger: 'blur' }
  338. ],
  339. taskId: [
  340. { required: true, message: this.$t("rules.require"), trigger: 'blur' }
  341. ],
  342. positionIndex: [
  343. { required: true, message: this.$t("rules.require"), trigger: 'blur' }
  344. ],
  345. },
  346. rules3: {
  347. ip: [
  348. { required: true, message: this.$t("rules.require"), trigger: 'blur' }
  349. ]
  350. },
  351. rules4: {
  352. start: [
  353. { required: true, message: this.$t("rules.require"), trigger: 'blur' }
  354. ],
  355. goal: [
  356. { required: true, message: this.$t("rules.require"), trigger: 'blur' }
  357. ],
  358. },
  359. rules5: {
  360. startpointId: [
  361. { required: true, message: this.$t("rules.require"), trigger: 'blur' }
  362. ],
  363. endpointId: [
  364. { required: true, message: this.$t("rules.require"), trigger: 'blur' }
  365. ],
  366. zoneId: [
  367. { required: true, message: this.$t("rules.require"), trigger: 'blur' }
  368. ],
  369. },
  370. rules6: {
  371. startpointId: [
  372. { required: true, message: this.$t("rules.require"), trigger: 'blur' }
  373. ],
  374. zoneId: [
  375. { required: true, message: this.$t("rules.require"), trigger: 'blur' }
  376. ],
  377. },
  378. rules7: {
  379. deviceType: [
  380. { required: true, message: this.$t("rules.require"), trigger: 'blur' }
  381. ]
  382. }
  383. }
  384. },
  385. // 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
  386. created() {
  387. // 调用常量-审核状态
  388. this.audioStatus = this.$constWKS.OPTTYPE
  389. // 加载【字典】
  390. initDicts(['NATION'], this.dicts);
  391. // 加载列表数据
  392. this.fetch()
  393. },
  394. computed: {
  395. currentUser () {
  396. return this.$store.state.account.user
  397. },
  398. nationList() {
  399. return convertEnum(this.dicts.NATION)
  400. }
  401. },
  402. mounted () {
  403. },
  404. methods: {
  405. updateStorge () {
  406. this.$refs.form.validate((valid) => {
  407. if(valid){
  408. toolbarApi.updateStorge(this.form).then(response=>{
  409. const res = response.data
  410. if(res.isSuccess){
  411. this.$message({
  412. message: this.$t('tips.updateSuccess'),
  413. type: 'success'
  414. })
  415. }else{
  416. this.$message({
  417. message: res.msg,
  418. type: 'warning'
  419. })
  420. }
  421. }).finally(()=>{
  422. return true
  423. })
  424. }else{
  425. return false
  426. }
  427. });
  428. },
  429. updateStorgeByRobot () {
  430. this.$refs.form.validate((valid) => {
  431. if(valid){
  432. this.robotLoading=true
  433. toolbarApi.updateStorgeByRobot(this.form).then(response=>{
  434. const res = response.data
  435. if(res.isSuccess){
  436. this.$message({
  437. message: this.$t('tips.updateSuccess'),
  438. type: 'success'
  439. })
  440. }else{
  441. this.$message({
  442. message: res.msg,
  443. type: 'warning'
  444. })
  445. }
  446. }).finally(()=>{
  447. this.robotLoading=false
  448. return true
  449. })
  450. }else{
  451. return false
  452. }
  453. });
  454. },
  455. getCallbackList () {
  456. this.$refs.form1.validate((valid) => {
  457. if(valid){
  458. toolbarApi.getCallbackList(this.form1).then(response=>{
  459. const res = response.data
  460. if(res.isSuccess){
  461. console.log(res.data)
  462. this.$message({
  463. message: "节点"+ res.data.data.operateName + "操作" + (res.data.data.state ? "未完成" : "已完成"),
  464. type: 'success'
  465. })
  466. }else{
  467. this.$message({
  468. message: res.msg,
  469. type: 'warning'
  470. })
  471. }
  472. }).finally(()=>{
  473. return true
  474. })
  475. }else{
  476. return false
  477. }
  478. });
  479. },
  480. getRFID () {
  481. this.$refs.form2.validate((valid) => {
  482. if(valid){
  483. toolbarApi.getRFID(this.form2).then(response=>{
  484. const res = response.data
  485. if(res.isSuccess){
  486. console.log(res.data)
  487. this.$message({
  488. message: "节点RFID值为:"+ res.data.data,
  489. type: 'success'
  490. })
  491. }else{
  492. this.$message({
  493. message: res.msg,
  494. type: 'warning'
  495. })
  496. }
  497. }).finally(()=>{
  498. return true
  499. })
  500. }else{
  501. return false
  502. }
  503. });
  504. },
  505. updateOnlineStatus () {
  506. this.$refs.form3.validate((valid) => {
  507. if(valid){
  508. toolbarApi.updateOnlineStatus({ip: this.form3.ip}).then(response=>{
  509. const res = response.data
  510. if(res.isSuccess){
  511. this.$message({
  512. message: this.$t('tips.updateSuccess'),
  513. type: 'success'
  514. })
  515. }else{
  516. this.$message({
  517. message: res.msg,
  518. type: 'warning'
  519. })
  520. }
  521. }).finally(()=>{
  522. return true
  523. })
  524. }else{
  525. return false
  526. }
  527. });
  528. },
  529. addHikTask () {
  530. this.$refs.form4.validate((valid) => {
  531. if(valid){
  532. toolbarApi.addHikTask({start: this.form4.start, goal: this.form4.goal}).then(response=>{
  533. const res = response.data
  534. if(res.isSuccess){
  535. this.$message({
  536. message: this.$t('tips.updateSuccess'),
  537. type: 'success'
  538. })
  539. }else{
  540. this.$message({
  541. message: res.msg,
  542. type: 'warning'
  543. })
  544. }
  545. }).finally(()=>{
  546. return true
  547. })
  548. }else{
  549. return false
  550. }
  551. });
  552. },
  553. resend() {
  554. this.$refs.form5.validate((valid) => {
  555. if(valid){
  556. toolbarApi.resend({taskNodeId: this.form5.taskNodeId, taskId: this.form5.taskId}).then(response=>{
  557. const res = response.data
  558. if(res.isSuccess){
  559. this.$message({
  560. message: this.$t('tips.updateSuccess'),
  561. type: 'success'
  562. })
  563. }else{
  564. this.$message({
  565. message: res.msg,
  566. type: 'warning'
  567. })
  568. }
  569. }).finally(()=>{
  570. return true
  571. })
  572. }else{
  573. return false
  574. }
  575. });
  576. },
  577. sendCallback(){
  578. this.$refs.form6.validate((valid) => {
  579. if(valid){
  580. toolbarApi.sendCallback({taskNodeId: this.form6.taskNodeId, taskId: this.form6.taskId}).then(response=>{
  581. const res = response.data
  582. if(res.isSuccess){
  583. this.$message({
  584. message: this.$t('tips.updateSuccess'),
  585. type: 'success'
  586. })
  587. }else{
  588. this.$message({
  589. message: res.msg,
  590. type: 'warning'
  591. })
  592. }
  593. }).finally(()=>{
  594. return true
  595. })
  596. }else{
  597. return false
  598. }
  599. });
  600. },
  601. freeLock(){
  602. this.$refs.form9.validate((valid) => {
  603. if(valid){
  604. toolbarApi.freeLock({taskNodeId: this.form9.taskNodeId, taskId: this.form9.taskId}).then(response=>{
  605. const res = response.data
  606. if(res.isSuccess){
  607. this.$message({
  608. message: this.$t('tips.updateSuccess'),
  609. type: 'success'
  610. })
  611. }else{
  612. this.$message({
  613. message: res.msg,
  614. type: 'warning'
  615. })
  616. }
  617. }).finally(()=>{
  618. return true
  619. })
  620. }else{
  621. return false
  622. }
  623. });
  624. },
  625. refreshXbk(){
  626. this.$refs.form10.validate((valid) => {
  627. if(valid){
  628. toolbarApi.refreshXbk(this.form10).then(response=>{
  629. const res = response.data
  630. if(res.isSuccess){
  631. this.$message({
  632. message: this.$t('tips.updateSuccess'),
  633. type: 'success'
  634. })
  635. }else{
  636. this.$message({
  637. message: res.msg,
  638. type: 'warning'
  639. })
  640. }
  641. }).finally(()=>{
  642. return true
  643. })
  644. }else{
  645. return false
  646. }
  647. });
  648. },
  649. manualTask(){
  650. this.$refs.form7.validate((valid) => {
  651. if(valid){
  652. this.form7.startpointId = this.form7.startpointId.toString()
  653. this.form7.endpointId = this.form7.endpointId.toString()
  654. toolbarApi.manualTask(this.form7).then(response=>{
  655. const res = response.data
  656. if(res.isSuccess){
  657. this.$message({
  658. message: this.$t('tips.updateSuccess'),
  659. type: 'success'
  660. })
  661. }else{
  662. this.$message({
  663. message: res.msg,
  664. type: 'warning'
  665. })
  666. }
  667. }).finally(()=>{
  668. return true
  669. })
  670. }else{
  671. return false
  672. }
  673. });
  674. },
  675. manualXbk(){
  676. this.$refs.form8.validate((valid) => {
  677. if(valid){
  678. toolbarApi.manualXbk(this.form8).then(response=>{
  679. const res = response.data
  680. if(res.isSuccess){
  681. this.$message({
  682. message: this.$t('tips.updateSuccess'),
  683. type: 'success'
  684. })
  685. }else{
  686. this.$message({
  687. message: res.msg,
  688. type: 'warning'
  689. })
  690. }
  691. }).finally(()=>{
  692. return true
  693. })
  694. }else{
  695. return false
  696. }
  697. });
  698. },
  699. reset () {
  700. this.queryParams = initQueryParams({})
  701. this.$refs.table.clearSort()
  702. this.$refs.table.clearFilter()
  703. this.search()
  704. },
  705. add () {
  706. this.$refs.edit.type = "add"
  707. this.$refs.edit.setTenant(false, this.dicts)
  708. this.dialog.title = this.$t("common.add")
  709. this.dialog.isVisible = true
  710. },
  711. singleDelete (row) {
  712. this.$refs.table.clearSelection()
  713. this.$refs.table.toggleRowSelection(row, true)
  714. this.batchDelete()
  715. },
  716. batchDelete () {
  717. if (!this.selection.length) {
  718. this.$message({
  719. message: this.$t("tips.noDataSelected"),
  720. type: "warning"
  721. })
  722. return
  723. }
  724. this.$confirm(this.$t("developer.tips.wareTips"), this.$t("common.tips"), {
  725. distinguishCancelAndClose: true,
  726. confirmButtonText: this.$t("common.confirm"),
  727. cancelButtonText: this.$t("common.cancel"),
  728. type: "warning"
  729. }).then(() => {
  730. const ids = []
  731. this.selection.forEach(item => {
  732. ids.push(item.id)
  733. })
  734. this.delete(ids)
  735. }).catch(() => {})
  736. },
  737. clearSelections () {
  738. this.$refs.table.clearSelection()
  739. },
  740. view(row){
  741. this.$refs.view.setTenant(row)
  742. this.tenantViewVisible = true
  743. },
  744. marking(){
  745. if (!this.selection.length) {
  746. this.$message({
  747. message: this.$t("tips.noDataSelected"),
  748. type: "warning"
  749. })
  750. return false
  751. }
  752. const ids = []
  753. this.selection.forEach(item => {
  754. ids.push(item.id)
  755. })
  756. this.updateStatus(ids)
  757. },
  758. updateStatus(ids){
  759. warnLogApi.updateStatus({ids: ids}).then(response => {
  760. const res = response.data
  761. if (res.isSuccess) {
  762. this.$message({
  763. message: '标注成功',
  764. type: "success"
  765. })
  766. this.search()
  767. }
  768. })
  769. },
  770. delete (ids) {
  771. warnLogApi.remove({ ids: ids }).then(response => {
  772. const res = response.data
  773. if (res.isSuccess) {
  774. this.$message({
  775. message: this.$t("tips.deleteSuccess"),
  776. type: "success"
  777. })
  778. this.search()
  779. // 清理已经删除的数据
  780. this.$refs.table.clearSelection()
  781. }
  782. })
  783. },
  784. // 【修改】表头上Btn-事件
  785. editOne() {
  786. if (!this.selection.length) {
  787. this.$message({
  788. message: this.$t("tips.noDataSelected"),
  789. type: "warning"
  790. })
  791. return
  792. }
  793. if (this.selection.length > 1) {
  794. this.$message({
  795. message: this.$t("tips.mustOne"),
  796. type: "warning"
  797. })
  798. return
  799. }
  800. this.edit(this.selection[0]);
  801. },
  802. edit (row) {
  803. this.$refs.edit.setTenant(row, this.dicts)
  804. this.$refs.edit.type = "edit"
  805. this.dialog.title = this.$t("common.edit")
  806. this.dialog.isVisible = true
  807. },
  808. fetch () {
  809. this.loading = true
  810. areaMgrApi.page(this.queryParams).then(res => {
  811. res = res.data
  812. if(res.isSuccess){
  813. this.lineList = res.data.records
  814. }
  815. })
  816. }
  817. }
  818. }
  819. </script>
  820. <style lang="scss" scoped>
  821. .space .box-card {
  822. margin: 10px 0;
  823. }
  824. </style>