warehouselocation.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756
  1. <!--库点费用-->
  2. <template>
  3. <div>
  4. <el-row>
  5. <el-col :span="12">
  6. <h2 class="bg-left title">库点费用</h2>
  7. </el-col>
  8. <el-col :span="12" class="bg-right">
  9. <el-button
  10. class="bg-bottom"
  11. type="primary"
  12. size="small"
  13. @click="returnsales()"
  14. ><img
  15. width="6"
  16. height="10"
  17. style="vertical-align: bottom; margin-right: 3px"
  18. src="../../../public/img/lujing.png"
  19. alt=""
  20. />返回</el-button
  21. >
  22. </el-col>
  23. </el-row>
  24. <el-row>
  25. <el-col class='bg-left' :span="12">
  26. <div style='align-items:center;' class='flex'>
  27. <ws-button class="find" type="primary" @click="addlist()" v-hasPermission="`warehouseManagement.costControl.delete`">添加</ws-button>
  28. <div style='align-items:center;' class='flex'>
  29. <div :class='{"forbidden":forbidden==true}' @click='minus'><i class="el-icon-arrow-left"></i></div>
  30. <ws-select
  31. v-model="year"
  32. placeholder=""
  33. @change="yearChange"
  34. :value="searchType"
  35. style="margin: 0 10px"
  36. >
  37. <ws-option
  38. v-for="item in yearList"
  39. :key="item.value"
  40. :label="item.value"
  41. :value="item.value"
  42. style="color: #8890b1"
  43. />
  44. </ws-select>
  45. <div :class='{"forbidden":forbidden1==true}' @click='add'><i class="el-icon-arrow-right"></i></div>
  46. </div>
  47. <span v-if='deptBudgetTotal>0'>合计:{{count}}元</span>
  48. </div>
  49. </el-col>
  50. <el-col :span="12" class="bg-right">
  51. <ws-select
  52. v-model="warehouseName"
  53. placeholder=""
  54. @change="warehouseNameChange"
  55. :value="searchType"
  56. style="margin: 0 10px"
  57. >
  58. <ws-option
  59. v-for="item in warehouseList1"
  60. :key="item.value"
  61. :label="item.value"
  62. :value="item.value"
  63. style="color: #8890b1"
  64. />
  65. </ws-select>
  66. <!-- v-hasPermission="'procurement.sparepart.directShip'" -->
  67. <ws-button class="find" type="primary" @click="find()"
  68. ><img
  69. width="16"
  70. height="16"
  71. style="
  72. vertical-align: text-top;
  73. position: relative;
  74. top: 0px;
  75. left: -8px;
  76. "
  77. src="../../../public/img/sousuo.png"
  78. alt=""
  79. /></ws-button>
  80. </el-col>
  81. </el-row>
  82. <el-table
  83. class="wenzi"
  84. :data="warehouseList.records"
  85. style="width: 100%; margin-top: 20px"
  86. height="780"
  87. >
  88. <el-table-column label="序号" type="index" show-overflow-tooltip width="50">
  89. </el-table-column>
  90. <el-table-column prop="expenseName" label="费用名称" >
  91. </el-table-column>
  92. <el-table-column prop="amount" label="金额(元)" >
  93. </el-table-column>
  94. <el-table-column prop="storage" label="附件">
  95. <template slot-scope="scope">
  96. <img v-if='scope.row.applUrl'
  97. width="18"
  98. height="20"
  99. style="vertical-align: text-top; position: relative; top: -1px"
  100. src="../../../public/img/fujian.png"
  101. @click="fujian(scope.row)"
  102. alt=""
  103. />
  104. <span v-else>暂无附件</span>
  105. </template>
  106. </el-table-column>
  107. <el-table-column prop="costDate" label="日期">
  108. </el-table-column>
  109. <el-table-column prop="address" label="操作" width="200">
  110. <template slot-scope="scope">
  111. <div class="adjustment" v-hasPermission="
  112. `warehouseManagement.costControl.audit`
  113. " @click="editlist(scope.row)">编辑</div>
  114. </template>
  115. </el-table-column>
  116. </el-table>
  117. <el-pagination
  118. @size-change="handleSizeChange"
  119. @current-change="handleCurrentChange"
  120. :current-page="currentPage"
  121. :page-size="pageSize"
  122. layout="total, sizes, prev, pager, next, jumper"
  123. :total="deptBudgetTotal"
  124. >
  125. </el-pagination>
  126. <WinseaContentModal
  127. v-model="accessoryTFs"
  128. :title="$t('system.noticeCircular.information')"
  129. @on-cancel="handleClose"
  130. >
  131. <ws-upload
  132. ref="upload"
  133. :comp-id="compId"
  134. :appendix-ids="appendixIdss"
  135. :editable="false"
  136. accept=".jpg, .jpeg, .png, .pdf, .doc, .zip, .rar"
  137. />
  138. </WinseaContentModal>
  139. <el-dialog :title="dialogtitle" :visible.sync="addvisible">
  140. <el-form label-width="140px" label-position='right'>
  141. <el-form-item label="费用名称" >
  142. <el-input v-model="expenseName" autocomplete="off"></el-input>
  143. </el-form-item>
  144. <el-form-item label="金额" >
  145. <el-input v-model="amount" autocomplete="off"></el-input>
  146. </el-form-item>
  147. <el-form-item label="付款截图" >
  148. <ws-upload
  149. ref="upload"
  150. :comp-id="compId"
  151. :appendix-ids="applUrl"
  152. :size-limit="size"
  153. :limit='limit'
  154. @onChange="onChange"
  155. accept=".jpg, .jpeg, .png, .pdf, .doc, .zip, .rar"
  156. />
  157. </el-form-item>
  158. </el-form>
  159. <div slot="footer" class="dialog-footer">
  160. <el-button @click="addvisible = false">取 消</el-button>
  161. <el-button type="primary" @click="addInventory">确 定</el-button>
  162. </div>
  163. </el-dialog>
  164. </div>
  165. </template>
  166. <script>
  167. import {
  168. getinventory,
  169. addinventory,
  170. editinventory,
  171. getwarehousebase,
  172. editcost,
  173. export1,
  174. editstatus,
  175. billoperatehis,
  176. clearancee,
  177. } from '@/model/warehouse/index'
  178. import { downloadFile } from '@/utils/batchDown'
  179. import Pagination from '@/components/Pagination'
  180. import WsUpload from '@/components/WsUpload'
  181. import { EventBus } from 'base-core-lib'
  182. export default {
  183. name: 'viewSpareMoney',
  184. components: {
  185. WsUpload,
  186. Pagination,
  187. },
  188. watch: {
  189. vesselId(val) {
  190. this.getList()
  191. },
  192. isShow(val) {
  193. this.showType = val
  194. },
  195. },
  196. data() {
  197. return {
  198. currectPage:1,
  199. pageSize:10,
  200. //弹出框
  201. dialogViewSpareMoney: false,
  202. dialogApproveFormVisible: false,
  203. // 船舶类型
  204. monetaryKey: null,
  205. // 表格显示数据
  206. tableDate: [],
  207. expenseName:'',
  208. yearList:[],
  209. dialogtitle:'',
  210. appendixIdss:[],
  211. amount:'',
  212. applUrl:'',
  213. price:'',
  214. costDate:'',
  215. // 是否显示
  216. showType: true,
  217. // 年
  218. year: '',
  219. searchType: 1,
  220. searchTypeText: '未完成',
  221. searchKeyWord: '',
  222. contractType: 2,
  223. currentPage:1,
  224. warehouseType: '1',
  225. // 提交类型
  226. submitType: true,
  227. size: 10,
  228. limit:1,
  229. spanArr: [],
  230. id:0,
  231. warehouseName: '',
  232. warehouseId:'',
  233. start:2021,
  234. forbidden:false,
  235. forbidden1:false,
  236. addvisible:false,
  237. compId: sessionStorage.getItem('ws-pf_compId'),
  238. deptCircularPage: {},
  239. warehouseList: [],
  240. warehouseList1: [],
  241. deptBudgetList: {},
  242. historyList: [],
  243. count:0,
  244. deptBudgetTotal: 0,
  245. pickerBeginDateBefore: {
  246. disabledDate: (time) => {
  247. return time.getTime() > Date.now()
  248. },
  249. },
  250. accessoryTFs: false,
  251. }
  252. },
  253. activated() {
  254. this.cangid=this.$route.query.cangId
  255. this.year=new Date().getFullYear()
  256. for(var i=this.start;i<=this.year;i++){
  257. this.yearList.push({value:i})
  258. }
  259. if(this.year>=new Date().getFullYear()){
  260. this.forbidden1=true
  261. }
  262. if(this.year<=this.start){
  263. this.forbidden=true
  264. }
  265. this.selectWarehouse()
  266. // this.getList()
  267. this.showType = this.isShow
  268. },
  269. methods: {
  270. returnsales(){
  271. this.$router.go(-1)
  272. },
  273. fujian(row) {
  274. if (row.applUrl === null || row.applUrl === '') {
  275. EventBus.$emit(
  276. 'warning',
  277. this.$t('system.noticeCircular.NoInformation')
  278. )
  279. }
  280. this.appendixIdss = row.applUrl
  281. this.accessoryTFs = true
  282. },
  283. uploadSuccessHandle(e){
  284. this.applUrl=e.url
  285. },
  286. counttotal(){
  287. this.count=0
  288. for (let i = 0; i < this.warehouseList.records.length; i++) {
  289. this.count+=this.warehouseList.records[i].amount
  290. }
  291. },
  292. onChange() {
  293. this.$refs.upload
  294. .handleSaveBill()
  295. .then(async response => {
  296. this.applUrl = response
  297. })
  298. .catch(res => {
  299. EventBus.$emit('error', (JSON.parse(res) || {}).message)
  300. this.$refs.upload.clearFiles()
  301. })
  302. },
  303. minus(){
  304. if(this.year<=this.start){
  305. this.forbidden=true
  306. }else{
  307. this.year--
  308. }
  309. },
  310. add(){
  311. if(this.year>=new Date().getFullYear()){
  312. this.forbidden1=true
  313. }else{
  314. this.year++
  315. }
  316. },
  317. addInventory(){
  318. if(this.dialogtitle=='编辑费用'){
  319. this.editInventory()
  320. return
  321. }
  322. if(!this.expenseName){
  323. this.$message({
  324. message: '费用名称不能为空!',
  325. type: 'warning'
  326. })
  327. return
  328. }
  329. if(this.expenseName.length<1||this.expenseName.length>10){
  330. this.$message({
  331. message: '费用名称1-10个字!',
  332. type: 'warning'
  333. })
  334. return
  335. }
  336. if(!this.amount){
  337. this.$message({
  338. message: '金额不能为空!',
  339. type: 'warning'
  340. })
  341. return
  342. }
  343. if(this.amount<0||this.amount>100000000||(String(this.amount).indexOf('.') != -1 &&
  344. String(this.amount).length -
  345. (String(this.amount).indexOf('.') +1) >
  346. 2)){
  347. this.$message({
  348. message: '金额输入错误!',
  349. type: 'warning'
  350. })
  351. return
  352. }
  353. addinventory({applUrl:this.applUrl,expenseName:this.expenseName,amount:this.amount,warehouseId:this.cangid,warehouseName:this.warehouseName}).toPromise()
  354. .then((response) => {
  355. this.$notify.success({
  356. title: '成功',
  357. message: '添加成功',
  358. })
  359. this.addvisible=false
  360. this.expenseName=''
  361. this.amount=''
  362. this.applUrl=''
  363. this.getList()
  364. })
  365. },
  366. editInventory(){
  367. if(!this.expenseName){
  368. this.$message({
  369. message: '费用名称不能为空!',
  370. type: 'warning'
  371. })
  372. return
  373. }
  374. if(this.expenseName.length<1||this.expenseName.length>10){
  375. this.$message({
  376. message: '费用名称1-10个字!',
  377. type: 'warning'
  378. })
  379. return
  380. }
  381. if(!this.amount){
  382. this.$message({
  383. message: '金额不能为空!',
  384. type: 'warning'
  385. })
  386. return
  387. }
  388. if(this.amount<0||this.amount>100000000){
  389. this.$message({
  390. message: '金额输入错误!',
  391. type: 'warning'
  392. })
  393. return
  394. }
  395. editinventory({id:this.id,applUrl:this.applUrl,expenseName:this.expenseName,amount:this.amount,warehouseId:this.cangid,warehouseName:this.warehouseName}).toPromise()
  396. .then((response) => {
  397. this.$notify.success({
  398. title: '成功',
  399. message: '编辑成功',
  400. })
  401. this.addvisible=false
  402. this.expenseName=''
  403. this.amount=''
  404. this.applUrl=''
  405. this.getList()
  406. })
  407. },
  408. yearChange(){
  409. },
  410. addlist(){
  411. this.addvisible=true
  412. this.dialogtitle='添加费用'
  413. },
  414. editlist(item){
  415. this.addvisible=true
  416. this.dialogtitle='编辑费用'
  417. this.id=item.id
  418. this.applUrl=item.applUrl
  419. this.expenseName=item.expenseName
  420. this.amount=item.amount
  421. },
  422. warehouselocation(){
  423. this.$router.push({ path: 'warehouselocation' })
  424. },
  425. warehouseNameChange(e) {
  426. for(let i = 0 ; i < this.warehouseList1.length; i++){
  427. if(this.warehouseList1[i].value == e){
  428. this.warehouseName = this.warehouseList1[i].value
  429. this.warehouseCount = this.warehouseList1[i].count
  430. this.warehouseNo = this.warehouseList1[i].No
  431. this.cangid = this.warehouseList1[i].id
  432. this.WAREHOUSE[1].payname = this.warehouseList1[i].value
  433. this.purchasePriceList = this.warehouseList1[i].purchasePriceList
  434. }
  435. }
  436. this.getList()
  437. },
  438. edit(item){
  439. this.price=item.cost
  440. this.editvisible=true
  441. this.id=item.id
  442. },
  443. editprice(){
  444. this.$confirm(`加权成本价格修改后不可恢复,确认提交`, {
  445. confirmButtonText: '确定',
  446. cancelButtonText: '取消',
  447. type: 'warning',
  448. })
  449. .then(() => {
  450. editcost({id:this.id,cost:this.price}).toPromise()
  451. .then((response) => {
  452. this.$notify.success({
  453. title: '成功',
  454. message: '价格修改成功',
  455. })
  456. this.editvisible=false
  457. this.getList()
  458. })
  459. })
  460. },
  461. handleClose() {
  462. this.accessoryTFs = false
  463. },
  464. handleSizeChange(val) {
  465. console.log(`每页 ${val} 条`)
  466. this.pageSize = val
  467. this.getList()
  468. },
  469. handleCurrentChange(val) {
  470. this.currentPage = val
  471. console.log(`当前页: ${val}`)
  472. this.getList()
  473. },
  474. selectWarehouse(){
  475. getwarehousebase({
  476. compId: sessionStorage.getItem('ws-pf_compId'),
  477. warehouseType:''
  478. })
  479. .toPromise()
  480. .then((response) => {
  481. this.warehouseList1 = []
  482. for (let i = 0; i < response.length; i++) {
  483. this.warehouseList1.push({
  484. value: response[i].warehouseName,
  485. id: response[i].id,
  486. count: response[i].count,
  487. purchasePriceList: response[i].purchasePriceList,
  488. No:response[i].commonWarehouseNo
  489. })
  490. if (this.cangid&&this.cangid == response[i].id) {
  491. this.warehouseName = response[i].warehouseName
  492. this.warehouseCount = response[i].count
  493. this.warehouseNo = response[i].commonWarehouseNo
  494. this.purchasePriceList = response[i].purchasePriceList
  495. }
  496. }
  497. if(this.warehouseList1.length > 0 && !this.cangid){
  498. this.warehouseName = this.warehouseList1[0].value
  499. this.warehouseCount = this.warehouseList1[0].count
  500. this.warehouseNo = this.warehouseList1[0].No
  501. this.cangid = this.warehouseList1[0].id
  502. this.purchasePriceList = this.warehouseList1[0].purchasePriceList
  503. this.WAREHOUSE[1].payname = this.warehouseList1[0].value
  504. }
  505. this.getList()
  506. })
  507. getwarehousebase({
  508. compId: sessionStorage.getItem('ws-pf_compId'),
  509. warehouseType:2
  510. })
  511. .toPromise()
  512. .then((response) => {
  513. for (let i = 0; i < response.length; i++) {
  514. this.warehouseList1.push({
  515. value: response[i].warehouseName,
  516. id: response[i].id,
  517. count: response[i].count,
  518. purchasePriceList: response[i].purchasePriceList,
  519. No:response[i].commonWarehouseNo
  520. })
  521. if (this.cangid&&this.cangid == response[i].id) {
  522. this.warehouseName = response[i].warehouseName
  523. this.warehouseCount = response[i].count
  524. this.warehouseNo = response[i].commonWarehouseNo
  525. this.purchasePriceList = response[i].purchasePriceList
  526. }
  527. }
  528. })
  529. },
  530. getList() {
  531. getinventory({
  532. compId: sessionStorage.getItem('ws-pf_compId'),
  533. warehouseId: this.cangid,
  534. year: this.year,
  535. currectPage:this.currectPage,
  536. pageSize:this.pageSize
  537. })
  538. .toPromise()
  539. .then((response) => {
  540. this.warehouseList = response
  541. this.deptBudgetTotal=response.total
  542. this.counttotal()
  543. })
  544. },
  545. editClick(row) {
  546. var status = ''
  547. if (row.status == '待执行' || row.status == '已完成') {
  548. status = '执行中'
  549. } else if (row.status == '执行中') {
  550. status = '已完成'
  551. }
  552. //cancelButtonClass: "btn-custom-cancel"
  553. this.$confirm(`是否将状态改为${status}`, {
  554. confirmButtonText: '确定',
  555. cancelButtonText: '取消',
  556. type: 'warning',
  557. })
  558. .then(() => {
  559. editstatus({ id: row.id })
  560. .toPromise()
  561. .then((response) => {
  562. this.$notify.success({
  563. title: '成功',
  564. message: '状态修改成功',
  565. })
  566. this.getList()
  567. })
  568. .catch((response) => {
  569. // EventBus.$emit('error', this.$t('showMessage.asteriskRequired'))
  570. })
  571. })
  572. .catch(() => {
  573. return false
  574. })
  575. },
  576. selecttaskType(e) {
  577. for (var i = 0; i < this.taskTypeList.length; i++) {
  578. if (this.taskTypeList[i].value == e) {
  579. this.searchType = this.taskTypeList[i].type
  580. }
  581. }
  582. },
  583. handleExamine(row) {
  584. this.$router.push({
  585. name: 'salesContractExamine',
  586. query: { id: row.id },
  587. })
  588. },
  589. // 关闭 dialog时 处理文件url 初始化upload组件
  590. handleCloe() {
  591. this.dialogViewSpareMoney = false
  592. },
  593. history(row) {
  594. billoperatehis({ id: row.id })
  595. .toPromise()
  596. .then((response) => {
  597. this.historyList = response
  598. })
  599. },
  600. find() {
  601. this.currentPage = 1
  602. this.getList()
  603. },
  604. async exportlist() {
  605. const { data } = await export1(
  606. {
  607. compId: sessionStorage.getItem('ws-pf_compId'),
  608. contractType: this.contractType,
  609. currentPage: this.currentPage,
  610. pageSize: this.pageSize,
  611. searchType: this.searchType,
  612. searchKeyWord: this.searchKeyWord,
  613. startDate: this.startDate,
  614. endDate: this.endDate,
  615. },
  616. {},
  617. { responseType: 'blob' }
  618. ).toPromise()
  619. downloadFile({
  620. res: data,
  621. fileName: `${
  622. this.date.year + (this.date.month ? `-${this.date.month}` : '')
  623. }_采购合同`,
  624. type: 'xls',
  625. })
  626. },
  627. },
  628. }
  629. </script>
  630. <style lang="scss" scoped>
  631. .connert {
  632. width: 90%;
  633. margin: 0 auto;
  634. }
  635. .bg-left {
  636. padding-left: 30px;
  637. }
  638. .bg-right {
  639. text-align: right;
  640. padding: 16px 20px;
  641. }
  642. .el-icon-arrow-left,.el-icon-arrow-right{
  643. font-size:24px;
  644. }
  645. .vertical-text-left {
  646. width: 62px;
  647. text-align: right;
  648. }
  649. .el-button--primary {
  650. background-color: #5878e8;
  651. border-color: #5878e8;
  652. }
  653. .el-button--default {
  654. color: #8890b1;
  655. border-color: #e8eaf1;
  656. }
  657. /deep/.base_header_layout .grid-content.right .find.el-button--primary {
  658. width: 30px;
  659. margin-left: 0;
  660. border-top-left-radius: 0px;
  661. border-bottom-left-radius: 0px;
  662. }
  663. /deep/.findValue .el-input__inner {
  664. border-top-right-radius: 0px;
  665. border-bottom-right-radius: 0px;
  666. }
  667. .completed.el-button--default {
  668. border-color: #5878e8;
  669. background-color: #f6f7fc;
  670. color: #5878e8;
  671. }
  672. .putstorage.el-button--default,
  673. .deliverystorage.el-button--default {
  674. border-color: #8890b1;
  675. background-color: #fff;
  676. color: #8890b1;
  677. }
  678. /deep/.el-table td,
  679. /deep/.el-table th.is-leaf {
  680. border-right: 1px solid #e9ecf7;
  681. text-align: center;
  682. }
  683. /deep/.el-table tr td:first-child,
  684. /deep/.el-table tr th.is-leaf:first-child {
  685. border-left: 1px solid #e9ecf7;
  686. }
  687. /deep/.el-table .el-table__header .cell,
  688. /deep/.el-table .el-table__body .cell {
  689. -webkit-line-clamp: 10;
  690. max-height: 400px;
  691. }
  692. .record,
  693. .adjustment {
  694. display: inline-block;
  695. color: #5878e8;
  696. padding: 0 4px !important;
  697. position: relative;
  698. }
  699. .record:after {
  700. position: absolute;
  701. content: '';
  702. display: block;
  703. top: 5px;
  704. right: -2px;
  705. width: 1px;
  706. height: 12px;
  707. background: #e9ecf7;
  708. }
  709. /deep/.el-radio-button:first-child .el-radio-button__inner {
  710. margin-left: 10px;
  711. }
  712. //分页
  713. .el-pagination {
  714. text-align: center;
  715. white-space: nowrap;
  716. padding: 2px 5px;
  717. color: #303133;
  718. font-weight: 700;
  719. margin-bottom: 20px;
  720. }
  721. .forbidden{
  722. cursor: not-allowed;
  723. }
  724. .avatar-uploader .el-upload {
  725. border: 1px dashed #d9d9d9;
  726. border-radius: 6px;
  727. cursor: pointer;
  728. position: relative;
  729. overflow: hidden;
  730. }
  731. .avatar-uploader .el-upload:hover {
  732. border-color: #409EFF;
  733. }
  734. .avatar-uploader-icon {
  735. font-size: 28px;
  736. color: #8c939d;
  737. width: 178px;
  738. height: 178px;
  739. line-height: 178px;
  740. text-align: center;
  741. }
  742. .avatar {
  743. width: 178px;
  744. height: 178px;
  745. display: block;
  746. }
  747. </style>