index.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632
  1. <template>
  2. <div>
  3. <div class="custom-tree-container">
  4. <div class="block-l">
  5. <el-card shadow="hover">
  6. <el-tag class="full space-vertical">当前所选:载体结构</el-tag>
  7. <!-- @node-click="handleDeptNodeClick" -->
  8. <el-tree
  9. ref="selectTree"
  10. default-expand-all
  11. :data="DeptTree"
  12. node-key="id"
  13. :indent="deptTreeIndent"
  14. accordion
  15. :expand-on-click-node="expandDeptClick"
  16. :default-expanded-keys="expandedDeptKey"
  17. node-click="(data, node, item) => nodeClick(data, node, item)"
  18. @node-click="getCheckedNodes"
  19. >
  20. <span slot-scope="{ node, data }" class="custom-tree-node">
  21. <span>
  22. <i v-if="data.level == 0" class="el-icon-s-home" />
  23. <i v-else-if="data.level == 1" class="el-icon-menu" />
  24. <i v-else class="el-icon-link" />
  25. {{ node.label }}
  26. </span>
  27. <span v-if="data.level == 0">
  28. <el-link class="space" type="primary" @click="() => unFoldAll()">展开</el-link>
  29. <el-link class="space" type="primary" @click="() => collapseAll()">折叠</el-link>
  30. </span>
  31. </span>
  32. </el-tree>
  33. </el-card>
  34. </div>
  35. <div class="block-r">
  36. <el-row class="handle-box" style="margin-bottom: 10px">
  37. <el-col :span="3">
  38. 单元/楼栋号
  39. </el-col>
  40. <el-col :span="20">
  41. <el-input v-model="queryParam.buildNum" size="small" placeholder="请输入楼栋号" class="ch-input-size" @keyup.enter.native="handleSearch()" />
  42. <el-button size="small" class="ch-button-export" style="float: right;margin-top: 4px" @click="handleExcel()"><i class="el-icon-menu" />&nbsp;导出Excel</el-button>
  43. <el-button size="small" class="ch-button-export" style="float: right;margin-top: 4px" @click="batchImport()"><i class="el-icon-menu" />&nbsp;批量导入</el-button>
  44. <el-button size="small" class="ch-button-add" style="float: right; margin-right: 10px; margin-top: 4px" @click="handleAdd()"><i class="el-icon-menu" />&nbsp;新增楼栋</el-button>
  45. <el-button size="small" class="ch-button" style="float: right;margin-top: 4px" @click="handleSearch()"><i class="el-icon-menu" />&nbsp;查询</el-button>
  46. <el-button size="small" class="ch-button-warning" style="float: right;margin-top: 4px" @click="handleReset()"><i class="el-icon-menu" />&nbsp;重置</el-button>
  47. </el-col>
  48. </el-row>
  49. <el-row class="handle-box">
  50. <el-col :span="24">
  51. <!-- @current-change="handleRowSelectChange" -->
  52. <el-table ref="singleTable" v-loading="loading" :data="AllData" highlight-current-row>
  53. <el-table-column label="编号" type="index" width="60" />
  54. <el-table-column label="楼盘/小区名称" prop="groupName" />
  55. <el-table-column label="分期名称" prop="discName" />
  56. <el-table-column label="单元/楼栋号" prop="buildNum" />
  57. <el-table-column label="总面积(㎡)" prop="area" />
  58. <el-table-column label="套数" prop="numberInfo" />
  59. <el-table-column label="操作" header-align="center" width="160">
  60. <template scope="scope">
  61. <el-button size="mini" type="text" class="editButton" @click="handleEdit(scope.row)">编辑</el-button>
  62. <el-button size="mini" type="text" class="deleButton" @click="handleDelete(scope.row)">删除</el-button>
  63. </template>
  64. </el-table-column>
  65. </el-table>
  66. <div class="table-page">
  67. <el-pagination
  68. :current-page.sync="currentPage"
  69. :page-sizes="[10, 20, 50, 100]"
  70. :page-size="pageSize"
  71. background
  72. layout="total, sizes, prev, pager, next, jumper"
  73. :total="allpage"
  74. @size-change="handleSizeChange"
  75. @current-change="handleCurrentChange"
  76. />
  77. </div>
  78. </el-col>
  79. </el-row>
  80. </div>
  81. </div>
  82. <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="950px" top="50px" append-to-body @open="dlgOpen" @close="dlgClose">
  83. <el-form ref="buildForm" :model="buildForm" style="width: 100%;padding: 5px" :rules="commitRules">
  84. <el-row>
  85. <el-col style="padding-bottom: 10px">
  86. <span class="card_title">基本信息</span>
  87. <el-card shadow="always" style="padding-top: 10px">
  88. <el-row>
  89. <el-col :span="4" class="col-txt"><span>父级</span></el-col>
  90. <el-col :span="20" class="col-input">
  91. <el-form-item>
  92. <!-- @change="handleChange" -->
  93. <el-cascader
  94. ref="findids"
  95. v-model="buildForm.findids"
  96. class="full"
  97. :options="options"
  98. clearable
  99. @change="handleChange"
  100. />
  101. </el-form-item>
  102. </el-col>
  103. </el-row>
  104. <el-row>
  105. <el-col :span="4" class="col-txt"><span>*单元/楼栋号</span></el-col>
  106. <el-col :span="8" class="col-input">
  107. <el-form-item prop="buildNum">
  108. <el-input v-model="buildForm.buildNum" />
  109. </el-form-item>
  110. </el-col>
  111. <el-col :span="4" class="col-txt"><span>*施工号</span></el-col>
  112. <el-col :span="8" class="col-input">
  113. <el-form-item prop="constructionNum">
  114. <el-input v-model="buildForm.constructionNum" />
  115. </el-form-item>
  116. </el-col>
  117. </el-row>
  118. <el-row>
  119. <el-col :span="4" class="col-txt"><span>*总面积(㎡)</span></el-col>
  120. <el-col :span="8" class="col-input">
  121. <el-form-item prop="area">
  122. <el-input v-model="buildForm.area" />
  123. </el-form-item>
  124. </el-col>
  125. <el-col :span="4" class="col-txt"><span>*住宅面积(㎡)</span></el-col>
  126. <el-col :span="8" class="col-input">
  127. <el-form-item prop="residentialArea">
  128. <el-input v-model="buildForm.residentialArea" />
  129. </el-form-item>
  130. </el-col>
  131. </el-row>
  132. <el-row>
  133. <el-col :span="4" class="col-txt"><span>*非住宅面积(㎡)</span></el-col>
  134. <el-col :span="8" class="col-input">
  135. <el-form-item prop="unResidentialArea">
  136. <el-input v-model="buildForm.unResidentialArea" />
  137. </el-form-item>
  138. </el-col>
  139. <el-col :span="4" class="col-txt"><span>*占地面积</span></el-col>
  140. <el-col :span="8" class="col-input">
  141. <el-form-item prop="coverAnArea">
  142. <el-input v-model="buildForm.coverAnArea" />
  143. </el-form-item>
  144. </el-col>
  145. </el-row>
  146. <el-row>
  147. <el-col :span="4" class="col-txt"><span>*地下面积</span></el-col>
  148. <el-col :span="8" class="col-input">
  149. <el-form-item prop="undergroundArea">
  150. <el-input v-model="buildForm.undergroundArea" />
  151. </el-form-item>
  152. </el-col>
  153. <el-col :span="4" class="col-txt"><span>*房号</span></el-col>
  154. <el-col :span="8" class="col-input">
  155. <el-form-item prop="roomNum">
  156. <el-input v-model="buildForm.roomNum" />
  157. </el-form-item>
  158. </el-col>
  159. </el-row>
  160. <el-row>
  161. <el-col :span="4" class="col-txt"><span>*套数</span></el-col>
  162. <el-col :span="8" class="col-input">
  163. <el-form-item prop="numberInfo">
  164. <el-input v-model="buildForm.numberInfo" />
  165. </el-form-item>
  166. </el-col>
  167. <el-col :span="4" class="col-txt"><span>*总层数</span></el-col>
  168. <el-col :span="8" class="col-input">
  169. <el-form-item prop="floors">
  170. <el-input v-model="buildForm.floors" />
  171. </el-form-item>
  172. </el-col>
  173. </el-row>
  174. <el-row>
  175. <el-col :span="4" class="col-txt"><span>*地上层数</span></el-col>
  176. <el-col :span="8" class="col-input">
  177. <el-form-item prop="overgroundFloors">
  178. <el-input v-model="buildForm.overgroundFloors" />
  179. </el-form-item>
  180. </el-col>
  181. <el-col :span="4" class="col-txt"><span>*地下层数</span></el-col>
  182. <el-col :span="8" class="col-input">
  183. <el-form-item prop="undergroundFloors">
  184. <el-input v-model="buildForm.undergroundFloors" />
  185. </el-form-item>
  186. </el-col>
  187. </el-row>
  188. <el-row>
  189. <el-col :span="4" class="col-txt"><span>*结构</span></el-col>
  190. <el-col :span="8" class="col-input">
  191. <el-form-item prop="structure">
  192. <el-select v-model="buildForm.structure" placeholder="" filterable :disabled="isView">
  193. <el-option
  194. v-for="item in dc_data.BUILD_STRUCTURE"
  195. :key="item.value"
  196. :label="item.label"
  197. :value="item.value"
  198. />
  199. </el-select>
  200. </el-form-item>
  201. </el-col>
  202. <el-col :span="4" class="col-txt"><span>*行政区划</span></el-col>
  203. <el-col :span="8" class="col-input">
  204. <el-form-item prop="regionalismCode">
  205. <el-input v-model="buildForm.regionalismCode" />
  206. </el-form-item>
  207. </el-col>
  208. </el-row>
  209. <el-row>
  210. <el-col :span="4" class="col-txt"><span>*地号</span></el-col>
  211. <el-col :span="8" class="col-input">
  212. <el-form-item prop="landCode">
  213. <el-input v-model="buildForm.landCode" />
  214. </el-form-item>
  215. </el-col>
  216. </el-row>
  217. <el-row>
  218. <el-col :span="4" class="col-txt"><span>备注</span></el-col>
  219. <el-col :span="20" class="col-input">
  220. <el-form-item>
  221. <el-input v-model="buildForm.remark" type="textarea" :autosize="{ minRows: 2, maxRows: 100}" placeholder="请输入内容" />
  222. </el-form-item>
  223. </el-col>
  224. </el-row>
  225. <el-row>
  226. <el-col :span="7" class="col-txt"><span>标准价格参考层及差价系数备注说明</span></el-col>
  227. <el-col :span="17" class="col-input">
  228. <el-form-item>
  229. <el-input v-model="buildForm.priceRemark" type="textarea" :autosize="{ minRows: 2, maxRows: 100}" placeholder="请输入内容" />
  230. </el-form-item>
  231. </el-col>
  232. </el-row>
  233. </el-card>
  234. </el-col>
  235. </el-row>
  236. </el-form>
  237. <div slot="footer">
  238. <el-button @click="dialogVisible = false">取 消</el-button>
  239. <el-button type="primary" @click="confirmSubmit()">确 定</el-button>
  240. </div>
  241. </el-dialog>
  242. <el-dialog
  243. :visible.sync="dialogViewVisible"
  244. :close-on-click-modal="false"
  245. :close-on-press-escape="false"
  246. width="950px"
  247. top="50px"
  248. append-to-body
  249. >
  250. <build-view ref="buildView" @cancel="cancel" />
  251. </el-dialog>
  252. <!-- 批量导入 -->
  253. <upload-cost
  254. v-if="importVisible"
  255. :dialog-visible="importVisible"
  256. :import-type="importType"
  257. :upload-title="uploadTitle"
  258. :import-title="importTitle"
  259. @cancelUpload="cancelImport"
  260. />
  261. </div>
  262. </template>
  263. <script>
  264. import Base from '@/views/base/base'
  265. import BaseData from '@/views/base/baseData'
  266. import BaseDept from '@/views/base/baseDept'
  267. import constant from '../../../static/utils/constant'
  268. import BuildView from './buildView'
  269. import uploadCost from '@/views/parkAssets/component/uploadCost.vue'
  270. // import textEdit from '../../textEdit/index'
  271. export default {
  272. name: 'User',
  273. components: { uploadCost, BuildView },
  274. mixins: [Base, BaseData, BaseDept],
  275. data() {
  276. return {
  277. dc_key: ['BUILD_STRUCTURE'],
  278. // 查询参数
  279. queryParam: {
  280. ldmc: ''
  281. },
  282. buildForm: {
  283. },
  284. DeptTree: [],
  285. options: [],
  286. // 字典项
  287. dc_gender: [],
  288. dc_map: {},
  289. AllData: [],
  290. loading: false,
  291. dialogVisible: false,
  292. dialogTitle: '新增用户',
  293. isAdd: true,
  294. LeaderData: [],
  295. commitRules: {
  296. buildNum: [{ required: true, trigger: 'blur', message: '请输入单元/楼栋号' }],
  297. constructionNum: [{ required: true, trigger: 'blur', message: '请输入施工号' }],
  298. area: [{ required: true, trigger: 'blur', message: '请输入总面积' }],
  299. residentialArea: [{ required: true, trigger: 'blur', message: '请输入住宅面积' }],
  300. unResidentialArea: [{ required: true, trigger: 'blur', message: '请输入非面积' }],
  301. coverAnArea: [{ required: true, trigger: 'blur', message: '请输入占地面积' }],
  302. undergroundArea: [{ required: true, trigger: 'blur', message: '请输入地下面积' }],
  303. roomNum: [{ required: true, trigger: 'blur', message: '请输入房号' }],
  304. numberInfo: [{ required: true, trigger: 'blur', message: '请输入套数' }],
  305. floors: [{ required: true, trigger: 'blur', message: '请输入总层数' }],
  306. overgroundFloors: [{ required: true, trigger: 'blur', message: '请输入地上层数' }],
  307. undergroundFloors: [{ required: true, trigger: 'blur', message: '请输入地下层数' }],
  308. structure: [{ required: true, trigger: 'blur', message: '请输入结构' }],
  309. regionalismCode: [{ required: true, trigger: 'blur', message: '请输入行政区划' }],
  310. landCode: [{ required: true, trigger: 'blur', message: '请输入地号' }]
  311. },
  312. nodeId: '',
  313. level: '',
  314. dialogViewVisible: false,
  315. // 批量导入
  316. importVisible: false,
  317. importType: '',
  318. importTitle: '',
  319. uploadTitle: [],
  320. isView: false
  321. }
  322. },
  323. mounted() {
  324. this.initDict(this.dc_key).then((res) => {
  325. this.getList()
  326. })
  327. this.getTreeData()
  328. this.getTreeSelectData()
  329. },
  330. methods: {
  331. handleChange(value) {
  332. },
  333. handleSearch: function() {
  334. this.getList()
  335. },
  336. getTreeData: function() {
  337. this.baseInfoRequest('getTreeData2', {}).then((res) => {
  338. this.DeptTree = res.data.data
  339. }).catch(() => {
  340. })
  341. },
  342. getTreeSelectData: function() {
  343. this.baseInfoRequest('getTreeData3', {}).then((res) => {
  344. this.options = res.data.data
  345. }).catch(() => {
  346. })
  347. },
  348. handleReset: function() {
  349. this.queryParam = {}
  350. this.getList()
  351. },
  352. getList: function() {
  353. const _this = this
  354. _this.loading = true
  355. _this.AllData = []
  356. this.queryParam.pageNum = this.currentPage
  357. this.queryParam.pageSize = this.pageSize
  358. this.baseRequest('list', this.queryParam).then((res) => {
  359. _this.AllData = res.data.rows
  360. _this.allpage = res.data.total
  361. _this.loading = false
  362. }).catch(() => {
  363. })
  364. },
  365. handleAdd: function() {
  366. this.dialogVisible = true
  367. this.dialogTitle = '新增楼栋'
  368. },
  369. // 导入
  370. batchImport() {
  371. this.importVisible = true
  372. this.importType = 'buildInsert'
  373. this.importTitle = '楼栋批量导入'
  374. },
  375. // 导出
  376. handleExcel: function() {
  377. const _this = this
  378. this.OutData = []
  379. const title = ['楼盘/小区名称', '分期名称', '单元号/楼栋号', '总面积(㎡)', '套数']
  380. this.OutData.push(title)
  381. const temp = []
  382. this.baseRequest('excelListAll', _this.queryParam).then(res => {
  383. const data = res.data
  384. data.forEach(function(item) {
  385. const json = _this.getItemJson(item)
  386. temp.push(json)
  387. })
  388. temp.forEach(function(item) {
  389. const jsonArray = []
  390. jsonArray.push(item.groupName)
  391. jsonArray.push(item.discName)
  392. jsonArray.push(item.buildNum)
  393. jsonArray.push(item.area)
  394. jsonArray.push(item.numberInfo)
  395. _this.OutData.push(jsonArray)
  396. })
  397. const OutSize = [{ wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }]
  398. const fileName = '楼栋管理导出 ' + new Date().Format('yyyyMMddhhmm')
  399. _this.$outputXlsxFile(this.OutData, OutSize, fileName)
  400. })
  401. },
  402. handleEdit: function(val) {
  403. this.buildForm = val
  404. this.buildForm.findids = []
  405. if (this.buildForm.groupId != null &&
  406. this.buildForm.groupId !== '') {
  407. this.buildForm.findids[0] = this.buildForm.groupId
  408. if (this.buildForm.discId != null &&
  409. this.buildForm.discId !== '') {
  410. this.buildForm.findids[1] = this.buildForm.discId
  411. }
  412. }
  413. this.dialogVisible = true
  414. this.dialogTitle = '编辑楼栋'
  415. },
  416. confirmSubmit: function() {
  417. this.$refs.buildForm.validate(valid => {
  418. if (valid) {
  419. const _this = this
  420. const extraData = {}
  421. const postData = Object.assign({}, _this.buildForm, extraData)
  422. // 父级
  423. const ids = this.buildForm.findids
  424. const arr = this.$refs['findids'].getCheckedNodes()[0].pathLabels
  425. if (ids != null && ids != [] && ids != '') {
  426. postData.groupId = ids[0]
  427. postData.discId = ids[1]
  428. }
  429. if (arr != null && arr != [] && arr != '') {
  430. postData.groupName = arr[0]
  431. postData.lpmc = arr[1]
  432. }
  433. let urlAdd = 'add'
  434. if (undefined != this.buildForm.id && this.buildForm.id != null && this.buildForm.id != '') {
  435. urlAdd = 'edit'
  436. }
  437. this.baseRequest(urlAdd, postData).then((res) => {
  438. if (res.data.code == 200) {
  439. // this.buildForm = {}
  440. this.dialogVisible = false
  441. // this.getList()
  442. this.getTreeData()
  443. this.$message({
  444. message: '提交成功',
  445. type: 'success'
  446. })
  447. }
  448. }).catch((err) => {
  449. this.$message({
  450. message: err,
  451. type: 'error'
  452. })
  453. })
  454. }
  455. })
  456. },
  457. getCheckedNodes(data, node, item) {
  458. const _this = this
  459. console.log('节点====', node)
  460. console.log('节点id====', node.data.id)
  461. console.log('层级====', node.level)
  462. _this.queryParam.nodeId = node.data.id
  463. _this.queryParam.level = node.level
  464. _this.getList()
  465. },
  466. getItemJson: function(item) {
  467. return item
  468. },
  469. dlgOpen: function() {
  470. },
  471. dlgClose: function() {
  472. const _this = this
  473. _this.buildForm = {}
  474. _this.getList()
  475. },
  476. cancel() {
  477. this.dialogViewVisible = false
  478. },
  479. test(val) {
  480. // this.$set(this.buildForm, 'introduction', val)
  481. },
  482. cancelImport(refresh) {
  483. this.importVisible = false
  484. this.importType = ''
  485. this.getTreeData()
  486. this.getList()
  487. },
  488. handleDelete(val) {
  489. this.$confirm('确认删除该数据,删除后将无法恢复,确认删除吗?', '提示', {
  490. confirmButtonText: '确定',
  491. cancelButtonText: '取消',
  492. type: 'warning'
  493. }).then(() => {
  494. this.baseRequest('delete', { id: val.id }).then(res => {
  495. if (res.data.code == 200) {
  496. this.getList()
  497. this.getTreeData()
  498. this.$message({
  499. type: 'success',
  500. message: '删除成功!'
  501. })
  502. } else {
  503. this.$message({
  504. type: 'error',
  505. message: res.data.msg
  506. })
  507. }
  508. }).catch((err) => {
  509. this.$message({
  510. type: 'error',
  511. message: err
  512. })
  513. })
  514. }).catch(() => {
  515. this.$message({
  516. type: 'info',
  517. message: '已取消删除'
  518. })
  519. })
  520. },
  521. // 请求封装,继承类中调用,必须存在
  522. baseRequest: function(opUrl, postData) {
  523. return this.$channel.baseRequest('MnpBuildingController', opUrl, postData, 'User')
  524. },
  525. baseInfoRequest: function(opUrl, postData) {
  526. return this.$channel.baseRequest('ParkInfoController', opUrl, postData, 'User')
  527. },
  528. postRequest: function(opUrl, postData) {
  529. return this.$channel.baseRequest('PostController', opUrl, postData, 'Post')
  530. }
  531. }
  532. }
  533. </script>
  534. <style scoped>
  535. .el-cascader-menu{
  536. max-width:250px;
  537. }
  538. .custom-tree-node {
  539. flex: 1;
  540. display: flex;
  541. align-items: center;
  542. justify-content: space-between;
  543. font-size: 16px;
  544. padding-right: 8px;
  545. }
  546. .custom-tree-container{
  547. display: flex;
  548. }
  549. .custom-tree-container .block-l {
  550. /*flex-grow: 2 ;*/
  551. //float: left;
  552. width: 20%;
  553. padding: 0 8px 0 0;
  554. }
  555. .custom-tree-container .block-r {
  556. /*flex-grow: 10;*/
  557. //float: left;
  558. width: 80%;
  559. /*padding: 0 0 0 8px;*/
  560. }
  561. </style>
  562. <style scoped>
  563. /*.ch-input .el-input__inner {*/
  564. /*border-radius: 0px;*/
  565. /*border-color: #32323A;*/
  566. /*}*/
  567. /*.ch-input-size {*/
  568. /*width: 200px;*/
  569. /*margin-right: 10px;*/
  570. /*}*/
  571. /*.ch-button {*/
  572. /*border-radius: 0px;*/
  573. /*border-color: #32323A;*/
  574. /*background-color: #32323A;*/
  575. /*color: #fff;*/
  576. /*}*/
  577. .ch-input .el-input__inner {
  578. border-color: #32323A;
  579. }
  580. .ch-input-size {
  581. width: 150px;
  582. }
  583. .ch-button {
  584. border-color: #32323A;
  585. background-color: #32323A;
  586. color: #fff;
  587. }
  588. .ch-button-warning {
  589. margin-left: 10px;
  590. border-color: #E6A23C;
  591. background-color: #E6A23C;
  592. color: #fff;
  593. }
  594. .ch-button-export {
  595. margin-left: 10px;
  596. border-color: #98CC1F;
  597. background-color: #98CC1F;
  598. color: #fff;
  599. }
  600. /deep/ .el-card{
  601. max-height: 952px;
  602. overflow: hidden;
  603. overflow-y: scroll;
  604. }
  605. </style>