constant.ts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461
  1. import type { BasicColumn } from '@/components/Table';
  2. import { h } from 'vue';
  3. import connectedIcon from '@/assets/images/table/camera-netConnect.png';
  4. import unConnectedIcon from '@/assets/images/table/camera-netUnconnect.png';
  5. import { ElTag } from 'element-plus';
  6. export const queryTypeSelect = [
  7. {
  8. value: 'cameraIp',
  9. label: 'IP地址',
  10. },
  11. {
  12. value: 'name',
  13. label: '设备ID',
  14. },
  15. ];
  16. export const protocalTypeSelect = [
  17. {
  18. value: 'haikang',
  19. label: '海康',
  20. },
  21. {
  22. value: 'dahua',
  23. label: '大华',
  24. },
  25. {
  26. value: 'anxus',
  27. label: '安迅士',
  28. },
  29. {
  30. value: 'huawei',
  31. label: '华为',
  32. },
  33. ];
  34. export const cameraAddType = [
  35. {
  36. value: 'ip',
  37. label: 'IP/域名',
  38. },
  39. {
  40. value: 'ipRange',
  41. label: 'IP段',
  42. },
  43. ];
  44. type CameraAddFormItem = {
  45. label: string;
  46. prop: string;
  47. placeholder: string;
  48. type: 'input' | 'select' | 'tree-select';
  49. option?: { value: any; label: any }[];
  50. required: boolean;
  51. rule?: any[];
  52. labelWidth?: string;
  53. disabled?: boolean;
  54. };
  55. export const cameraIPAddForm: CameraAddFormItem[] = [
  56. {
  57. label: '名称:',
  58. prop: 'name',
  59. placeholder: '请输入名称',
  60. type: 'input',
  61. required: true,
  62. rule: [{ required: true, message: '请输入名称', trigger: 'blur' }],
  63. },
  64. {
  65. label: 'IP地址:',
  66. prop: 'cameraIp',
  67. placeholder: '请输入IP地址',
  68. type: 'input',
  69. required: true,
  70. rule: [{ required: true, message: '请输入IP地址', trigger: 'blur' }],
  71. },
  72. {
  73. label: '端口:',
  74. prop: 'cameraPort',
  75. placeholder: '请输入端口号',
  76. type: 'input',
  77. required: true,
  78. rule: [{ required: true, message: '请输入端口号', trigger: 'blur' }],
  79. },
  80. {
  81. label: '协议类型:',
  82. prop: 'cameraType',
  83. placeholder: '请输入协议类型',
  84. type: 'select',
  85. required: true,
  86. option: protocalTypeSelect,
  87. rule: [{ required: true, message: '请输入协议类型', trigger: 'blur' }],
  88. },
  89. {
  90. label: '用户名:',
  91. prop: 'username',
  92. placeholder: '请输入用户名',
  93. type: 'input',
  94. required: true,
  95. rule: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
  96. },
  97. {
  98. label: '场景:',
  99. prop: 'workspaceCode',
  100. placeholder: '请输入场景名称',
  101. type: 'tree-select',
  102. required: true,
  103. rule: [{ required: true, message: '请输入场景名称', trigger: 'blur' }],
  104. },
  105. {
  106. label: '密码:',
  107. prop: 'password',
  108. placeholder: '请输入用户名密码',
  109. type: 'input',
  110. required: true,
  111. rule: [{ required: true, message: '请输入用户名密码', trigger: 'blur' }],
  112. },
  113. {
  114. label: '工位负责人:',
  115. prop: 'principal',
  116. placeholder: '请输入工位负责人',
  117. type: 'input',
  118. required: false,
  119. },
  120. {
  121. label: '设备ID号:',
  122. prop: 'code',
  123. placeholder: '自定义ID,不能重复',
  124. type: 'input',
  125. required: true,
  126. rule: [{ required: true, message: '请输入设备ID号', trigger: 'blur' }],
  127. },
  128. {
  129. label: '备注:',
  130. prop: 'remark',
  131. placeholder: '请输入备注',
  132. type: 'input',
  133. required: false,
  134. },
  135. ];
  136. export const cameraRangeAddForm: CameraAddFormItem[] = [
  137. {
  138. label: '启用IP地址:',
  139. prop: 'startIp',
  140. placeholder: '请输入启用IP地址',
  141. type: 'input',
  142. labelWidth: '96px',
  143. required: true,
  144. rule: [{ required: true, message: '请输入启用IP地址', trigger: 'blur' }],
  145. },
  146. {
  147. label: '协议类型:',
  148. prop: 'cameraType',
  149. placeholder: '请输入协议类型',
  150. type: 'select',
  151. required: true,
  152. option: protocalTypeSelect,
  153. rule: [{ required: true, message: '请输入协议类型', trigger: 'blur' }],
  154. },
  155. {
  156. label: '用户名:',
  157. prop: 'user',
  158. placeholder: '请输入用户名',
  159. type: 'input',
  160. labelWidth: '60px',
  161. required: false,
  162. rule: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
  163. },
  164. {
  165. label: '结束IP地址:',
  166. prop: 'endIp',
  167. placeholder: '请输入结束IP地址',
  168. type: 'input',
  169. labelWidth: '96px',
  170. required: true,
  171. rule: [{ required: true, message: '请输入结束IP地址', trigger: 'blur' }],
  172. },
  173. {
  174. label: '端口:',
  175. prop: 'port',
  176. placeholder: '请输入端口号',
  177. type: 'input',
  178. required: false,
  179. rule: [{ required: true, message: '请输入端口号', trigger: 'blur' }],
  180. },
  181. {
  182. label: '密码:',
  183. prop: 'password',
  184. placeholder: '请输入用户名密码',
  185. type: 'input',
  186. labelWidth: '60px',
  187. required: false,
  188. rule: [{ required: true, message: '请输入用户名密码', trigger: 'blur' }],
  189. },
  190. ];
  191. type CameraShareFormItem = {
  192. label?: string;
  193. prop: string;
  194. placeholder?: string;
  195. type?: 'input' | 'select' | 'tree-select' | 'radio';
  196. option?: { value: any; label: any }[];
  197. required?: boolean;
  198. rule?: any[];
  199. labelWidth?: string;
  200. };
  201. export const authorityTypeSelect = [
  202. {
  203. value: 'look',
  204. label: '仅可查看',
  205. },
  206. {
  207. value: 'operate',
  208. label: '可远程控制',
  209. },
  210. ];
  211. export const timeTypeSelect = [
  212. {
  213. value: 'Indefinite',
  214. label: '无限期',
  215. },
  216. {
  217. value: 'definite',
  218. label: '有限期',
  219. },
  220. ];
  221. export const cameraShareForm: CameraShareFormItem[] = [
  222. {
  223. label: '企业账号:',
  224. prop: 'account',
  225. placeholder: '请输入企业账号',
  226. type: 'input',
  227. required: true,
  228. rule: [{ required: true, message: '请输入企业账号', trigger: 'blur' }],
  229. },
  230. {
  231. label: '权限设置:',
  232. prop: 'authority',
  233. //placeholder: '请输入IP地址',
  234. type: 'radio',
  235. required: true,
  236. option: authorityTypeSelect,
  237. rule: [{ required: true, message: '', trigger: 'blur' }],
  238. },
  239. {
  240. label: '企业名称:',
  241. prop: 'name',
  242. placeholder: '请输入企业名称',
  243. type: 'input',
  244. required: true,
  245. rule: [{ required: true, message: '请输入企业名称', trigger: 'blur' }],
  246. },
  247. {
  248. label: '分享时间:',
  249. prop: 'time',
  250. //placeholder: '请输入协议类型',
  251. type: 'select',
  252. required: true,
  253. option: timeTypeSelect,
  254. rule: [{ required: true, message: '', trigger: 'blur' }],
  255. },
  256. {
  257. label: '备注:',
  258. prop: 'notes',
  259. placeholder: '请输入备注',
  260. type: 'input',
  261. required: false,
  262. rule: [{ required: true, message: '请输入备注', trigger: 'blur' }],
  263. },
  264. {
  265. label: '分享企业:',
  266. prop: 'shareList',
  267. // placeholder: '请输入场景名称',
  268. // type: 'tree-select',
  269. required: true,
  270. rule: [{ required: true, message: '', trigger: 'blur' }],
  271. },
  272. ];
  273. export const rules = {
  274. account: [{ required: true, message: '请输入企业账号', trigger: 'blur' }],
  275. authority: [{ required: true, message: '', trigger: 'change' }],
  276. name: [{ required: true, message: '请输入企业名称', trigger: 'change' }],
  277. time: [{ required: true, message: '', trigger: 'change' }],
  278. shareList: [{ required: true, message: '', trigger: 'blur' }],
  279. };
  280. export const columns: BasicColumn[] = [
  281. {
  282. label: '联网状态',
  283. prop: 'networkingState',
  284. render(record) {
  285. return h(
  286. 'img',
  287. {
  288. src: record.row.networkingState === 0 ? unConnectedIcon : connectedIcon,
  289. style:
  290. 'width: 20px; height: 20px; object-fit: fill; display: inline-block; line-height: 20px; vertical-align: middle;',
  291. },
  292. {},
  293. );
  294. },
  295. minWidth: 120,
  296. align: 'center',
  297. sortable: 'custom',
  298. },
  299. {
  300. label: '名称',
  301. prop: 'name',
  302. minWidth: 200,
  303. },
  304. {
  305. label: '账号',
  306. prop: 'account',
  307. minWidth: 200,
  308. },
  309. {
  310. label: '联网状态',
  311. prop: 'networkingState',
  312. render(record) {
  313. const updateNetworkingState = (row) => {
  314. if (row.networkingState === 0) {
  315. row.networkingState = 1;
  316. } else {
  317. row.networkingState = 0;
  318. }
  319. };
  320. return h(
  321. ElTag,
  322. { onClick: () => updateNetworkingState(record.row), style: 'cursor: pointer;' },
  323. {
  324. default: () => {
  325. return record.row.networkingState === 0 ? '连接' : '断开连接';
  326. },
  327. },
  328. );
  329. },
  330. minWidth: 120,
  331. },
  332. ];
  333. export const sharedCaremaType = [
  334. {
  335. value: 'incomplete',
  336. label: '待添加',
  337. },
  338. {
  339. value: 'complete',
  340. label: '已添加',
  341. },
  342. ];
  343. export const cameraSharedForm: CameraAddFormItem[] = [
  344. {
  345. label: '名称:',
  346. prop: 'name',
  347. placeholder: '请输入名称',
  348. type: 'input',
  349. required: true,
  350. disabled: false,
  351. rule: [{ required: true, message: '请输入名称', trigger: 'blur' }],
  352. },
  353. {
  354. label: 'IP地址:',
  355. prop: 'cameraIp',
  356. placeholder: '请输入IP地址',
  357. type: 'input',
  358. required: true,
  359. disabled: true,
  360. rule: [{ required: true, message: '请输入IP地址', trigger: 'blur' }],
  361. },
  362. {
  363. label: '端口:',
  364. prop: 'cameraPort',
  365. placeholder: '请输入端口号',
  366. type: 'input',
  367. required: true,
  368. disabled: true,
  369. rule: [{ required: true, message: '请输入端口号', trigger: 'blur' }],
  370. },
  371. {
  372. label: '协议类型:',
  373. prop: 'cameraType',
  374. placeholder: '请输入协议类型',
  375. type: 'input',
  376. required: true,
  377. disabled: true,
  378. rule: [{ required: true, message: '请输入协议类型', trigger: 'blur' }],
  379. },
  380. {
  381. label: '用户名:',
  382. prop: 'username',
  383. placeholder: '请输入用户名',
  384. type: 'input',
  385. required: true,
  386. disabled: true,
  387. rule: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
  388. },
  389. {
  390. label: '场景:',
  391. prop: 'workshopName',
  392. placeholder: '请输入场景名称',
  393. type: 'input',
  394. required: true,
  395. disabled: false,
  396. rule: [{ required: true, message: '请输入场景名称', trigger: 'blur' }],
  397. },
  398. {
  399. label: '密码:',
  400. prop: 'password',
  401. placeholder: '请输入用户名密码',
  402. type: 'input',
  403. required: true,
  404. disabled: true,
  405. rule: [{ required: true, message: '请输入用户名密码', trigger: 'blur' }],
  406. },
  407. {
  408. label: '企业账号:',
  409. prop: 'companyAccount',
  410. placeholder: '请输入企业账号',
  411. type: 'input',
  412. disabled: true,
  413. required: false,
  414. },
  415. {
  416. label: '设备ID号:',
  417. prop: 'code',
  418. placeholder: '自定义ID,不能重复',
  419. type: 'input',
  420. required: true,
  421. disabled: false,
  422. rule: [{ required: true, message: '请输入设备ID号', trigger: 'blur' }],
  423. },
  424. {
  425. label: '企业名称:',
  426. prop: 'companyName',
  427. placeholder: '请输入企业名称',
  428. type: 'input',
  429. disabled: true,
  430. required: false,
  431. },
  432. ];
  433. export interface CameraSharedItem {
  434. cameraIp: string; //ip地址
  435. cameraType: string; //协议类型
  436. cameraPort: string; //端口地址
  437. companyAccount: number; //企业账号
  438. companyName: string; //企业名称
  439. code: string; //设备ID
  440. workshopName: string; //车间场景
  441. workspaceName: string; //工位场景
  442. shareState: string; //是否添加
  443. password?: string; //密码
  444. username?: string; //用户名
  445. }