|
@@ -0,0 +1,518 @@
|
|
|
+<template>
|
|
|
+ <div class="formwrap">
|
|
|
+ <ag-grid-layout
|
|
|
+ :table-height="tableHeight"
|
|
|
+ theme="ag-theme-alpine"
|
|
|
+ :column-defs="columnDefs"
|
|
|
+ :row-data="tableData"
|
|
|
+ :locale-text="localeText"
|
|
|
+ :grid-options="gridOptions"
|
|
|
+ :default-col-def="defaultColDef"
|
|
|
+ :animate-rows="true"
|
|
|
+ :row-selection="rowSelection"
|
|
|
+ row-height="50"
|
|
|
+ @filterChanged="filterModifed"
|
|
|
+ @sortChanged="gridSortChange"
|
|
|
+ >
|
|
|
+ <!--工具栏-->
|
|
|
+ <div slot="toolbar" class="inner-toolbar">
|
|
|
+ <div class="toolbar-search">
|
|
|
+ <en-table-search :placeholder="this.$t('watch.deviceKeywords')" @search="handlerSearch" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-pagination
|
|
|
+ v-if="pageData"
|
|
|
+ slot="pagination"
|
|
|
+ :current-page="pageData.page_no"
|
|
|
+ :page-sizes="[10, 20, 50, 100]"
|
|
|
+ :page-size="pageData.page_size"
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ :total="pageData.data_total"
|
|
|
+ @size-change="handlePageSizeChange"
|
|
|
+ @current-change="handlePageCurrentChange"
|
|
|
+ />
|
|
|
+ </ag-grid-layout>
|
|
|
+ <!--编辑表单-->
|
|
|
+ <el-dialog v-if="formshow" :title="this.$t('action.edit')+(member_id===null?'':'('+member_name+')')" :visible.sync="formshow" width="70%">
|
|
|
+ <el-form label-width="120px" ref="addMemberForm">
|
|
|
+ <el-form-item :label="this.$t('watch.ethMac')">
|
|
|
+ {{ deviceInfo.eth_mac }}
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="this.$t('customerManage.named')">
|
|
|
+ <el-radio-group v-model="deviceInfo.member_id">
|
|
|
+ <el-radio v-for="(t, i) in users" :key="i" :label="t.member_id" :disabled="member_id === t.member_id && t.device_id !== null">
|
|
|
+ <i class="el-icon-user-solid" style="color: #b59abf;margin-top: 5px" />{{ t.named }}
|
|
|
+ </el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item style="margin-top:15px;">
|
|
|
+ <el-button type="success" @click="handlerFormSubmit('editform')">{{ this.$t('action.saveEdit') }}</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+<!-- 位置信息-->
|
|
|
+ <el-dialog :title="this.$t('watch.placeInfo')" :visible.sync="locationShow" width="70%">
|
|
|
+ <watch-location :device-id="deviceId" :is-show="locationShow"></watch-location>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import * as API_Device from '@/api/ncs_device'
|
|
|
+import { unixToDate } from '@/utils/Foundation'
|
|
|
+import { AG_GRID_LOCALE_CN } from '@/utils/AgGridVueLocaleCn'
|
|
|
+import ButtonCellRender from '@/components/AgGridCellRender/ButtonCellRender'
|
|
|
+import RadioFilter from '@/components/AgGridCustomFilter/RadioFilter'
|
|
|
+import watchLocation from '@/views/ncs-device/watch_location'
|
|
|
+import { getListByPartId } from '@/api/ncs_customer'
|
|
|
+const DeviceUrl = domain.DeviceUrl
|
|
|
+export default {
|
|
|
+ name: 'Index',
|
|
|
+ components: { ButtonCellRender, RadioFilter, watchLocation },
|
|
|
+ data: function() {
|
|
|
+ return {
|
|
|
+ /** 表格数据 */
|
|
|
+ tableData: [],
|
|
|
+ /** 表单数据 */
|
|
|
+ formmodel: {},
|
|
|
+ formshow: false, // 编辑表单显示开关
|
|
|
+ /** 表单校验 */
|
|
|
+ rules: {
|
|
|
+ name: [
|
|
|
+ { required: true, message: this.$t('watch.inputName'), trigger: 'blur' }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ pageData: [],
|
|
|
+ loading: false,
|
|
|
+ multipleSelection: [],
|
|
|
+ /** 列表参数 */
|
|
|
+ params: {
|
|
|
+ page_size: 100,
|
|
|
+ page_no: 1,
|
|
|
+ fixedCondition: ' part_id=' + this.$store.getters.partId + ' and device_type = 9',
|
|
|
+ sort: 'id',
|
|
|
+ dir: 'desc'
|
|
|
+ },
|
|
|
+ editflag: 0,
|
|
|
+ deviceInfo: {},
|
|
|
+ users: [],
|
|
|
+ columnDefs: null, // 新表格
|
|
|
+ defaultColDef: null,
|
|
|
+ gridOptions: null,
|
|
|
+ gridApi: null,
|
|
|
+ columnApi: null,
|
|
|
+ localeText: AG_GRID_LOCALE_CN,
|
|
|
+ rowSelection: null,
|
|
|
+ showViewer: false,
|
|
|
+ deviceStatusTransfer: [
|
|
|
+ { key: this.$t('deviceManage.statusTure'), value: 1, color: 'green' },
|
|
|
+ { key: this.$t('deviceManage.statusFalse'), value: 0, color: 'red' }
|
|
|
+ ],
|
|
|
+ clerks: [],
|
|
|
+ role_id: null,
|
|
|
+ role_name: '',
|
|
|
+ member_id: null,
|
|
|
+ member_name:'',
|
|
|
+ onlineDevice: [],
|
|
|
+ locationShow: false,
|
|
|
+ deviceId: null
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ tableHeight() {
|
|
|
+ return this.mainAreaHeight - 130
|
|
|
+ }
|
|
|
+ },
|
|
|
+ beforeMount() {
|
|
|
+ this.gridOptions = {
|
|
|
+ }
|
|
|
+ this.columnDefs = [
|
|
|
+ {
|
|
|
+ headerName: '#',
|
|
|
+ headerCheckboxSelection: true,
|
|
|
+ headerCheckboxSelectionFilteredOnly: true,
|
|
|
+ checkboxSelection: true,
|
|
|
+ sortable: false,
|
|
|
+ width: 80,
|
|
|
+ resizable: false,
|
|
|
+ valueGetter: this.hashValueGetter
|
|
|
+ },
|
|
|
+ { headerName: 'ID', field: 'id', sortable: true, filter: 'agNumberColumnFilter', minWidth: 100 },
|
|
|
+ { headerName: this.$t('deviceManage.deviceName'), field: 'name', sortable: true, filter: 'agTextColumnFilter', minWidth: 150 },
|
|
|
+ { headerName: this.$t('watch.deviceMember'), field: 'member_name', sortable: true, filter: 'agTextColumnFilter', minWidth: 220, valueFormatter: this.formatterName },
|
|
|
+ { headerName: this.$t('watch.ethMac'), field: 'eth_mac', sortable: true, filter: 'agTextColumnFilter', minWidth: 150 },
|
|
|
+ { headerName: this.$t('deviceManage.connect'), field: 'online_state', sortable: false, filter: 'agTextColumnFilter', minWidth: 120,
|
|
|
+ filterParams: {
|
|
|
+ textCustomComparator: (filter, value, filterText) => {
|
|
|
+ const filterTextLowerCase = filterText.toLowerCase()
|
|
|
+ const valueLowerCase = value.toString().toLowerCase()
|
|
|
+ switch (filter) {
|
|
|
+ case 'contains':
|
|
|
+ return valueLowerCase.indexOf(filterTextLowerCase) >= 0
|
|
|
+ case 'notContains':
|
|
|
+ return valueLowerCase.indexOf(filterTextLowerCase) === -1
|
|
|
+ case 'equals':
|
|
|
+ return valueLowerCase === filterTextLowerCase
|
|
|
+ case 'notEqual':
|
|
|
+ return valueLowerCase !== filterTextLowerCase
|
|
|
+ case 'startsWith':
|
|
|
+ return valueLowerCase.indexOf(filterTextLowerCase) === 0
|
|
|
+ case 'endsWith':
|
|
|
+ var index = valueLowerCase.lastIndexOf(filterTextLowerCase)
|
|
|
+ return index >= 0 && index === (valueLowerCase.length - filterTextLowerCase.length)
|
|
|
+ default:
|
|
|
+ // should never happen
|
|
|
+ console.warn('invalid filter type ' + filter)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ cellRenderer: this.onlineStateFormatter
|
|
|
+ },
|
|
|
+ { headerName: this.$t('deviceManage.ethIp'), field: 'eth_ip', sortable: true, filter: 'agTextColumnFilter', minWidth: 150 },
|
|
|
+ { headerName: this.$t('deviceManage.model'), field: 'model', sortable: true, filter: 'agTextColumnFilter', minWidth: 150 },
|
|
|
+ { headerName: this.$t('deviceManage.code'), field: 'code', sortable: true, filter: 'agTextColumnFilter', minWidth: 150 },
|
|
|
+ { headerName: this.$t('deviceManage.sipId'), field: 'sip_id', sortable: true, filter: 'agTextColumnFilter', minWidth: 150 },
|
|
|
+ { headerName: this.$t('deviceManage.updateTime'), field: 'update_time', sortable: true, filter: 'agDateColumnFilter', minWidth: 170, valueFormatter: this.formatterDate,
|
|
|
+ filterParams: {
|
|
|
+ comparator: (filterLocalDateAtMidnight, cellValue) => { // 所有数据都由服务器端过滤,此处只需返回0 即可
|
|
|
+ const celldate = unixToDate(cellValue, 'yyyy-MM-dd 00:00:00')
|
|
|
+ return (new Date(celldate).getTime() / 1000) - (filterLocalDateAtMidnight.getTime() / 1000)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headerName: this.$t('watch.binding'), field: 'shop_id',
|
|
|
+ cellRendererFramework: 'ButtonCellRender',
|
|
|
+ cellRendererParams: param => {
|
|
|
+ return {
|
|
|
+ onClick: this.huanban,
|
|
|
+ label: this.$t('watch.binding'),
|
|
|
+ buttonType: param.data['member_id'] === null ? 'primary' : 'success',
|
|
|
+ buttonSize: 'mini'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ filter: false,
|
|
|
+ pinned: 'right',
|
|
|
+ lockPinned: true,
|
|
|
+ minWidth: 100,
|
|
|
+ resizable: false,
|
|
|
+ sortable: false
|
|
|
+ }
|
|
|
+ ,
|
|
|
+ {
|
|
|
+ headerName: this.$t('watch.place'), field: 'shop_id',
|
|
|
+ cellRendererFramework: 'ButtonCellRender',
|
|
|
+ cellRendererParams: param => {
|
|
|
+ return {
|
|
|
+ onClick: this.getLocation,
|
|
|
+ label: this.$t('watch.place'),
|
|
|
+ buttonType: 'warning',
|
|
|
+ buttonSize: 'mini'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ filter: false,
|
|
|
+ pinned: 'right',
|
|
|
+ lockPinned: true,
|
|
|
+ minWidth: 100,
|
|
|
+ resizable: false,
|
|
|
+ sortable: false
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ this.defaultColDef = {
|
|
|
+ sortable: true,
|
|
|
+ resizable: true,
|
|
|
+ comparator: this.testComparator,
|
|
|
+ filterParams: {
|
|
|
+ debounceMs: 200,
|
|
|
+ newRowsAction: 'keep',
|
|
|
+ textCustomComparator: this.textCustomComparator,
|
|
|
+ comparator: this.testComparator
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.rowSelection = 'multiple'
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ window.onresize = this.windowResize()
|
|
|
+ this.gridApi = this.gridOptions.api
|
|
|
+ this.getList()
|
|
|
+ this.deviceOnlineWebSocket()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ windowResize() {
|
|
|
+ this.$set(this, 'mainAreaHeight', Number(document.documentElement.clientHeight) - 84)
|
|
|
+ },
|
|
|
+ deviceOnlineWebSocket: function() {
|
|
|
+ var stockbase = DeviceUrl.replace('http', 'ws')
|
|
|
+ this.websock1 = new WebSocket(stockbase + '/deviceonline/' + this.$store.getters.uuid)
|
|
|
+ this.websock1.onopen = this.deviceOnlineWebsocketonopen
|
|
|
+ this.websock1.onerror = this.deviceOnlineWebsocketonerror
|
|
|
+ this.websock1.onmessage = this.deviceOnlineWebsocketonmessage
|
|
|
+ this.websock1.onclose = this.deviceOnlineWebsocketclose
|
|
|
+ },
|
|
|
+ deviceOnlineWebsocketonopen: function() {
|
|
|
+ console.log(this.$t('deviceManage.webSocketSuccess'))
|
|
|
+ },
|
|
|
+ deviceOnlineWebsocketonerror: function(e) {
|
|
|
+ console.log(this.$t('deviceManage.webSocketError'))
|
|
|
+ },
|
|
|
+ deviceOnlineWebsocketonmessage: function(e) {
|
|
|
+ this.onlineDevice = JSON.parse(e.data)
|
|
|
+ if (this.tableData !== null) {
|
|
|
+ this.tableData.forEach(item => {
|
|
|
+ const mac = this.onlineDevice.filter(p => p.toLowerCase() === item.eth_mac.toLowerCase())[0]
|
|
|
+ item.online_state = (mac !== undefined && mac !== null) ? '在线' : '离线'
|
|
|
+ })
|
|
|
+ const tableData = [...this.tableData]
|
|
|
+ this.$set(this, 'tableData', tableData)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ deviceOnlineWebsocketclose: function(e) {
|
|
|
+ console.log('connection closed (' + e.code + ')')
|
|
|
+ },
|
|
|
+ /** 选择行变化时,记录选中的行数据 */
|
|
|
+ selectFun(val) {
|
|
|
+ this.multipleSelection = val
|
|
|
+ },
|
|
|
+ /** 分页大小发生改变 */
|
|
|
+ handlePageSizeChange(size) {
|
|
|
+ this.params.page_size = size
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ /** 分页页数发生改变 */
|
|
|
+ handlePageCurrentChange(page) {
|
|
|
+ this.params.page_no = page
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ /** 加载通知列表 */
|
|
|
+ getList() {
|
|
|
+ this.loading = true
|
|
|
+ this.gridApi.showLoadingOverlay()
|
|
|
+ this.gridApi.sizeColumnsToFit()
|
|
|
+ API_Device.getList(this.params).then(response => {
|
|
|
+ this.loading = false
|
|
|
+ response.data.forEach(item => {
|
|
|
+ if (this.onlineDevice.length > 0) {
|
|
|
+ const mac = this.onlineDevice.filter(p => p.toLowerCase() === item.eth_mac.toLowerCase())[0]
|
|
|
+ // console.log('在线设备1', mac)
|
|
|
+ if (mac !== undefined && mac !== null) {
|
|
|
+ item['online_state'] = this.$t('deviceManage.connectTrue')
|
|
|
+ } else {
|
|
|
+ item['online_state'] = this.$t('deviceManage.connectFalse')
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ item['online_state'] = this.$t('deviceManage.connectFalse')
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.tableData = response.data
|
|
|
+ this.pageData = {
|
|
|
+ page_no: response.page_no,
|
|
|
+ page_size: response.page_size,
|
|
|
+ data_total: response.data_total
|
|
|
+ }
|
|
|
+ this.$nextTick(() => {
|
|
|
+ const node = this.gridApi.getDisplayedRowAtIndex(0)
|
|
|
+ if (node !== null && node !== undefined) {
|
|
|
+ node.setSelected(true)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }).catch(() => {
|
|
|
+ this.loading = false
|
|
|
+ })
|
|
|
+ },
|
|
|
+ /** 新增 提交表单 */
|
|
|
+ handlerFormSubmit(formName) {
|
|
|
+ if (this.deviceInfo.member_id === null || this.deviceInfo.member_id === '') {
|
|
|
+ this.$message.info(this.$t('watch.choiceUser'))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (this.deviceInfo.member_id === this.member_id) {
|
|
|
+ this.$message.info(this.$t('watch.doNothing'))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ const params = this.MixinClone(this.deviceInfo)
|
|
|
+ const sendData = {
|
|
|
+ member_id: params.member_id,
|
|
|
+ device_type: params.device_type,
|
|
|
+ status: 1
|
|
|
+ }
|
|
|
+ this.formshow = false
|
|
|
+ const _this = this
|
|
|
+ API_Device.update(params.id, sendData).then(res => {
|
|
|
+ _this.$message.success(_this.$t('action.editSuccess'))
|
|
|
+ _this.member_id = _this.deviceInfo.member_id
|
|
|
+ _this.getList()
|
|
|
+ })
|
|
|
+ },
|
|
|
+ /** 处理搜索 */
|
|
|
+ handlerSearch(keywords) {
|
|
|
+ this.params.query = keywords
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ /** 处理排序 */
|
|
|
+ tableSort(column) {
|
|
|
+ if (column.order !== null) {
|
|
|
+ this.params.sort = column.prop
|
|
|
+ this.params.dir = column.order === 'ascending' ? 'asc' : 'desc'
|
|
|
+ } else {
|
|
|
+ this.params.sort = null
|
|
|
+ this.params.dir = null
|
|
|
+ }
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ formatterDate(params) {
|
|
|
+ return unixToDate(params.value)
|
|
|
+ },
|
|
|
+ formatterName(params) {
|
|
|
+ if (params.value && params.data.role_name) {
|
|
|
+ return params.value + ' ' + params.data.role_name
|
|
|
+ } else {
|
|
|
+ if (params.value) {
|
|
|
+ return params.value
|
|
|
+ } else if (params.data.role_name) {
|
|
|
+ return this.$t('watch.binding') + params.data.role_name
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ filterModifed(param) {
|
|
|
+ const model = param.api.getFilterModel()
|
|
|
+ // 连接状态不经过服务器过滤
|
|
|
+ delete model.online_state
|
|
|
+ this.params.filter = JSON.stringify(model)
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ gridSortChange(param) {
|
|
|
+ const columnState = param.columnApi.getColumnState()
|
|
|
+ // 排序状态
|
|
|
+ const sortState = columnState.filter(function(s) {
|
|
|
+ return s.sort != null
|
|
|
+ }).map(function(s) {
|
|
|
+ return {
|
|
|
+ colId: s.colId,
|
|
|
+ sort: s.sort,
|
|
|
+ sortIndex: s.sortIndex
|
|
|
+ }
|
|
|
+ }).sort(function(a, b) {
|
|
|
+ return a.sortIndex - b.sortIndex
|
|
|
+ })
|
|
|
+ if (sortState.length > 0) {
|
|
|
+ if (sortState.length === 1) {
|
|
|
+ this.params.sort = sortState[0].colId
|
|
|
+ this.params.dir = sortState[0].sort
|
|
|
+ } else {
|
|
|
+ let sortstring = ''
|
|
|
+ sortState.forEach(function(item) {
|
|
|
+ sortstring += item.colId + ' ' + item.sort + ','
|
|
|
+ })
|
|
|
+ this.params.sort = sortstring.substring(0, sortstring.length - 1)
|
|
|
+ this.params.dir = ' '
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ delete this.params.sort
|
|
|
+ delete this.params.dir
|
|
|
+ }
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ formatterSatus(param) {
|
|
|
+ if (param.value === 1) {
|
|
|
+ return '<span style="color:green">' + this.$t('deviceManage.statusTure') + '</span>'
|
|
|
+ } else {
|
|
|
+ return '<span style="color:red">' + this.$t('deviceManage.statusFalse') + '</span>'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getEmployees() {
|
|
|
+ const _this = this
|
|
|
+ _this.users = []
|
|
|
+ getListByPartId(this.$store.getters.partId).then(res =>{
|
|
|
+ _this.users = res
|
|
|
+ })
|
|
|
+ // clerk_API.listByPartRoleId({ partId: this.$store.getters.partId }).then(res => {
|
|
|
+ // _this.clerks = res
|
|
|
+ // console.log('res',res)
|
|
|
+ // const groupBy = (arr, func) =>
|
|
|
+ // arr.map(typeof func === 'function' ? func : val => val[func]).reduce((acc, val, i) => {
|
|
|
+ // acc[val] = (acc[val] || []).concat(arr[i])
|
|
|
+ // return acc
|
|
|
+ // }, {})
|
|
|
+ // const groupData = groupBy(res, item => item.role_name)
|
|
|
+ // if (Object.entries(groupData).length > 0) {
|
|
|
+ // if (_this.deviceInfo.member_id) {
|
|
|
+ // res.forEach(item=>{
|
|
|
+ // if(item.member_id===_this.deviceInfo.member_id){
|
|
|
+ // _this.member_name = item.clerk_name
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ // Object.entries(groupData).forEach(item => {
|
|
|
+ //
|
|
|
+ // if (item[0] === _this.role_name) {
|
|
|
+ // _this.users.push(item)
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ // } else {
|
|
|
+ // _this.users = Object.entries(groupData)
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ },
|
|
|
+ huanban(row) {
|
|
|
+ this.formshow = true
|
|
|
+ this.deviceInfo = Object.assign({}, row)
|
|
|
+ this.role_id = this.deviceInfo.role_id
|
|
|
+ this.member_id = this.deviceInfo.member_id
|
|
|
+ this.member_name = this.deviceInfo.member_name
|
|
|
+ this.role_name = this.deviceInfo.role_name
|
|
|
+ this.getEmployees()
|
|
|
+ },
|
|
|
+ fanhui() {
|
|
|
+ this.formshow = false
|
|
|
+ },
|
|
|
+ /** 设备连接状态格式化 **/
|
|
|
+ onlineStateFormatter(params) {
|
|
|
+ if (params.value === '在线') {
|
|
|
+ return '<span style="color:green;">' + this.$t('deviceManage.connectTrue') + '</span>'
|
|
|
+ } else {
|
|
|
+ return '<span style="color:gray;">' + this.$t('deviceManage.connectFalse') + '</span>'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getLocation(row) {
|
|
|
+ this.deviceId = row.id
|
|
|
+ this.locationShow = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style type="text/scss" scoped>
|
|
|
+ .tablewen{
|
|
|
+ width:100%;
|
|
|
+ border-collapse:collapse;
|
|
|
+ border: 1px solid #a5b6c8;
|
|
|
+ margin-bottom: 30px;
|
|
|
+ line-height: 40px;
|
|
|
+ }
|
|
|
+ .tablewen td{
|
|
|
+ font-size: 14px;
|
|
|
+ -webkit-margin-before: 0.83em;
|
|
|
+ -webkit-margin-after: 0.83em;
|
|
|
+ -webkit-margin-start: 0px;
|
|
|
+ -webkit-margin-end: 0px;
|
|
|
+ font-weight: bold;
|
|
|
+ }
|
|
|
+ .tablewen td span{
|
|
|
+ font-size: 0.8em;
|
|
|
+ -webkit-margin-before: 0.83em;
|
|
|
+ -webkit-margin-after: 0.83em;
|
|
|
+ -webkit-margin-start: 0px;
|
|
|
+ -webkit-margin-end: 0px;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #8c939d;
|
|
|
+ margin-left: 5px;
|
|
|
+ }
|
|
|
+ .tablewen .td1{
|
|
|
+ width:15%;
|
|
|
+ }
|
|
|
+ .tablewen .td2{
|
|
|
+ width:20%;
|
|
|
+ }
|
|
|
+</style>
|