parent
1511c46f9c
commit
d8e70b7f90
|
After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 3.2 KiB |
@ -0,0 +1,261 @@
|
|||||||
|
tinymce.addI18n('zh_CN',{
|
||||||
|
"Redo": "\u91cd\u590d",
|
||||||
|
"Undo": "\u64a4\u6d88",
|
||||||
|
"Cut": "\u526a\u5207",
|
||||||
|
"Copy": "\u590d\u5236",
|
||||||
|
"Paste": "\u7c98\u8d34",
|
||||||
|
"Select all": "\u5168\u9009",
|
||||||
|
"New document": "\u65b0\u6587\u6863",
|
||||||
|
"Ok": "\u786e\u5b9a",
|
||||||
|
"Cancel": "\u53d6\u6d88",
|
||||||
|
"Visual aids": "\u7f51\u683c\u7ebf",
|
||||||
|
"Bold": "\u7c97\u4f53",
|
||||||
|
"Italic": "\u659c\u4f53",
|
||||||
|
"Underline": "\u4e0b\u5212\u7ebf",
|
||||||
|
"Strikethrough": "\u5220\u9664\u7ebf",
|
||||||
|
"Superscript": "\u4e0a\u6807",
|
||||||
|
"Subscript": "\u4e0b\u6807",
|
||||||
|
"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
|
||||||
|
"Align left": "\u5de6\u5bf9\u9f50",
|
||||||
|
"Align center": "\u5c45\u4e2d",
|
||||||
|
"Align right": "\u53f3\u5bf9\u9f50",
|
||||||
|
"Justify": "\u4e24\u7aef\u5bf9\u9f50",
|
||||||
|
"Bullet list": "\u9879\u76ee\u7b26\u53f7",
|
||||||
|
"Numbered list": "\u7f16\u53f7\u5217\u8868",
|
||||||
|
"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
|
||||||
|
"Increase indent": "\u589e\u52a0\u7f29\u8fdb",
|
||||||
|
"Close": "\u5173\u95ed",
|
||||||
|
"Formats": "\u683c\u5f0f",
|
||||||
|
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u5bf9\u526a\u8d34\u677f\u7684\u8bbf\u95ee\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u952e\u8fdb\u884c\u590d\u5236\u7c98\u8d34\u3002",
|
||||||
|
"Headers": "\u6807\u9898",
|
||||||
|
"Header 1": "\u6807\u98981",
|
||||||
|
"Header 2": "\u6807\u98982",
|
||||||
|
"Header 3": "\u6807\u98983",
|
||||||
|
"Header 4": "\u6807\u98984",
|
||||||
|
"Header 5": "\u6807\u98985",
|
||||||
|
"Header 6": "\u6807\u98986",
|
||||||
|
"Headings": "\u6807\u9898",
|
||||||
|
"Heading 1": "\u6807\u98981",
|
||||||
|
"Heading 2": "\u6807\u98982",
|
||||||
|
"Heading 3": "\u6807\u98983",
|
||||||
|
"Heading 4": "\u6807\u98984",
|
||||||
|
"Heading 5": "\u6807\u98985",
|
||||||
|
"Heading 6": "\u6807\u98986",
|
||||||
|
"Preformatted": "\u9884\u683c\u5f0f\u5316",
|
||||||
|
"Div": "Div\u533a\u5757",
|
||||||
|
"Pre": "\u9884\u683c\u5f0f\u6587\u672c",
|
||||||
|
"Code": "\u4ee3\u7801",
|
||||||
|
"Paragraph": "\u6bb5\u843d",
|
||||||
|
"Blockquote": "\u5f15\u7528",
|
||||||
|
"Inline": "\u6587\u672c",
|
||||||
|
"Blocks": "\u533a\u5757",
|
||||||
|
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
|
||||||
|
"Font Family": "\u5b57\u4f53",
|
||||||
|
"Font Sizes": "\u5b57\u53f7",
|
||||||
|
"Class": "Class",
|
||||||
|
"Browse for an image": "\u6d4f\u89c8\u56fe\u50cf",
|
||||||
|
"OR": "\u6216",
|
||||||
|
"Drop an image here": "\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64",
|
||||||
|
"Upload": "\u4e0a\u4f20",
|
||||||
|
"Block": "\u5757",
|
||||||
|
"Align": "\u5bf9\u9f50",
|
||||||
|
"Default": "\u9ed8\u8ba4",
|
||||||
|
"Circle": "\u7a7a\u5fc3\u5706",
|
||||||
|
"Disc": "\u5b9e\u5fc3\u5706",
|
||||||
|
"Square": "\u65b9\u5757",
|
||||||
|
"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
|
||||||
|
"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
|
||||||
|
"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
|
||||||
|
"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
|
||||||
|
"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
|
||||||
|
"Anchor": "\u951a\u70b9",
|
||||||
|
"Name": "\u540d\u79f0",
|
||||||
|
"Id": "\u6807\u8bc6\u7b26",
|
||||||
|
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002",
|
||||||
|
"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
|
||||||
|
"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
|
||||||
|
"Special character": "\u7279\u6b8a\u7b26\u53f7",
|
||||||
|
"Source code": "\u6e90\u4ee3\u7801",
|
||||||
|
"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b",
|
||||||
|
"Language": "\u8bed\u8a00",
|
||||||
|
"Code sample": "\u4ee3\u7801\u793a\u4f8b",
|
||||||
|
"Color": "\u989c\u8272",
|
||||||
|
"R": "R",
|
||||||
|
"G": "G",
|
||||||
|
"B": "B",
|
||||||
|
"Left to right": "\u4ece\u5de6\u5230\u53f3",
|
||||||
|
"Right to left": "\u4ece\u53f3\u5230\u5de6",
|
||||||
|
"Emoticons": "\u8868\u60c5",
|
||||||
|
"Document properties": "\u6587\u6863\u5c5e\u6027",
|
||||||
|
"Title": "\u6807\u9898",
|
||||||
|
"Keywords": "\u5173\u952e\u8bcd",
|
||||||
|
"Description": "\u63cf\u8ff0",
|
||||||
|
"Robots": "\u673a\u5668\u4eba",
|
||||||
|
"Author": "\u4f5c\u8005",
|
||||||
|
"Encoding": "\u7f16\u7801",
|
||||||
|
"Fullscreen": "\u5168\u5c4f",
|
||||||
|
"Action": "\u64cd\u4f5c",
|
||||||
|
"Shortcut": "\u5feb\u6377\u952e",
|
||||||
|
"Help": "\u5e2e\u52a9",
|
||||||
|
"Address": "\u5730\u5740",
|
||||||
|
"Focus to menubar": "\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f",
|
||||||
|
"Focus to toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f",
|
||||||
|
"Focus to element path": "\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84",
|
||||||
|
"Focus to contextual toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355",
|
||||||
|
"Insert link (if link plugin activated)": "\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
|
||||||
|
"Save (if save plugin activated)": "\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
|
||||||
|
"Find (if searchreplace plugin activated)": "\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
|
||||||
|
"Plugins installed ({0}):": "\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):",
|
||||||
|
"Premium plugins:": "\u4f18\u79c0\u63d2\u4ef6\uff1a",
|
||||||
|
"Learn more...": "\u4e86\u89e3\u66f4\u591a...",
|
||||||
|
"You are using {0}": "\u4f60\u6b63\u5728\u4f7f\u7528 {0}",
|
||||||
|
"Plugins": "\u63d2\u4ef6",
|
||||||
|
"Handy Shortcuts": "\u5feb\u6377\u952e",
|
||||||
|
"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
|
||||||
|
"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
|
||||||
|
"Image description": "\u56fe\u7247\u63cf\u8ff0",
|
||||||
|
"Source": "\u5730\u5740",
|
||||||
|
"Dimensions": "\u5927\u5c0f",
|
||||||
|
"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
|
||||||
|
"General": "\u666e\u901a",
|
||||||
|
"Advanced": "\u9ad8\u7ea7",
|
||||||
|
"Style": "\u6837\u5f0f",
|
||||||
|
"Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
|
||||||
|
"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
|
||||||
|
"Border": "\u8fb9\u6846",
|
||||||
|
"Insert image": "\u63d2\u5165\u56fe\u7247",
|
||||||
|
"Image": "\u56fe\u7247",
|
||||||
|
"Image list": "\u56fe\u7247\u5217\u8868",
|
||||||
|
"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c",
|
||||||
|
"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c",
|
||||||
|
"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c",
|
||||||
|
"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c",
|
||||||
|
"Edit image": "\u7f16\u8f91\u56fe\u7247",
|
||||||
|
"Image options": "\u56fe\u7247\u9009\u9879",
|
||||||
|
"Zoom in": "\u653e\u5927",
|
||||||
|
"Zoom out": "\u7f29\u5c0f",
|
||||||
|
"Crop": "\u88c1\u526a",
|
||||||
|
"Resize": "\u8c03\u6574\u5927\u5c0f",
|
||||||
|
"Orientation": "\u65b9\u5411",
|
||||||
|
"Brightness": "\u4eae\u5ea6",
|
||||||
|
"Sharpen": "\u9510\u5316",
|
||||||
|
"Contrast": "\u5bf9\u6bd4\u5ea6",
|
||||||
|
"Color levels": "\u989c\u8272\u5c42\u6b21",
|
||||||
|
"Gamma": "\u4f3d\u9a6c\u503c",
|
||||||
|
"Invert": "\u53cd\u8f6c",
|
||||||
|
"Apply": "\u5e94\u7528",
|
||||||
|
"Back": "\u540e\u9000",
|
||||||
|
"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
|
||||||
|
"Date\/time": "\u65e5\u671f\/\u65f6\u95f4",
|
||||||
|
"Insert link": "\u63d2\u5165\u94fe\u63a5",
|
||||||
|
"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
|
||||||
|
"Text to display": "\u663e\u793a\u6587\u5b57",
|
||||||
|
"Url": "\u5730\u5740",
|
||||||
|
"Target": "\u6253\u5f00\u65b9\u5f0f",
|
||||||
|
"None": "\u65e0",
|
||||||
|
"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
|
||||||
|
"Remove link": "\u5220\u9664\u94fe\u63a5",
|
||||||
|
"Anchors": "\u951a\u70b9",
|
||||||
|
"Link": "\u94fe\u63a5",
|
||||||
|
"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5",
|
||||||
|
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f",
|
||||||
|
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f",
|
||||||
|
"Link list": "\u94fe\u63a5\u5217\u8868",
|
||||||
|
"Insert video": "\u63d2\u5165\u89c6\u9891",
|
||||||
|
"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
|
||||||
|
"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53",
|
||||||
|
"Alternative source": "\u955c\u50cf",
|
||||||
|
"Poster": "\u5c01\u9762",
|
||||||
|
"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
|
||||||
|
"Embed": "\u5185\u5d4c",
|
||||||
|
"Media": "\u5a92\u4f53",
|
||||||
|
"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
|
||||||
|
"Page break": "\u5206\u9875\u7b26",
|
||||||
|
"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
|
||||||
|
"Preview": "\u9884\u89c8",
|
||||||
|
"Print": "\u6253\u5370",
|
||||||
|
"Save": "\u4fdd\u5b58",
|
||||||
|
"Find": "\u67e5\u627e",
|
||||||
|
"Replace with": "\u66ff\u6362\u4e3a",
|
||||||
|
"Replace": "\u66ff\u6362",
|
||||||
|
"Replace all": "\u5168\u90e8\u66ff\u6362",
|
||||||
|
"Prev": "\u4e0a\u4e00\u4e2a",
|
||||||
|
"Next": "\u4e0b\u4e00\u4e2a",
|
||||||
|
"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
|
||||||
|
"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
|
||||||
|
"Match case": "\u533a\u5206\u5927\u5c0f\u5199",
|
||||||
|
"Whole words": "\u5168\u5b57\u5339\u914d",
|
||||||
|
"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
|
||||||
|
"Ignore": "\u5ffd\u7565",
|
||||||
|
"Ignore all": "\u5168\u90e8\u5ffd\u7565",
|
||||||
|
"Finish": "\u5b8c\u6210",
|
||||||
|
"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
|
||||||
|
"Insert table": "\u63d2\u5165\u8868\u683c",
|
||||||
|
"Table properties": "\u8868\u683c\u5c5e\u6027",
|
||||||
|
"Delete table": "\u5220\u9664\u8868\u683c",
|
||||||
|
"Cell": "\u5355\u5143\u683c",
|
||||||
|
"Row": "\u884c",
|
||||||
|
"Column": "\u5217",
|
||||||
|
"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
|
||||||
|
"Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
|
||||||
|
"Split cell": "\u62c6\u5206\u5355\u5143\u683c",
|
||||||
|
"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
|
||||||
|
"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
|
||||||
|
"Delete row": "\u5220\u9664\u884c",
|
||||||
|
"Row properties": "\u884c\u5c5e\u6027",
|
||||||
|
"Cut row": "\u526a\u5207\u884c",
|
||||||
|
"Copy row": "\u590d\u5236\u884c",
|
||||||
|
"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
|
||||||
|
"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
|
||||||
|
"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
|
||||||
|
"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165",
|
||||||
|
"Delete column": "\u5220\u9664\u5217",
|
||||||
|
"Cols": "\u5217",
|
||||||
|
"Rows": "\u884c",
|
||||||
|
"Width": "\u5bbd",
|
||||||
|
"Height": "\u9ad8",
|
||||||
|
"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
|
||||||
|
"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
|
||||||
|
"Caption": "\u6807\u9898",
|
||||||
|
"Left": "\u5de6\u5bf9\u9f50",
|
||||||
|
"Center": "\u5c45\u4e2d",
|
||||||
|
"Right": "\u53f3\u5bf9\u9f50",
|
||||||
|
"Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
|
||||||
|
"Scope": "\u8303\u56f4",
|
||||||
|
"Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
|
||||||
|
"H Align": "\u6c34\u5e73\u5bf9\u9f50",
|
||||||
|
"V Align": "\u5782\u76f4\u5bf9\u9f50",
|
||||||
|
"Top": "\u9876\u90e8\u5bf9\u9f50",
|
||||||
|
"Middle": "\u5782\u76f4\u5c45\u4e2d",
|
||||||
|
"Bottom": "\u5e95\u90e8\u5bf9\u9f50",
|
||||||
|
"Header cell": "\u8868\u5934\u5355\u5143\u683c",
|
||||||
|
"Row group": "\u884c\u7ec4",
|
||||||
|
"Column group": "\u5217\u7ec4",
|
||||||
|
"Row type": "\u884c\u7c7b\u578b",
|
||||||
|
"Header": "\u8868\u5934",
|
||||||
|
"Body": "\u8868\u4f53",
|
||||||
|
"Footer": "\u8868\u5c3e",
|
||||||
|
"Border color": "\u8fb9\u6846\u989c\u8272",
|
||||||
|
"Insert template": "\u63d2\u5165\u6a21\u677f",
|
||||||
|
"Templates": "\u6a21\u677f",
|
||||||
|
"Template": "\u6a21\u677f",
|
||||||
|
"Text color": "\u6587\u5b57\u989c\u8272",
|
||||||
|
"Background color": "\u80cc\u666f\u8272",
|
||||||
|
"Custom...": "\u81ea\u5b9a\u4e49...",
|
||||||
|
"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
|
||||||
|
"No color": "\u65e0",
|
||||||
|
"Table of Contents": "\u5185\u5bb9\u5217\u8868",
|
||||||
|
"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
|
||||||
|
"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
|
||||||
|
"Words: {0}": "\u5b57\u6570\uff1a{0}",
|
||||||
|
"{0} words": "{0} \u5b57",
|
||||||
|
"File": "\u6587\u4ef6",
|
||||||
|
"Edit": "\u7f16\u8f91",
|
||||||
|
"Insert": "\u63d2\u5165",
|
||||||
|
"View": "\u89c6\u56fe",
|
||||||
|
"Format": "\u683c\u5f0f",
|
||||||
|
"Table": "\u8868\u683c",
|
||||||
|
"Tools": "\u5de5\u5177",
|
||||||
|
"Powered by {0}": "\u7531{0}\u9a71\u52a8",
|
||||||
|
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9"
|
||||||
|
});
|
||||||
@ -0,0 +1,554 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||||
|
* Licensed under the LGPL or a commercial license.
|
||||||
|
* For LGPL see License.txt in the project root for license information.
|
||||||
|
* For commercial licenses see https://www.tiny.cloud/
|
||||||
|
*/
|
||||||
|
.mce-content-body .mce-item-anchor {
|
||||||
|
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
|
||||||
|
cursor: default;
|
||||||
|
display: inline-block;
|
||||||
|
height: 12px !important;
|
||||||
|
padding: 0 2px;
|
||||||
|
-webkit-user-modify: read-only;
|
||||||
|
-moz-user-modify: read-only;
|
||||||
|
-webkit-user-select: all;
|
||||||
|
-moz-user-select: all;
|
||||||
|
-ms-user-select: all;
|
||||||
|
user-select: all;
|
||||||
|
width: 8px !important;
|
||||||
|
}
|
||||||
|
.mce-content-body .mce-item-anchor[data-mce-selected] {
|
||||||
|
outline-offset: 1px;
|
||||||
|
}
|
||||||
|
.tox-comments-visible .tox-comment {
|
||||||
|
background-color: #fff0b7;
|
||||||
|
}
|
||||||
|
.tox-comments-visible .tox-comment--active {
|
||||||
|
background-color: #ffe168;
|
||||||
|
}
|
||||||
|
.tox-checklist > li:not(.tox-checklist--hidden) {
|
||||||
|
list-style: none;
|
||||||
|
margin: .25em 0;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.tox-checklist > li:not(.tox-checklist--hidden)::before {
|
||||||
|
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
|
||||||
|
background-size: 100%;
|
||||||
|
content: '';
|
||||||
|
cursor: pointer;
|
||||||
|
height: 1em;
|
||||||
|
left: -1.5em;
|
||||||
|
position: absolute;
|
||||||
|
top: .125em;
|
||||||
|
width: 1em;
|
||||||
|
}
|
||||||
|
.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
|
||||||
|
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
|
||||||
|
}
|
||||||
|
/* stylelint-disable */
|
||||||
|
/* http://prismjs.com/ */
|
||||||
|
/**
|
||||||
|
* prism.js default theme for JavaScript, CSS and HTML
|
||||||
|
* Based on dabblet (http://dabblet.com)
|
||||||
|
* @author Lea Verou
|
||||||
|
*/
|
||||||
|
code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
color: black;
|
||||||
|
text-shadow: 0 1px white;
|
||||||
|
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||||
|
font-size: .875rem;
|
||||||
|
direction: ltr;
|
||||||
|
text-align: left;
|
||||||
|
white-space: pre;
|
||||||
|
word-spacing: normal;
|
||||||
|
word-break: normal;
|
||||||
|
word-wrap: normal;
|
||||||
|
line-height: 1.5;
|
||||||
|
-moz-tab-size: 4;
|
||||||
|
tab-size: 4;
|
||||||
|
-webkit-hyphens: none;
|
||||||
|
-ms-hyphens: none;
|
||||||
|
hyphens: none;
|
||||||
|
}
|
||||||
|
pre[class*="language-"]::-moz-selection,
|
||||||
|
pre[class*="language-"] ::-moz-selection,
|
||||||
|
code[class*="language-"]::-moz-selection,
|
||||||
|
code[class*="language-"] ::-moz-selection {
|
||||||
|
text-shadow: none;
|
||||||
|
background: #b3d4fc;
|
||||||
|
}
|
||||||
|
pre[class*="language-"]::selection,
|
||||||
|
pre[class*="language-"] ::selection,
|
||||||
|
code[class*="language-"]::selection,
|
||||||
|
code[class*="language-"] ::selection {
|
||||||
|
text-shadow: none;
|
||||||
|
background: #b3d4fc;
|
||||||
|
}
|
||||||
|
@media print {
|
||||||
|
code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* Code blocks */
|
||||||
|
pre[class*="language-"] {
|
||||||
|
padding: 1em;
|
||||||
|
margin: .5em 0;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
:not(pre) > code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
background: transparent !important;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
/* Inline code */
|
||||||
|
:not(pre) > code[class*="language-"] {
|
||||||
|
padding: .1em;
|
||||||
|
border-radius: .3em;
|
||||||
|
}
|
||||||
|
.token.comment,
|
||||||
|
.token.prolog,
|
||||||
|
.token.doctype,
|
||||||
|
.token.cdata {
|
||||||
|
color: slategray;
|
||||||
|
}
|
||||||
|
.token.punctuation {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
.namespace {
|
||||||
|
opacity: .7;
|
||||||
|
}
|
||||||
|
.token.property,
|
||||||
|
.token.tag,
|
||||||
|
.token.boolean,
|
||||||
|
.token.number,
|
||||||
|
.token.constant,
|
||||||
|
.token.symbol,
|
||||||
|
.token.deleted {
|
||||||
|
color: #905;
|
||||||
|
}
|
||||||
|
.token.selector,
|
||||||
|
.token.attr-name,
|
||||||
|
.token.string,
|
||||||
|
.token.char,
|
||||||
|
.token.builtin,
|
||||||
|
.token.inserted {
|
||||||
|
color: #690;
|
||||||
|
}
|
||||||
|
.token.operator,
|
||||||
|
.token.entity,
|
||||||
|
.token.url,
|
||||||
|
.language-css .token.string,
|
||||||
|
.style .token.string {
|
||||||
|
color: #a67f59;
|
||||||
|
background: rgba(255, 255, 255, 0.5);
|
||||||
|
}
|
||||||
|
.token.atrule,
|
||||||
|
.token.attr-value,
|
||||||
|
.token.keyword {
|
||||||
|
color: #07a;
|
||||||
|
}
|
||||||
|
.token.function {
|
||||||
|
color: #DD4A68;
|
||||||
|
}
|
||||||
|
.token.regex,
|
||||||
|
.token.important,
|
||||||
|
.token.variable {
|
||||||
|
color: #e90;
|
||||||
|
}
|
||||||
|
.token.important,
|
||||||
|
.token.bold {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.token.italic {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.token.entity {
|
||||||
|
cursor: help;
|
||||||
|
}
|
||||||
|
/* stylelint-enable */
|
||||||
|
.mce-content-body .mce-visual-caret {
|
||||||
|
background-color: black;
|
||||||
|
background-color: currentcolor;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.mce-content-body .mce-visual-caret-hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.mce-content-body *[data-mce-caret] {
|
||||||
|
left: -1000px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
position: absolute;
|
||||||
|
right: auto;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.mce-content-body .mce-offscreen-selection {
|
||||||
|
left: -9999999999px;
|
||||||
|
max-width: 1000000px;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.mce-content-body *[contentEditable=false] {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
.mce-content-body *[contentEditable=true] {
|
||||||
|
cursor: text;
|
||||||
|
}
|
||||||
|
.tox-cursor-format-painter {
|
||||||
|
cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
|
||||||
|
}
|
||||||
|
.mce-content-body figure.align-left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.mce-content-body figure.align-right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.mce-content-body figure.image.align-center {
|
||||||
|
display: table;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
.mce-preview-object {
|
||||||
|
border: 1px solid gray;
|
||||||
|
display: inline-block;
|
||||||
|
line-height: 0;
|
||||||
|
margin: 0 2px 0 2px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.mce-preview-object .mce-shim {
|
||||||
|
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.mce-preview-object[data-mce-selected="2"] .mce-shim {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.mce-object {
|
||||||
|
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
|
||||||
|
border: 1px dashed #aaa;
|
||||||
|
}
|
||||||
|
.mce-pagebreak {
|
||||||
|
border: 1px dashed #aaa;
|
||||||
|
cursor: default;
|
||||||
|
display: block;
|
||||||
|
height: 5px;
|
||||||
|
margin-top: 15px;
|
||||||
|
page-break-before: always;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
@media print {
|
||||||
|
.mce-pagebreak {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tiny-pageembed .mce-shim {
|
||||||
|
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.tiny-pageembed[data-mce-selected="2"] .mce-shim {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.tiny-pageembed {
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.tiny-pageembed--21by9,
|
||||||
|
.tiny-pageembed--16by9,
|
||||||
|
.tiny-pageembed--4by3,
|
||||||
|
.tiny-pageembed--1by1 {
|
||||||
|
display: block;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0;
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.tiny-pageembed--21by9::before,
|
||||||
|
.tiny-pageembed--16by9::before,
|
||||||
|
.tiny-pageembed--4by3::before,
|
||||||
|
.tiny-pageembed--1by1::before {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.tiny-pageembed--21by9::before {
|
||||||
|
padding-top: 42.857143%;
|
||||||
|
}
|
||||||
|
.tiny-pageembed--16by9::before {
|
||||||
|
padding-top: 56.25%;
|
||||||
|
}
|
||||||
|
.tiny-pageembed--4by3::before {
|
||||||
|
padding-top: 75%;
|
||||||
|
}
|
||||||
|
.tiny-pageembed--1by1::before {
|
||||||
|
padding-top: 100%;
|
||||||
|
}
|
||||||
|
.tiny-pageembed--21by9 iframe,
|
||||||
|
.tiny-pageembed--16by9 iframe,
|
||||||
|
.tiny-pageembed--4by3 iframe,
|
||||||
|
.tiny-pageembed--1by1 iframe {
|
||||||
|
border: 0;
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.mce-content-body div.mce-resizehandle {
|
||||||
|
background-color: #4099ff;
|
||||||
|
border-color: #4099ff;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 1px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 10px;
|
||||||
|
position: absolute;
|
||||||
|
width: 10px;
|
||||||
|
z-index: 10000;
|
||||||
|
}
|
||||||
|
.mce-content-body div.mce-resizehandle:hover {
|
||||||
|
background-color: #4099ff;
|
||||||
|
}
|
||||||
|
.mce-content-body div.mce-resizehandle:nth-of-type(1) {
|
||||||
|
cursor: nwse-resize;
|
||||||
|
}
|
||||||
|
.mce-content-body div.mce-resizehandle:nth-of-type(2) {
|
||||||
|
cursor: nesw-resize;
|
||||||
|
}
|
||||||
|
.mce-content-body div.mce-resizehandle:nth-of-type(3) {
|
||||||
|
cursor: nwse-resize;
|
||||||
|
}
|
||||||
|
.mce-content-body div.mce-resizehandle:nth-of-type(4) {
|
||||||
|
cursor: nesw-resize;
|
||||||
|
}
|
||||||
|
.mce-content-body .mce-clonedresizable {
|
||||||
|
opacity: .5;
|
||||||
|
outline: 1px dashed black;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 10000;
|
||||||
|
}
|
||||||
|
.mce-content-body .mce-resize-helper {
|
||||||
|
background: #555;
|
||||||
|
background: rgba(0, 0, 0, 0.75);
|
||||||
|
border: 1px;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: white;
|
||||||
|
display: none;
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 14px;
|
||||||
|
margin: 5px 10px;
|
||||||
|
padding: 5px;
|
||||||
|
position: absolute;
|
||||||
|
white-space: nowrap;
|
||||||
|
z-index: 10001;
|
||||||
|
}
|
||||||
|
.mce-match-marker {
|
||||||
|
background: #aaa;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.mce-match-marker-selected {
|
||||||
|
background: #39f;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.mce-content-body img[data-mce-selected],
|
||||||
|
.mce-content-body table[data-mce-selected] {
|
||||||
|
outline: 3px solid #b4d7ff;
|
||||||
|
}
|
||||||
|
.mce-content-body hr[data-mce-selected] {
|
||||||
|
outline: 3px solid #b4d7ff;
|
||||||
|
outline-offset: 1px;
|
||||||
|
}
|
||||||
|
.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
|
||||||
|
outline: 3px solid #b4d7ff;
|
||||||
|
}
|
||||||
|
.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
|
||||||
|
outline: 3px solid #b4d7ff;
|
||||||
|
}
|
||||||
|
.mce-content-body *[contentEditable=false][data-mce-selected] {
|
||||||
|
cursor: not-allowed;
|
||||||
|
outline: 3px solid #b4d7ff;
|
||||||
|
}
|
||||||
|
.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
|
||||||
|
.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.mce-content-body *[data-mce-selected="inline-boundary"] {
|
||||||
|
background-color: #b4d7ff;
|
||||||
|
}
|
||||||
|
.mce-content-body .mce-edit-focus {
|
||||||
|
outline: 3px solid #b4d7ff;
|
||||||
|
}
|
||||||
|
.mce-content-body td[data-mce-selected],
|
||||||
|
.mce-content-body th[data-mce-selected] {
|
||||||
|
background-color: #b4d7ff !important;
|
||||||
|
}
|
||||||
|
.mce-content-body td[data-mce-selected]::-moz-selection,
|
||||||
|
.mce-content-body th[data-mce-selected]::-moz-selection {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
.mce-content-body td[data-mce-selected]::selection,
|
||||||
|
.mce-content-body th[data-mce-selected]::selection {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
.mce-content-body td[data-mce-selected] *,
|
||||||
|
.mce-content-body th[data-mce-selected] * {
|
||||||
|
-webkit-touch-callout: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
.mce-content-body img::-moz-selection {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
.mce-content-body img::selection {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
.ephox-snooker-resizer-bar {
|
||||||
|
background-color: #b4d7ff;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
.ephox-snooker-resizer-cols {
|
||||||
|
cursor: col-resize;
|
||||||
|
}
|
||||||
|
.ephox-snooker-resizer-rows {
|
||||||
|
cursor: row-resize;
|
||||||
|
}
|
||||||
|
.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.mce-spellchecker-word {
|
||||||
|
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.5'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
|
||||||
|
background-position: 0 calc(100% + 1px);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
background-size: auto 6px;
|
||||||
|
cursor: default;
|
||||||
|
height: 2rem;
|
||||||
|
}
|
||||||
|
.mce-spellchecker-grammar {
|
||||||
|
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23008800'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
|
||||||
|
background-position: 0 calc(100% + 1px);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
background-size: auto 6px;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
.mce-toc {
|
||||||
|
border: 1px solid gray;
|
||||||
|
}
|
||||||
|
.mce-toc h2 {
|
||||||
|
margin: 4px;
|
||||||
|
}
|
||||||
|
.mce-toc li {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
.mce-item-table,
|
||||||
|
.mce-item-table td,
|
||||||
|
.mce-item-table th,
|
||||||
|
.mce-item-table caption {
|
||||||
|
border: 1px dashed #bbb;
|
||||||
|
}
|
||||||
|
.mce-visualblocks p,
|
||||||
|
.mce-visualblocks h1,
|
||||||
|
.mce-visualblocks h2,
|
||||||
|
.mce-visualblocks h3,
|
||||||
|
.mce-visualblocks h4,
|
||||||
|
.mce-visualblocks h5,
|
||||||
|
.mce-visualblocks h6,
|
||||||
|
.mce-visualblocks div:not([data-mce-bogus]),
|
||||||
|
.mce-visualblocks section,
|
||||||
|
.mce-visualblocks article,
|
||||||
|
.mce-visualblocks blockquote,
|
||||||
|
.mce-visualblocks address,
|
||||||
|
.mce-visualblocks pre,
|
||||||
|
.mce-visualblocks figure,
|
||||||
|
.mce-visualblocks figcaption,
|
||||||
|
.mce-visualblocks hgroup,
|
||||||
|
.mce-visualblocks aside,
|
||||||
|
.mce-visualblocks ul,
|
||||||
|
.mce-visualblocks ol,
|
||||||
|
.mce-visualblocks dl {
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
border: 1px dashed #bbb;
|
||||||
|
margin-left: 3px;
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
.mce-visualblocks p {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
|
||||||
|
}
|
||||||
|
.mce-visualblocks h1 {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
|
||||||
|
}
|
||||||
|
.mce-visualblocks h2 {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
|
||||||
|
}
|
||||||
|
.mce-visualblocks h3 {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
|
||||||
|
}
|
||||||
|
.mce-visualblocks h4 {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
|
||||||
|
}
|
||||||
|
.mce-visualblocks h5 {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
|
||||||
|
}
|
||||||
|
.mce-visualblocks h6 {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
|
||||||
|
}
|
||||||
|
.mce-visualblocks div:not([data-mce-bogus]) {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
|
||||||
|
}
|
||||||
|
.mce-visualblocks section {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
|
||||||
|
}
|
||||||
|
.mce-visualblocks article {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
|
||||||
|
}
|
||||||
|
.mce-visualblocks blockquote {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
|
||||||
|
}
|
||||||
|
.mce-visualblocks address {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
|
||||||
|
}
|
||||||
|
.mce-visualblocks pre {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
|
||||||
|
}
|
||||||
|
.mce-visualblocks figure {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
|
||||||
|
}
|
||||||
|
.mce-visualblocks figcaption {
|
||||||
|
border: 1px dashed #bbb;
|
||||||
|
}
|
||||||
|
.mce-visualblocks hgroup {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
|
||||||
|
}
|
||||||
|
.mce-visualblocks aside {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
|
||||||
|
}
|
||||||
|
.mce-visualblocks ul {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
|
||||||
|
}
|
||||||
|
.mce-visualblocks ol {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
|
||||||
|
}
|
||||||
|
.mce-visualblocks dl {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
|
||||||
|
}
|
||||||
|
.mce-nbsp,
|
||||||
|
.mce-shy {
|
||||||
|
background: #aaa;
|
||||||
|
}
|
||||||
|
.mce-shy::after {
|
||||||
|
content: '-';
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,29 @@
|
|||||||
|
|
||||||
|
/*列表上方操作按钮*/
|
||||||
|
.ant-card-body .table-operator {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*列表td的padding设置 可以控制列表大小*/
|
||||||
|
.ant-table-tbody .ant-table-row td {
|
||||||
|
padding-top: 15px;
|
||||||
|
padding-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*列表页面弹出modal*/
|
||||||
|
.ant-modal-cust-warp {
|
||||||
|
height: 100%
|
||||||
|
}
|
||||||
|
|
||||||
|
/*弹出modal Y轴滚动条*/
|
||||||
|
.ant-modal-cust-warp .ant-modal-body {
|
||||||
|
height: calc(100% - 110px) !important;
|
||||||
|
overflow-y: auto
|
||||||
|
}
|
||||||
|
|
||||||
|
/*弹出modal 先有content后有body 故滚动条控制在body上*/
|
||||||
|
.ant-modal-cust-warp .ant-modal-content {
|
||||||
|
height: 90% !important;
|
||||||
|
overflow-y: hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 3.2 KiB |
@ -0,0 +1,68 @@
|
|||||||
|
<template>
|
||||||
|
<div :style="{ padding: '0 0 32px 32px' }">
|
||||||
|
<h4 :style="{ marginBottom: '20px' }">{{ title }}</h4>
|
||||||
|
|
||||||
|
<v-chart ref="chart" :forceFit="true" :height="height" :data="dataSource" :scale="scale">
|
||||||
|
<v-tooltip/>
|
||||||
|
<v-axis/>
|
||||||
|
<v-line position="x*y" :size="lineSize"/>
|
||||||
|
<v-area position="x*y"/>
|
||||||
|
</v-chart>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { triggerWindowResizeEvent } from '@/utils/util'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'AreaChartTy',
|
||||||
|
props: {
|
||||||
|
// 图表数据
|
||||||
|
dataSource: {
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
// 图表标题
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
// x 轴别名
|
||||||
|
x: {
|
||||||
|
type: String,
|
||||||
|
default: 'x'
|
||||||
|
},
|
||||||
|
// y 轴别名
|
||||||
|
y: {
|
||||||
|
type: String,
|
||||||
|
default: 'y'
|
||||||
|
},
|
||||||
|
// 图表高度
|
||||||
|
height: {
|
||||||
|
type: Number,
|
||||||
|
default: 254
|
||||||
|
},
|
||||||
|
// 线的粗细
|
||||||
|
lineSize: {
|
||||||
|
type: Number,
|
||||||
|
default: 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
scale() {
|
||||||
|
return [
|
||||||
|
{ dataKey: 'x', title: this.x, alias: this.x },
|
||||||
|
{ dataKey: 'y', title: this.y, alias: this.y }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
triggerWindowResizeEvent()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "chart";
|
||||||
|
</style>
|
||||||
@ -0,0 +1,79 @@
|
|||||||
|
<template>
|
||||||
|
<div :style="{ padding: '0 0 32px 32px' }">
|
||||||
|
<h4 :style="{ marginBottom: '20px' }">{{ title }}</h4>
|
||||||
|
<v-chart :forceFit="true" :height="height" :data="data" :padding="['auto', 'auto', '40', '50']">
|
||||||
|
<v-tooltip />
|
||||||
|
<v-axis />
|
||||||
|
<v-legend />
|
||||||
|
<v-bar position="x*y" color="type" :adjust="adjust" />
|
||||||
|
</v-chart>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { DataSet } from '@antv/data-set'
|
||||||
|
|
||||||
|
const sourceDataConst = [
|
||||||
|
{ type: 'Jeecg', 'Jan.': 18.9, 'Feb.': 28.8, 'Mar.': 39.3, 'Apr.': 81.4, 'May': 47, 'Jun.': 20.3, 'Jul.': 24, 'Aug.': 35.6 },
|
||||||
|
{ type: 'Jeebt', 'Jan.': 12.4, 'Feb.': 23.2, 'Mar.': 34.5, 'Apr.': 99.7, 'May': 52.6, 'Jun.': 35.5, 'Jul.': 37.4, 'Aug.': 42.4 }
|
||||||
|
];
|
||||||
|
const fieldsConst = ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May', 'Jun.', 'Jul.', 'Aug.'];
|
||||||
|
export default {
|
||||||
|
name: 'BarMultid',
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
dataSource:{
|
||||||
|
type:Array,
|
||||||
|
default:()=>[]
|
||||||
|
},
|
||||||
|
fields:{
|
||||||
|
type:Array,
|
||||||
|
default:()=>[]
|
||||||
|
},
|
||||||
|
height: {
|
||||||
|
type: Number,
|
||||||
|
default: 254
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
data:"",
|
||||||
|
adjust: [{
|
||||||
|
type: 'dodge',
|
||||||
|
marginRatio: 1 / 32,
|
||||||
|
}],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
'dataSource': function () {
|
||||||
|
this.drawChart();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted(){
|
||||||
|
this.drawChart()
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
drawChart(){
|
||||||
|
let temp = sourceDataConst;
|
||||||
|
if(this.dataSource && this.dataSource.length>0){
|
||||||
|
temp = this.dataSource
|
||||||
|
}
|
||||||
|
const dv = new DataSet.View().source(temp);
|
||||||
|
dv.transform({
|
||||||
|
type: 'fold',
|
||||||
|
fields:(!this.fields||this.fields.length==0)?fieldsConst:this.fields,
|
||||||
|
key: 'x',
|
||||||
|
value: 'y',
|
||||||
|
});
|
||||||
|
this.data=dv.rows;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,190 @@
|
|||||||
|
<template>
|
||||||
|
<div :style="{ padding: '0 0 32px 32px' }">
|
||||||
|
<v-chart :forceFit="true" :height="height" :data="data" :scale="scale">
|
||||||
|
<v-coord type="polar" :startAngle="-202.5" :endAngle="22.5" :radius="0.75"></v-coord>
|
||||||
|
<v-axis
|
||||||
|
dataKey="value"
|
||||||
|
:zIndex="2"
|
||||||
|
:line="null"
|
||||||
|
:label="axisLabel"
|
||||||
|
:subTickCount="4"
|
||||||
|
:subTickLine="axisSubTickLine"
|
||||||
|
:tickLine="axisTickLine"
|
||||||
|
:grid="null"
|
||||||
|
></v-axis>
|
||||||
|
<v-axis dataKey="1" :show="false"></v-axis>
|
||||||
|
<v-series
|
||||||
|
gemo="point"
|
||||||
|
position="value*1"
|
||||||
|
shape="pointer"
|
||||||
|
color="#1890FF"
|
||||||
|
:active="false"
|
||||||
|
></v-series>
|
||||||
|
<v-guide
|
||||||
|
type="arc"
|
||||||
|
:zIndex="0"
|
||||||
|
:top="false"
|
||||||
|
:start="arcGuide1Start"
|
||||||
|
:end="arcGuide1End"
|
||||||
|
:vStyle="arcGuide1Style"
|
||||||
|
></v-guide>
|
||||||
|
<v-guide
|
||||||
|
type="arc"
|
||||||
|
:zIndex="1"
|
||||||
|
:start="arcGuide2Start"
|
||||||
|
:end="getArcGuide2End"
|
||||||
|
:vStyle="arcGuide2Style"
|
||||||
|
></v-guide>
|
||||||
|
<v-guide
|
||||||
|
type="html"
|
||||||
|
:position="htmlGuidePosition"
|
||||||
|
:html="getHtmlGuideHtml()"
|
||||||
|
></v-guide>
|
||||||
|
</v-chart>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {registerShape} from 'viser-vue';
|
||||||
|
|
||||||
|
registerShape('point', 'pointer', {
|
||||||
|
draw(cfg, container) {
|
||||||
|
let point = cfg.points[0];
|
||||||
|
point = this.parsePoint(point);
|
||||||
|
const center = this.parsePoint({
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
});
|
||||||
|
container.addShape('line', {
|
||||||
|
attrs: {
|
||||||
|
x1: center.x,
|
||||||
|
y1: center.y,
|
||||||
|
x2: point.x,
|
||||||
|
y2: point.y + 15,
|
||||||
|
stroke: cfg.color,
|
||||||
|
lineWidth: 5,
|
||||||
|
lineCap: 'round',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return container.addShape('circle', {
|
||||||
|
attrs: {
|
||||||
|
x: center.x,
|
||||||
|
y: center.y,
|
||||||
|
r: 9.75,
|
||||||
|
stroke: cfg.color,
|
||||||
|
lineWidth: 4.5,
|
||||||
|
fill: '#fff',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const scale = [{
|
||||||
|
dataKey: 'value',
|
||||||
|
min: 0,
|
||||||
|
max: 9,
|
||||||
|
tickInterval: 1,
|
||||||
|
nice: false,
|
||||||
|
}];
|
||||||
|
|
||||||
|
const sourceData = [
|
||||||
|
{value: 6.7},
|
||||||
|
];
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "DashChartDemo",
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: Number,
|
||||||
|
default: 6.7
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
height: {
|
||||||
|
type: Number,
|
||||||
|
default: 254
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
if (!this.value) {
|
||||||
|
this.data = sourceData;
|
||||||
|
} else {
|
||||||
|
this.data = [
|
||||||
|
{value: this.value},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
'value': function (val) {
|
||||||
|
this.data = [
|
||||||
|
{value: val},
|
||||||
|
];
|
||||||
|
this.getData();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getData() {
|
||||||
|
if (this.data && this.data.length > 0) {
|
||||||
|
this.abcd = this.data[0].value * 10
|
||||||
|
} else {
|
||||||
|
this.abcd = 70
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getHtmlGuideHtml() {
|
||||||
|
return '<div style="width: 300px;text-align: center;">\n' +
|
||||||
|
'<p style="font-size: 14px;color: #545454;margin: 0;">' + this.title + '</p>\n' +
|
||||||
|
'<p style="font-size: 36px;color: #545454;margin: 0;">' + this.abcd + '%</p>\n' +
|
||||||
|
'</div>'
|
||||||
|
},
|
||||||
|
getArcGuide2End() {
|
||||||
|
return [this.data[0].value, 0.945]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
data: [],
|
||||||
|
scale: scale,
|
||||||
|
abcd: 70,
|
||||||
|
axisLabel: {
|
||||||
|
offset: -16,
|
||||||
|
textStyle: {
|
||||||
|
fontSize: 18,
|
||||||
|
textAlign: 'center',
|
||||||
|
textBaseline: 'middle'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisSubTickLine: {
|
||||||
|
length: -8,
|
||||||
|
stroke: '#fff',
|
||||||
|
strokeOpacity: 1,
|
||||||
|
},
|
||||||
|
axisTickLine: {
|
||||||
|
length: -17,
|
||||||
|
stroke: '#fff',
|
||||||
|
strokeOpacity: 1,
|
||||||
|
},
|
||||||
|
arcGuide1Start: [0, 0.945],
|
||||||
|
arcGuide1End: [9, 0.945],
|
||||||
|
arcGuide1Style: {
|
||||||
|
stroke: '#CBCBCB',
|
||||||
|
lineWidth: 18,
|
||||||
|
},
|
||||||
|
arcGuide2Start: [0, 0.945],
|
||||||
|
arcGuide2Style: {
|
||||||
|
stroke: '#1890FF',
|
||||||
|
lineWidth: 18,
|
||||||
|
},
|
||||||
|
htmlGuidePosition: ['50%', '100%'],
|
||||||
|
htmlGuideHtml: `
|
||||||
|
<div style="width: 300px;text-align: center;">
|
||||||
|
<p style="font-size: 14px;color: #545454;margin: 0;">${this.title}</p>
|
||||||
|
<p style="font-size: 36px;color: #545454;margin: 0;">${this.abcd}%</p>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@ -0,0 +1,100 @@
|
|||||||
|
<template>
|
||||||
|
<div :style="{ padding: '0 0 32px 32px' }">
|
||||||
|
<h4 :style="{ marginBottom: '20px' }">{{ title }}</h4>
|
||||||
|
<v-chart :force-fit="true" :height="height" :data="data" :scale="scale" :padding="['auto', 'auto', '40', '50']">
|
||||||
|
<v-tooltip />
|
||||||
|
<v-axis />
|
||||||
|
<v-legend />
|
||||||
|
<v-line position="type*y" color="x" />
|
||||||
|
<v-point position="type*y" color="x" :size="4" :v-style="style" :shape="'circle'" />
|
||||||
|
</v-chart>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { DataSet } from '@antv/data-set'
|
||||||
|
|
||||||
|
const sourceDataConst = [
|
||||||
|
{ type: 'Jan', jeecg: 7.0, jeebt: 3.9 },
|
||||||
|
{ type: 'Feb', jeecg: 6.9, jeebt: 4.2 },
|
||||||
|
{ type: 'Mar', jeecg: 9.5, jeebt: 5.7 },
|
||||||
|
{ type: 'Apr', jeecg: 14.5, jeebt: 8.5 },
|
||||||
|
{ type: 'May', jeecg: 18.4, jeebt: 11.9 },
|
||||||
|
{ type: 'Jun', jeecg: 21.5, jeebt: 15.2 },
|
||||||
|
{ type: 'Jul', jeecg: 25.2, jeebt: 17.0 },
|
||||||
|
{ type: 'Aug', jeecg: 26.5, jeebt: 16.6 },
|
||||||
|
{ type: 'Sep', jeecg: 23.3, jeebt: 14.2 },
|
||||||
|
{ type: 'Oct', jeecg: 18.3, jeebt: 10.3 },
|
||||||
|
{ type: 'Nov', jeecg: 13.9, jeebt: 6.6 },
|
||||||
|
{ type: 'Dec', jeecg: 9.6, jeebt: 4.8 }
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'LineChartMultid',
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
dataSource:{
|
||||||
|
type:Array,
|
||||||
|
default:()=>[]
|
||||||
|
},
|
||||||
|
fields:{
|
||||||
|
type:Array,
|
||||||
|
default: () => ['jeecg', 'jeebt']
|
||||||
|
},
|
||||||
|
height:{
|
||||||
|
type:Number,
|
||||||
|
default:254
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
data:"",
|
||||||
|
scale: [{
|
||||||
|
dataKey: 'x',
|
||||||
|
min: 0,
|
||||||
|
max: 1
|
||||||
|
}],
|
||||||
|
style: { stroke: '#fff', lineWidth: 1 },
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
'dataSource': function () {
|
||||||
|
this.drawChart();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted(){
|
||||||
|
this.drawChart()
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
drawChart(){
|
||||||
|
let temp = sourceDataConst;
|
||||||
|
if (this.dataSource && this.dataSource.length > 0) {
|
||||||
|
temp = this.dataSource.map(item => {
|
||||||
|
// 为了防止直接修改源数据导致报错
|
||||||
|
let obj = Object.assign({}, item)
|
||||||
|
obj.type = obj.x
|
||||||
|
return obj
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const dv = new DataSet.View().source(temp);
|
||||||
|
dv.transform({
|
||||||
|
type: 'fold',
|
||||||
|
fields: this.fields,
|
||||||
|
key: 'x',
|
||||||
|
value: 'y',
|
||||||
|
});
|
||||||
|
|
||||||
|
this.data=dv.rows;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,83 @@
|
|||||||
|
<template>
|
||||||
|
<v-chart :forceFit="true" :height="height" :data="data" :scale="scale">
|
||||||
|
<v-tooltip :showTitle="false" dataKey="item*percent"/>
|
||||||
|
<v-axis/>
|
||||||
|
<v-legend dataKey="item"/>
|
||||||
|
<v-pie position="percent" color="item" :v-style="pieStyle" :label="labelConfig"/>
|
||||||
|
<v-coord type="theta"/>
|
||||||
|
</v-chart>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const DataSet = require('@antv/data-set')
|
||||||
|
|
||||||
|
const sourceData = [
|
||||||
|
{ item: '事例一', percent: 40 },
|
||||||
|
{ item: '事例二', percent: 21 },
|
||||||
|
{ item: '事例三', percent: 17 },
|
||||||
|
{ item: '事例四', percent: 13 },
|
||||||
|
{ item: '事例五', percent: 9 }
|
||||||
|
]
|
||||||
|
|
||||||
|
const scale = [{
|
||||||
|
dataKey: 'percent',
|
||||||
|
min: 0,
|
||||||
|
formatter: '.0%'
|
||||||
|
}]
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
height: {
|
||||||
|
type: Number,
|
||||||
|
default: 254
|
||||||
|
},
|
||||||
|
dataSource: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.change()
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
'dataSource': function() {
|
||||||
|
this.change()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
change() {
|
||||||
|
if (this.dataSource.length === 0) {
|
||||||
|
this.data = sourceData
|
||||||
|
} else {
|
||||||
|
const dv = new DataSet.View().source(this.dataSource)
|
||||||
|
dv.transform({
|
||||||
|
type: 'percent',
|
||||||
|
field: 'count',
|
||||||
|
dimension: 'item',
|
||||||
|
as: 'percent'
|
||||||
|
})
|
||||||
|
this.data = dv.rows
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
data: '',
|
||||||
|
scale,
|
||||||
|
pieStyle: {
|
||||||
|
stroke: '#fff',
|
||||||
|
lineWidth: 1
|
||||||
|
},
|
||||||
|
labelConfig: ['percent', {
|
||||||
|
formatter: (val, item) => {
|
||||||
|
return item.point.item + ': ' + val
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@ -1,22 +0,0 @@
|
|||||||
<template>
|
|
||||||
<span>
|
|
||||||
<!--// 1、当有数据输入时触发了该组件的input事件-->
|
|
||||||
<!--<input type="text" :value="value" @input="updateVal($event.target.value)">-->
|
|
||||||
<a-input :placeholder="placeholder" :value="value" @input="updateVal($event.target.value)"></a-input>
|
|
||||||
</span>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
value: String,
|
|
||||||
placeholder: String
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
updateVal: function(val) {
|
|
||||||
// 2、手动触发父组件的input事件并将值传给父组件
|
|
||||||
this.$emit('input', val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
import T from './DictSelectTag.vue'
|
import T from './JDictSelectTag.vue'
|
||||||
const DictSelectTag = {
|
const JDictSelectTag = {
|
||||||
install: function (Vue) {
|
install: function (Vue) {
|
||||||
Vue.component('DictSelectTag',T);
|
Vue.component('JDictSelectTag',T);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export default DictSelectTag;
|
export default JDictSelectTag;
|
||||||
@ -0,0 +1,52 @@
|
|||||||
|
<template>
|
||||||
|
<a-checkbox-group :options="options" :value="checkboxArray" @change="onChange" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'JCheckbox',
|
||||||
|
props: {
|
||||||
|
value:{
|
||||||
|
type: String,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
readOnly:{
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
options:{
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
triggerChange:{
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
checkboxArray:!this.value?[]:this.value.split(",")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch:{
|
||||||
|
value (val) {
|
||||||
|
if(!val){
|
||||||
|
this.checkboxArray = []
|
||||||
|
}else{
|
||||||
|
this.checkboxArray = this.value.split(",")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
onChange (checkedValues) {
|
||||||
|
if(this.triggerChange){
|
||||||
|
this.$emit('change', checkedValues.join(","));
|
||||||
|
}else{
|
||||||
|
this.$emit('input', checkedValues.join(","));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,92 @@
|
|||||||
|
<template>
|
||||||
|
<div class="tinymce-editor">
|
||||||
|
<editor
|
||||||
|
v-model="myValue"
|
||||||
|
:init="init"
|
||||||
|
:disabled="disabled"
|
||||||
|
@onClick="onClick">
|
||||||
|
</editor>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import tinymce from 'tinymce/tinymce'
|
||||||
|
import Editor from '@tinymce/tinymce-vue'
|
||||||
|
import 'tinymce/themes/silver/theme'
|
||||||
|
import 'tinymce/plugins/image'
|
||||||
|
import 'tinymce/plugins/media'
|
||||||
|
import 'tinymce/plugins/table'
|
||||||
|
import 'tinymce/plugins/lists'
|
||||||
|
import 'tinymce/plugins/contextmenu'
|
||||||
|
import 'tinymce/plugins/wordcount'
|
||||||
|
import 'tinymce/plugins/colorpicker'
|
||||||
|
import 'tinymce/plugins/textcolor'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
Editor
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: String,
|
||||||
|
required:false
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
plugins: {
|
||||||
|
type: [String, Array],
|
||||||
|
default: 'lists image media table textcolor wordcount contextmenu'
|
||||||
|
},
|
||||||
|
toolbar: {
|
||||||
|
type: [String, Array],
|
||||||
|
default: 'undo redo | formatselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists image media table | removeformat'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
//初始化配置
|
||||||
|
init: {
|
||||||
|
language_url: '/tinymce/langs/zh_CN.js',
|
||||||
|
language: 'zh_CN',
|
||||||
|
skin_url: '/tinymce/skins/lightgray',
|
||||||
|
height: 300,
|
||||||
|
plugins: this.plugins,
|
||||||
|
toolbar: this.toolbar,
|
||||||
|
branding: false,
|
||||||
|
menubar: false,
|
||||||
|
images_upload_handler: (blobInfo, success) => {
|
||||||
|
const img = 'data:image/jpeg;base64,' + blobInfo.base64()
|
||||||
|
success(img)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
myValue: this.value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
tinymce.init({})
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
onClick(e) {
|
||||||
|
this.$emit('onClick', e, tinymce)
|
||||||
|
},
|
||||||
|
//可以添加一些自己的自定义事件,如清空内容
|
||||||
|
clear() {
|
||||||
|
this.myValue = ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
value(newValue) {
|
||||||
|
this.myValue = newValue
|
||||||
|
},
|
||||||
|
myValue(newValue) {
|
||||||
|
console.log(newValue)
|
||||||
|
this.$emit('input', newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
<template>
|
||||||
|
<a-tooltip placement="topLeft">
|
||||||
|
<template slot="title">
|
||||||
|
<span>{{value}}</span>
|
||||||
|
</template>
|
||||||
|
{{ value | ellipsis(length) }}
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'JEllipsis',
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
},
|
||||||
|
length: {
|
||||||
|
type: Number,
|
||||||
|
required: false,
|
||||||
|
default: 25,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,110 @@
|
|||||||
|
<template>
|
||||||
|
<a-modal
|
||||||
|
title="导入EXCEL"
|
||||||
|
:width="600"
|
||||||
|
:visible="visible"
|
||||||
|
:confirmLoading="uploading"
|
||||||
|
@cancel="handleClose">
|
||||||
|
|
||||||
|
<a-upload
|
||||||
|
name="file"
|
||||||
|
:multiple="true"
|
||||||
|
accept=".xls,.xlsx"
|
||||||
|
:fileList="fileList"
|
||||||
|
:remove="handleRemove"
|
||||||
|
:beforeUpload="beforeUpload">
|
||||||
|
<a-button>
|
||||||
|
<a-icon type="upload" />
|
||||||
|
选择导入文件
|
||||||
|
</a-button>
|
||||||
|
</a-upload>
|
||||||
|
|
||||||
|
<template slot="footer">
|
||||||
|
<a-button @click="handleClose">关闭</a-button>
|
||||||
|
<a-button
|
||||||
|
type="primary"
|
||||||
|
@click="handleImport"
|
||||||
|
:disabled="fileList.length === 0"
|
||||||
|
:loading="uploading">
|
||||||
|
{{ uploading ? '上传中...' : '开始上传' }}
|
||||||
|
</a-button>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</a-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { postAction } from '@/api/manage'
|
||||||
|
export default {
|
||||||
|
name: 'JImportModal',
|
||||||
|
props:{
|
||||||
|
url:{
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
required: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
visible:false,
|
||||||
|
uploading:false,
|
||||||
|
fileList:[],
|
||||||
|
uploadAction:''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
url (val) {
|
||||||
|
if(val){
|
||||||
|
this.uploadAction = window._CONFIG['domianURL']+val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created () {
|
||||||
|
this.uploadAction = window._CONFIG['domianURL']+this.url
|
||||||
|
},
|
||||||
|
|
||||||
|
methods:{
|
||||||
|
handleClose(){
|
||||||
|
this.visible=false
|
||||||
|
},
|
||||||
|
show(){
|
||||||
|
this.fileList = []
|
||||||
|
this.uploading = false
|
||||||
|
this.visible = true
|
||||||
|
},
|
||||||
|
handleRemove(file) {
|
||||||
|
const index = this.fileList.indexOf(file);
|
||||||
|
const newFileList = this.fileList.slice();
|
||||||
|
newFileList.splice(index, 1);
|
||||||
|
this.fileList = newFileList
|
||||||
|
},
|
||||||
|
beforeUpload(file) {
|
||||||
|
this.fileList = [...this.fileList, file]
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
handleImport() {
|
||||||
|
const { fileList } = this;
|
||||||
|
const formData = new FormData();
|
||||||
|
fileList.forEach((file) => {
|
||||||
|
formData.append('files[]', file);
|
||||||
|
});
|
||||||
|
this.uploading = true
|
||||||
|
postAction(this.uploadAction, formData).then((res) => {
|
||||||
|
this.uploading = false
|
||||||
|
if(res.success){
|
||||||
|
this.$message.success(res.message)
|
||||||
|
this.visible=false
|
||||||
|
this.$emit('ok')
|
||||||
|
}else{
|
||||||
|
this.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,65 @@
|
|||||||
|
<template>
|
||||||
|
<a-select :value="arrayValue" @change="onChange" mode="multiple" :placeholder="placeholder">
|
||||||
|
<a-select-option
|
||||||
|
v-for="(item,index) in options"
|
||||||
|
:key="index"
|
||||||
|
:value="item.value">
|
||||||
|
{{ item.text }}
|
||||||
|
</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
//option {label:,value:}
|
||||||
|
export default {
|
||||||
|
name: 'JSelectMultiple',
|
||||||
|
props: {
|
||||||
|
placeholder:{
|
||||||
|
type: String,
|
||||||
|
default:'',
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
value:{
|
||||||
|
type: String,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
readOnly:{
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
options:{
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
triggerChange:{
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
arrayValue:!this.value?[]:this.value.split(",")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch:{
|
||||||
|
value (val) {
|
||||||
|
if(!val){
|
||||||
|
this.arrayValue = []
|
||||||
|
}else{
|
||||||
|
this.arrayValue = this.value.split(",")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
onChange (selectedValue) {
|
||||||
|
if(this.triggerChange){
|
||||||
|
this.$emit('change', selectedValue.join(","));
|
||||||
|
}else{
|
||||||
|
this.$emit('input', selectedValue.join(","));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@ -0,0 +1,152 @@
|
|||||||
|
<template>
|
||||||
|
<a-modal
|
||||||
|
title="高级查询构造器"
|
||||||
|
:width="800"
|
||||||
|
:visible="visible"
|
||||||
|
:confirmLoading="confirmLoading"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
:mask="false"
|
||||||
|
wrapClassName="ant-modal-cust-warp"
|
||||||
|
style="top:5%;max-height: 95%;">
|
||||||
|
<template slot="footer">
|
||||||
|
<a-button @click="handleCancel">关 闭</a-button>
|
||||||
|
<a-button @click="handleReset" style="float: left">重 置</a-button>
|
||||||
|
<a-button type="primary" @click="handleOk">查 询</a-button>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<a-spin :spinning="confirmLoading">
|
||||||
|
<a-form>
|
||||||
|
<div>
|
||||||
|
<a-row type="flex" style="margin-bottom:10px" :gutter="16" v-for="(item, index) in queryParamsModel" :key="index">
|
||||||
|
|
||||||
|
<a-col :span="6">
|
||||||
|
<a-select placeholder="选择查询字段" v-model="item.field" @select="(val,option)=>handleSelected(option,item)">
|
||||||
|
<a-select-option v-for="(f,fIndex) in fieldList" :key=" 'field'+fIndex" :value="f.value" :data-type="f.type">{{ f.text }}</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
<a-col :span="6">
|
||||||
|
<a-select placeholder="选择匹配规则" v-model="item.rule">
|
||||||
|
<a-select-option value="eq">等于</a-select-option>
|
||||||
|
<a-select-option value="ne">不等于</a-select-option>
|
||||||
|
<a-select-option value="gt">大于</a-select-option>
|
||||||
|
<a-select-option value="ge">大于等于</a-select-option>
|
||||||
|
<a-select-option value="lt">小于</a-select-option>
|
||||||
|
<a-select-option value="le">小于等于</a-select-option>
|
||||||
|
<a-select-option value="right_like">以..开始</a-select-option>
|
||||||
|
<a-select-option value="left_like">以..结尾</a-select-option>
|
||||||
|
<a-select-option value="like">包含</a-select-option>
|
||||||
|
<a-select-option value="in">在...中</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
<a-col :span="6">
|
||||||
|
<j-date v-if=" item.type=='date' " v-model="item.val" placeholder="请选择日期"></j-date>
|
||||||
|
<j-date v-else-if=" item.type=='datetime' " v-model="item.val" placeholder="请选择时间" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss"></j-date>
|
||||||
|
<a-input-number v-else-if=" item.type=='int'||item.type=='number' " style="width: 100%" placeholder="请输入数值" v-model="item.val"/>
|
||||||
|
<a-input v-else v-model="item.val" placeholder="请输入值" />
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
<a-col :span="6">
|
||||||
|
<a-button @click="handleAdd" icon="plus"></a-button>
|
||||||
|
<a-button @click="handleDel( index )" icon="minus"></a-button>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
</a-row>
|
||||||
|
</div>
|
||||||
|
</a-form>
|
||||||
|
</a-spin>
|
||||||
|
</a-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ACol from 'ant-design-vue/es/grid/Col'
|
||||||
|
import JDate from '@/components/jeecg/JDate.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'JSuperQuery',
|
||||||
|
components: {
|
||||||
|
ACol,
|
||||||
|
JDate
|
||||||
|
},
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
visible:false,
|
||||||
|
confirmLoading:false,
|
||||||
|
queryParamsModel:[{}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
props:{
|
||||||
|
/* fieldList:[{value:'',text:'',type:''}]
|
||||||
|
* type:date datetime int number string
|
||||||
|
* */
|
||||||
|
fieldList:{
|
||||||
|
type:Array,
|
||||||
|
required:true
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* 这个回调函数接收一个数组参数 即查询条件
|
||||||
|
* */
|
||||||
|
callback:{
|
||||||
|
type:String,
|
||||||
|
required:false,
|
||||||
|
default:'handleSuperQuery'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
show(){
|
||||||
|
if(!this.queryParamsModel ||this.queryParamsModel.length==0){
|
||||||
|
this.queryParamsModel = [{}]
|
||||||
|
}
|
||||||
|
this.visible = true;
|
||||||
|
},
|
||||||
|
handleOk(){
|
||||||
|
console.log("---高级查询参数--->",this.queryParamsModel)
|
||||||
|
if(!this.isNullArray()){
|
||||||
|
this.$emit(this.callback, this.queryParamsModel)
|
||||||
|
}else{
|
||||||
|
this.$emit(this.callback)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleCancel(){
|
||||||
|
this.close()
|
||||||
|
},
|
||||||
|
close () {
|
||||||
|
this.$emit('close');
|
||||||
|
this.visible = false;
|
||||||
|
},
|
||||||
|
handleAdd () {
|
||||||
|
this.queryParamsModel.push({});
|
||||||
|
},
|
||||||
|
handleDel (index) {
|
||||||
|
|
||||||
|
this.queryParamsModel.splice(index,1);
|
||||||
|
this.$message.warning("请关闭后重新打开")
|
||||||
|
},
|
||||||
|
handleSelected(option,item){
|
||||||
|
item['type'] = option.data.attrs['data-type']
|
||||||
|
},
|
||||||
|
handleReset(){
|
||||||
|
this.queryParamsModel=[{}]
|
||||||
|
this.$emit(this.callback)
|
||||||
|
},
|
||||||
|
isNullArray(){
|
||||||
|
//判断是不是空数组对象
|
||||||
|
if(!this.queryParamsModel || this.queryParamsModel.length==0){
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if(this.queryParamsModel.length==1){
|
||||||
|
let obj = this.queryParamsModel[0]
|
||||||
|
if(!obj.field || !obj.val || !obj.rule){
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style >
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,309 @@
|
|||||||
|
<template>
|
||||||
|
|
||||||
|
<a-modal
|
||||||
|
:width="modalWidth"
|
||||||
|
:visible="visible"
|
||||||
|
:title="title"
|
||||||
|
@ok="handleSubmit"
|
||||||
|
@cancel="close"
|
||||||
|
cancelText="关闭"
|
||||||
|
style="margin-top: -70px"
|
||||||
|
wrapClassName="ant-modal-cust-warp"
|
||||||
|
>
|
||||||
|
<a-row :gutter="10" style="background-color: #ececec; padding: 10px; margin: -10px">
|
||||||
|
<a-col :md="6" :sm="24">
|
||||||
|
<a-card :bordered="false">
|
||||||
|
<!--组织机构-->
|
||||||
|
<a-directory-tree
|
||||||
|
selectable
|
||||||
|
:selectedKeys="selectedKeys"
|
||||||
|
:checkStrictly="true"
|
||||||
|
@select="this.onSelect"
|
||||||
|
:dropdownStyle="{maxHeight:'200px',overflow:'auto'}"
|
||||||
|
:treeData="departTree"
|
||||||
|
/>
|
||||||
|
</a-card>
|
||||||
|
</a-col>
|
||||||
|
<a-col :md="18" :sm="24">
|
||||||
|
<a-card :bordered="false">
|
||||||
|
用户账号:
|
||||||
|
<a-input-search
|
||||||
|
:style="{width:'150px',marginBottom:'15px'}"
|
||||||
|
placeholder="请输入用户名搜索"
|
||||||
|
v-model="queryParam.username"
|
||||||
|
@search="onSearch"
|
||||||
|
></a-input-search>
|
||||||
|
<a-button @click="searchReset(1)" style="margin-left: 20px" icon="redo">重置</a-button>
|
||||||
|
<!--用户列表-->
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
:scroll="scrollTrigger"
|
||||||
|
size="middle"
|
||||||
|
rowKey="id"
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||||
|
@change="handleTableChange">
|
||||||
|
</a-table>
|
||||||
|
</a-card>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-modal>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { filterObj } from '@/utils/util'
|
||||||
|
import { queryDepartTreeList, getUserList, queryUserByDepId, queryUserRoleMap } from '@/api/api'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'JSearchUserByDep',
|
||||||
|
components: {},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
queryParam: {
|
||||||
|
username:"",
|
||||||
|
},
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '用户账号',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'username'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '真实姓名',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'realname'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '角色名称',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'roleName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '性别',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'sex',
|
||||||
|
customRender: function(text) {
|
||||||
|
if (text === 1) {
|
||||||
|
return '男'
|
||||||
|
} else if (text === 2) {
|
||||||
|
return '女'
|
||||||
|
} else {
|
||||||
|
return text
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '手机号码',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'phone'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '邮箱',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'email'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
scrollTrigger: {},
|
||||||
|
dataSource: [],
|
||||||
|
selectedKeys: [],
|
||||||
|
userNameArr: [],
|
||||||
|
departName: '',
|
||||||
|
userRolesMap: {},
|
||||||
|
title: '',
|
||||||
|
ipagination: {
|
||||||
|
current: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
pageSizeOptions: ['10', '20', '30'],
|
||||||
|
showTotal: (total, range) => {
|
||||||
|
return range[0] + '-' + range[1] + ' 共' + total + '条'
|
||||||
|
},
|
||||||
|
showQuickJumper: true,
|
||||||
|
showSizeChanger: true,
|
||||||
|
total: 0
|
||||||
|
},
|
||||||
|
isorter: {
|
||||||
|
column: 'createTime',
|
||||||
|
order: 'desc'
|
||||||
|
},
|
||||||
|
selectedRowKeys: [],
|
||||||
|
selectedRows: [],
|
||||||
|
modalWidth: 1250,
|
||||||
|
departTree: [],
|
||||||
|
visible: false,
|
||||||
|
form: this.$form.createForm(this)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
// 该方法触发屏幕自适应
|
||||||
|
this.resetScreenSize();
|
||||||
|
this.queryUserRoleMap();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
loadData(arg) {
|
||||||
|
if (arg === 1) {
|
||||||
|
this.ipagination.current = 1;
|
||||||
|
}
|
||||||
|
let params = this.getQueryParams();//查询条件
|
||||||
|
getUserList(params).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.dataSource = res.result.records;
|
||||||
|
this.assignRoleName(this.dataSource);
|
||||||
|
this.ipagination.total = res.result.total;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
queryUserRoleMap(){
|
||||||
|
queryUserRoleMap().then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.userRolesMap = res.result;
|
||||||
|
this.loadData();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 触发屏幕自适应
|
||||||
|
resetScreenSize() {
|
||||||
|
let screenWidth = document.body.clientWidth;
|
||||||
|
if (screenWidth < 500) {
|
||||||
|
this.scrollTrigger = { x: 800 };
|
||||||
|
} else {
|
||||||
|
this.scrollTrigger = {};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
showModal() {
|
||||||
|
this.visible = true;
|
||||||
|
this.assignRoleName(this.dataSource);
|
||||||
|
this.queryDepartTree();
|
||||||
|
this.form.resetFields();
|
||||||
|
},
|
||||||
|
getQueryParams() {
|
||||||
|
let param = Object.assign({}, this.queryParam, this.isorter);
|
||||||
|
param.field = this.getQueryField();
|
||||||
|
param.pageNo = this.ipagination.current;
|
||||||
|
param.pageSize = this.ipagination.pageSize;
|
||||||
|
return filterObj(param);
|
||||||
|
},
|
||||||
|
getQueryField() {
|
||||||
|
let str = 'id,';
|
||||||
|
for (let a = 0; a < this.columns.length; a++) {
|
||||||
|
str += ',' + this.columns[a].dataIndex;
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
searchReset(num) {
|
||||||
|
let that = this;
|
||||||
|
that.selectedRowKeys = [];
|
||||||
|
that.userNameArr = [];
|
||||||
|
that.queryParam = {};
|
||||||
|
that.selectedKeys = [];
|
||||||
|
if(num !== 0){
|
||||||
|
that.loadData();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.searchReset(0);
|
||||||
|
this.visible = false;
|
||||||
|
},
|
||||||
|
handleTableChange(pagination, filters, sorter) {
|
||||||
|
//TODO 筛选
|
||||||
|
if (Object.keys(sorter).length > 0) {
|
||||||
|
this.isorter.column = sorter.field;
|
||||||
|
this.isorter.order = 'ascend' === sorter.order ? 'asc' : 'desc';
|
||||||
|
}
|
||||||
|
this.ipagination = pagination;
|
||||||
|
this.loadData();
|
||||||
|
},
|
||||||
|
handleSubmit() {
|
||||||
|
let that = this;
|
||||||
|
for (let i = 0, len = this.selectedRowKeys.length; i < len; i++) {
|
||||||
|
this.getUserNames(this.selectedRowKeys[i]);
|
||||||
|
}
|
||||||
|
that.$emit('ok', that.userNameArr.join(','));
|
||||||
|
that.close();
|
||||||
|
},
|
||||||
|
// 遍历匹配,获取用户真实姓名
|
||||||
|
getUserNames(rowId) {
|
||||||
|
let dataSource = this.dataSource;
|
||||||
|
for (let i = 0, len = dataSource.length; i < len; i++) {
|
||||||
|
if (rowId === dataSource[i].id) {
|
||||||
|
this.userNameArr.push(dataSource[i].realname);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 点击树节点,筛选出对应的用户
|
||||||
|
onSelect(selectedKeys) {
|
||||||
|
if (selectedKeys[0] != null) {
|
||||||
|
this.queryUserByDepId(selectedKeys); // 调用方法根据选选择的id查询用户信息
|
||||||
|
if (this.selectedKeys[0] !== selectedKeys[0]) {
|
||||||
|
this.selectedKeys = [selectedKeys[0]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onSelectChange(selectedRowKeys, selectionRows) {
|
||||||
|
this.selectedRowKeys = selectedRowKeys;
|
||||||
|
this.selectionRows = selectionRows;
|
||||||
|
},
|
||||||
|
onSearch() {
|
||||||
|
this.loadData(1);
|
||||||
|
},
|
||||||
|
// 根据选择的id来查询用户信息
|
||||||
|
queryUserByDepId(selectedKeys) {
|
||||||
|
queryUserByDepId({ id: selectedKeys.toString() }).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.dataSource = res.result;
|
||||||
|
this.ipagination.total = res.result.length;
|
||||||
|
this.assignRoleName(this.dataSource);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 传入用户id,找到匹配的角色名称
|
||||||
|
queryUserRole(userId) {
|
||||||
|
let map = this.userRolesMap;
|
||||||
|
let roleName = [];
|
||||||
|
for (var key in map) {
|
||||||
|
if (userId === key) {
|
||||||
|
roleName.push(map[key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return roleName.join(',');
|
||||||
|
},
|
||||||
|
queryDepartTree() {
|
||||||
|
queryDepartTreeList().then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.departTree = res.result;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 为角色名称赋值
|
||||||
|
assignRoleName(data) {
|
||||||
|
let userId = '';
|
||||||
|
let role = '';
|
||||||
|
for (let i = 0, length = data.length; i < length; i++) {
|
||||||
|
userId = this.dataSource[i].id;
|
||||||
|
role = this.queryUserRole(userId);
|
||||||
|
this.dataSource[i].roleName = role;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
modalFormOk() {
|
||||||
|
this.loadData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.ant-table-tbody .ant-table-row td {
|
||||||
|
padding-top: 10px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#components-layout-demo-custom-trigger .trigger {
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 64px;
|
||||||
|
padding: 0 24px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color .3s;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,309 @@
|
|||||||
|
<template>
|
||||||
|
|
||||||
|
<a-modal
|
||||||
|
:width="modalWidth"
|
||||||
|
:visible="visible"
|
||||||
|
:title="title"
|
||||||
|
@ok="handleSubmit"
|
||||||
|
@cancel="close"
|
||||||
|
cancelText="关闭"
|
||||||
|
style="margin-top: -70px"
|
||||||
|
wrapClassName="ant-modal-cust-warp"
|
||||||
|
>
|
||||||
|
<a-row :gutter="10" style="background-color: #ececec; padding: 10px; margin: -10px">
|
||||||
|
<a-col :md="6" :sm="24">
|
||||||
|
<a-card :bordered="false">
|
||||||
|
<!--组织机构-->
|
||||||
|
<a-directory-tree
|
||||||
|
selectable
|
||||||
|
:selectedKeys="selectedKeys"
|
||||||
|
:checkStrictly="true"
|
||||||
|
@select="this.onSelect"
|
||||||
|
:dropdownStyle="{maxHeight:'200px',overflow:'auto'}"
|
||||||
|
:treeData="departTree"
|
||||||
|
/>
|
||||||
|
</a-card>
|
||||||
|
</a-col>
|
||||||
|
<a-col :md="18" :sm="24">
|
||||||
|
<a-card :bordered="false">
|
||||||
|
用户账号:
|
||||||
|
<a-input-search
|
||||||
|
:style="{width:'150px',marginBottom:'15px'}"
|
||||||
|
placeholder="请输入用户名搜索"
|
||||||
|
v-model="queryParam.username"
|
||||||
|
@search="onSearch"
|
||||||
|
/>
|
||||||
|
<a-button @click="searchReset" style="margin-left: 20px" icon="redo">重置</a-button>
|
||||||
|
<!--用户列表-->
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
:scroll="scrollTrigger"
|
||||||
|
size="middle"
|
||||||
|
rowKey="id"
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||||
|
@change="handleTableChange">
|
||||||
|
</a-table>
|
||||||
|
</a-card>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-modal>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { filterObj } from '@/utils/util'
|
||||||
|
import { queryDepartTreeList, getUserList, queryUserByDepId, queryUserRoleMap } from '@/api/api'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'JSearchUserByDepModal',
|
||||||
|
components: {},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
queryParam: {},
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '用户账号',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'username'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '真实姓名',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'realname'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '角色名称',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'roleName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '性别',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'sex',
|
||||||
|
customRender: function(text) {
|
||||||
|
if (text === 1) {
|
||||||
|
return '男'
|
||||||
|
} else if (text === 2) {
|
||||||
|
return '女'
|
||||||
|
} else {
|
||||||
|
return text
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '手机号码',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'phone'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '邮箱',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'email'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
scrollTrigger: {},
|
||||||
|
dataSource: [],
|
||||||
|
userDataSource:[],
|
||||||
|
selectedKeys: [],
|
||||||
|
userNameArr: [],
|
||||||
|
departName: '',
|
||||||
|
userRolesMap: {},
|
||||||
|
title: '',
|
||||||
|
ipagination: {
|
||||||
|
current: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
pageSizeOptions: ['10', '20', '30'],
|
||||||
|
showTotal: (total, range) => {
|
||||||
|
return range[0] + '-' + range[1] + ' 共' + total + '条'
|
||||||
|
},
|
||||||
|
showQuickJumper: true,
|
||||||
|
showSizeChanger: true,
|
||||||
|
total: 0
|
||||||
|
},
|
||||||
|
isorter: {
|
||||||
|
column: 'createTime',
|
||||||
|
order: 'desc'
|
||||||
|
},
|
||||||
|
selectedRowKeys: [],
|
||||||
|
selectedRows: [],
|
||||||
|
modalWidth: 1250,
|
||||||
|
departTree: [],
|
||||||
|
visible: false,
|
||||||
|
form: this.$form.createForm(this)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
// 该方法触发屏幕自适应
|
||||||
|
this.resetScreenSize();
|
||||||
|
this.queryUserRoleMap();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
loadData(arg) {
|
||||||
|
if (arg === 1) {
|
||||||
|
this.ipagination.current = 1;
|
||||||
|
}
|
||||||
|
let params = this.getQueryParams();//查询条件
|
||||||
|
getUserList(params).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.dataSource = res.result.records;
|
||||||
|
this.userDataSource = res.result.records;
|
||||||
|
this.assignRoleName(this.dataSource);
|
||||||
|
this.ipagination.total = res.result.total;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
queryUserRoleMap(){
|
||||||
|
queryUserRoleMap().then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.userRolesMap = res.result;
|
||||||
|
this.loadData();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 触发屏幕自适应
|
||||||
|
resetScreenSize() {
|
||||||
|
let screenWidth = document.body.clientWidth;
|
||||||
|
if (screenWidth < 500) {
|
||||||
|
this.scrollTrigger = { x: 800 };
|
||||||
|
} else {
|
||||||
|
this.scrollTrigger = {};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
showModal() {
|
||||||
|
this.visible = true;
|
||||||
|
this.assignRoleName(this.dataSource);
|
||||||
|
this.queryDepartTree();
|
||||||
|
this.form.resetFields();
|
||||||
|
},
|
||||||
|
getQueryParams() {
|
||||||
|
let param = Object.assign({}, this.queryParam, this.isorter);
|
||||||
|
param.field = this.getQueryField();
|
||||||
|
param.pageNo = this.ipagination.current;
|
||||||
|
param.pageSize = this.ipagination.pageSize;
|
||||||
|
return filterObj(param);
|
||||||
|
},
|
||||||
|
getQueryField() {
|
||||||
|
let str = 'id,';
|
||||||
|
for (let a = 0; a < this.columns.length; a++) {
|
||||||
|
str += ',' + this.columns[a].dataIndex;
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
searchReset(num) {
|
||||||
|
let that = this;
|
||||||
|
if (num !== 0) {
|
||||||
|
that.dataSource = that.userDataSource;
|
||||||
|
}
|
||||||
|
that.selectedRowKeys = [];
|
||||||
|
that.userNameArr = [];
|
||||||
|
that.queryParam = {};
|
||||||
|
that.selectedKeys = [];
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.searchReset(0);
|
||||||
|
this.visible = false;
|
||||||
|
},
|
||||||
|
handleTableChange(pagination, filters, sorter) {
|
||||||
|
//TODO 筛选
|
||||||
|
if (Object.keys(sorter).length > 0) {
|
||||||
|
this.isorter.column = sorter.field;
|
||||||
|
this.isorter.order = 'ascend' === sorter.order ? 'asc' : 'desc';
|
||||||
|
}
|
||||||
|
this.ipagination = pagination;
|
||||||
|
this.loadData();
|
||||||
|
},
|
||||||
|
handleSubmit() {
|
||||||
|
let that = this;
|
||||||
|
for (let i = 0, len = this.selectedRowKeys.length; i < len; i++) {
|
||||||
|
this.getUserNames(this.selectedRowKeys[i]);
|
||||||
|
}
|
||||||
|
that.$emit('ok', that.userNameArr.join(','));
|
||||||
|
that.close();
|
||||||
|
},
|
||||||
|
// 遍历匹配,获取用户真实姓名
|
||||||
|
getUserNames(rowId) {
|
||||||
|
let dataSource = this.dataSource;
|
||||||
|
for (let i = 0, len = dataSource.length; i < len; i++) {
|
||||||
|
if (rowId === dataSource[i].id) {
|
||||||
|
this.userNameArr.push(dataSource[i].realname);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 点击树节点,筛选出对应的用户
|
||||||
|
onSelect(selectedKeys) {
|
||||||
|
if (selectedKeys[0] != null) {
|
||||||
|
this.queryUserByDepId(selectedKeys); // 调用方法根据选选择的id查询用户信息
|
||||||
|
if (this.selectedKeys[0] !== selectedKeys[0]) {
|
||||||
|
this.selectedKeys = [selectedKeys[0]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onSelectChange(selectedRowKeys, selectionRows) {
|
||||||
|
this.selectedRowKeys = selectedRowKeys;
|
||||||
|
this.selectionRows = selectionRows;
|
||||||
|
},
|
||||||
|
onSearch() {
|
||||||
|
this.loadData(1);
|
||||||
|
},
|
||||||
|
// 根据选择的id来查询用户信息
|
||||||
|
queryUserByDepId(selectedKeys) {
|
||||||
|
queryUserByDepId({ id: selectedKeys.toString() }).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.dataSource = res.result;
|
||||||
|
this.ipagination.total = res.result.length;
|
||||||
|
this.assignRoleName(this.dataSource);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 传入用户id,找到匹配的角色名称
|
||||||
|
queryUserRole(userId) {
|
||||||
|
let map = this.userRolesMap;
|
||||||
|
let roleName = [];
|
||||||
|
for (var key in map) {
|
||||||
|
if (userId === key) {
|
||||||
|
roleName.push(map[key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return roleName.join(',');
|
||||||
|
},
|
||||||
|
queryDepartTree() {
|
||||||
|
queryDepartTreeList().then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.departTree = res.result;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 为角色名称赋值
|
||||||
|
assignRoleName(data) {
|
||||||
|
let userId = '';
|
||||||
|
let role = '';
|
||||||
|
for (let i = 0, length = data.length; i < length; i++) {
|
||||||
|
userId = this.dataSource[i].id;
|
||||||
|
role = this.queryUserRole(userId);
|
||||||
|
this.dataSource[i].roleName = role;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
modalFormOk() {
|
||||||
|
this.loadData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.ant-table-tbody .ant-table-row td {
|
||||||
|
padding-top: 10px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#components-layout-demo-custom-trigger .trigger {
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 64px;
|
||||||
|
padding: 0 24px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color .3s;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,87 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<a-modal
|
||||||
|
:title="title"
|
||||||
|
:width="800"
|
||||||
|
:visible="visible"
|
||||||
|
:confirmLoading="confirmLoading"
|
||||||
|
@ok="handleSubmit"
|
||||||
|
@cancel="handleCancel">
|
||||||
|
<div>
|
||||||
|
<a-form-item label="用户名:" :label-col="{ span: 5 }" :wrapper-col="{ span: 12 }">
|
||||||
|
<a-input-search placeholder="点击右侧按钮选择用户" disabled @search="onSearch" v-model="userNames">
|
||||||
|
<a-button slot="enterButton" icon="search">选择</a-button>
|
||||||
|
</a-input-search>
|
||||||
|
</a-form-item>
|
||||||
|
</div>
|
||||||
|
</a-modal>
|
||||||
|
|
||||||
|
<!-- 用户查询列表 -->
|
||||||
|
<select-user-list-modal ref="selectUserListModal" @ok="getUserCallBack"></select-user-list-modal>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {getUserList} from '@/api/api'
|
||||||
|
import SelectUserListModal from './modal/SelectUserListModal'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "SelectUserModal",
|
||||||
|
components: {
|
||||||
|
SelectUserListModal,
|
||||||
|
},
|
||||||
|
props: ['taskId'],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: "操作",
|
||||||
|
visible: false,
|
||||||
|
selectUserListVisible: false,
|
||||||
|
model: {},
|
||||||
|
confirmLoading: false,
|
||||||
|
userNames: '',
|
||||||
|
userKeys: '',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
open() {
|
||||||
|
this.userNames = ''
|
||||||
|
this.userKeys = ''
|
||||||
|
this.visible = true;
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.$emit('close');
|
||||||
|
this.visible = false;
|
||||||
|
},
|
||||||
|
handleCancel() {
|
||||||
|
this.close()
|
||||||
|
},
|
||||||
|
onSearch() {
|
||||||
|
this.$refs.selectUserListModal.open();
|
||||||
|
},
|
||||||
|
getUserCallBack(selectionRows) {
|
||||||
|
console.log(selectionRows)
|
||||||
|
let names = ''
|
||||||
|
let keys = ''
|
||||||
|
for (let row of selectionRows) {
|
||||||
|
names = row.realname + "," + names
|
||||||
|
keys = row.username + "," + keys
|
||||||
|
}
|
||||||
|
this.userNames = names
|
||||||
|
this.userKeys = keys
|
||||||
|
|
||||||
|
console.log('--userkeys--' + this.userKeys)
|
||||||
|
},
|
||||||
|
handleSubmit() {
|
||||||
|
console.log("taskId: "+ this.taskId)
|
||||||
|
this.$emit('ok', this.userKeys,this.taskId);
|
||||||
|
this.close()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,308 @@
|
|||||||
|
<template>
|
||||||
|
<a-modal
|
||||||
|
:width="modalWidth"
|
||||||
|
:visible="visible"
|
||||||
|
:title="title"
|
||||||
|
@ok="handleSubmit"
|
||||||
|
@cancel="close"
|
||||||
|
cancelText="关闭"
|
||||||
|
style="margin-top: -70px"
|
||||||
|
wrapClassName="ant-modal-cust-warp"
|
||||||
|
>
|
||||||
|
<a-row :gutter="10" style="background-color: #ececec; padding: 10px; margin: -10px">
|
||||||
|
<a-col :md="6" :sm="24">
|
||||||
|
<a-card :bordered="false">
|
||||||
|
<!--组织机构-->
|
||||||
|
<a-directory-tree
|
||||||
|
selectable
|
||||||
|
:selectedKeys="selectedKeys"
|
||||||
|
:checkStrictly="true"
|
||||||
|
@select="this.onSelect"
|
||||||
|
:dropdownStyle="{maxHeight:'200px',overflow:'auto'}"
|
||||||
|
:treeData="departTree"
|
||||||
|
/>
|
||||||
|
</a-card>
|
||||||
|
</a-col>
|
||||||
|
<a-col :md="18" :sm="24">
|
||||||
|
<a-card :bordered="false">
|
||||||
|
用户账号:
|
||||||
|
<a-input-search
|
||||||
|
:style="{width:'150px',marginBottom:'15px'}"
|
||||||
|
placeholder=""
|
||||||
|
v-model="queryParam.username"
|
||||||
|
@search="onSearch"
|
||||||
|
/>
|
||||||
|
<a-button @click="searchReset" style="margin-left: 10px" icon="redo">重置</a-button>
|
||||||
|
<!--用户列表-->
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
:scroll="scrollTrigger"
|
||||||
|
size="middle"
|
||||||
|
rowKey="id"
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:pagination="ipagination"
|
||||||
|
style="background-color: white"
|
||||||
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||||
|
@change="handleTableChange">
|
||||||
|
</a-table>
|
||||||
|
</a-card>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { filterObj } from '@/utils/util'
|
||||||
|
import { queryDepartTreeList, getUserList, queryUserByDepId, queryUserRoleMap } from '@/api/api'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SearchUserByDepModal',
|
||||||
|
components: {
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
queryParam: {},
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '用户账号',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'username'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '真实姓名',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'realname'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '角色名称',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'roleName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '性别',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'sex',
|
||||||
|
customRender: function(text) {
|
||||||
|
if (text === 1) {
|
||||||
|
return '男'
|
||||||
|
} else if (text === 2) {
|
||||||
|
return '女'
|
||||||
|
} else {
|
||||||
|
return text
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '手机号码',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'phone'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '邮箱',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'email'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
scrollTrigger:{},
|
||||||
|
dataSource: [],
|
||||||
|
selectedKeys: [],
|
||||||
|
userNames: [],
|
||||||
|
departName: '',
|
||||||
|
userRolesMap: {},
|
||||||
|
title: '',
|
||||||
|
ipagination: {
|
||||||
|
current: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
pageSizeOptions: ['10', '20', '30'],
|
||||||
|
showTotal: (total, range) => {
|
||||||
|
return range[0] + '-' + range[1] + ' 共' + total + '条'
|
||||||
|
},
|
||||||
|
showQuickJumper: true,
|
||||||
|
showSizeChanger: true,
|
||||||
|
total: 0
|
||||||
|
},
|
||||||
|
isorter: {
|
||||||
|
column: 'createTime',
|
||||||
|
order: 'desc'
|
||||||
|
},
|
||||||
|
selectedRowKeys: [],
|
||||||
|
selectedRows: [],
|
||||||
|
userData: [],
|
||||||
|
modalWidth: 1250,
|
||||||
|
departTree: [],
|
||||||
|
visible: false,
|
||||||
|
form: this.$form.createForm(this),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
// 该方法触发屏幕自适应
|
||||||
|
this.resetScreenSize();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
loadData(arg) {
|
||||||
|
if (arg === 1) {
|
||||||
|
this.ipagination.current = 1;
|
||||||
|
}
|
||||||
|
let params = this.getQueryParams();//查询条件
|
||||||
|
getUserList(params).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.dataSource = res.result.records;
|
||||||
|
this.assignRoleName(this.dataSource);
|
||||||
|
this.userData = res.result.records;
|
||||||
|
this.ipagination.total = res.result.total;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
queryUserRoleMap().then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.userRolesMap = res.result;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 触发屏幕自适应
|
||||||
|
resetScreenSize(){
|
||||||
|
let screenWidth = document.body.clientWidth;
|
||||||
|
if(screenWidth < 500){
|
||||||
|
this.scrollTrigger = {x : 800};
|
||||||
|
}else{
|
||||||
|
this.scrollTrigger = {};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
showModal() {
|
||||||
|
this.visible = true;
|
||||||
|
this.assignRoleName(this.dataSource);
|
||||||
|
this.queryDepartTree();
|
||||||
|
this.form.resetFields();
|
||||||
|
this.loadData(1);
|
||||||
|
},
|
||||||
|
getQueryParams() {
|
||||||
|
let param = Object.assign({}, this.queryParam, this.isorter);
|
||||||
|
param.field = this.getQueryField();
|
||||||
|
param.pageNo = this.ipagination.current;
|
||||||
|
param.pageSize = this.ipagination.pageSize;
|
||||||
|
return filterObj(param);
|
||||||
|
},
|
||||||
|
getQueryField() {
|
||||||
|
let str = 'id,';
|
||||||
|
for (let a = 0; a < this.columns.length; a++) {
|
||||||
|
str += ',' + this.columns[a].dataIndex;
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
searchReset(num) {
|
||||||
|
let that = this;
|
||||||
|
if(num !== 0){
|
||||||
|
that.loadData(1);
|
||||||
|
}
|
||||||
|
that.selectedRowKeys = [];
|
||||||
|
that.userNames = [];
|
||||||
|
that.queryParam = {};
|
||||||
|
that.selectedKeys = [];
|
||||||
|
that.userNames = [];
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.$emit('close');
|
||||||
|
this.searchReset(0);
|
||||||
|
this.visible = false;
|
||||||
|
},
|
||||||
|
handleTableChange(pagination, filters, sorter) {
|
||||||
|
//TODO 筛选
|
||||||
|
if (Object.keys(sorter).length > 0) {
|
||||||
|
this.isorter.column = sorter.field;
|
||||||
|
this.isorter.order = 'ascend' === sorter.order ? 'asc' : 'desc';
|
||||||
|
}
|
||||||
|
this.ipagination = pagination;
|
||||||
|
this.loadData();
|
||||||
|
},
|
||||||
|
handleSubmit() {
|
||||||
|
const that = this;
|
||||||
|
for (let i = 0, len = this.selectedRowKeys.length; i < len; i++) {
|
||||||
|
this.getUserNames(this.selectedRowKeys[i]);
|
||||||
|
}
|
||||||
|
that.$emit('ok', that.userNames.join(','));
|
||||||
|
that.close();
|
||||||
|
},
|
||||||
|
// 遍历匹配,获取用户真实姓名
|
||||||
|
getUserNames(rowId) {
|
||||||
|
let dataSource = this.dataSource;
|
||||||
|
for (let i = 0, len = dataSource.length; i < len; i++) {
|
||||||
|
if (rowId === dataSource[i].id) {
|
||||||
|
this.userNames.push(dataSource[i].realname);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 点击树节点,筛选出对应的用户
|
||||||
|
onSelect(selectedKeys) {
|
||||||
|
if (selectedKeys[0] != null) {
|
||||||
|
this.queryUser(selectedKeys) // 调用方法根据选选择的id查询用户信息
|
||||||
|
if (this.selectedKeys[0] !== selectedKeys[0]) {
|
||||||
|
this.selectedKeys = [selectedKeys[0]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onSelectChange(selectedRowKeys, selectionRows) {
|
||||||
|
this.selectedRowKeys = selectedRowKeys;
|
||||||
|
this.selectionRows = selectionRows;
|
||||||
|
},
|
||||||
|
onSearch() {
|
||||||
|
this.loadData(1);
|
||||||
|
},
|
||||||
|
// 根据选择的id来查询用户信息
|
||||||
|
queryUser(selectedKeys) {
|
||||||
|
queryUserByDepId({ id: selectedKeys.toString() }).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.ipagination.total = res.result.length;
|
||||||
|
this.dataSource = res.result;
|
||||||
|
this.assignRoleName(this.dataSource);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 传入用户id,找到匹配的角色名称
|
||||||
|
queryUserRole(userId) {
|
||||||
|
let map = this.userRolesMap;
|
||||||
|
let roleName = [];
|
||||||
|
for (var key in map) {
|
||||||
|
if (userId === key) {
|
||||||
|
roleName.push(map[key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return roleName.join(',');
|
||||||
|
},
|
||||||
|
queryDepartTree() {
|
||||||
|
queryDepartTreeList().then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.departTree = res.result;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 为角色名称赋值
|
||||||
|
assignRoleName(data) {
|
||||||
|
let userId = '';
|
||||||
|
let role = '';
|
||||||
|
for (let i = 0, length = data.length; i < length; i++) {
|
||||||
|
userId = this.dataSource[i].id;
|
||||||
|
role = this.queryUserRole(userId);
|
||||||
|
this.dataSource[i].roleName = role;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
modalFormOk() {
|
||||||
|
this.loadData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.ant-table-tbody .ant-table-row td {
|
||||||
|
padding-top: 10px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#components-layout-demo-custom-trigger .trigger {
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 64px;
|
||||||
|
padding: 0 24px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color .3s;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,276 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<a-modal
|
||||||
|
centered
|
||||||
|
:title="title"
|
||||||
|
:width="1000"
|
||||||
|
:visible="visible"
|
||||||
|
@ok="handleOk"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
cancelText="关闭">
|
||||||
|
<a-row :gutter="18">
|
||||||
|
<a-col :span="16">
|
||||||
|
<a-card title="选择人员" :bordered=true>
|
||||||
|
<!-- 查询区域 -->
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
|
||||||
|
<a-col :span="10">
|
||||||
|
<a-form-item label="姓名">
|
||||||
|
<a-input placeholder="请输入姓名" v-model="queryParam.name"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="8" >
|
||||||
|
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
|
||||||
|
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
|
||||||
|
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
|
||||||
|
</span>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
<!-- table区域-begin -->
|
||||||
|
<div>
|
||||||
|
<a-table
|
||||||
|
size="small"
|
||||||
|
bordered
|
||||||
|
rowKey="id"
|
||||||
|
:columns="columns1"
|
||||||
|
:dataSource="dataSource1"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:loading="loading"
|
||||||
|
:scroll="{ y: 240 }"
|
||||||
|
:rowSelection="{selectedRowKeys: selectedRowKeys,onSelectAll:onSelectAll,onSelect:onSelect,onChange: onSelectChange}"
|
||||||
|
@change="handleTableChange">
|
||||||
|
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
<!-- table区域-end -->
|
||||||
|
</a-card>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="8">
|
||||||
|
<a-card title="用户选择" :bordered=true>
|
||||||
|
<!-- table区域-begin -->
|
||||||
|
<div>
|
||||||
|
<a-table
|
||||||
|
size="small"
|
||||||
|
bordered
|
||||||
|
rowKey="id"
|
||||||
|
:columns="columns2"
|
||||||
|
:dataSource="dataSource2"
|
||||||
|
:loading="loading"
|
||||||
|
:scroll="{ y: 240 }"
|
||||||
|
>
|
||||||
|
<span slot="action" slot-scope="text, record">
|
||||||
|
<a-button type="primary" size="small" @click="handleDelete(record)" icon="delete">删除</a-button>
|
||||||
|
</span>
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
<!-- table区域-end -->
|
||||||
|
</a-card>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-modal>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { filterObj } from '@/utils/util'
|
||||||
|
import { getAction } from '@/api/manage'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "SelectDemoModal",
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
title: "用户列表",
|
||||||
|
names: [],
|
||||||
|
visible: false,
|
||||||
|
placement: 'right',
|
||||||
|
description: '人员管理页面',
|
||||||
|
// 查询条件
|
||||||
|
queryParam: {},
|
||||||
|
// 表头
|
||||||
|
columns1: [
|
||||||
|
{
|
||||||
|
title: '#',
|
||||||
|
dataIndex: '',
|
||||||
|
key:'rowIndex',
|
||||||
|
width:50,
|
||||||
|
align:"center",
|
||||||
|
customRender:function (t,r,index) {
|
||||||
|
return parseInt(index)+1;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '姓名',
|
||||||
|
align:"center",
|
||||||
|
width:113,
|
||||||
|
dataIndex: 'name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '年龄',
|
||||||
|
align:"center",
|
||||||
|
width:100,
|
||||||
|
dataIndex: 'age'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '出生日期',
|
||||||
|
align:"center",
|
||||||
|
width:100,
|
||||||
|
dataIndex: 'birthday'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
columns2: [
|
||||||
|
|
||||||
|
{
|
||||||
|
title: '用户账号',
|
||||||
|
align:"center",
|
||||||
|
width:100,
|
||||||
|
dataIndex: 'name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
dataIndex: 'action',
|
||||||
|
align:"center",
|
||||||
|
width:100,
|
||||||
|
scopedSlots: { customRender: 'action' },
|
||||||
|
}
|
||||||
|
],
|
||||||
|
//数据集
|
||||||
|
dataSource1:[],
|
||||||
|
dataSource2:[],
|
||||||
|
// 分页参数
|
||||||
|
ipagination:{
|
||||||
|
current: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
pageSizeOptions: ['10', '20', '30'],
|
||||||
|
showTotal: (total, range) => {
|
||||||
|
return range[0] + "-" + range[1] + " 共" + total + "条"
|
||||||
|
},
|
||||||
|
showQuickJumper: true,
|
||||||
|
showSizeChanger: true,
|
||||||
|
total: 0
|
||||||
|
},
|
||||||
|
isorter:{
|
||||||
|
column: 'createTime',
|
||||||
|
order: 'desc',
|
||||||
|
},
|
||||||
|
loading:false,
|
||||||
|
selectedRowKeys: [],
|
||||||
|
selectedRows: [],
|
||||||
|
url: {
|
||||||
|
list: "/test/jeecgDemo/list",
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.loadData();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
searchQuery(){
|
||||||
|
this.loadData(1);
|
||||||
|
},
|
||||||
|
searchReset(){
|
||||||
|
this.queryParam={};
|
||||||
|
this.loadData(1);
|
||||||
|
},
|
||||||
|
handleCancel() {
|
||||||
|
this.visible = false;
|
||||||
|
},
|
||||||
|
handleOk() {
|
||||||
|
this.$emit("selectFinished",this.dataSource2);
|
||||||
|
this.visible = false;
|
||||||
|
},
|
||||||
|
add() {
|
||||||
|
this.visible = true;
|
||||||
|
},
|
||||||
|
loadData (arg){
|
||||||
|
//加载数据 若传入参数1则加载第一页的内容
|
||||||
|
if(arg===1){
|
||||||
|
this.ipagination.current = 1;
|
||||||
|
}
|
||||||
|
var params = this.getQueryParams();//查询条件
|
||||||
|
getAction(this.url.list,params).then((res)=>{
|
||||||
|
if(res.success){
|
||||||
|
this.dataSource1 = res.result.records;
|
||||||
|
this.ipagination.total = res.result.total;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getQueryParams(){
|
||||||
|
var param = Object.assign({}, this.queryParam,this.isorter);
|
||||||
|
param.field = this.getQueryField();
|
||||||
|
param.pageNo = this.ipagination.current;
|
||||||
|
param.pageSize = this.ipagination.pageSize;
|
||||||
|
return filterObj(param);
|
||||||
|
},
|
||||||
|
getQueryField(){
|
||||||
|
//TODO 字段权限控制
|
||||||
|
},
|
||||||
|
onSelectAll (selected, selectedRows, changeRows) {
|
||||||
|
if(selected===true){
|
||||||
|
for(var a = 0;a<changeRows.length;a++){
|
||||||
|
this.dataSource2.push(changeRows[a]);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
for(var b = 0;b<changeRows.length;b++){
|
||||||
|
this.dataSource2.splice(this.dataSource2.indexOf(changeRows[b]),1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// console.log(selected, selectedRows, changeRows);
|
||||||
|
},
|
||||||
|
onSelect (record,selected) {
|
||||||
|
if(selected===true){
|
||||||
|
this.dataSource2.push(record);
|
||||||
|
}else{
|
||||||
|
var index = this.dataSource2.indexOf(record);
|
||||||
|
//console.log();
|
||||||
|
if(index >=0 ){
|
||||||
|
this.dataSource2.splice(this.dataSource2.indexOf(record),1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onSelectChange (selectedRowKeys,selectedRows) {
|
||||||
|
this.selectedRowKeys = selectedRowKeys;
|
||||||
|
this.selectionRows = selectedRows;
|
||||||
|
},
|
||||||
|
onClearSelected(){
|
||||||
|
this.selectedRowKeys = [];
|
||||||
|
this.selectionRows = [];
|
||||||
|
},
|
||||||
|
handleDelete: function(record){
|
||||||
|
this.dataSource2.splice(this.dataSource2.indexOf(record),1);
|
||||||
|
},
|
||||||
|
handleTableChange(pagination, filters, sorter){
|
||||||
|
//分页、排序、筛选变化时触发
|
||||||
|
console.log(sorter);
|
||||||
|
//TODO 筛选
|
||||||
|
if (Object.keys(sorter).length>0){
|
||||||
|
this.isorter.column = sorter.field;
|
||||||
|
this.isorter.order = "ascend"==sorter.order?"asc":"desc"
|
||||||
|
}
|
||||||
|
this.ipagination = pagination;
|
||||||
|
this.loadData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.ant-card-body .table-operator{
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
.ant-table-tbody .ant-table-row td{
|
||||||
|
padding-top:15px;
|
||||||
|
padding-bottom:15px;
|
||||||
|
}
|
||||||
|
.anty-row-operator button{margin: 0 5px}
|
||||||
|
.ant-btn-danger{background-color: #ffffff}
|
||||||
|
|
||||||
|
.ant-modal-cust-warp{height: 100%}
|
||||||
|
.ant-modal-cust-warp .ant-modal-body{height:calc(100% - 110px) !important;overflow-y: auto}
|
||||||
|
.ant-modal-cust-warp .ant-modal-content{height:90% !important;overflow-y: hidden}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,122 @@
|
|||||||
|
<template>
|
||||||
|
<a-modal
|
||||||
|
title="用户列表"
|
||||||
|
:width="1000"
|
||||||
|
:visible="visible"
|
||||||
|
:confirmLoading="confirmLoading"
|
||||||
|
@ok="handleSubmit"
|
||||||
|
@cancel="handleCancel">
|
||||||
|
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
bordered
|
||||||
|
size="middle"
|
||||||
|
rowKey="id"
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:loading="loading"
|
||||||
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"></a-table>
|
||||||
|
</a-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {getUserList} from '@/api/api'
|
||||||
|
import {JeecgListMixin} from '@/mixins/JeecgListMixin'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "SelectUserListModal",
|
||||||
|
mixins: [JeecgListMixin],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: "操作",
|
||||||
|
visible: false,
|
||||||
|
model: {},
|
||||||
|
confirmLoading: false,
|
||||||
|
url: {
|
||||||
|
add: "/act/model/create",
|
||||||
|
list: "/sys/user/list"
|
||||||
|
},
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '用户账号',
|
||||||
|
align: "center",
|
||||||
|
dataIndex: 'username',
|
||||||
|
fixed: 'left',
|
||||||
|
width: 200
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '用户真实姓名',
|
||||||
|
align: "center",
|
||||||
|
dataIndex: 'realname',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '性别',
|
||||||
|
align: "center",
|
||||||
|
dataIndex: 'sex_dictText'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '手机号码',
|
||||||
|
align: "center",
|
||||||
|
dataIndex: 'phone'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '邮箱',
|
||||||
|
align: "center",
|
||||||
|
dataIndex: 'email'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '状态',
|
||||||
|
align: "center",
|
||||||
|
dataIndex: 'status_dictText'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
//Step.2 加载用户数据
|
||||||
|
getUserList().then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.dataSource = res.result.records;
|
||||||
|
this.ipagination.total = res.result.total;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
open() {
|
||||||
|
this.visible = true;
|
||||||
|
|
||||||
|
//Step.1 清空选中用户
|
||||||
|
this.selectedRowKeys = []
|
||||||
|
this.selectedRows = []
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.$emit('close');
|
||||||
|
this.visible = false;
|
||||||
|
},
|
||||||
|
handleChange(info) {
|
||||||
|
let file = info.file;
|
||||||
|
if (file.response.success) {
|
||||||
|
this.$message.success(file.response.message);
|
||||||
|
this.$emit('ok');
|
||||||
|
this.close()
|
||||||
|
} else {
|
||||||
|
this.$message.warn(file.response.message);
|
||||||
|
this.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
handleCancel() {
|
||||||
|
this.close()
|
||||||
|
},
|
||||||
|
handleSubmit() {
|
||||||
|
this.$emit('ok', this.selectionRows);
|
||||||
|
this.close()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
/**
|
||||||
|
* 邮箱
|
||||||
|
* @param {*} s
|
||||||
|
*/
|
||||||
|
export function isEmail (s) {
|
||||||
|
return /^([a-zA-Z0-9._-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机号码
|
||||||
|
* @param {*} s
|
||||||
|
*/
|
||||||
|
export function isMobile (s) {
|
||||||
|
return /^1[0-9]{10}$/.test(s)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电话号码
|
||||||
|
* @param {*} s
|
||||||
|
*/
|
||||||
|
export function isPhone (s) {
|
||||||
|
return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* URL地址
|
||||||
|
* @param {*} s
|
||||||
|
*/
|
||||||
|
export function isURL (s) {
|
||||||
|
return /^http[s]?:\/\/.*/.test(s)
|
||||||
|
}
|
||||||
@ -1,13 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<a-card :bordered="false">
|
<a-card :bordered="false">
|
||||||
<a-row>
|
<a-row>
|
||||||
<a-col :span="2">
|
<a-col :md="2" :sm="4">
|
||||||
<a-select defaultValue="POST" style="width: 90px" @change="handleChange" size="large">
|
<a-select defaultValue="POST" style="width: 90px" @change="handleChange" size="large">
|
||||||
<a-select-option value="POST">POST</a-select-option>
|
<a-select-option value="POST">POST</a-select-option>
|
||||||
<!--<a-select-option value="GET">GET</a-select-option>-->
|
<!--<a-select-option value="GET">GET</a-select-option>-->
|
||||||
</a-select>
|
</a-select>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="22">
|
<a-col :md="22" :sm="20">
|
||||||
<a-input-search
|
<a-input-search
|
||||||
placeholder="input send url"
|
placeholder="input send url"
|
||||||
v-model="url"
|
v-model="url"
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<a-input-search
|
||||||
|
v-model="this.selectedUserNames"
|
||||||
|
placeholder="请先选择用户"
|
||||||
|
disabled
|
||||||
|
@search="onSearch"
|
||||||
|
size="large">
|
||||||
|
<a-button slot="enterButton">选择用户</a-button>
|
||||||
|
</a-input-search>
|
||||||
|
|
||||||
|
<j-search-user-by-dep-modal ref="JSearchUserByDepModal" @ok="modalFormOk"></j-search-user-by-dep-modal>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import JSearchUserByDepModal from '@/components/jeecgbiz/JSearchUserByDepModal'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'JSearchUserByDepList',
|
||||||
|
components: {
|
||||||
|
JSearchUserByDepModal,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
selectedUserNames: '',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onSearch() {
|
||||||
|
this.$refs.JSearchUserByDepModal.showModal();
|
||||||
|
this.selectedUserNames = '';
|
||||||
|
this.$refs.JSearchUserByDepModal.title = '根据部门查询用户';
|
||||||
|
},
|
||||||
|
modalFormOk(selectedValue) {
|
||||||
|
this.selectedUserNames = selectedValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,217 @@
|
|||||||
|
<template>
|
||||||
|
<a-card :bordered="false">
|
||||||
|
|
||||||
|
<!-- 查询区域 -->
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
|
||||||
|
<a-col :md="6" :sm="24">
|
||||||
|
<a-form-item label="订单号">
|
||||||
|
<a-input placeholder="请输入订单号" v-model="queryParam.orderCode"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :md="6" :sm="24">
|
||||||
|
<a-form-item label="订单类型">
|
||||||
|
<a-select placeholder="请输入订单类型" v-model="queryParam.ctype">
|
||||||
|
<a-select-option value="1">国内订单</a-select-option>
|
||||||
|
<a-select-option value="2">国际订单</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
<a-col :md="6" :sm="24">
|
||||||
|
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
|
||||||
|
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
|
||||||
|
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
|
||||||
|
</span>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 操作按钮区域 -->
|
||||||
|
<div class="table-operator">
|
||||||
|
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
|
||||||
|
|
||||||
|
<a-dropdown v-if="selectedRowKeys.length > 0">
|
||||||
|
<a-menu slot="overlay">
|
||||||
|
<a-menu-item key="1" @click="batchDel">
|
||||||
|
<a-icon type="delete"/>
|
||||||
|
删除
|
||||||
|
</a-menu-item>
|
||||||
|
</a-menu>
|
||||||
|
<a-button style="margin-left: 8px"> 批量操作
|
||||||
|
<a-icon type="down"/>
|
||||||
|
</a-button>
|
||||||
|
</a-dropdown>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- table区域-begin -->
|
||||||
|
<div>
|
||||||
|
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
|
||||||
|
<i class="anticon anticon-info-circle ant-alert-icon"></i>
|
||||||
|
<span>已选择</span>
|
||||||
|
<a style="font-weight: 600">
|
||||||
|
{{ selectedRowKeys.length }}
|
||||||
|
</a>
|
||||||
|
<span>项</span>
|
||||||
|
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
size="middle"
|
||||||
|
bordered
|
||||||
|
rowKey="id"
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:loading="loading"
|
||||||
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||||
|
@change="handleTableChange">
|
||||||
|
|
||||||
|
<span slot="action" slot-scope="text, record">
|
||||||
|
<a @click="handleEdit(record)">编辑</a>
|
||||||
|
|
||||||
|
<a-divider type="vertical"/>
|
||||||
|
<a-dropdown>
|
||||||
|
<a class="ant-dropdown-link">更多 <a-icon type="down"/></a>
|
||||||
|
<a-menu slot="overlay">
|
||||||
|
<a-menu-item>
|
||||||
|
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
|
||||||
|
<a>删除</a>
|
||||||
|
</a-popconfirm>
|
||||||
|
</a-menu-item>
|
||||||
|
</a-menu>
|
||||||
|
</a-dropdown>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
<!-- table区域-end -->
|
||||||
|
|
||||||
|
<!-- 表单区域 -->
|
||||||
|
<jeecg-order-modal-for-j-editable-table ref="modalForm" @ok="modalFormOk"/>
|
||||||
|
|
||||||
|
</a-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
|
||||||
|
import JeecgOrderModalForJEditableTable from './modules/JeecgOrderModalForJEditableTable'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'JeecgOrderMainListForJEditableTable',
|
||||||
|
mixins: [JeecgListMixin],
|
||||||
|
components: {
|
||||||
|
JeecgOrderModalForJEditableTable
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
description: '订单管理页面',
|
||||||
|
// 请求参数
|
||||||
|
url: {
|
||||||
|
list: '/test/jeecgOrderMain/list',
|
||||||
|
delete: '/test/jeecgOrderMain/delete',
|
||||||
|
deleteBatch: '/test/jeecgOrderMain/deleteBatch'
|
||||||
|
},
|
||||||
|
// 表头
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: '#',
|
||||||
|
dataIndex: '',
|
||||||
|
key: 'rowIndex',
|
||||||
|
width: 60,
|
||||||
|
align: 'center',
|
||||||
|
customRender: function(t, r, index) {
|
||||||
|
return parseInt(index) + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单号',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'orderCode'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单类型',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'ctype',
|
||||||
|
customRender: (text) => {
|
||||||
|
let re = ''
|
||||||
|
if (text === '1') {
|
||||||
|
re = '国内订单'
|
||||||
|
} else if (text === '2') {
|
||||||
|
re = '国际订单'
|
||||||
|
}
|
||||||
|
return re
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单日期',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'orderDate'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单金额',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'orderMoney'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单备注',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'content'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
dataIndex: 'action',
|
||||||
|
align: 'center',
|
||||||
|
scopedSlots: { customRender: 'action' }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
initDictConfig() {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
.ant-card-body .table-operator {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-table-tbody .ant-table-row td {
|
||||||
|
padding-top: 15px;
|
||||||
|
padding-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.anty-row-operator button {
|
||||||
|
margin: 0 5px
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-btn-danger {
|
||||||
|
background-color: #ffffff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-modal-cust-warp {
|
||||||
|
height: 100%
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-modal-cust-warp .ant-modal-body {
|
||||||
|
height: calc(100% - 110px) !important;
|
||||||
|
overflow-y: auto
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-modal-cust-warp .ant-modal-content {
|
||||||
|
height: 90% !important;
|
||||||
|
overflow-y: hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<a-input-search
|
||||||
|
v-model="this.selectedUserNames"
|
||||||
|
placeholder="请先选择用户"
|
||||||
|
disabled
|
||||||
|
@search="onSearch"
|
||||||
|
size="large">
|
||||||
|
<a-button slot="enterButton">选择用户</a-button>
|
||||||
|
</a-input-search>
|
||||||
|
|
||||||
|
<j-search-user-by-dep ref="JSearchUserByDep" @ok="modalFormOk"></j-search-user-by-dep>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import JSearchUserByDep from '@/components/jeecgbiz/JSearchUserByDep'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SearchUserByDepList',
|
||||||
|
components: {
|
||||||
|
JSearchUserByDep,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
selectedUserNames: '',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onSearch() {
|
||||||
|
this.$refs.JSearchUserByDep.showModal();
|
||||||
|
this.selectedUserNames = '';
|
||||||
|
this.$refs.JSearchUserByDep.title = '根据部门查询用户';
|
||||||
|
},
|
||||||
|
modalFormOk(selectedValue) {
|
||||||
|
this.selectedUserNames = selectedValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,270 @@
|
|||||||
|
<template>
|
||||||
|
<a-card :bordered="false">
|
||||||
|
|
||||||
|
<!-- 查询区域 -->
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
|
||||||
|
<a-col :md="6" :sm="24">
|
||||||
|
<a-form-item label="订单号">
|
||||||
|
<a-input placeholder="请输入订单号" v-model="queryParam.orderCode"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :md="6" :sm="24">
|
||||||
|
<a-form-item label="订单类型">
|
||||||
|
<a-select placeholder="请输入订单类型" v-model="queryParam.ctype">
|
||||||
|
<a-select-option value="1">国内订单</a-select-option>
|
||||||
|
<a-select-option value="2">国际订单</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
<a-col :md="6" :sm="24">
|
||||||
|
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
|
||||||
|
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
|
||||||
|
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
|
||||||
|
</span>
|
||||||
|
</a-col>
|
||||||
|
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 操作按钮区域 -->
|
||||||
|
<div class="table-operator">
|
||||||
|
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
|
||||||
|
|
||||||
|
<a-dropdown v-if="selectedRowKeys.length > 0">
|
||||||
|
<a-menu slot="overlay">
|
||||||
|
<a-menu-item key="1" @click="batchDel">
|
||||||
|
<a-icon type="delete"/>
|
||||||
|
删除
|
||||||
|
</a-menu-item>
|
||||||
|
</a-menu>
|
||||||
|
<a-button style="margin-left: 8px"> 批量操作
|
||||||
|
<a-icon type="down"/>
|
||||||
|
</a-button>
|
||||||
|
</a-dropdown>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- table区域-begin -->
|
||||||
|
<div>
|
||||||
|
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
|
||||||
|
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
|
||||||
|
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
bordered
|
||||||
|
rowKey="id"
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:pagination="false"
|
||||||
|
:expandedRowKeys= "expandedRowKeys"
|
||||||
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||||
|
@change="handleTableChange"
|
||||||
|
@expand="handleExpand"
|
||||||
|
>
|
||||||
|
|
||||||
|
<span slot="action" slot-scope="text, record">
|
||||||
|
<a @click="handleEdit(record)">编辑</a>
|
||||||
|
<a-divider type="vertical"/>
|
||||||
|
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
|
||||||
|
<a>删除</a>
|
||||||
|
</a-popconfirm>
|
||||||
|
</span>
|
||||||
|
<a-table
|
||||||
|
slot="expandedRowRender"
|
||||||
|
slot-scope="text"
|
||||||
|
:columns="innerColumns"
|
||||||
|
:dataSource="innerData"
|
||||||
|
size="middle"
|
||||||
|
bordered
|
||||||
|
rowKey="id"
|
||||||
|
:pagination="false"
|
||||||
|
:loading="loading"
|
||||||
|
>
|
||||||
|
</a-table>
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
<!-- table区域-end -->
|
||||||
|
|
||||||
|
<!-- 表单区域 -->
|
||||||
|
<jeecgOrderDMain-modal ref="modalForm" @ok="modalFormOk"></jeecgOrderDMain-modal>
|
||||||
|
</a-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getAction } from '@/api/manage'
|
||||||
|
import JeecgOrderDMainModal from '@/views/jeecg/tablist/form/JeecgOrderDMainModal'
|
||||||
|
import {JeecgListMixin} from '@/mixins/JeecgListMixin'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "TableDemo",
|
||||||
|
mixins: [JeecgListMixin],
|
||||||
|
components: {
|
||||||
|
JeecgOrderDMainModal
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// 子表表头
|
||||||
|
innerColumns: [
|
||||||
|
{
|
||||||
|
title: '客户名',
|
||||||
|
align: "center",
|
||||||
|
width: 100,
|
||||||
|
dataIndex: 'name',
|
||||||
|
key: 'name',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '性别',
|
||||||
|
align: "center",
|
||||||
|
dataIndex: 'sex',
|
||||||
|
customRender: function (text) {
|
||||||
|
if (text == 1) {
|
||||||
|
return "男";
|
||||||
|
} else if (text == 2) {
|
||||||
|
return "女";
|
||||||
|
} else {
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '身份证号码',
|
||||||
|
align: "center",
|
||||||
|
dataIndex: 'idcard',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '电话',
|
||||||
|
dataIndex: 'telphone',
|
||||||
|
align: "center",
|
||||||
|
},
|
||||||
|
|
||||||
|
],
|
||||||
|
innerData: [],
|
||||||
|
expandedRowKeys: [],
|
||||||
|
id: ' ',
|
||||||
|
description: '列表展开子表Demo',
|
||||||
|
// 列表表头
|
||||||
|
columns: [{
|
||||||
|
title: '#',
|
||||||
|
dataIndex: '',
|
||||||
|
key: 'rowIndex',
|
||||||
|
width: 60,
|
||||||
|
align: "center",
|
||||||
|
customRender: function (t, r, index) {
|
||||||
|
return parseInt(index) + 1;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单号',
|
||||||
|
align: "center",
|
||||||
|
dataIndex: 'orderCode'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单类型',
|
||||||
|
align: "center",
|
||||||
|
dataIndex: 'ctype',
|
||||||
|
customRender: (text) => {
|
||||||
|
let re = "";
|
||||||
|
if (text === '1') {
|
||||||
|
re = "国内订单";
|
||||||
|
} else if (text === '2') {
|
||||||
|
re = "国际订单";
|
||||||
|
}
|
||||||
|
return re;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单日期',
|
||||||
|
align: "center",
|
||||||
|
dataIndex: 'orderDate'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单金额',
|
||||||
|
align: "center",
|
||||||
|
dataIndex: 'orderMoney'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单备注',
|
||||||
|
align: "center",
|
||||||
|
dataIndex: 'content'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
dataIndex: 'action',
|
||||||
|
align: "center",
|
||||||
|
scopedSlots: {customRender: 'action'},
|
||||||
|
}],
|
||||||
|
// 分页参数
|
||||||
|
type: "radio",
|
||||||
|
url: {
|
||||||
|
list: "/test/order/orderList",
|
||||||
|
delete: "/test/order/delete",
|
||||||
|
deleteBatch: "/test/order/deleteBatch",
|
||||||
|
customerListByMainId: "/test/order/listOrderCustomerByMainId",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
currentId(){
|
||||||
|
return this.id;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleExpand(expanded, record){
|
||||||
|
this.expandedRowKeys=[];
|
||||||
|
this.innerData=[];
|
||||||
|
if(expanded===true){
|
||||||
|
this.loading = true;
|
||||||
|
this.expandedRowKeys.push(record.id);
|
||||||
|
getAction(this.url.customerListByMainId, {mainId: record.id}).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.loading = false;
|
||||||
|
this.innerData = res.result;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
.ant-card-body .table-operator {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-layout-content {
|
||||||
|
margin: 12px 16px 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-table-tbody .ant-table-row td {
|
||||||
|
padding-top: 15px;
|
||||||
|
padding-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.anty-row-operator button {
|
||||||
|
margin: 0 5px
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-btn-danger {
|
||||||
|
background-color: #ffffff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-modal-cust-warp {
|
||||||
|
height: 100%
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-modal-cust-warp .ant-modal-body {
|
||||||
|
height: calc(100% - 110px) !important;
|
||||||
|
overflow-y: auto
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-modal-cust-warp .ant-modal-content {
|
||||||
|
height: 90% !important;
|
||||||
|
overflow-y: hidden
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,315 @@
|
|||||||
|
<template>
|
||||||
|
<a-card :bordered="false">
|
||||||
|
<a-tabs defaultActiveKey="1" @change="callback">
|
||||||
|
<a-tab-pane tab="柱状图" key="1">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="10">
|
||||||
|
<a-radio-group :value="barType" @change="statisticst">
|
||||||
|
<a-radio-button value="year">按年统计</a-radio-button>
|
||||||
|
<a-radio-button value="month">按月统计</a-radio-button>
|
||||||
|
<a-radio-button value="category">按类别统计</a-radio-button>
|
||||||
|
<a-radio-button value="cabinet">按柜号统计</a-radio-button>
|
||||||
|
</a-radio-group>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="14">
|
||||||
|
<a-form v-if="barType === 'month'" layout="inline" style="margin-top: -4px">
|
||||||
|
<a-form-item label="月份区间">
|
||||||
|
<a-range-picker
|
||||||
|
:placeholder="['开始月份', '结束月份']"
|
||||||
|
format="YYYY-MM"
|
||||||
|
:value="barValue"
|
||||||
|
:mode="barDate"
|
||||||
|
@panelChange="handleBarDate"/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-button style="margin-top: 2px" type="primary" icon="search" @click="queryDatebar">查询</a-button>
|
||||||
|
<a-button style="margin-top: 2px;margin-left: 8px" type="primary" icon="reload" @click="searchReset">重置</a-button>
|
||||||
|
</a-form>
|
||||||
|
</a-col>
|
||||||
|
<bar class="statistic" title="档案统计" :dataSource="countSource"/>
|
||||||
|
</a-row>
|
||||||
|
</a-tab-pane>
|
||||||
|
|
||||||
|
<a-tab-pane tab="饼状图" key="2">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="10">
|
||||||
|
<a-radio-group :value="pieType" @change="statisticst">
|
||||||
|
<a-radio-button value="year">按年统计</a-radio-button>
|
||||||
|
<a-radio-button value="month">按月统计</a-radio-button>
|
||||||
|
<a-radio-button value="category">按类别统计</a-radio-button>
|
||||||
|
<a-radio-button value="cabinet">按柜号统计</a-radio-button>
|
||||||
|
</a-radio-group>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="14">
|
||||||
|
<a-form v-if="pieType === 'month'" layout="inline" style="margin-top: -4px">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-form-item label="月份区间">
|
||||||
|
<a-range-picker
|
||||||
|
:placeholder="['开始月份', '结束月份']"
|
||||||
|
format="YYYY-MM"
|
||||||
|
:value="pieValue"
|
||||||
|
:mode="pieDate"
|
||||||
|
@panelChange="handlePieDate"/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-button style="margin-top: 2px" type="primary" icon="search" @click="queryDatepie">查询</a-button>
|
||||||
|
<a-button style="margin-top: 2px;margin-left: 8px" type="primary" icon="reload" @click="searchReset">重置</a-button>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</a-col>
|
||||||
|
<pie class="statistic" title="档案统计" :dataSource="countSource"/>
|
||||||
|
</a-row>
|
||||||
|
</a-tab-pane>
|
||||||
|
</a-tabs>
|
||||||
|
</a-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Bar from '@/components/chart/Bar'
|
||||||
|
import Pie from '@/components/chart/Pie'
|
||||||
|
import ACol from 'ant-design-vue/es/grid/Col'
|
||||||
|
import { getAction } from '@/api/manage'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'ArchivesStatisticst',
|
||||||
|
components: {
|
||||||
|
ACol,
|
||||||
|
Bar,
|
||||||
|
Pie
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
description: '档案统计页面',
|
||||||
|
// 查询条件
|
||||||
|
queryParam: {},
|
||||||
|
// 数据集
|
||||||
|
countSource: [],
|
||||||
|
// 柱状图
|
||||||
|
barType: 'year',
|
||||||
|
barDate: ['month', 'month'],
|
||||||
|
barValue: [],
|
||||||
|
// 饼状图
|
||||||
|
pieType: 'year',
|
||||||
|
pieDate: ['month', 'month'],
|
||||||
|
pieValue: [],
|
||||||
|
// 统计图类型
|
||||||
|
tabStatus:"bar",
|
||||||
|
url: {
|
||||||
|
getYearCountInfo: "/api/report/getYearCountInfo",
|
||||||
|
getMonthCountInfo:"/api/report/getMonthCountInfo",
|
||||||
|
getCntrNoCountInfo:"/api/report/getCntrNoCountInfo",
|
||||||
|
getCabinetCountInfo:"/api/report/getCabinetCountInfo",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
let url = this.url.getYearCountInfo;
|
||||||
|
this.loadDate(url,'year',{});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
loadDate(url,type,param) {
|
||||||
|
getAction(url,param,'get').then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.countSource = [];
|
||||||
|
if(type === 'year'){
|
||||||
|
this.getYearCountSource(res.result);
|
||||||
|
}
|
||||||
|
if(type === 'month'){
|
||||||
|
this.getMonthCountSource(res.result);
|
||||||
|
}
|
||||||
|
if(type === 'category'){
|
||||||
|
this.getCategoryCountSource(res.result);
|
||||||
|
}
|
||||||
|
if(type === 'cabinet'){
|
||||||
|
this.getCabinetCountSource(res.result);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
var that=this;
|
||||||
|
that.$message.warning(res.message);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getYearCountSource(data){
|
||||||
|
for (let i = 0; i < data.length; i++) {
|
||||||
|
if(this.tabStatus === "bar"){
|
||||||
|
this.countSource.push({
|
||||||
|
x: `${data[i].year}年`,
|
||||||
|
y: data[i].yearcount
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
this.countSource.push({
|
||||||
|
item: `${data[i].year}年`,
|
||||||
|
count:data[i].yearcount
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getMonthCountSource(data){
|
||||||
|
for (let i = 0; i < data.length; i++) {
|
||||||
|
if(this.tabStatus === "bar"){
|
||||||
|
this.countSource.push({
|
||||||
|
x: data[i].month,
|
||||||
|
y: data[i].monthcount
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
this.countSource.push({
|
||||||
|
item: data[i].month,
|
||||||
|
count:data[i].monthcount
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getCategoryCountSource(data){
|
||||||
|
for (let i = 0; i < data.length; i++) {
|
||||||
|
if(this.tabStatus ==="bar"){
|
||||||
|
this.countSource.push({
|
||||||
|
x: data[i].classifyname,
|
||||||
|
y: data[i].cntrnocount
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
this.countSource.push({
|
||||||
|
item: data[i].classifyname,
|
||||||
|
count:data[i].cntrnocount
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getCabinetCountSource(data){
|
||||||
|
for (let i = 0; i < data.length; i++) {
|
||||||
|
if(this.tabStatus === "bar"){
|
||||||
|
this.countSource.push({
|
||||||
|
x: data[i].cabinetname,
|
||||||
|
y: data[i].cabinetcocunt
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
this.countSource.push({
|
||||||
|
item: data[i].cabinetname,
|
||||||
|
count:data[i].cabinetcocunt
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 选择统计图类别
|
||||||
|
callback(key) {
|
||||||
|
if(key === "1"){
|
||||||
|
this.tabStatus = "bar";
|
||||||
|
this.queryDatebar();
|
||||||
|
}else{
|
||||||
|
this.tabStatus = "pie";
|
||||||
|
this.queryDatepie();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 选择统计类别
|
||||||
|
statisticst(e) {
|
||||||
|
if(this.tabStatus === "pie"){
|
||||||
|
this.pieType = e.target.value;
|
||||||
|
this.queryDatepie();
|
||||||
|
}else{
|
||||||
|
this.barType = e.target.value;
|
||||||
|
this.queryDatebar();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 按月份查询
|
||||||
|
queryDatebar(){
|
||||||
|
if(this.barValue.length>0){
|
||||||
|
this.getUrl(this.barType,{startTime:this.barValue[0]._d,endTime:this.barValue[1]._d});
|
||||||
|
}else{
|
||||||
|
this.getUrl(this.barType,{});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
queryDatepie(){
|
||||||
|
if(this.pieValue.length>0){
|
||||||
|
this.getUrl(this.pieType,{startTime:this.pieValue[0]._d,endTime:this.pieValue[1]._d});
|
||||||
|
}else{
|
||||||
|
this.getUrl(this.pieType,{});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
searchReset(){
|
||||||
|
console.log(this.tabStatus);
|
||||||
|
if(this.tabStatus === "pie"){
|
||||||
|
this.pieValue = [];
|
||||||
|
}else{
|
||||||
|
this.barValue = [];
|
||||||
|
}
|
||||||
|
this.getUrl(this.barType,{});
|
||||||
|
},
|
||||||
|
// 选择请求url
|
||||||
|
getUrl(type,param){
|
||||||
|
let url = "";
|
||||||
|
if(type === 'year'){
|
||||||
|
url = this.url.getYearCountInfo;
|
||||||
|
}
|
||||||
|
if(type === 'month'){
|
||||||
|
url = this.url.getMonthCountInfo;
|
||||||
|
}
|
||||||
|
if(type === 'category'){
|
||||||
|
url = this.url.getCntrNoCountInfo;
|
||||||
|
}
|
||||||
|
if(type === 'cabinet'){
|
||||||
|
url = this.url.getCabinetCountInfo;
|
||||||
|
}
|
||||||
|
this.loadDate(url,type,param);
|
||||||
|
},
|
||||||
|
// 选择月份日期
|
||||||
|
handleBarDate(value, mode) {
|
||||||
|
this.barValue = value
|
||||||
|
this.barDate = [
|
||||||
|
mode[0] === 'date' ? 'month' : mode[0],
|
||||||
|
mode[1] === 'date' ? 'month' : mode[1]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
handlePieDate(value, mode) {
|
||||||
|
this.pieValue = value
|
||||||
|
this.pieDate = [
|
||||||
|
mode[0] === 'date' ? 'month' : mode[0],
|
||||||
|
mode[1] === 'date' ? 'month' : mode[1]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
.ant-card-body .table-operator {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-table-tbody .ant-table-row td {
|
||||||
|
padding-top: 15px;
|
||||||
|
padding-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.anty-row-operator button {
|
||||||
|
margin: 0 5px
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-btn-danger {
|
||||||
|
background-color: #ffffff
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-modal-cust-warp {
|
||||||
|
height: 100%
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-modal-cust-warp .ant-modal-body {
|
||||||
|
height: calc(100% - 110px) !important;
|
||||||
|
overflow-y: auto
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-modal-cust-warp .ant-modal-content {
|
||||||
|
height: 90% !important;
|
||||||
|
overflow-y: hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
.statistic {
|
||||||
|
padding: 0px !important;
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.statistic h4 {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center !important;
|
||||||
|
font-size: 24px !important;;
|
||||||
|
}
|
||||||
|
|
||||||
|
.statistic #canvas_1 {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue