Merge pull request 'projects/qhd-line-zjl' (#436) from projects/qhd-line-zjl into projects/qhd-line-test
Reviewed-on: #436
This commit is contained in:
commit
dd85c50077
3
.env.dev
3
.env.dev
@ -12,8 +12,7 @@ ENV = 'development'
|
|||||||
VUE_APP_TITLE = 智能监控分析系统
|
VUE_APP_TITLE = 智能监控分析系统
|
||||||
|
|
||||||
# 芋道管理系统/开发环境
|
# 芋道管理系统/开发环境
|
||||||
# VUE_APP_BASE_API = 'http://192.168.8.22:48080'
|
VUE_APP_BASE_API = 'http://172.16.32.79:48080'
|
||||||
VUE_APP_BASE_API = 'http://172.16.32.21:48080'
|
|
||||||
|
|
||||||
# 路由懒加载
|
# 路由懒加载
|
||||||
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 91 KiB |
@ -75,120 +75,120 @@ export default {
|
|||||||
dotR:require('../../../../assets/images/dataBoard/dotR.png'),
|
dotR:require('../../../../assets/images/dataBoard/dotR.png'),
|
||||||
dotG:require('../../../../assets/images/dataBoard/dotG.png'),
|
dotG:require('../../../../assets/images/dataBoard/dotG.png'),
|
||||||
eqList:[
|
eqList:[
|
||||||
{name:'磨边机1',id:'1',w:70,h:18,l:830,t:160},
|
{name:'A1-磨边机-1',id:100301,w:70,h:18,l:830,t:160},
|
||||||
{name:'磨边机2',id:'2',w:70,h:18,l:830,t:183},
|
{name:'A1-磨边机-2',id:100302,w:70,h:18,l:830,t:183},
|
||||||
{name:'磨边机3',id:'3',w:70,h:18,l:832,t:206},
|
{name:'A1-磨边机-3',id:100303,w:70,h:18,l:832,t:206},
|
||||||
{name:'清洗机1',id:'4',w:30,h:15,l:798,t:160},
|
{name:'A1-磨边后清洗机-1',id:100401,w:30,h:15,l:798,t:160},
|
||||||
{name:'清洗机2',id:'5',w:30,h:15,l:798,t:183},
|
{name:'A1-磨边后清洗机-2',id:100402,w:30,h:15,l:798,t:183},
|
||||||
{name:'清洗机3',id:'6',w:30,h:15,l:800,t:206},
|
{name:'A1-磨边后清洗机-3',id:100403,w:30,h:15,l:800,t:206},
|
||||||
{name:'打孔机1',id:'7',w:13,h:12,l:730,t:163},
|
{name:'A1-打孔机-1',id:100501,w:13,h:12,l:730,t:163},
|
||||||
{name:'打孔机2',id:'8',w:13,h:12,l:730,t:187},
|
{name:'A1-打孔机-2',id:100502,w:13,h:12,l:730,t:187},
|
||||||
{name:'打孔机3',id:'9',w:13,h:12,l:730,t:210},
|
{name:'A1-打孔机-3',id:100503,w:13,h:12,l:730,t:210},
|
||||||
{name:'清洗机1',id:'10',w:32,h:15,l:665,t:160},
|
{name:'A1-打孔后清洗机-1',id:100601,w:32,h:15,l:665,t:160},
|
||||||
{name:'清洗机2',id:'11',w:32,h:15,l:665,t:183},
|
{name:'A1-打孔后清洗机-2',id:100602,w:32,h:15,l:665,t:183},
|
||||||
{name:'清洗机3',id:'12',w:32,h:15,l:665,t:206},
|
{name:'A1-打孔后清洗机-3',id:100603,w:32,h:15,l:665,t:206},
|
||||||
{name:'丝印机1',id:'13',w:30,h:12,l:605,t:163},
|
{name:'A1-丝印机-1',id:100701,w:30,h:12,l:605,t:163},
|
||||||
{name:'丝印机2',id:'14',w:30,h:12,l:605,t:187},
|
{name:'A1-丝印机-2',id:100702,w:30,h:12,l:605,t:187},
|
||||||
{name:'丝印机3',id:'15',w:30,h:12,l:605,t:210},
|
{name:'A1-丝印机-3',id:100703,w:30,h:12,l:605,t:210},
|
||||||
{name:'固化炉1',id:'16',w:37,h:12,l:558,t:163},
|
{name:'A1-丝印后固化机-1',id:101301,w:37,h:12,l:558,t:163},
|
||||||
{name:'固化炉2',id:'17',w:37,h:12,l:558,t:187},
|
{name:'A1-丝印后固化机-2',id:101302,w:37,h:12,l:558,t:187},
|
||||||
{name:'固化炉3',id:'18',w:37,h:12,l:558,t:210},
|
{name:'A1-丝印后固化机-3',id:101303,w:37,h:12,l:558,t:210},
|
||||||
{name:'钢化炉',id:'19',w:75,h:15,l:382,t:209},
|
{name:'A1-钢化炉',id:101401,w:75,h:15,l:382,t:209},
|
||||||
{name:'清洗机1',id:'20',w:30,h:15,l:228,t:173},
|
{name:'A1-包装清洗机-1',id:101501,w:30,h:15,l:228,t:173},
|
||||||
{name:'清洗机2',id:'21',w:30,h:15,l:228,t:206},
|
{name:'A1-包装清洗机-2',id:101502,w:30,h:15,l:228,t:206},
|
||||||
{name:'铺纸机1',id:'22',w:18,h:15,l:188,t:175},
|
{name:'A1-铺纸机-1',id:101601,w:18,h:15,l:188,t:175},
|
||||||
{name:'铺纸机2',id:'23',w:18,h:15,l:188,t:206},
|
{name:'A1-铺纸机-2',id:101602,w:18,h:15,l:188,t:206},
|
||||||
|
|
||||||
{name:'磨边机1',id:'24',w:70,h:18,l:832,t:233},
|
{name:'A2-磨边机-1',id:200301,w:70,h:18,l:832,t:233},
|
||||||
{name:'磨边机2',id:'25',w:70,h:18,l:833,t:257},
|
{name:'A2-磨边机-2',id:200302,w:70,h:18,l:833,t:257},
|
||||||
{name:'磨边机3',id:'26',w:70,h:18,l:834,t:281},
|
{name:'A2-磨边机-3',id:200303,w:70,h:18,l:834,t:281},
|
||||||
{name:'清洗机1',id:'27',w:30,h:15,l:800,t:233},
|
{name:'A2-磨边后清洗机-1',id:200401,w:30,h:15,l:800,t:233},
|
||||||
{name:'清洗机2',id:'28',w:30,h:15,l:801,t:257},
|
{name:'A2-磨边后清洗机-2',id:200402,w:30,h:15,l:801,t:257},
|
||||||
{name:'清洗机3',id:'29',w:30,h:15,l:802,t:281},
|
{name:'A2-磨边后清洗机-3',id:200403,w:30,h:15,l:802,t:281},
|
||||||
{name:'打孔机1',id:'30',w:13,h:12,l:731,t:240},
|
{name:'A2-打孔机-1',id:200501,w:13,h:12,l:731,t:240},
|
||||||
{name:'打孔机2',id:'31',w:13,h:12,l:731,t:262},
|
{name:'A2-打孔机-2',id:200502,w:13,h:12,l:731,t:262},
|
||||||
{name:'打孔机3',id:'32',w:13,h:12,l:731,t:285},
|
{name:'A2-打孔机-3',id:200503,w:13,h:12,l:731,t:285},
|
||||||
{name:'清洗机1',id:'33',w:32,h:15,l:666,t:234},
|
{name:'A2-打孔后清洗机-1',id:200601,w:32,h:15,l:666,t:234},
|
||||||
{name:'清洗机2',id:'34',w:32,h:15,l:666,t:258},
|
{name:'A2-打孔后清洗机-2',id:200602,w:32,h:15,l:666,t:258},
|
||||||
{name:'清洗机3',id:'35',w:32,h:15,l:666,t:282},
|
{name:'A2-打孔后清洗机-3',id:200603,w:32,h:15,l:666,t:282},
|
||||||
{name:'丝印机1',id:'36',w:30,h:12,l:605,t:238},
|
{name:'A2-丝印机-1',id:200701,w:30,h:12,l:605,t:238},
|
||||||
{name:'丝印机2',id:'37',w:30,h:12,l:605,t:262},
|
{name:'A2-丝印机-2',id:200702,w:30,h:12,l:605,t:262},
|
||||||
{name:'丝印机3',id:'38',w:30,h:12,l:605,t:286},
|
{name:'A2-丝印机-3',id:200703,w:30,h:12,l:605,t:286},
|
||||||
{name:'固化炉1',id:'39',w:37,h:12,l:558,t:238},
|
{name:'A2-丝印后固化机-1',id:201301,w:37,h:12,l:558,t:238},
|
||||||
{name:'固化炉2',id:'40',w:37,h:12,l:558,t:262},
|
{name:'A2-丝印后固化机-2',id:201302,w:37,h:12,l:558,t:262},
|
||||||
{name:'固化炉3',id:'41',w:37,h:12,l:558,t:286},
|
{name:'A2-丝印后固化机-3',id:201303,w:37,h:12,l:558,t:286},
|
||||||
{name:'钢化炉',id:'42',w:75,h:15,l:382,t:238},
|
{name:'A2-钢化炉',id:201401,w:75,h:15,l:382,t:238},
|
||||||
{name:'清洗机1',id:'43',w:30,h:15,l:228,t:234},
|
{name:'A2-包装清洗机-1',id:201501,w:30,h:15,l:228,t:234},
|
||||||
{name:'清洗机2',id:'44',w:30,h:15,l:228,t:267},
|
{name:'A2-包装清洗机-2',id:201502,w:30,h:15,l:228,t:267},
|
||||||
{name:'铺纸机1',id:'45',w:18,h:15,l:187,t:234},
|
{name:'A2-铺纸机-1',id:201601,w:18,h:15,l:187,t:234},
|
||||||
{name:'铺纸机2',id:'46',w:18,h:15,l:186,t:267},
|
{name:'A2-铺纸机-2',id:201602,w:18,h:15,l:186,t:267},
|
||||||
|
|
||||||
{name:'磨边机1',id:'47',w:70,h:18,l:834,t:318},
|
{name:'A3-磨边机-1',id:300301,w:70,h:18,l:834,t:318},
|
||||||
{name:'磨边机2',id:'48',w:70,h:18,l:834,t:342},
|
{name:'A3-磨边机-2',id:300302,w:70,h:18,l:834,t:342},
|
||||||
{name:'清洗机1',id:'49',w:30,h:15,l:802,t:319},
|
{name:'A3-磨边后清洗机-1',id:300401,w:30,h:15,l:802,t:319},
|
||||||
{name:'清洗机2',id:'50',w:30,h:15,l:802,t:342},
|
{name:'A3-磨边后清洗机-2',id:300402,w:30,h:15,l:802,t:342},
|
||||||
{name:'打孔机1',id:'51',w:13,h:12,l:731,t:324},
|
{name:'A3-打孔机-1',id:300501,w:13,h:12,l:731,t:324},
|
||||||
{name:'打孔机2',id:'52',w:13,h:12,l:731,t:348},
|
{name:'A3-打孔机-2',id:300502,w:13,h:12,l:731,t:348},
|
||||||
{name:'清洗机1',id:'53',w:32,h:15,l:666,t:320},
|
{name:'A3-打孔后清洗机-1',id:300601,w:32,h:15,l:666,t:320},
|
||||||
{name:'清洗机2',id:'54',w:32,h:15,l:666,t:342},
|
{name:'A3-打孔后清洗机-2',id:300602,w:32,h:15,l:666,t:342},
|
||||||
{name:'丝印机1',id:'55',w:30,h:12,l:605,t:324},
|
{name:'A3-丝印机-1',id:300701,w:30,h:12,l:605,t:324},
|
||||||
{name:'丝印机2',id:'56',w:30,h:12,l:605,t:348},
|
{name:'A3-丝印机-2',id:300702,w:30,h:12,l:605,t:348},
|
||||||
{name:'镀膜机1',id:'57',w:20,h:15,l:553,t:322},
|
{name:'A3-一次镀膜机-1',id:300801,w:20,h:15,l:553,t:322},
|
||||||
{name:'镀膜机2',id:'58',w:20,h:15,l:553,t:346},
|
{name:'A3-一次镀膜机-2',id:300802,w:20,h:15,l:553,t:346},
|
||||||
{name:'固化炉1',id:'59',w:37,h:12,l:506,t:324},
|
{name:'A3-丝印后固化机-1',id:301301,w:37,h:12,l:506,t:324},
|
||||||
{name:'固化炉2',id:'60',w:37,h:12,l:506,t:347},
|
{name:'A3-丝印后固化机-2',id:301302,w:37,h:12,l:506,t:347},
|
||||||
{name:'钢化炉',id:'61',w:75,h:15,l:340,t:346},
|
{name:'A3-钢化炉',id:301401,w:75,h:15,l:340,t:346},
|
||||||
{name:'清洗机1',id:'62',w:30,h:15,l:240,t:343},
|
{name:'A3-包装清洗机-1',id:301501,w:30,h:15,l:240,t:343},
|
||||||
{name:'铺纸机1',id:'63',w:18,h:15,l:200,t:343},
|
{name:'A3-铺纸机-1',id:301601,w:18,h:15,l:200,t:343},
|
||||||
{name:'铺纸机2',id:'64',w:18,h:15,l:170,t:343},
|
{name:'A3-铺纸机-2',id:301602,w:18,h:15,l:170,t:343},
|
||||||
|
|
||||||
{name:'磨边机1',id:'65',w:70,h:18,l:838,t:380},
|
{name:'A4-磨边机-1',id:400301,w:70,h:18,l:838,t:380},
|
||||||
{name:'磨边机2',id:'66',w:70,h:18,l:838,t:405},
|
{name:'A4-磨边机-2',id:400302,w:70,h:18,l:838,t:405},
|
||||||
{name:'磨边机3',id:'67',w:70,h:18,l:839,t:428},
|
{name:'A4-磨边机-3',id:400303,w:70,h:18,l:839,t:428},
|
||||||
{name:'清洗机1',id:'68',w:30,h:15,l:804,t:380},
|
{name:'A4-磨边后清洗机-1',id:400401,w:30,h:15,l:804,t:380},
|
||||||
{name:'清洗机2',id:'69',w:30,h:15,l:805,t:405},
|
{name:'A4-磨边后清洗机-2',id:400402,w:30,h:15,l:805,t:405},
|
||||||
{name:'清洗机3',id:'70',w:30,h:15,l:806,t:427},
|
{name:'A4-磨边后清洗机-3',id:400403,w:30,h:15,l:806,t:427},
|
||||||
{name:'镀膜机1',id:'71',w:20,h:15,l:707,t:381},
|
{name:'A4-一次镀膜机-1',id:400801,w:20,h:15,l:707,t:381},
|
||||||
{name:'镀膜机2',id:'72',w:20,h:15,l:707,t:407},
|
{name:'A4-一次镀膜机-2',id:400802,w:20,h:15,l:707,t:407},
|
||||||
{name:'镀膜机3',id:'73',w:20,h:15,l:707,t:429},
|
{name:'A4-一次镀膜机-3',id:400803,w:20,h:15,l:707,t:429},
|
||||||
{name:'固化炉1',id:'74',w:37,h:12,l:660,t:383},
|
{name:'A4-一次固化机-1',id:401001,w:37,h:12,l:660,t:383},
|
||||||
{name:'固化炉2',id:'75',w:37,h:12,l:660,t:409},
|
{name:'A4-一次固化机-2',id:401002,w:37,h:12,l:660,t:409},
|
||||||
{name:'固化炉3',id:'76',w:37,h:12,l:660,t:431},
|
{name:'A4-一次固化机-3',id:401003,w:37,h:12,l:660,t:431},
|
||||||
{name:'镀膜机1',id:'77',w:20,h:15,l:605,t:382},
|
{name:'A4-二次镀膜机-1',id:401101,w:20,h:15,l:605,t:382},
|
||||||
{name:'镀膜机2',id:'78',w:20,h:15,l:605,t:408},
|
{name:'A4-二次镀膜机-2',id:401102,w:20,h:15,l:605,t:408},
|
||||||
{name:'镀膜机3',id:'79',w:20,h:15,l:605,t:430},
|
{name:'A4-二次镀膜机-3',id:401103,w:20,h:15,l:605,t:430},
|
||||||
{name:'固化炉1',id:'80',w:37,h:12,l:557,t:383},
|
{name:'A4-二次固化机-1',id:401201,w:37,h:12,l:557,t:383},
|
||||||
{name:'固化炉2',id:'81',w:37,h:12,l:557,t:409},
|
{name:'A4-二次固化机-2',id:401202,w:37,h:12,l:557,t:409},
|
||||||
{name:'固化炉3',id:'82',w:37,h:12,l:557,t:431},
|
{name:'A4-二次固化机-3',id:401203,w:37,h:12,l:557,t:431},
|
||||||
{name:'钢化炉',id:'83',w:75,h:15,l:379,t:381},
|
{name:'A4-钢化炉',id:401401,w:75,h:15,l:379,t:381},
|
||||||
{name:'清洗机1',id:'84',w:30,h:15,l:220,t:379},
|
{name:'A4-包装清洗机-1',id:401501,w:30,h:15,l:220,t:379},
|
||||||
{name:'清洗机2',id:'85',w:30,h:18,l:220,t:410},
|
{name:'A4-包装清洗机-2',id:401502,w:30,h:18,l:220,t:410},
|
||||||
{name:'铺纸机1',id:'86',w:18,h:15,l:180,t:381},
|
{name:'A4-铺纸机-1',id:401601,w:18,h:15,l:180,t:381},
|
||||||
{name:'铺纸机2',id:'87',w:18,h:15,l:180,t:414},
|
{name:'A4-铺纸机-2',id:401602,w:18,h:15,l:180,t:414},
|
||||||
|
|
||||||
{name:'磨边机1',id:'88',w:70,h:18,l:817,t:465},
|
{name:'A5-磨边机-1',id:500301,w:70,h:18,l:817,t:465},
|
||||||
{name:'磨边机2',id:'89',w:70,h:18,l:817,t:488},
|
{name:'A5-磨边机-2',id:500302,w:70,h:18,l:817,t:488},
|
||||||
{name:'磨边机3',id:'90',w:70,h:18,l:819,t:512},
|
{name:'A5-磨边机-3',id:500303,w:70,h:18,l:819,t:512},
|
||||||
{name:'清洗机1',id:'91',w:30,h:15,l:784,t:462},
|
{name:'A5-磨边后清洗机-1',id:500401,w:30,h:15,l:784,t:462},
|
||||||
{name:'清洗机2',id:'92',w:30,h:15,l:784,t:488},
|
{name:'A5-磨边后清洗机-2',id:500402,w:30,h:15,l:784,t:488},
|
||||||
{name:'清洗机3',id:'93',w:30,h:15,l:785,t:512},
|
{name:'A5-磨边后清洗机-3',id:500403,w:30,h:15,l:785,t:512},
|
||||||
{name:'镀膜机1',id:'94',w:20,h:15,l:685,t:466},
|
{name:'A5-一次镀膜机-1',id:500801,w:20,h:15,l:685,t:466},
|
||||||
{name:'镀膜机2',id:'95',w:20,h:15,l:685,t:490},
|
{name:'A5-一次镀膜机-2',id:500802,w:20,h:15,l:685,t:490},
|
||||||
{name:'镀膜机3',id:'96',w:20,h:15,l:685,t:513},
|
{name:'A5-一次镀膜机-3',id:500803,w:20,h:15,l:685,t:513},
|
||||||
{name:'固化炉1',id:'97',w:37,h:12,l:638,t:468},
|
{name:'A5-一次固化机-1',id:501001,w:37,h:12,l:638,t:468},
|
||||||
{name:'固化炉2',id:'98',w:37,h:12,l:638,t:491},
|
{name:'A5-一次固化机-2',id:501002,w:37,h:12,l:638,t:491},
|
||||||
{name:'固化炉3',id:'99',w:37,h:12,l:638,t:514},
|
{name:'A5-一次固化机-3',id:501003,w:37,h:12,l:638,t:514},
|
||||||
{name:'镀膜机1',id:'100',w:20,h:15,l:584,t:468},
|
{name:'A5-二次镀膜机-1',id:501101,w:20,h:15,l:584,t:468},
|
||||||
{name:'镀膜机2',id:'101',w:20,h:15,l:584,t:490},
|
{name:'A5-二次镀膜机-2',id:501102,w:20,h:15,l:584,t:490},
|
||||||
{name:'镀膜机3',id:'102',w:20,h:15,l:584,t:513},
|
{name:'A5-二次镀膜机-3',id:501103,w:20,h:15,l:584,t:513},
|
||||||
{name:'固化炉1',id:'103',w:37,h:12,l:535,t:468},
|
{name:'A5-二次固化机-1',id:501201,w:37,h:12,l:535,t:468},
|
||||||
{name:'固化炉2',id:'104',w:37,h:12,l:535,t:492},
|
{name:'A5-二次固化机-2',id:501202,w:37,h:12,l:535,t:492},
|
||||||
{name:'固化炉3',id:'105',w:37,h:12,l:535,t:514},
|
{name:'A5-二次固化机-3',id:501203,w:37,h:12,l:535,t:514},
|
||||||
{name:'钢化炉',id:'106',w:75,h:15,l:344,t:513},
|
{name:'A5-钢化炉',id:501401,w:75,h:15,l:344,t:513},
|
||||||
{name:'清洗机1',id:'107',w:30,h:18,l:185,t:473},
|
{name:'A5-包装清洗机-1',id:501501,w:30,h:18,l:185,t:473},
|
||||||
{name:'清洗机2',id:'108',w:30,h:18,l:185,t:511},
|
{name:'A5-包装清洗机-2',id:501502,w:30,h:18,l:185,t:511},
|
||||||
{name:'铺纸机1',id:'109',w:18,h:15,l:144,t:475},
|
{name:'A5-铺纸机-1',id:501601,w:18,h:15,l:144,t:475},
|
||||||
{name:'铺纸机2',id:'110',w:18,h:15,l:144,t:511}
|
{name:'A5-铺纸机-2',id:501602,w:18,h:15,l:144,t:511}
|
||||||
],
|
],
|
||||||
eqTipMsg:{
|
eqTipMsg:{
|
||||||
name:'',
|
name:'',
|
||||||
@ -225,7 +225,6 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
console.log(this.eqList)
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {},
|
mounted() {},
|
||||||
@ -246,7 +245,7 @@ export default {
|
|||||||
updateTooltipPosition(event) {
|
updateTooltipPosition(event) {
|
||||||
const rect = this.$refs.centerTopBox.getBoundingClientRect()
|
const rect = this.$refs.centerTopBox.getBoundingClientRect()
|
||||||
const offset = 15;
|
const offset = 15;
|
||||||
const tooltipWidth = 230*this.scaleNum;
|
const tooltipWidth = 315*this.scaleNum;
|
||||||
const tooltipHeight = 170*this.scaleNum;
|
const tooltipHeight = 170*this.scaleNum;
|
||||||
const startX = rect.left;
|
const startX = rect.left;
|
||||||
const startY = rect.top;
|
const startY = rect.top;
|
||||||
@ -287,7 +286,7 @@ p{
|
|||||||
top:-113px;
|
top:-113px;
|
||||||
}
|
}
|
||||||
.eqTipBox {
|
.eqTipBox {
|
||||||
width: 230px;
|
width: 315px;
|
||||||
height: 170px;
|
height: 170px;
|
||||||
background: url('../../../../assets/images/dataBoard/eq-tip.png') no-repeat;
|
background: url('../../../../assets/images/dataBoard/eq-tip.png') no-repeat;
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
@ -307,8 +306,9 @@ p{
|
|||||||
padding-left: 15px;
|
padding-left: 15px;
|
||||||
}
|
}
|
||||||
.eqTipNum {
|
.eqTipNum {
|
||||||
width: 112px;
|
width: 190px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
Loading…
Reference in New Issue
Block a user