fabric-list.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658
  1. <template>
  2. <!-- 装箱单-面料列表 -->
  3. <div id="fabricList">
  4. <!-- 查询 -->
  5. <a-card :bordered="false">
  6. <div class="table-page-search-wrapper">
  7. <a-form layout="inline" @keyup.enter.native="searchQuery">
  8. <a-row :gutter="24">
  9. <a-col :md="6" :sm="8">
  10. <a-form-item label="单据号">
  11. <a-input placeholder="请输入单据号" v-model="queryParam.documentNo"></a-input>
  12. </a-form-item>
  13. </a-col>
  14. <!-- <a-col :md="6" :sm="8">
  15. <a-form-item label="订单号">
  16. <a-input placeholder="请输入订单号" v-model="queryParam.orderNumber"></a-input>
  17. </a-form-item>
  18. </a-col> -->
  19. <a-col :md="6" :sm="8">
  20. <a-form-item label="集装箱号">
  21. <a-input placeholder="请输入集装箱号" v-model="queryParam.containerNumber"></a-input>
  22. </a-form-item>
  23. </a-col>
  24. <a-col :md="6" :sm="8">
  25. <a-form-item label="外销发票号">
  26. <a-input placeholder="请输入外销发票号" v-model="queryParam.exportInvoiceNo"></a-input>
  27. </a-form-item>
  28. </a-col>
  29. <a-col :md="6" :sm="8">
  30. <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
  31. <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
  32. <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
  33. <a @click="handleToggleSearch" style="margin-left: 8px">
  34. {{ toggleSearchStatus ? '收起' : '展开' }}
  35. <a-icon :type="toggleSearchStatus ? 'up' : 'down'" />
  36. </a>
  37. </span>
  38. </a-col>
  39. </a-row>
  40. </a-form>
  41. </div>
  42. </a-card>
  43. <!-- 操作按钮区域 推送 新增-->
  44. <a-card :bordered="false" style="marginTop:10px;">
  45. <div class="table-operator">
  46. <a-button type="primary" @click="addFabric" icon="plus">新增</a-button>
  47. <a-button type="primary" @click="bitchSubmitList" icon="check">批量提交</a-button>
  48. <a-button type="primary" @click="bitchCancelSubmitList" icon="close">批量取消提交</a-button>
  49. <a-button type="primary" @click="push" icon="export">推送</a-button>
  50. <!-- <a-button type="primary" icon="download" @click="handleExportXls('装箱单-面辅料')">装箱单面辅料导出</a-button> -->
  51. <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" @change="handleImportExcel" :customRequest="uploadFlie" >
  52. <a-button type="primary" icon="import">导入-来源出运明细</a-button>
  53. </a-upload>
  54. <a-button type="primary" @click="synchronization" icon="reload">同步</a-button>
  55. </div>
  56. <!-- 子表 :scroll="{ x: 1500 }" 内容少 无需滚动-->
  57. <a-table
  58. bordered
  59. :columns="fabricListColumns"
  60. :data-source="fabricListData"
  61. :loading="loading"
  62. :scroll="{ x: 1500 , y: 500 }"
  63. :pagination="pagination"
  64. :row-key="record => record.id"
  65. :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
  66. @change="handleTableChange"
  67. >
  68. <!-- 集装箱号 输入框
  69. <a-form-model
  70. slot="containerNo"
  71. slot-scope="text, record"
  72. :ref="record.index"
  73. :model="record"
  74. style="width:100%;height:40px"
  75. >
  76. <a-form-model-item prop="containerNo">
  77. <a-input style="width:100%" v-model="record.containerNumber" />
  78. </a-form-model-item>
  79. </a-form-model> -->
  80. <!-- 单据状态 -->
  81. <span slot="state" slot-scope="text, record">
  82. <a-tag color="orange" v-if="record.status == '0'">已保存</a-tag>
  83. <a-tag color="green" v-if="record.status == '1'">已提交</a-tag>
  84. </span>
  85. <!-- 操作 -->
  86. <span slot="operationSlot" slot-scope="text, record">
  87. <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="enclosureUrl" @change="handleImportExcel" :data="{id:record.id}" >
  88. <a style="color:green;">附件上传</a>
  89. </a-upload>
  90. <a-divider type="vertical" />
  91. <a-dropdown>
  92. <a class="ant-dropdown-link">更多<a-icon type="down"/></a>
  93. <a-menu slot="overlay" v-if="record.status=='0'">
  94. <a-menu-item><a @click="details(record)">详情</a></a-menu-item>
  95. <a-menu-item><a @click="edit(record)">编辑</a></a-menu-item>
  96. <!-- <a-menu-item><a @click="itemXls(record)">导出</a></a-menu-item> -->
  97. <!-- <a-menu-item><a @click="submit(record)">提交</a></a-menu-item> -->
  98. <a-menu-item>
  99. <a-popconfirm title="确定删除吗?" ok-text="是" cancel-text="否" @confirm="handleDelete(record.id)">
  100. <a href="javascript:void(0);" style="color:red;">删除</a>
  101. </a-popconfirm>
  102. </a-menu-item>
  103. </a-menu>
  104. <!-- 已提交 -->
  105. <a-menu slot="overlay" v-if="record.status=='1'">
  106. <a-menu-item><a @click="details(record)">详情</a></a-menu-item>
  107. <!-- <a-menu-item><a @click="itemXls(record)">导出</a></a-menu-item> -->
  108. <!-- <a-menu-item><a @click="cancel(record)">取消提交</a></a-menu-item> -->
  109. </a-menu>
  110. </a-dropdown>
  111. </span>
  112. </a-table>
  113. </a-card>
  114. <!-- 抽屉 -->
  115. <div>
  116. <addFabric-drawer ref="addFabricDrawer" :father="aa" @ok="modalFormOk" :fatherList="getFabricList"></addFabric-drawer>
  117. <detailsFabric-drawer ref="detailsFabricDrawer" :father="bb" @ok="modalFormOk"></detailsFabric-drawer>
  118. <editFabric-drawer ref="editFabricDrawer" :father="cc" @ok="modalFormOk"></editFabric-drawer>
  119. </div>
  120. <!-- 导入确认框 -->
  121. <div>
  122. <a-modal :visible="visible" title="是否继续导入" @ok="handleOk" @cancel="handleCancel">
  123. <ul>
  124. <li v-for="(item,index) in message" :key="index">{{item}}</li>
  125. </ul>
  126. </a-modal>
  127. </div>
  128. </div>
  129. </template>
  130. <script>
  131. import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  132. import { downFile } from '@/api/manage'
  133. import JEllipsis from '@/components/jeecg/JEllipsis'
  134. import moment from 'moment'
  135. import addFabricDrawer from '@views/packing-list/packinglist-fabrics/addFabricDrawer.vue'
  136. import detailsFabricDrawer from '@views/packing-list/packinglist-fabrics/detailsFabricDrawer.vue'
  137. import editFabricDrawer from '@views/packing-list/packinglist-fabrics/editFabricDrawer.vue'
  138. import { fabricList,fabricListId,deleteFabricList,submitList,cancelSubmit,bitchSubmit,bitchCancelSubmit,synchronizationData,upload,fileDetail} from '@api/document/packing-list/packinglist-fabrics'
  139. export default {
  140. name: 'FabricList', // 装箱单-面料
  141. mixins: [JeecgListMixin],
  142. components: { JEllipsis, moment, addFabricDrawer, detailsFabricDrawer, editFabricDrawer },
  143. data() {
  144. // let ellipsis = (v, l = 20) => <j-ellipsis value={v} length={l} />
  145. return {
  146. // 表头
  147. fabricListColumns: [
  148. {
  149. title: '单据号',
  150. dataIndex: 'documentNo',
  151. width: 160,
  152. ellipsis: true,
  153. className: 'replacecolor'
  154. },
  155. // {
  156. // title: '订单号',
  157. // dataIndex: 'orderNumber',
  158. // width: 160,
  159. // className: 'replacecolor'
  160. // },
  161. {
  162. title: '集装箱号',
  163. dataIndex: 'containerNumber',
  164. width: 120,
  165. ellipsis: true,
  166. // scopedSlots: { customRender: 'containerNo' },
  167. className: 'replacecolor'
  168. },
  169. // {
  170. // title: '发票号',
  171. // dataIndex: 'invoiceNo',
  172. // width: 160,
  173. // ellipsis: true,
  174. // className: 'replacecolor'
  175. // },
  176. {
  177. title: '外销发票号',
  178. dataIndex: 'exportInvoiceNo',
  179. width: 150,
  180. ellipsis: true,
  181. className: 'replacecolor'
  182. },
  183. {
  184. title: '装柜日期',
  185. dataIndex: 'latestDateOfShipment',
  186. width: 120,
  187. ellipsis: true,
  188. className: 'replacecolor'
  189. },
  190. {
  191. title: '成衣工厂',
  192. dataIndex: 'garmentFactory',
  193. width: 140,
  194. ellipsis: true,
  195. className: 'replacecolor'
  196. },
  197. {
  198. title: '制单人',
  199. dataIndex: 'createBy',
  200. width: 120,
  201. ellipsis: true,
  202. className: 'replacecolor'
  203. },
  204. {
  205. title: '制单日期',
  206. dataIndex: 'preparedDate',
  207. width: 140,
  208. ellipsis: true,
  209. // 有问题,自动显示当日日期
  210. // customRender: text => {
  211. // return moment(text).format('YYYY-MM-DD')
  212. // },
  213. className: 'replacecolor'
  214. },
  215. {
  216. title: '托书号',
  217. dataIndex: 'shippingOrderNumber',
  218. width: 160,
  219. ellipsis: true,
  220. className: 'replacecolor'
  221. },
  222. {
  223. title: '状态',
  224. dataIndex: 'status',
  225. scopedSlots: { customRender: 'state' },
  226. width: 140,
  227. className: 'replacecolor'
  228. },
  229. {
  230. title: '操作',
  231. dataIndex: 'operation',
  232. scopedSlots: { customRender: 'operationSlot' },
  233. width: 150,
  234. // fixed: 'right',
  235. className: 'replacecolor'
  236. }
  237. ],
  238. fabricListData: [],
  239. visible:false,
  240. file:{},
  241. message:[],//导入文件信息
  242. selectedRowKeys: [], // 勾选航
  243. loading: false, // 表格加载
  244. // 查询条件
  245. queryParam: {
  246. pageNo: '' // 初始页
  247. },
  248. pagination:{},
  249. url: {
  250. // syncUser: '/act/process/extActProcess/doSyncUser',
  251. list: '/sys/user/list',
  252. // delete: '/sys/user/delete',
  253. // deleteBatch: '/sys/user/deleteBatch',
  254. exportXlsUrl: '/sys/user/exportXls', // 导出
  255. importExcelUrl: 'splfi/syPackingListFabric/importExcel', // 导入
  256. enclosureUrl:'splfi/syPackingListFabric/upload'//附件导入
  257. }
  258. }
  259. },
  260. created() {
  261. this.getFabricList()
  262. },
  263. methods: {
  264. // 导入
  265. uploadFlie(file) {
  266. const formData = new FormData()
  267. formData.append('file', file.file)
  268. fileDetail(formData).then(res => {
  269. this.loading = false
  270. if (res.success) {
  271. this.visible = true
  272. this.message = res.message.split(';').filter((element) => {
  273. return element !== "";
  274. });
  275. this.file = file
  276. }else{
  277. this.$message.error(res.message);
  278. }
  279. })},
  280. //继续导入
  281. handleOk(){
  282. const formData = new FormData()
  283. formData.append('file', this.file.file)
  284. upload(formData).then(res => {
  285. this.visible = false
  286. if (res.success) {
  287. this.$message.success('导入成功')
  288. this.getFabricList()
  289. }else{
  290. this.$message.error(res.message);
  291. }
  292. })
  293. },
  294. //取消导入
  295. handleCancel(){
  296. this.visible = false
  297. this.loading = false
  298. },
  299. //分页查询
  300. getFabricList(){
  301. this.$nextTick(() => {
  302. this.queryParam.pageSize = 20
  303. fabricList(this.queryParam).then(res => {
  304. if (res.success) {
  305. this.fabricListData = res.result.records;
  306. this.loading = false
  307. this.pagination = {
  308. total: res.result.total,
  309. current: res.result.current,
  310. pageSize: res.result.size
  311. }
  312. }else{
  313. this.$message.error(res.message);
  314. }
  315. })
  316. })
  317. },
  318. // 查询按钮
  319. searchQuery() {
  320. this.toggleSearchStatus = false
  321. this.queryParam.pageNo = ''
  322. this.getFabricList()
  323. },
  324. //重置查询
  325. searchReset() {
  326. this.queryParam = {}
  327. this.getFabricList()
  328. },
  329. // ------------------------------------
  330. // 推送
  331. push() {},
  332. // 新增
  333. addFabric() {
  334. console.log('新增-装箱单面料')
  335. this.$refs.addFabricDrawer.visible = true
  336. },
  337. // --------------------------------------
  338. // 操作 附件上传
  339. accessoryUpload() {},
  340. // 列表导出
  341. handleExportXls(fileName) {
  342. downFile('/splfi/syPackingListFabric/exportXls',this.queryParam).then(data => {
  343. if (!data) {
  344. this.$message.warning('文件下载失败')
  345. return
  346. }
  347. if (typeof window.navigator.msSaveBlob !== 'undefined') {
  348. window.navigator.msSaveBlob(new Blob([data], { type: 'application/vnd.ms-excel' }), fileName + '.xls')
  349. } else {
  350. let url = window.URL.createObjectURL(new Blob([data], { type: 'application/vnd.ms-excel' }))
  351. let link = document.createElement('a')
  352. link.style.display = 'none'
  353. link.href = url
  354. link.setAttribute('download', fileName + '.xls')
  355. document.body.appendChild(link)
  356. link.click()
  357. document.body.removeChild(link) // 下载完成移除元素
  358. window.URL.revokeObjectURL(url) // 释放掉blob对象
  359. }
  360. })
  361. },
  362. // 操作 单条数据导出
  363. itemXls(record) {
  364. downFile('/splfi/syPackingListFabric/exportXls',{id:record.id}).then(data => {
  365. if (!data) {
  366. this.$message.warning('文件下载失败')
  367. return
  368. }
  369. if (typeof window.navigator.msSaveBlob !== 'undefined') {
  370. window.navigator.msSaveBlob(new Blob([data], { type: 'application/vnd.ms-excel' }), item + '.xlsx')
  371. }else {
  372. let url = window.URL.createObjectURL(new Blob([data], { type: 'application/vnd.ms-excel' }))
  373. let link = document.createElement('a')
  374. link.style.display = 'none'
  375. link.href = url
  376. link.setAttribute('download', '装箱单' + '.xlsx')
  377. document.body.appendChild(link)
  378. link.click()
  379. document.body.removeChild(link) // 下载完成移除元素
  380. window.URL.revokeObjectURL(url) // 释放掉blob对象
  381. }
  382. })
  383. },
  384. // 同步
  385. synchronization(){
  386. this.$nextTick(() => {
  387. synchronizationData().then(res => {
  388. if (res.success) {
  389. this.$message.success('同步成功')
  390. this.getFabricList();
  391. }else{
  392. this.$message.error(res.message);
  393. }
  394. })
  395. })
  396. },
  397. // 操作 详情
  398. details(record) {
  399. console.log('详情', record.id)
  400. // console.log('编辑')
  401. this.$nextTick(() => {
  402. fabricListId({id:record.id}).then(res => {
  403. if (res.success) {
  404. var data = res.result
  405. this.$refs.detailsFabricDrawer.visible = true
  406. this.$refs.detailsFabricDrawer.addFabric ={
  407. documentNo:data.documentNo,
  408. // orderNumber:data.orderNumber,
  409. containerNumber:data.containerNumber,
  410. latestDateOfShipment:data.latestDateOfShipment,
  411. garmentFactory:data.garmentFactory,
  412. invoiceNo:data.invoiceNo,
  413. preparedBy:data.preparedBy,
  414. preparedDate:data.preparedDate,
  415. exportInvoiceNo:data.exportInvoiceNo,
  416. shippingOrderNumber:data.shippingOrderNumber,
  417. remarks:data.remarks,
  418. plumbumNo:data.plumbumNo,
  419. }
  420. if(record.documentNo.substr(0, 2) == "FL"){
  421. this.$refs.detailsFabricDrawer.judageCloumn()
  422. }
  423. data.syPackingListFabricItem.map(item =>{
  424. if(item.manualYarnFlag == 0){
  425. item.manualYarnFlag = '否'
  426. }else {
  427. item.manualYarnFlag = '是'
  428. }
  429. })
  430. this.$refs.detailsFabricDrawer.accessory =(data.accessory!==''&&data.accessory) ?data.accessory.split(","):''
  431. this.$refs.detailsFabricDrawer.addFabricData = data.syPackingListFabricItem
  432. }else{
  433. this.$message.error(res.message);
  434. }
  435. })
  436. })
  437. },
  438. // 操作 编辑
  439. edit(record) {
  440. // console.log('编辑')
  441. this.$nextTick(() => {
  442. fabricListId({id:record.id}).then(res => {
  443. if (res.success) {
  444. var data = res.result
  445. this.$refs.addFabricDrawer.visible = true
  446. this.$refs.addFabricDrawer.defaultMethod = 'edit'
  447. this.$refs.addFabricDrawer.addFabric ={
  448. id:data.id,
  449. // orderNumber:data.orderNumber,
  450. documentNo:data.documentNo,
  451. containerNumber:data.containerNumber,
  452. latestDateOfShipment:data.latestDateOfShipment,
  453. garmentFactory:data.garmentFactory,
  454. invoiceNo:data.invoiceNo,
  455. preparedBy:data.preparedBy,
  456. preparedDate:data.preparedDate,
  457. exportInvoiceNo:data.exportInvoiceNo,
  458. shippingOrderNumber:data.shippingOrderNumber,
  459. remarks:data.remarks,
  460. plumbumNo:data.plumbumNo,
  461. }
  462. if(record.documentNo.substr(0, 2) == "FL"){
  463. this.$refs.addFabricDrawer.judageCloumn()
  464. }
  465. data.syPackingListFabricItem.map(item =>{
  466. if(item.manualYarnFlag == 0){
  467. this.$refs.addFabricDrawer.manualYarnDisabled = true
  468. this.$forceUpdate()
  469. }else {
  470. this.$refs.addFabricDrawer.manualYarnDisabled = false
  471. }
  472. })
  473. this.$refs.addFabricDrawer.addFabricData = data.syPackingListFabricItem
  474. }else{
  475. this.$message.error(res.message);
  476. }
  477. })
  478. })
  479. },
  480. //提交
  481. submit(record){
  482. console.log(record.id)
  483. submitList({id:record.id}).then(res =>{
  484. if (res.success) {
  485. record.status = 1
  486. this.getFabricList()
  487. this.$message.success('提交成功')
  488. }else{
  489. this.$message.error(res.message);
  490. }
  491. })
  492. },
  493. cancel(record){
  494. console.log(record.id)
  495. cancelSubmit({id:record.id}).then(res =>{
  496. if (res.success) {
  497. record.status = 0
  498. this.getFabricList()
  499. this.$message.success('取消提交成功')
  500. }else{
  501. this.$message.error(res.message);
  502. }
  503. })
  504. },
  505. //批量提交
  506. bitchSubmitList(){
  507. for(var i =0;i<this.selectedRows.length;i++){
  508. var tickRow = this.selectedRows[i]
  509. if(tickRow.status === '1'){
  510. this.$message.error("部分数据是已提交,请勿重复提交!");
  511. return
  512. }
  513. }
  514. var ids = this.selectedRowKeys.toString()
  515. bitchSubmit({ids : ids}).then(res =>{
  516. if (res.success) {
  517. this.getFabricList()
  518. this.selectedRowKeys = []
  519. this.$message.success('提交成功');
  520. }else{
  521. this.$message.error(res.message);
  522. }
  523. })
  524. },
  525. //批量取消推送
  526. bitchCancelSubmitList(){
  527. for(var i =0;i<this.selectedRows.length;i++){
  528. var tickRow = this.selectedRows[i]
  529. if(tickRow.status === '0'){
  530. this.$message.error("含未提交数据,请重新选择!");
  531. return
  532. }
  533. }
  534. var ids = this.selectedRowKeys.toString()
  535. bitchCancelSubmit({ids : ids}).then(res =>{
  536. if (res.success) {
  537. this.getFabricList()
  538. this.selectedRowKeys = []
  539. this.$message.success('取消提交成功');
  540. }else{
  541. this.$message.error(res.message);
  542. }
  543. })
  544. },
  545. // 操作 删除
  546. handleDelete(id) {
  547. this.$nextTick(() => {
  548. if(this.queryParam.pageNo > 1 && this.fabricListData.length === 1){
  549. this.queryParam.pageNo = this.queryParam.pageNo -1
  550. }
  551. deleteFabricList({ id: id }).then(res => {
  552. if (res.success) {
  553. this.getFabricList()
  554. this.$message.success('删除成功')
  555. } else {
  556. this.$message.error('删除成功')
  557. }
  558. })
  559. })
  560. },
  561. // --------------------------------------
  562. // ??
  563. modalFormOk() {},
  564. // 选中行
  565. onSelectChange(keys, rows) {
  566. this.selectedRowKeys = keys
  567. this.selectedRows = rows
  568. },
  569. // --------------------------------------
  570. aa() {},
  571. bb() {},
  572. cc() {},
  573. // 分页、排序、筛选变化时触发
  574. handleTableChange(pagination, filters, sorter) {
  575. // console.log('当前页信息>>>>',pagination)
  576. this.queryParam.pageNo = pagination.current
  577. this.getFabricList()
  578. }
  579. },
  580. computed: {
  581. // 导入
  582. importExcelUrl: function() {
  583. return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
  584. },
  585. // 附件上传
  586. enclosureUrl: function() {
  587. return `${window._CONFIG['domianURL']}/${this.url.enclosureUrl}`
  588. },
  589. // 选中项
  590. rowSelection() {
  591. return {
  592. onChange: (selectedRowKeys, selectedRows) => {
  593. console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows)
  594. },
  595. getCheckboxProps: record => ({
  596. props: {
  597. disabled: record.title === 'Disabled User',
  598. // Column configuration not to be checked
  599. title: record.title
  600. }
  601. })
  602. }
  603. }
  604. },
  605. mounted() {}
  606. }
  607. </script>
  608. <style lang="less" scoped>
  609. @import '~@assets/less/common.less';
  610. @import '~@assets/less/overwriter.less';
  611. /deep/ .ant-table-thead > tr > th {
  612. text-align: center;
  613. // font-weight: 700;
  614. }
  615. /deep/ .ant-table-tbody {
  616. text-align: center;
  617. }
  618. // /deep/ th.replacecolor {
  619. // background-color: #ccc;
  620. // }
  621. </style>