Commit dd64481b authored by tianhongyang's avatar tianhongyang

甲方详情 搜索框优化 选择框优化

parent ac457c0b
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
"element-ui": "2.15.12", "element-ui": "2.15.12",
"file-saver": "2.0.5", "file-saver": "2.0.5",
"fuse.js": "6.4.3", "fuse.js": "6.4.3",
"gsap": "^3.12.2",
"highlight.js": "9.18.5", "highlight.js": "9.18.5",
"jquery": "^3.7.0", "jquery": "^3.7.0",
"js-beautify": "1.13.0", "js-beautify": "1.13.0",
...@@ -56,6 +57,7 @@ ...@@ -56,6 +57,7 @@
"quill": "1.3.7", "quill": "1.3.7",
"screenfull": "5.0.2", "screenfull": "5.0.2",
"sortablejs": "^1.15.0", "sortablejs": "^1.15.0",
"uuid": "^9.0.1",
"vue": "2.6.12", "vue": "2.6.12",
"vue-count-to": "1.0.13", "vue-count-to": "1.0.13",
"vue-cropper": "0.5.5", "vue-cropper": "0.5.5",
......
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="16" height="16" viewBox="0 0 16 16"><g><g><g><path d="" fill="#D8D8D8" fill-opacity="0"/><path d="M8,2Q8.04925,2,8.09754,1.990393Q8.14584,1.980785,8.19134,1.96194Q8.23684,1.9430939999999999,8.27778,1.915735Q8.31873,1.888375,8.35355,1.853553Q8.38837,1.818731,8.41573,1.777785Q8.44309,1.736839,8.46194,1.6913420000000001Q8.48078,1.645845,8.49039,1.5975451Q8.5,1.5492457,8.5,1.5Q8.5,1.4507543,8.49039,1.4024549Q8.48078,1.354155,8.46194,1.3086579999999999Q8.44309,1.263161,8.41573,1.222215Q8.38837,1.181269,8.35355,1.146447Q8.31873,1.111625,8.27778,1.084265Q8.23684,1.0569060000000001,8.19134,1.03806Q8.14584,1.019215,8.09754,1.009607Q8.04925,1,8,1L7.99929,1.000001Q5.10025,1.000252,3.05025,3.05025Q1,5.10051,1,8Q1,10.89949,3.05025,12.9497Q5.1005,15,8,15Q10.8995,15,12.9497,12.9497Q15,10.89949,15,8Q15,6.57618,14.4497,5.27513Q13.9184,4.0191,12.9501,3.05065L12.9497,3.05025Q12.8794,2.97993,12.7875,2.9418699999999998Q12.6957,2.90381,12.5962,2.90381Q12.5469,2.90381,12.4986,2.91341Q12.4503,2.92302,12.4049,2.9418699999999998Q12.3594,2.9607099999999997,12.3184,2.98807Q12.2775,3.0154300000000003,12.2426,3.05025Q12.2078,3.08507,12.1805,3.12602Q12.1531,3.16697,12.1343,3.21246Q12.1154,3.2579599999999997,12.1058,3.30626Q12.0962,3.35456,12.0962,3.40381Q12.0962,3.50326,12.1343,3.59515Q12.1723,3.68703,12.2426,3.75736L12.243,3.75773Q13.0734,4.58827,13.5287,5.66468Q14,6.77897,14,8Q14,10.48528,12.2426,12.2426Q10.48528,14,8,14Q5.51472,14,3.75736,12.2426Q2,10.48528,2,8Q2,5.51472,3.75736,3.75736Q5.51472,2,8,2Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="" fill="#D8D8D8" fill-opacity="0"/><path d="M12.14616,6.24824Q11.804549999999999,5.44059,11.18198,4.818019Q11.111650000000001,4.747693,11.019770000000001,4.709633Q10.92788,4.671573,10.82843,4.671573Q10.77918,4.671573,10.730879999999999,4.68118Q10.68258,4.6907879999999995,10.637080000000001,4.709633Q10.59159,4.728479,10.55064,4.755838Q10.509699999999999,4.783198,10.47487,4.81802Q10.44005,4.852841,10.41269,4.893788Q10.38533,4.934734,10.366489999999999,4.980231Q10.34764,5.02573,10.33803,5.0740300000000005Q10.32843,5.12233,10.32843,5.17157Q10.32843,5.27103,10.366489999999999,5.36291Q10.40455,5.4548000000000005,10.47487,5.52513Q10.95953,6.00978,11.225159999999999,6.6378Q11.5,7.28759,11.5,8Q11.5,9.44975,10.47487,10.47487Q9.44975,11.5,8,11.5Q6.55025,11.5,5.52513,10.47487Q4.5,9.44975,4.5,8Q4.5,6.55025,5.52513,5.52513Q6.55025,4.5,8,4.5L8,3.5Q6.1360399999999995,3.5,4.818019,4.818019Q3.5,6.1360399999999995,3.5,8Q3.5,9.863959999999999,4.818019,11.18198Q6.1360399999999995,12.5,8,12.5Q9.863959999999999,12.5,11.18198,11.18198Q12.5,9.863959999999999,12.5,8Q12.5,7.08481,12.14616,6.24824Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1"/></g><g><ellipse cx="8" cy="8" rx="1" ry="1" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="M8 1C8 1 8 1 8 1L8.5 1C8.776142374915397 1 9 1.2238576250846034 9 1.5L9 8C9 8 9 8 9 8L8 8C8 8 8 8 8 8Z" fill="#FFFFFF" fill-opacity="1"/></g></g></g></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="17.2025146484375" height="17.110595703125" viewBox="0 0 17.2025146484375 17.110595703125"><g><g><g transform="matrix(0.9634730815887451,0.2678050994873047,-0.2678050994873047,0.9634730815887451,0.31323258932116005,-1.0652609714268806)"><path d="" fill="#D8D8D8" fill-opacity="0"/><path d="M9.351976079711914,1.1054855871429443Q9.393986079711915,1.0968885871429443,9.433926079711913,1.0812625871429442Q9.473866079711915,1.0656365871429443,9.510556079711915,1.0434375871429444Q9.547246079711915,1.0212395871429443,9.579626079711915,0.9931175871429443Q9.611996079711915,0.9649945871429444,9.639116079711915,0.9317705871429444Q9.666226079711915,0.8985455871429444,9.687286079711914,0.8611885871429443Q9.708346079711914,0.8238325871429444,9.722746079711914,0.7834345871429443Q9.737136079711913,0.7430375871429443,9.744436079711914,0.7007791871429443Q9.751736079711915,0.6585210871429443,9.751736079711915,0.6156365871429443Q9.751736079711915,0.5663908871429444,9.742136079711914,0.5180914871429443Q9.732526079711914,0.46979158714294433,9.713676079711913,0.4242945871429443Q9.694836079711914,0.3787975871429443,9.667476079711914,0.33785158714294433Q9.640116079711914,0.29690558714294435,9.605296079711914,0.26208358714294433Q9.570466079711913,0.2272615871429443,9.529526079711914,0.19990158714294431Q9.488576079711914,0.17254258714294435,9.443076079711915,0.15369658714294432Q9.397586079711914,0.13485158714294432,9.349286079711913,0.1252435871429443Q9.300986079711915,0.11563658714294434,9.251736079711915,0.11563658714294434Q9.201106079711913,0.11563658714294434,9.151506079711915,0.12578758714294436Q8.473826079711914,0.26445858714294435,7.836846079711914,0.5338796871429443Q6.580556079711914,1.0652465871429444,5.611966079711914,2.033836587142944Q3.561716079711914,4.0840765871429445,3.561716079711914,6.983576587142944Q3.561716079711914,9.883076587142945,5.611966079711914,11.933336587142945Q7.662216079711914,13.983536587142945,10.561716079711914,13.983536587142945Q13.461216079711914,13.983536587142945,15.511416079711914,11.933336587142945Q17.561716079711914,9.883076587142945,17.561716079711914,6.983576587142944Q17.561716079711914,5.560116587142945,17.011716079711913,4.259366587142944L17.011516079711914,4.259006587142944L17.011416079711914,4.258706587142944L16.090416079711915,4.6482665871429445L16.090416079711915,4.648326587142944L16.090716079711914,4.649046587142944Q16.561716079711914,5.762976587142944,16.561716079711914,6.983576587142944Q16.561716079711914,9.468866587142944,14.804316079711914,11.226236587142944Q13.046996079711914,12.983536587142945,10.561716079711914,12.983536587142945Q8.076436079711915,12.983536587142945,6.319076079711914,11.226236587142944Q4.561716079711914,9.468866587142944,4.561716079711914,6.983576587142944Q4.561716079711914,4.498296587142944,6.319076079711914,2.7409365871429445Q7.149746079711914,1.9102665871429443,8.226396079711915,1.4548845871429443Q8.771756079711913,1.2242155871429443,9.351976079711914,1.1054855871429443Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1"/></g><g transform="matrix(0.9501094818115234,0.31191641092300415,-0.31191641092300415,0.9501094818115234,1.466013217420695,-1.676830753886975)"><path d="" fill="#D8D8D8" fill-opacity="0"/><path d="M8.612602017211914,4.204861731674194Q8.680472017211914,4.1761547316741945,8.737172017211915,4.129087731674194Q8.793872017211914,4.082019731674194,8.834592017211914,4.020594731674194Q8.875302017211915,3.9591697316741943,8.896562017211913,3.8886107316741945Q8.917822017211915,3.8180521316741944,8.917822017211915,3.7443597316741943Q8.917822017211915,3.695114031674194,8.908212017211914,3.6468146316741943Q8.898602017211914,3.5985147316741943,8.879762017211913,3.553017731674194Q8.860912017211914,3.5075207316741945,8.833552017211915,3.466574731674194Q8.806192017211913,3.4256287316741942,8.771372017211913,3.3908067316741946Q8.736552017211913,3.3559847316741944,8.695602017211915,3.328624731674194Q8.654662017211914,3.3012657316741945,8.609162017211915,3.282419731674194Q8.563662017211914,3.2635747316741943,8.515362017211913,3.2539667316741943Q8.467062017211914,3.2443597316741943,8.417822017211915,3.2443597316741943Q8.316432017211914,3.2443597316741943,8.223042017211913,3.2838577316741944L8.223022017211914,3.283865731674194L8.222872017211914,3.283932731674194Q7.415332017211914,3.6255327316741943,6.792821017211914,4.2480397316741945Q5.474802017211914,5.566059731674194,5.474802017211914,7.430019731674195Q5.474802017211914,9.293979731674195,6.792821017211914,10.611999731674194Q8.110842017211914,11.930019731674195,9.974802017211914,11.930019731674195Q11.838762017211913,11.930019731674195,13.156782017211913,10.611999731674194Q14.474802017211914,9.293979731674195,14.474802017211914,7.430019731674195Q14.474802017211914,6.9706597316741945,14.383492017211914,6.524179731674194L14.383422017211915,6.523819731674195L14.383382017211915,6.523639731674194L13.403692017211913,6.724119731674195L8.612602017211914,4.204861731674194Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1"/></g></g><g transform="matrix(0.7071067690849304,0.7071067690849304,-0.7071067690849304,0.7071067690849304,5.219374692351266,-7.617286286789749)"><path d="M14.716515429687501,2.61707421875L13.8048054296875,3.22488021875L12.8930954296875,2.61707421875Q12.544208429687501,2.38448021875,12.1745094296875,2.58233681875Q11.8048095996875,2.78019421875,11.8048095996875,3.1995092187500003L11.8048095996875,5.68164921875Q11.8048095996875,6.18618921875,12.2834504296875,6.34572921875L13.3045654296875,6.68609921875L13.3045654296875,9.325439218749999Q13.3045654296875,9.37468921875,13.3141754296875,9.422979218750001Q13.3237754296875,9.47127921875,13.3426254296875,9.516779218749999Q13.3614754296875,9.56227921875,13.3888254296875,9.603219218749999Q13.4161854296875,9.644169218750001,13.4510154296875,9.67898921875Q13.4858354296875,9.71381921875,13.5267754296875,9.741169218749999Q13.5677254296875,9.76852921875,13.6132254296875,9.78737921875Q13.6587254296875,9.80621921875,13.7070154296875,9.81582921875Q13.7553154296875,9.825439218749999,13.8045654296875,9.825439218749999Q13.8538154296875,9.825439218749999,13.9021054296875,9.81582921875Q13.9504054296875,9.80621921875,13.9959054296875,9.78737921875Q14.0414054296875,9.76852921875,14.0823454296875,9.741169218749999Q14.1232954296875,9.71381921875,14.1581154296875,9.67898921875Q14.1929454296875,9.644169218750001,14.2202954296875,9.603219218749999Q14.2476554296875,9.56227921875,14.2665054296875,9.516779218749999Q14.2853454296875,9.47127921875,14.2949554296875,9.422979218750001Q14.3045654296875,9.37468921875,14.3045654296875,9.325439218749999L14.3045654296875,6.68626921875L15.3261654296875,6.34572921875Q15.8048054296875,6.18618921875,15.8048054296875,5.68164921875L15.8048054296875,3.1995092187500003Q15.8048054296875,2.78019421875,15.4351054296875,2.58233681875Q15.0654054296875,2.38448021875,14.716515429687501,2.61707421875ZM13.4165154296875,4.16786921875L12.8048054296875,3.76005921875L12.8048054296875,5.46542921875L13.8048054296875,5.79875921875L14.8048054296875,5.46542921875L14.8048054296875,3.76005921875L14.1930954296875,4.16786921875Q13.8048054296875,4.42672921875,13.4165154296875,4.16786921875Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1"/></g></g></svg>
\ No newline at end of file \ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="16" height="16" viewBox="0 0 16 16"><g><g><g><ellipse cx="8" cy="8" rx="4.5" ry="4.5" fill="#FFFFFF" fill-opacity="0.5"/></g><g><path d="" fill="#D8D8D8" fill-opacity="0"/><path d="M8,2Q8.04925,2,8.09754,1.990393Q8.14584,1.980785,8.19134,1.96194Q8.23684,1.9430939999999999,8.27778,1.915735Q8.31873,1.888375,8.35355,1.853553Q8.38837,1.818731,8.41573,1.777785Q8.44309,1.736839,8.46194,1.6913420000000001Q8.48078,1.645845,8.49039,1.5975451Q8.5,1.5492457,8.5,1.5Q8.5,1.4507543,8.49039,1.4024549Q8.48078,1.354155,8.46194,1.3086579999999999Q8.44309,1.263161,8.41573,1.222215Q8.38837,1.181269,8.35355,1.146447Q8.31873,1.111625,8.27778,1.084265Q8.23684,1.0569060000000001,8.19134,1.03806Q8.14584,1.019215,8.09754,1.009607Q8.04925,1,8,1L7.99929,1.000001Q5.10025,1.000252,3.05025,3.05025Q1,5.10051,1,8Q1,10.89949,3.05025,12.9497Q5.1005,15,8,15Q10.8995,15,12.9497,12.9497Q15,10.89949,15,8Q15,6.57618,14.4497,5.27513Q13.9184,4.0191,12.9501,3.05065L12.9497,3.05025Q12.8794,2.97993,12.7875,2.9418699999999998Q12.6957,2.90381,12.5962,2.90381Q12.5469,2.90381,12.4986,2.91341Q12.4503,2.92302,12.4049,2.9418699999999998Q12.3594,2.9607099999999997,12.3184,2.98807Q12.2775,3.0154300000000003,12.2426,3.05025Q12.2078,3.08507,12.1805,3.12602Q12.1531,3.16697,12.1343,3.21246Q12.1154,3.2579599999999997,12.1058,3.30626Q12.0962,3.35456,12.0962,3.40381Q12.0962,3.50326,12.1343,3.59515Q12.1723,3.68703,12.2426,3.75736L12.243,3.75773Q13.0734,4.58827,13.5287,5.66468Q14,6.77897,14,8Q14,10.48528,12.2426,12.2426Q10.48528,14,8,14Q5.51472,14,3.75736,12.2426Q2,10.48528,2,8Q2,5.51472,3.75736,3.75736Q5.51472,2,8,2Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="" fill="#D8D8D8" fill-opacity="0"/><path d="M12.14616,6.24824Q11.804549999999999,5.44059,11.18198,4.818019Q11.111650000000001,4.747693,11.019770000000001,4.709633Q10.92788,4.671573,10.82843,4.671573Q10.77918,4.671573,10.730879999999999,4.68118Q10.68258,4.6907879999999995,10.637080000000001,4.709633Q10.59159,4.728479,10.55064,4.755838Q10.509699999999999,4.783198,10.47487,4.81802Q10.44005,4.852841,10.41269,4.893788Q10.38533,4.934734,10.366489999999999,4.980231Q10.34764,5.02573,10.33803,5.0740300000000005Q10.32843,5.12233,10.32843,5.17157Q10.32843,5.27103,10.366489999999999,5.36291Q10.40455,5.4548000000000005,10.47487,5.52513Q10.95953,6.00978,11.225159999999999,6.6378Q11.5,7.28759,11.5,8Q11.5,9.44975,10.47487,10.47487Q9.44975,11.5,8,11.5Q6.55025,11.5,5.52513,10.47487Q4.5,9.44975,4.5,8Q4.5,6.55025,5.52513,5.52513Q6.55025,4.5,8,4.5L8,3.5Q6.1360399999999995,3.5,4.818019,4.818019Q3.5,6.1360399999999995,3.5,8Q3.5,9.863959999999999,4.818019,11.18198Q6.1360399999999995,12.5,8,12.5Q9.863959999999999,12.5,11.18198,11.18198Q12.5,9.863959999999999,12.5,8Q12.5,7.08481,12.14616,6.24824Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1"/></g><g><ellipse cx="8" cy="8" rx="1" ry="1" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="M8 1C8 1 8 1 8 1L8.5 1C8.776142374915397 1 9 1.2238576250846034 9 1.5L9 8C9 8 9 8 9 8L8 8C8 8 8 8 8 8Z" fill="#FFFFFF" fill-opacity="1"/></g></g></g></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="17.2025146484375" height="17.110595703125" viewBox="0 0 17.2025146484375 17.110595703125"><g><g><g><ellipse cx="8.615457534790039" cy="8.515636682510376" rx="4.5" ry="4.5" fill="#FFFFFF" fill-opacity="0.5"/></g><g transform="matrix(0.9634730815887451,0.2678050994873047,-0.2678050994873047,0.9634730815887451,0.31323370403424633,-1.0652691441899265)"><path d="" fill="#D8D8D8" fill-opacity="0"/><path d="M9.352006597290039,1.1054855871429443Q9.39401659729004,1.0968885871429443,9.433956597290038,1.0812625871429442Q9.47389659729004,1.0656365871429443,9.51058659729004,1.0434375871429444Q9.54727659729004,1.0212395871429443,9.57965659729004,0.9931175871429443Q9.61202659729004,0.9649945871429444,9.63914659729004,0.9317705871429444Q9.66625659729004,0.8985455871429444,9.687316597290039,0.8611885871429443Q9.708376597290039,0.8238325871429444,9.72277659729004,0.7834345871429443Q9.737166597290038,0.7430375871429443,9.744466597290039,0.7007791871429443Q9.75176659729004,0.6585210871429443,9.75176659729004,0.6156365871429443Q9.75176659729004,0.5663908871429444,9.742166597290039,0.5180914871429443Q9.732556597290039,0.46979158714294433,9.713706597290038,0.4242945871429443Q9.694866597290039,0.3787975871429443,9.66750659729004,0.33785158714294433Q9.64014659729004,0.29690558714294435,9.60532659729004,0.26208358714294433Q9.570496597290038,0.2272615871429443,9.52955659729004,0.19990158714294431Q9.488606597290039,0.17254258714294435,9.44310659729004,0.15369658714294432Q9.397616597290039,0.13485158714294432,9.349316597290038,0.1252435871429443Q9.30101659729004,0.11563658714294434,9.25176659729004,0.11563658714294434Q9.201136597290038,0.11563658714294434,9.15153659729004,0.12578758714294436Q8.47385659729004,0.26445858714294435,7.836876597290039,0.5338796871429443Q6.580586597290039,1.0652465871429444,5.611996597290039,2.033836587142944Q3.561746597290039,4.0840765871429445,3.561746597290039,6.983576587142944Q3.561746597290039,9.883076587142945,5.611996597290039,11.933336587142945Q7.662246597290039,13.983536587142945,10.561746597290039,13.983536587142945Q13.461246597290039,13.983536587142945,15.511446597290039,11.933336587142945Q17.56174659729004,9.883076587142945,17.56174659729004,6.983576587142944Q17.56174659729004,5.560116587142945,17.01174659729004,4.259366587142944L17.01154659729004,4.259006587142944L17.01144659729004,4.258706587142944L16.09044659729004,4.6482665871429445L16.09044659729004,4.648326587142944L16.09074659729004,4.649046587142944Q16.56174659729004,5.762976587142944,16.56174659729004,6.983576587142944Q16.56174659729004,9.468866587142944,14.804346597290039,11.226236587142944Q13.047026597290039,12.983536587142945,10.561746597290039,12.983536587142945Q8.07646659729004,12.983536587142945,6.319106597290039,11.226236587142944Q4.561746597290039,9.468866587142944,4.561746597290039,6.983576587142944Q4.561746597290039,4.498296587142944,6.319106597290039,2.7409365871429445Q7.149776597290039,1.9102665871429443,8.22642659729004,1.4548845871429443Q8.771786597290038,1.2242155871429443,9.352006597290039,1.1054855871429443Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1"/></g><g transform="matrix(0.9501094818115234,0.31191641092300415,-0.31191641092300415,0.9501094818115234,1.4660147399584815,-1.6768402728204137)"><path d="" fill="#D8D8D8" fill-opacity="0"/><path d="M8.61263253479004,4.204861731674194Q8.680502534790039,4.1761547316741945,8.73720253479004,4.129087731674194Q8.793902534790039,4.082019731674194,8.83462253479004,4.020594731674194Q8.87533253479004,3.9591697316741943,8.896592534790038,3.8886107316741945Q8.91785253479004,3.8180521316741944,8.91785253479004,3.7443597316741943Q8.91785253479004,3.695114031674194,8.90824253479004,3.6468146316741943Q8.898632534790039,3.5985147316741943,8.879792534790038,3.553017731674194Q8.86094253479004,3.5075207316741945,8.83358253479004,3.466574731674194Q8.806222534790038,3.4256287316741942,8.771402534790038,3.3908067316741946Q8.736582534790038,3.3559847316741944,8.69563253479004,3.328624731674194Q8.654692534790039,3.3012657316741945,8.60919253479004,3.282419731674194Q8.56369253479004,3.2635747316741943,8.515392534790038,3.2539667316741943Q8.467092534790039,3.2443597316741943,8.41785253479004,3.2443597316741943Q8.31646253479004,3.2443597316741943,8.223072534790038,3.2838577316741944L8.223052534790039,3.283865731674194L8.22290253479004,3.283932731674194Q7.415362534790039,3.6255327316741943,6.792851534790039,4.2480397316741945Q5.474832534790039,5.566059731674194,5.474832534790039,7.430019731674195Q5.474832534790039,9.293979731674195,6.792851534790039,10.611999731674194Q8.110872534790039,11.930019731674195,9.974832534790039,11.930019731674195Q11.838792534790038,11.930019731674195,13.156812534790038,10.611999731674194Q14.474832534790039,9.293979731674195,14.474832534790039,7.430019731674195Q14.474832534790039,6.9706597316741945,14.383522534790039,6.524179731674194L14.38345253479004,6.523819731674195L14.38341253479004,6.523639731674194L13.403722534790038,6.724119731674195L8.61263253479004,4.204861731674194Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1"/></g></g><g transform="matrix(0.7071067690849304,0.7071067690849304,-0.7071067690849304,0.7071067690849304,5.21939256913538,-7.617329445161886)"><path d="M14.716576464843751,2.61719621875L13.80486646484375,3.2250022187500003L12.89315646484375,2.61719621875Q12.544269464843751,2.38460221875,12.17457046484375,2.58245891875Q11.80487063484375,2.78031621875,11.80487063484375,3.19963121875L11.80487063484375,5.68177921875Q11.80487063484375,6.18630921875,12.28351146484375,6.345849218750001L13.30486646484375,6.68630921875L13.30486646484375,9.32555921875Q13.30486646484375,9.37480921875,13.31447646484375,9.42310921875Q13.32408646484375,9.47140921875,13.34292646484375,9.51689921875Q13.36177646484375,9.56239921875,13.38913646484375,9.603349218750001Q13.41649646484375,9.64428921875,13.45131646484375,9.67911921875Q13.48613646484375,9.71393921875,13.52708646484375,9.741299218750001Q13.56803646484375,9.768659218749999,13.61352646484375,9.78749921875Q13.65902646484375,9.80634921875,13.70732646484375,9.81594921875Q13.75562646484375,9.82555921875,13.80486646484375,9.82555921875Q13.85411646484375,9.82555921875,13.90241646484375,9.81594921875Q13.950716464843751,9.80634921875,13.99621646484375,9.78749921875Q14.04170646484375,9.768659218749999,14.082656464843751,9.741299218750001Q14.12360646484375,9.71393921875,14.15842646484375,9.67911921875Q14.19324646484375,9.64428921875,14.22060646484375,9.603349218750001Q14.24796646484375,9.56239921875,14.26680646484375,9.51689921875Q14.28565646484375,9.47140921875,14.295266464843749,9.42310921875Q14.30486646484375,9.37480921875,14.30486646484375,9.32555921875L14.30486646484375,6.68630921875L15.32622646484375,6.345849218750001Q15.80486646484375,6.18630921875,15.80486646484375,5.68177921875L15.80486646484375,3.19963121875Q15.80486646484375,2.78031621875,15.43516646484375,2.58245891875Q15.06546646484375,2.38460221875,14.716576464843751,2.61719621875ZM13.41657646484375,4.16798921875L12.80486646484375,3.76018921875L12.80486646484375,5.4655492187500005L13.80486646484375,5.79887921875L14.80486646484375,5.4655492187500005L14.80486646484375,3.76018921875L14.19315646484375,4.16798921875Q13.80486646484375,4.42684921875,13.41657646484375,4.16798921875Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1"/></g></g></svg>
\ No newline at end of file \ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="16" height="16" viewBox="0 0 16 16"><defs><clipPath id="master_svg0_1326_147842/1262_137253"><rect x="0" y="0" width="16" height="16" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_1326_147842/1262_137253)"><g><path d="M10.551783125,3.9530996875C8.729353125,2.1306496875,5.774553125,2.1306496875,3.952123125,3.9530996875C2.129673125,5.7755296875,2.129673125,8.7303296875,3.952123125,10.5527596875C5.774553125,12.3752296875,8.729353125,12.3752296875,10.551783125,10.5527596875C12.374253125,8.7303296875,12.374253125,5.7755296875,10.551783125,3.9530996875C10.551783125,3.9530996875,10.551783125,3.9530996875,10.551783125,3.9530996875ZM3.0093131250000003,3.0102896875000003C5.352453125,0.6671426875,9.151453125,0.6671426875,11.494553125,3.0102896875000003C13.678353125,5.1940996875,13.826953125,8.6424596875,11.940153125,10.9982596875C11.940153125,10.9982596875,14.323053125,13.3812296875,14.323053125,13.3812296875C14.323053125,13.3812296875,13.380253125,14.3240296875,13.380253125,14.3240296875C13.380253125,14.3240296875,10.997283125,11.9411296875,10.997283125,11.9411296875C8.641483125,13.8279296875,5.193123125,13.6793296875,3.0093131250000003,11.4955296875C0.666166125,9.1524296875,0.666166125,5.3534296875,3.0093131250000003,3.0102896875000003C3.0093131250000003,3.0102896875000003,3.0093131250000003,3.0102896875000003,3.0093131250000003,3.0102896875000003Z" fill-rule="evenodd" fill="#0081FF" fill-opacity="1"/></g></g></svg>
\ No newline at end of file
...@@ -3,87 +3,87 @@ ...@@ -3,87 +3,87 @@
* 1、url地址,如正式环境企业详情:https://plug.jiansheku.com/enterprise/56546856314e567a69?ak=bc8e534da5ea40639b2f084919280a82&initTime=1694507179060&uid=4a3b4bfdfbca4bff9d9bd7c8fd42f533(ak:接口获得的accesToken;initTime:获得accesToken时的时间戳;uid:用户标识) * 1、url地址,如正式环境企业详情:https://plug.jiansheku.com/enterprise/56546856314e567a69?ak=bc8e534da5ea40639b2f084919280a82&initTime=1694507179060&uid=4a3b4bfdfbca4bff9d9bd7c8fd42f533(ak:接口获得的accesToken;initTime:获得accesToken时的时间戳;uid:用户标识)
* *
* */ * */
const steerScroll = function(iframeId, navigation, footHeight, state, parentId, _this) { // iframeId: iframe的id;navigation:页面排除iframe后剩下的顶部高度;footHeight: 页面排除iframe后剩下的底部高度;state:监听or移除监听;parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例(可忽略) const steerScroll = function (iframeId, navigation, footHeight, state, parentId, _this) { // iframeId: iframe的id;navigation:页面排除iframe后剩下的顶部高度;footHeight: 页面排除iframe后剩下的底部高度;state:监听or移除监听;parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例(可忽略)
let dom = window let dom = window;
if (parentId) { // 默认页面可以滚动 if (parentId) { // 默认页面可以滚动
dom = document.getElementById(parentId) dom = document.getElementById(parentId);
if (!dom) { if (!dom) {
return return;
} }
dom.style.overflow = 'auto' dom.style.overflow = 'auto';
} else { } else {
document.body.style.overflow = 'visible' document.body.style.overflow = 'visible';
} }
if (state) { if (state) {
window.addEventListener('message', function(e) { window.addEventListener('message', function (e) {
const data = e.data const data = e.data;
const sct = parentId ? dom.scrollTop : document && document.documentElement.scrollTop || document && document.body.scrollTop const sct = parentId ? dom.scrollTop : document && document.documentElement.scrollTop || document && document.body.scrollTop;
if (data && typeof data === 'object') { if (data && typeof data === 'object') {
// 动态设置iFrame高度 // 动态设置iFrame高度
if (data.height) { if (data.height) {
document.getElementById(iframeId).style.height = data.height + 'px' document.getElementById(iframeId).style.height = data.height + 'px';
scrolling(iframeId, navigation, footHeight, parentId) // 初始加载获取滚动条距离顶部高度 scrolling(iframeId, navigation, footHeight, parentId); // 初始加载获取滚动条距离顶部高度
} }
// 插件当前路由 // 插件当前路由
if (_this && data.currentPath) { if (_this && data.currentPath) {
_this.currentRoute = data _this.currentRoute = data;
_this.searchFlag = data.currentName.includes('search-') ? true : false _this.searchFlag = data.currentName.includes('search-') ? true : false;
} }
// 点击企业详情页 栏目名动态设置滚动高度 // 点击企业详情页 栏目名动态设置滚动高度
if (data.scrollHeight) { if (data.scrollHeight) {
const navHeight = navigation.isFixed && !parentId ? navigation.totalHeight - navigation.fixedHeight : !parentId ? navigation.totalHeight : 0 const navHeight = navigation.isFixed && !parentId ? navigation.totalHeight - navigation.fixedHeight : !parentId ? navigation.totalHeight : 0;
dom.scrollTo(sct, parseInt(data.scrollHeight) + navHeight) dom.scrollTo(sct, parseInt(data.scrollHeight) + navHeight);
} }
// 点击企业详情页 栏目下拉子标签动态设置滚动高度 // 点击企业详情页 栏目下拉子标签动态设置滚动高度
if (data.clientHeight) { if (data.clientHeight) {
dom.scrollTo(sct, sct - parseInt(data.clientHeight)) dom.scrollTo(sct, sct - parseInt(data.clientHeight));
} }
// 点击下拉子标签动态设置滚动高度 // 点击下拉子标签动态设置滚动高度
if (data.initHeight >= 0) { if (data.initHeight >= 0) {
dom.scrollTo(sct, data.initHeight) dom.scrollTo(sct, data.initHeight);
} }
// 根据子页面弹窗显示隐藏控制当前页面是否固定不可滚动 // 根据子页面弹窗显示隐藏控制当前页面是否固定不可滚动
if (data.scrollDisabled || data.scrollDisabled === false) { if (data.scrollDisabled || data.scrollDisabled === false) {
if (parentId) { if (parentId) {
dom.style.overflow = data.scrollDisabled ? 'hidden' : 'auto' dom.style.overflow = data.scrollDisabled ? 'hidden' : 'auto';
} else { } else {
document.body.style.overflow = data.scrollDisabled ? 'hidden' : 'visible' document.body.style.overflow = data.scrollDisabled ? 'hidden' : 'visible';
} }
} }
} }
}) });
dom.addEventListener('scroll', (event) => { dom.addEventListener('scroll', (event) => {
scrolling(iframeId, navigation, footHeight, parentId) scrolling(iframeId, navigation, footHeight, parentId);
}) });
} else { } else {
dom.removeEventListener('scroll', (event) => { dom.removeEventListener('scroll', (event) => {
scrolling(iframeId, navigation, footHeight, parentId) scrolling(iframeId, navigation, footHeight, parentId);
}) });
} }
} };
const scrolling = function(iframeId, navigation, footHeight, parentId) { const scrolling = function (iframeId, navigation, footHeight, parentId) {
// 滚动条距文档顶部的距离 // 滚动条距文档顶部的距离
let scrollTop = parentId ? document.getElementById(parentId).scrollTop : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop let scrollTop = parentId ? document.getElementById(parentId).scrollTop : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
// 将滚动距离传入子组件 // 将滚动距离传入子组件
const ifa = document.getElementById(iframeId) const ifa = document.getElementById(iframeId);
scrollTop = scrollTop + navigation.totalHeight scrollTop = scrollTop + navigation.totalHeight;
let rippleHeight = 0 //插件筛选条件浮动层距离底部距离 let rippleHeight = 0; //插件筛选条件浮动层距离底部距离
let scrollGap = parentId ? document.getElementById(parentId).scrollTop : window.scrollTop || document.body.scrollTop || document.documentElement.scrollTop let scrollGap = parentId ? document.getElementById(parentId).scrollTop : window.scrollTop || document.body.scrollTop || document.documentElement.scrollTop;
let scrollHeight = parentId ? document.getElementById(parentId).offsetHeight : window.scrollHeight || document.body.scrollHeight || document.documentElement.scrollHeight let scrollHeight = parentId ? document.getElementById(parentId).offsetHeight : window.scrollHeight || document.body.scrollHeight || document.documentElement.scrollHeight;
let domHeight = parentId ? document.getElementById(parentId).clientHeight : window.clientHeight || document.body.clientHeight || document.documentElement.clientHeight let domHeight = parentId ? document.getElementById(parentId).clientHeight : window.clientHeight || document.body.clientHeight || document.documentElement.clientHeight;
if(parentId){ //网页内部嵌套时 if (parentId) { //网页内部嵌套时
rippleHeight = scrollHeight-scrollGap-domHeight rippleHeight = scrollHeight - scrollGap - domHeight;
}else{ // } else { //
if(scrollHeight-scrollGap-domHeight <= footHeight){ if (scrollHeight - scrollGap - domHeight <= footHeight) {
rippleHeight = 0 rippleHeight = 0;
}else{ } else {
rippleHeight = scrollHeight-scrollGap-domHeight - footHeight rippleHeight = scrollHeight - scrollGap - domHeight - footHeight;
} }
} }
ifa.contentWindow.postMessage({ 'scrollTop': scrollTop, 'navHeight': navigation.totalHeight, 'rippleHeight': rippleHeight }, '*') ifa ? ifa.contentWindow.postMessage({ 'scrollTop': scrollTop, 'navHeight': navigation.totalHeight, 'rippleHeight': rippleHeight }, '*') : null;
} };
export { export {
steerScroll steerScroll
} };
.search-enter-active,
.search-leave-active {
width: 242px;
transition: width 0.5s;
}
.search-enter,
.search-leave-to {
width: 60px;
}
...@@ -336,7 +336,7 @@ ul, li { ...@@ -336,7 +336,7 @@ ul, li {
.el-table__header-wrapper{ .el-table__header-wrapper{
th{ th{
background: #F0F3FA; background: #F0F3FA;
text-align: left; // text-align: left;
} }
} }
.el-table__fixed-header-wrapper{ .el-table__fixed-header-wrapper{
...@@ -625,7 +625,7 @@ ul, li { ...@@ -625,7 +625,7 @@ ul, li {
line-height: 32px; line-height: 32px;
} }
&:hover{ &:hover{
color: #f; color: #fff;
border-color: #006AD1; border-color: #006AD1;
} }
} }
......
::v-deep .head-form-new {
margin-bottom: 8px;
.query-box {
.from-item {
display: flex;
align-items: center;
height: 32px;
}
// 下拉选择
.el-cascader,
.el-select {
max-width: unset !important;
width: 64px;
padding: 0px 8px;
transition: width 0.3s;
box-sizing: border-box;
.el-cascader__tags,
.el-select__tags {
flex-wrap: nowrap;
.el-tag:first-child {
width: auto;
}
}
.el-cascader__tags {
.el-tag {
max-width: unset !important;
}
}
.el-input {
display: flex;
align-items: center;
& > input {
padding: 0px;
border: none;
height: 30px;
line-height: 30px;
box-sizing: border-box;
&::placeholder {
color: rgba(35, 35, 35, 0.8);
font-size: 14px;
}
}
& > .el-input__suffix {
position: unset;
.el-input__suffix-inner {
i {
font-size: 12px;
line-height: 30px;
width: auto;
color: rgba(35, 35, 35, 0.4);
}
}
}
}
}
// 自定义事件选择 金额选择
.custom-select {
height: 32px;
transition: width 0.3s;
.block {
& > .el-input {
display: flex;
align-items: center;
& > input {
padding: 0px;
border: none;
height: 30px;
line-height: 30px;
box-sizing: border-box;
&::placeholder {
color: rgba(35, 35, 35, 0.8);
font-size: 14px;
}
}
& > .el-input__suffix {
position: unset;
width: auto;
.el-input__suffix-inner {
span,
i {
font-size: 12px;
line-height: 30px;
width: auto;
color: rgba(35, 35, 35, 0.4);
}
}
}
}
}
}
// 时间选择器
.el-date-editor {
height: 32px;
line-height: 32px;
padding-right: 5px;
}
// 企业搜索框
.enterprise-search-container {
height: 32px;
line-height: 32px;
border-radius: 4px;
.el-input__inner {
height: 30px;
line-height: 30px;
}
& > span {
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
height: 30px;
line-height: 30px;
}
&.span-ba {
& > span {
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
}
}
.el-input__suffix {
right: 0px;
.el-input__icon {
display: flex;
align-items: center;
}
}
}
}
}
import Vue from 'vue' import Vue from 'vue';
import Cookies from 'js-cookie' import Cookies from 'js-cookie';
import Element from 'element-ui' import Element from 'element-ui';
import './assets/styles/element-variables.scss' import './assets/styles/element-variables.scss';
import '@/assets/styles/index.scss' // global css import "@/assets/styles/common.css";
import '@/assets/styles/ruoyi.scss' // ruoyi css import '@/assets/styles/index.scss'; // global css
import App from './App' import '@/assets/styles/ruoyi.scss'; // ruoyi css
import store from './store' import App from './App';
import router from './router' import store from './store';
import directive from './directive' // directive import router from './router';
import plugins from './plugins' // plugins import directive from './directive'; // directive
import { download } from '@/utils/request' import plugins from './plugins'; // plugins
import horizontalScroll from 'el-table-horizontal-scroll' import { download } from '@/utils/request';
import horizontalScroll from 'el-table-horizontal-scroll';
import './assets/icons' // icon import './assets/icons'; // icon
import './permission' // permission control import './permission'; // permission control
import { getDicts } from "@/api/system/dict/data"; import { getDicts } from "@/api/system/dict/data";
import { getConfigKey } from "@/api/system/config"; import { getConfigKey } from "@/api/system/config";
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi"; import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi";
// 分页组件 // 分页组件
import Pagination from "@/components/Pagination"; import Pagination from "@/components/Pagination";
// 自定义表格工具组件 // 自定义表格工具组件
import RightToolbar from "@/components/RightToolbar" import RightToolbar from "@/components/RightToolbar";
// 富文本组件 // 富文本组件
import Editor from "@/components/Editor" import Editor from "@/components/Editor";
// 文件上传组件 // 文件上传组件
import FileUpload from "@/components/FileUpload" import FileUpload from "@/components/FileUpload";
// 图片上传组件 // 图片上传组件
import ImageUpload from "@/components/ImageUpload" import ImageUpload from "@/components/ImageUpload";
// 图片预览组件 // 图片预览组件
import ImagePreview from "@/components/ImagePreview" import ImagePreview from "@/components/ImagePreview";
// 字典标签组件 // 字典标签组件
import DictTag from '@/components/DictTag' import DictTag from '@/components/DictTag';
// 头部标签组件 // 头部标签组件
import VueMeta from 'vue-meta' import VueMeta from 'vue-meta';
// 字典数据组件 // 字典数据组件
import DictData from '@/components/DictData' import DictData from '@/components/DictData';
// 全局方法挂载 // 全局方法挂载
Vue.prototype.getDicts = getDicts Vue.prototype.getDicts = getDicts;
Vue.prototype.getConfigKey = getConfigKey Vue.prototype.getConfigKey = getConfigKey;
Vue.prototype.parseTime = parseTime Vue.prototype.parseTime = parseTime;
Vue.prototype.resetForm = resetForm Vue.prototype.resetForm = resetForm;
Vue.prototype.addDateRange = addDateRange Vue.prototype.addDateRange = addDateRange;
Vue.prototype.selectDictLabel = selectDictLabel Vue.prototype.selectDictLabel = selectDictLabel;
Vue.prototype.selectDictLabels = selectDictLabels Vue.prototype.selectDictLabels = selectDictLabels;
Vue.prototype.download = download Vue.prototype.download = download;
Vue.prototype.handleTree = handleTree Vue.prototype.handleTree = handleTree;
// 全局组件挂载 // 全局组件挂载
Vue.component('DictTag', DictTag) Vue.component('DictTag', DictTag);
Vue.component('Pagination', Pagination) Vue.component('Pagination', Pagination);
Vue.component('RightToolbar', RightToolbar) Vue.component('RightToolbar', RightToolbar);
Vue.component('Editor', Editor) Vue.component('Editor', Editor);
Vue.component('FileUpload', FileUpload) Vue.component('FileUpload', FileUpload);
Vue.component('ImageUpload', ImageUpload) Vue.component('ImageUpload', ImageUpload);
Vue.component('ImagePreview', ImagePreview) Vue.component('ImagePreview', ImagePreview);
Vue.use(horizontalScroll) Vue.use(horizontalScroll);
Vue.use(directive) Vue.use(directive);
Vue.use(plugins) Vue.use(plugins);
Vue.use(VueMeta) Vue.use(VueMeta);
DictData.install() DictData.install();
/** /**
* If you don't want to use mock-server * If you don't want to use mock-server
...@@ -76,13 +77,13 @@ DictData.install() ...@@ -76,13 +77,13 @@ DictData.install()
Vue.use(Element, { Vue.use(Element, {
size: Cookies.get('size') || 'medium' // set element-ui default size size: Cookies.get('size') || 'medium' // set element-ui default size
}) });
Vue.config.productionTip = false Vue.config.productionTip = false;
new Vue({ new Vue({
el: '#app', el: '#app',
router, router,
store, store,
render: h => h(App) render: h => h(App)
}) });
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
</div> </div>
</div> </div>
<skeleton v-if="isSkeleton"></skeleton> <skeleton v-if="isSkeleton"></skeleton>
<el-table v-if="!isSkeleton&&tableData.total > 0" class="fixed-table" v-horizontal-scroll="hover" max-height="640" <el-table v-if="!isSkeleton&&tableData.total > 0" class="fixed-table" v-horizontal-scroll="tableData.total > 10 ? 'hover' : 'false'" max-height="640"
:data="tableData.rows" :data="tableData.rows"
stripe border stripe border
style="width: 100%"> style="width: 100%">
......
...@@ -118,8 +118,8 @@ ...@@ -118,8 +118,8 @@
自定义 自定义
<el-date-picker <el-date-picker
ref="picker" ref="picker"
v-if="datatype ==3"
:default-value="defaultValue" :default-value="defaultValue"
style="position: absolute;opacity: 0;left: -12px;width: 60px;"
v-model="pickerValue" v-model="pickerValue"
type="daterange" type="daterange"
range-separator="至" range-separator="至"
...@@ -507,10 +507,10 @@ ...@@ -507,10 +507,10 @@
} }
this.datatype=key; this.datatype=key;
if(value == '自定义') { if(value == '自定义') {
// this.$refs.picker && this.$refs.picker.length && this.$refs.picker[0].focus() this.$refs.picker && this.$refs.picker.length && this.$refs.picker[0].focus()
// this.$nextTick(() => { this.$nextTick(() => {
// this.$refs['picker-block'].appendChild(this.$refs.picker[0].popperElm) // this.$refs['picker-block'].appendChild(this.$refs.picker[0].popperElm)
// }) })
}else { }else {
this.pickerValue = [] this.pickerValue = []
let timeStr = [] let timeStr = []
...@@ -856,8 +856,8 @@ ...@@ -856,8 +856,8 @@
.time-label{ .time-label{
.labels{ .labels{
width: 240px; width: 240px;
height: 32px; height: 30px;
line-height: 32px; line-height: 30px;
border-radius: 4px; border-radius: 4px;
>div{ >div{
height: 100%; height: 100%;
...@@ -885,12 +885,7 @@ ...@@ -885,12 +885,7 @@
} }
} }
} }
::v-deep .el-date-editor{
width: 320px;
position: absolute;
right: 250px;
height: 32px;
}
::v-deep .picker-block { ::v-deep .picker-block {
position: relative; position: relative;
...@@ -901,6 +896,14 @@ ...@@ -901,6 +896,14 @@
visibility:hidden; visibility:hidden;
clear:both; clear:both;
} }
.el-picker-panel.el-date-range-picker.el-popper {
left: -650px !important;
}
.popper__arrow {
left: 30px !important;
}
} }
} }
} }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
:total="tableDataTotal" :total="tableDataTotal"
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
@handle-excel="clickDialog" @handle-excel="clickEXCEL"
> >
<template slot="slot"> <template slot="slot">
...@@ -48,55 +48,6 @@ ...@@ -48,55 +48,6 @@
<div>{{scope.row.bidAmount || '--'}}{{scope.row.bidAmount ? '万元':''}}</div> <div>{{scope.row.bidAmount || '--'}}{{scope.row.bidAmount ? '万元':''}}</div>
</template> </template>
</tables> </tables>
<el-dialog :visible.sync="dialogExportVisible" width="640px" append-to-body class="dialogExport">
<template slot="title">
<img class="tip-img" src="@/assets/images/icon.png" />数据导出
</template>
<div class="table-item">
<el-table :data="exportTableData">
<el-table-column prop="bidTime" label="中标时间" width="110"></el-table-column>
<el-table-column prop="companyName" label="中标成员" width="200"></el-table-column>
<el-table-column prop="stockPercent" label="持股比例" min-width="100"></el-table-column>
<el-table-column prop="projectName" label="项目名称" min-width="220"></el-table-column>
<el-table-column prop="bidAmount" label="中标金额" min-width="100"></el-table-column>
<el-table-column prop="address" label="中标地区" min-width="120"></el-table-column>
<el-table-column prop="boundType" label="业绩类型" min-width="130"></el-table-column>
<el-table-column prop="projectType" label="项目类型" min-width="100"></el-table-column>
<el-table-column prop="projectUnit" label="业主单位" min-width="160"></el-table-column>
</el-table>
</div>
<div class="input">
导出数量:
<el-input placeholder="" v-model="value" oninput="value=value.replace(/[^\d]/g,'')">
<template slot="append"></template>
</el-input>
<p v-if="value > 2000"><i class="el-icon-error"></i>最多支持导出2000条,如需更多联系大司空客服人员</p>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="clickEXCEL">确认导出</el-button>
<el-button @click="cancel">取消</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogExportVisible1" width="640px" append-to-body class="dialogExport">
<template slot="title">
<img class="tip-img" src="@/assets/images/icon.png" />
数据导出
</template>
<div class="content">
<img class="success" src="@/assets/images/success.png" />
<p class="p1">导出成功</p>
<p class="p2">
可在个人中心查看导出表格
<span @click="toUrl">前往个人中心</span>
</p>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="downloadFile(exportData.url,exportData.originalName)">下载表格</el-button>
<el-button @click="dialogExportVisible1 = false">取消</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
...@@ -153,45 +104,7 @@ ...@@ -153,45 +104,7 @@
], ],
timeList: ['近三天', '近七天', '近半月', '自定义'], timeList: ['近三天', '近七天', '近半月', '自定义'],
moneyList: ['5000万以下', '5000万-1亿', '1亿-5亿', '5亿-10亿','10亿以上', '自定义'], moneyList: ['5000万以下', '5000万-1亿', '1亿-5亿', '5亿-10亿','10亿以上', '自定义'],
dataEXCEL:{}, dataEXCEL:{}
dialogExportVisible:false,
dialogExportVisible1:false,
exportTableData:[
{
"bidTime":"2023-09-21",
"companyId":329637,
"address":"浙江省",
"stockPercent":"4.87%",
"boundType":"施工",
"projectUnit":"浙江浙能北仑发电有限公司",
"memberLevel":"四级企业",
"companyName":"浙江华业电力工程股份有限公司",
"projectType":"机电工程",
"bidAmount":"64.9565万元",
"projectName":"浙江浙能北仑发电有限公司5号炉后包覆区域省煤器和后包覆受热面检修",
"projectId":"147703347",
"uipId":null,
"projectUnitUipId":null
},
{
"bidTime":"2023-09-21",
"companyId":329637,
"address":"河南省-郑州市",
"stockPercent":"1.56%",
"boundType":"施工",
"projectUnit":"郑州地铁集团有限公司运营分公司",
"memberLevel":"四级企业",
"companyName":"中铁电气化局集团第三工程有限公司",
"projectType":"机电工程",
"bidAmount":"74.8018万元",
"projectName":"郑州市轨道交通1号线、城郊线一期2023年加装摄像机技改项目",
"projectId":"147703347",
"uipId":null,
"projectUnitUipId":null
},
],
value:'',
exportData:{}
} }
}, },
created() { created() {
...@@ -350,33 +263,20 @@ ...@@ -350,33 +263,20 @@
this.handleQuery(params) this.handleQuery(params)
this.$emit('handle-scroll') this.$emit('handle-scroll')
}, },
clickDialog(){
this.dialogExportVisible=true;
},
clickEXCEL() { clickEXCEL() {
if(this.value > 2000){
return
}
this.dialogExportVisible=false;
this.dataEXCEL.combineName=this.combineName; this.dataEXCEL.combineName=this.combineName;
if(this.value){ if(this.tableDataTotal > 2000){
this.dataEXCEL.pageSize=this.value this.dataEXCEL.pageSize=2000;
}else { }else {
this.dataEXCEL.pageSize=this.tableDataTotal > 2000 ? 2000 : this.tableDataTotal; this.dataEXCEL.pageSize=this.tableDataTotal;
} }
delete this.dataEXCEL.pageNum delete this.dataEXCEL.pageNum
exportWinBid(this.dataEXCEL).then(res=>{ exportWinBid(this.dataEXCEL).then(res=>{
if(res.code === 200){ if(res.code === 200){
this.dialogExportVisible1=true; this.downloadFile(res.data.url,res.data.originalName)
this.value=''
this.exportData=res.data;
} }
}) })
}, // this.$download.exportByPost('/combine/info/export/win/bid',this.dataEXCEL,'集团中标.xlsx');
cancel(){
this.dialogExportVisible=false
this.value=''
}, },
downloadFile(url, fileName) { downloadFile(url, fileName) {
const x = new XMLHttpRequest() const x = new XMLHttpRequest()
...@@ -391,13 +291,7 @@ ...@@ -391,13 +291,7 @@
a.remove() a.remove()
} }
x.send() x.send()
}, }
toUrl(){
this.dialogExportVisible1=false;
this.$router.push({
path: '/user/profile',
})
},
} }
} }
</script> </script>
...@@ -429,89 +323,4 @@ ...@@ -429,89 +323,4 @@
} }
} }
} }
.dialogExport{
::v-deep .el-dialog{
.el-dialog__header{
height: 48px;
line-height: 48px;
padding: 0 16px;
border-bottom: 1px solid #E1E1E1;
font-weight: bold;
color: #1D2129;
font-size: 16px;
.tip-img{
width: 18px;
height: 18px;
margin-right: 7px;
margin-bottom: -3px;
}
.el-dialog__headerbtn{
font-size: 20px;
font-weight: bold;
top: 15px;
.el-dialog__close{
color:#999999;
}
}
}
.el-dialog__body{
padding: 16px;
.input{
margin-top: 16px;
.el-input{
width: 160px;
border-radius: 2px;
height: 32px;
.el-input__inner{
height: 32px;
line-height: 32px;
}
}
.el-input-group__append{
padding: 0 14px;
}
p{
color: #FF3C3C;
font-size: 12px;
margin-left: 12px;
display: inline-block;
i{
font-size: 14px;
margin-right: 4px;
}
}
}
.content{
text-align: center;
margin-top: 36px;
.success{
width: 64px;
height: 64px;
margin-bottom: 16px;
}
p{
padding: 0;
margin: 0;
}
.p1{
color: #232323;
font-size: 16px;
margin-bottom: 8px;
}
.p2{
color: rgba(35,35,35,0.4);
font-size: 14px;
span{
color:#0081FF;
cursor: pointer;
}
}
}
}
.el-dialog__footer{
text-align: center;
padding-bottom: 24px;
}
}
}
</style> </style>
...@@ -92,7 +92,7 @@ ...@@ -92,7 +92,7 @@
</div> </div>
<div class="flex-box"> <div class="flex-box">
<span class="flex-box ability-total">共{{ tableDataTotal }}条</span> <span class="flex-box ability-total">共{{ tableDataTotal }}条</span>
<span v-hasPermi="['combine:info:export:bid']" class="flex-box ability-excel" @click="clickDialog"><img src="@/assets/images/ability_excel.png">导出EXCEL</span> <span v-hasPermi="['combine:info:export:bid']" class="flex-box ability-excel" @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -132,53 +132,6 @@ ...@@ -132,53 +132,6 @@
<div>{{scope.row.bidAmount || '--'}}{{scope.row.bidAmount ? '万元':''}}</div> <div>{{scope.row.bidAmount || '--'}}{{scope.row.bidAmount ? '万元':''}}</div>
</template> </template>
</tables> </tables>
<el-dialog :visible.sync="dialogExportVisible" width="640px" append-to-body class="dialogExport">
<template slot="title">
<img class="tip-img" src="@/assets/images/icon.png" />数据导出
</template>
<div class="table-item">
<el-table :data="exportTableData">
<el-table-column prop="issueTime" label="招标发布时间" width="110"></el-table-column>
<el-table-column prop="tenderee" label="招标成员" width="200"></el-table-column>
<el-table-column prop="stockPercent" label="持股比例" min-width="100"></el-table-column>
<el-table-column prop="projectName" label="项目名称" min-width="220"></el-table-column>
<el-table-column prop="bidAmount" label="预算金额" min-width="100"></el-table-column>
<el-table-column prop="address" label="项目地区" min-width="110"></el-table-column>
<el-table-column prop="subjectMatter" label="招标采购分类" min-width="130"></el-table-column>
<el-table-column prop="projectType" label="项目类型" min-width="100"></el-table-column>
<el-table-column prop="agency" label="代理单位" min-width="160"></el-table-column>
</el-table>
</div>
<div class="input">
导出数量:
<el-input placeholder="" v-model="value" oninput="value=value.replace(/[^\d]/g,'')">
<template slot="append"></template>
</el-input>
<p v-if="value > 2000"><i class="el-icon-error"></i>最多支持导出2000条,如需更多联系大司空客服人员</p>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="clickEXCEL">确认导出</el-button>
<el-button @click="cancel">取消</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogExportVisible1" width="640px" append-to-body class="dialogExport">
<template slot="title">
<img class="tip-img" src="@/assets/images/icon.png" />
数据导出
</template>
<div class="content">
<img class="success" src="@/assets/images/success.png" />
<p class="p1">导出成功</p>
<p class="p2">
可在个人中心查看导出表格
<span @click="toUrl">前往个人中心</span>
</p>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="downloadFile(exportData.url,exportData.originalName)">下载表格</el-button>
<el-button @click="dialogExportVisible1 = false">取消</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
...@@ -244,36 +197,6 @@ ...@@ -244,36 +197,6 @@
timeList: ['近三天', '近七天', '近半月', '自定义'], timeList: ['近三天', '近七天', '近半月', '自定义'],
moneyList: ['5000万以下', '5000万-1亿', '1亿-5亿', '5亿-10亿','10亿以上', '自定义'], moneyList: ['5000万以下', '5000万-1亿', '1亿-5亿', '5亿-10亿','10亿以上', '自定义'],
dataEXCEL:{}, dataEXCEL:{},
dialogExportVisible:false,
dialogExportVisible1:false,
exportTableData:[
{
"address":"四川省-成都市",
"stockPercent":"18.43%",
"agency":'鞍钢股份有限公司',
"issueTime":"2023-09-22",
"subjectMatter":"其他",
"memberLevel":"二级企业",
"tenderee":"鞍钢冷轧钢板(莆田)有限公司综合部",
"projectType":"其他",
"bidAmount":"202万元",
"projectName":"2023年中铁一局集团第二工程有限公司江浙区域项目自购物资集中招标采购文件(一)(钢材)招标公告",
},
{
"address":"四川省-成都市",
"stockPercent":"18.43%",
"agency":'鞍钢股份有限公司',
"issueTime":"2023-09-22",
"subjectMatter":"其他",
"memberLevel":"二级企业",
"tenderee":"鞍钢股份有限公司",
"projectType":"其他",
"bidAmount":"202万元",
"projectName":"太极集团四川太极制药有限公司转让持有的成都市4套住宅-高新区玉虹巷2号1栋6单元7层13号",
},
],
value:'',
exportData:{}
} }
}, },
created() { created() {
...@@ -331,6 +254,7 @@ ...@@ -331,6 +254,7 @@
this.dataEXCEL=JSON.parse(JSON.stringify(data)); this.dataEXCEL=JSON.parse(JSON.stringify(data));
bidPage(data).then(res=>{ bidPage(data).then(res=>{
this.tableData = res.code == 200 ? res.rows:[]; this.tableData = res.code == 200 ? res.rows:[];
console.log(res.total)
this.tableDataTotal = res.total this.tableDataTotal = res.total
this.isSkeleton = false this.isSkeleton = false
this.tableLoading = false this.tableLoading = false
...@@ -431,37 +355,20 @@ ...@@ -431,37 +355,20 @@
changeSelect(){ changeSelect(){
this.handleSearch() this.handleSearch()
}, },
clickFocus(e){
document.getElementById(e).classList.toggle('span-ba')
},
clickDialog(){
this.dialogExportVisible=true;
},
clickEXCEL() { clickEXCEL() {
if(this.value > 2000){
return
}
this.dialogExportVisible=false;
this.dataEXCEL.combineName=this.combineName; this.dataEXCEL.combineName=this.combineName;
if(this.value){ if(this.tableDataTotal > 2000){
this.dataEXCEL.pageSize=this.value this.dataEXCEL.pageSize=2000;
}else { }else {
this.dataEXCEL.pageSize=this.tableDataTotal > 2000 ? 2000 : this.tableDataTotal; this.dataEXCEL.pageSize=this.tableDataTotal;
} }
delete this.dataEXCEL.pageNum delete this.dataEXCEL.pageNum
exportBid(this.dataEXCEL).then(res=>{ exportBid(this.dataEXCEL).then(res=>{
if(res.code === 200){ if(res.code === 200){
this.dialogExportVisible1=true; this.downloadFile(res.data.url,res.data.originalName)
this.value=''
this.exportData=res.data;
} }
}) })
}, },
cancel(){
this.dialogExportVisible=false
this.value=''
},
downloadFile(url, fileName) { downloadFile(url, fileName) {
const x = new XMLHttpRequest() const x = new XMLHttpRequest()
x.open("GET", url, true) x.open("GET", url, true)
...@@ -476,12 +383,9 @@ ...@@ -476,12 +383,9 @@
} }
x.send() x.send()
}, },
toUrl(){ clickFocus(e){
this.dialogExportVisible1=false; document.getElementById(e).classList.toggle('span-ba')
this.$router.push({ }
path: '/user/profile',
})
},
} }
} }
</script> </script>
...@@ -664,89 +568,4 @@ ...@@ -664,89 +568,4 @@
width: 150px; width: 150px;
} }
} }
.dialogExport{
::v-deep .el-dialog{
.el-dialog__header{
height: 48px;
line-height: 48px;
padding: 0 16px;
border-bottom: 1px solid #E1E1E1;
font-weight: bold;
color: #1D2129;
font-size: 16px;
.tip-img{
width: 18px;
height: 18px;
margin-right: 7px;
margin-bottom: -3px;
}
.el-dialog__headerbtn{
font-size: 20px;
font-weight: bold;
top: 15px;
.el-dialog__close{
color:#999999;
}
}
}
.el-dialog__body{
padding: 16px;
.input{
margin-top: 16px;
.el-input{
width: 160px;
border-radius: 2px;
height: 32px;
.el-input__inner{
height: 32px;
line-height: 32px;
}
}
.el-input-group__append{
padding: 0 14px;
}
p{
color: #FF3C3C;
font-size: 12px;
margin-left: 12px;
display: inline-block;
i{
font-size: 14px;
margin-right: 4px;
}
}
}
.content{
text-align: center;
margin-top: 36px;
.success{
width: 64px;
height: 64px;
margin-bottom: 16px;
}
p{
padding: 0;
margin: 0;
}
.p1{
color: #232323;
font-size: 16px;
margin-bottom: 8px;
}
.p2{
color: rgba(35,35,35,0.4);
font-size: 14px;
span{
color:#0081FF;
cursor: pointer;
}
}
}
}
.el-dialog__footer{
text-align: center;
padding-bottom: 24px;
}
}
}
</style> </style>
<template> <template>
<div> <div>
<div class="headForm"> <div class="headForm" v-if="title === '集团业绩'">
<div class="flex-box query-box" style="margin-bottom: 12px;"> <div class="flex-box query-box" style="margin-bottom: 12px;">
<div class="flex-box query-params"> <div class="flex-box query-params">
<span class="common-title" v-if="title">{{ title }}</span> <span class="common-title" v-if="title">{{ title }}</span>
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
</template> </template>
<div v-else class="flex-box"> <div v-else class="flex-box">
<span class="flex-box ability-total" v-if="isTotal">共{{ total }}条</span> <span class="flex-box ability-total" v-if="isTotal">共{{ total }}条</span>
<span class="flex-box ability-excel" v-hasPermi="['combine:info:export:win:bid']" v-if="isExcel" @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span> <span class="flex-box ability-excel" v-hasPermi="['combine:info:export:win:bid']" v-if="isExcel && title ==='集团业绩'" @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
<span class="flex-box ability-excel" v-else @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span> <span class="flex-box ability-excel" v-else @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
</div> </div>
</div> </div>
...@@ -108,110 +108,110 @@ ...@@ -108,110 +108,110 @@
</div> </div>
</div> </div>
</div> </div>
<!--<div class="headForm" v-else>--> <div class="headForm" v-else>
<!--<div class="flex-box query-box">--> <div class="flex-box query-box">
<!--<div class="flex-box query-params">--> <div class="flex-box query-params">
<!--<span class="common-title" v-if="title">{{ title }}</span>--> <span class="common-title" v-if="title">{{ title }}</span>
<!--<div class="headForm-from">--> <div class="headForm-from">
<!--<div class="from-item" :key="i" v-for="(form, i) in formData">--> <div class="from-item" :key="i" v-for="(form, i) in formData">
<!--&lt;!&ndash; 单选 &ndash;&gt;--> <!-- 单选 -->
<!--<template v-if="form.type==1">--> <template v-if="form.type==1">
<!--<el-select--> <el-select
<!--v-model="form.value"--> v-model="form.value"
<!--clearable--> clearable
<!--class="form-content-width"--> class="form-content-width"
<!--:style="form.width?'width:'+form.width+'px':'max-width: 110px'"--> :style="form.width?'width:'+form.width+'px':'max-width: 110px'"
<!--:placeholder="form.placeholder"--> :placeholder="form.placeholder"
<!--@change="changeSelect">--> @change="changeSelect">
<!--<el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value" :disabled="item.disabled"/>--> <el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value" :disabled="item.disabled"/>
<!--</el-select>--> </el-select>
<!--</template>--> </template>
<!--&lt;!&ndash; 年月日 &ndash;&gt;--> <!-- 年月日 -->
<!--<template v-if="form.type==2">--> <template v-if="form.type==2">
<!--<el-date-picker--> <el-date-picker
<!--@change="changeSelect"--> @change="changeSelect"
<!--class="fromTime"--> class="fromTime"
<!--style="width: 210px"--> style="width: 210px"
<!--v-model="form.value"--> v-model="form.value"
<!--type="daterange"--> type="daterange"
<!--prefix-icon="fromTime-icon"--> prefix-icon="fromTime-icon"
<!--value-format="yyyy-MM-dd"--> value-format="yyyy-MM-dd"
<!--range-separator="至"--> range-separator="至"
<!--start-placeholder="开始日期"--> start-placeholder="开始日期"
<!--end-placeholder="结束日期">--> end-placeholder="结束日期">
<!--</el-date-picker>--> </el-date-picker>
<!--</template>--> </template>
<!--&lt;!&ndash; 输入框 &ndash;&gt;--> <!-- 输入框 -->
<!--<template v-if="form.type==3">--> <template v-if="form.type==3">
<!--<div class="cooperate-name" :id="'focus'+i">--> <div class="cooperate-name" :id="'focus'+i">
<!--<el-input clearable @clear="changeSelect" @focus="clickFocus('focus'+i)" @blur="clickFocus('focus'+i)" v-model="form.value" :placeholder="form.placeholder" :style="form.width?'width:'+form.width+'px':'width:180px'"></el-input>--> <el-input clearable @clear="changeSelect" @focus="clickFocus('focus'+i)" @blur="clickFocus('focus'+i)" v-model="form.value" :placeholder="form.placeholder" :style="form.width?'width:'+form.width+'px':'width:180px'"></el-input>
<!--<span @click="changeSelect">搜索</span>--> <span @click="changeSelect">搜索</span>
<!--</div>--> </div>
<!--</template>--> </template>
<!--&lt;!&ndash; 多选 &ndash;&gt;--> <!-- 多选 -->
<!--<template v-if="form.type==4">--> <template v-if="form.type==4">
<!--<el-select--> <el-select
<!--class="form-content-width"--> class="form-content-width"
<!--:class="form.value.length > 1 ? 'selectTag' : ''"--> :class="form.value.length > 1 ? 'selectTag' : ''"
<!--v-model="form.value"--> v-model="form.value"
<!--multiple--> multiple
<!--collapse-tags--> collapse-tags
<!--clearable--> clearable
<!--:style="form.width?'width:'+form.width+'px':'max-width: 170px'"--> :style="form.width?'width:'+form.width+'px':'max-width: 170px'"
<!--:placeholder="form.placeholder"--> :placeholder="form.placeholder"
<!--@change="changeSelect">--> @change="changeSelect">
<!--<el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value"/>--> <el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value"/>
<!--</el-select>--> </el-select>
<!--</template>--> </template>
<!--&lt;!&ndash; 时间、自定义 &ndash;&gt;--> <!-- 时间、自定义 -->
<!--<template v-else-if="form.type==5">--> <template v-else-if="form.type==5">
<!--<custom-time-select--> <custom-time-select
<!--:timeList="form.timeList"--> :timeList="form.timeList"
<!--v-model="form.value"--> v-model="form.value"
<!--:placeholder="form.placeholder"--> :placeholder="form.placeholder"
<!--:dateFrom="form.dateFrom ? form.dateFrom : ''"--> :dateFrom="form.dateFrom ? form.dateFrom : ''"
<!--:dateTo="form.dateTo ? form.dateTo : ''"--> :dateTo="form.dateTo ? form.dateTo : ''"
<!--@handle-search="changeSelect" />--> @handle-search="changeSelect" />
<!--</template>--> </template>
<!--&lt;!&ndash; 金额 &ndash;&gt;--> <!-- 金额 -->
<!--<template v-else-if="form.type==6">--> <template v-else-if="form.type==6">
<!--<custom-money-select--> <custom-money-select
<!--:moneyList="form.moneyList"--> :moneyList="form.moneyList"
<!--v-model="form.value"--> v-model="form.value"
<!--:placeholder="form.placeholder"--> :placeholder="form.placeholder"
<!--@handle-search="changeSelect" />--> @handle-search="changeSelect" />
<!--</template>--> </template>
<!--&lt;!&ndash; 地区选择 &ndash;&gt;--> <!-- 地区选择 -->
<!--<template v-else-if="form.type==7">--> <template v-else-if="form.type==7">
<!--<el-cascader--> <el-cascader
<!--ref="cascader"--> ref="cascader"
<!--:options="form.options"--> :options="form.options"
<!--:props="form.props"--> :props="form.props"
<!--v-model="form.value"--> v-model="form.value"
<!--@change="changeSelect"--> @change="changeSelect"
<!--:placeholder="form.placeholder"--> :placeholder="form.placeholder"
<!--collapse-tags--> collapse-tags
<!--clearable></el-cascader>--> clearable></el-cascader>
<!--</template>--> </template>
<!--&lt;!&ndash; 自定义 &ndash;&gt;--> <!-- 自定义 -->
<!--<template v-if="form.type==0">--> <template v-if="form.type==0">
<!--<slot name="slot"></slot>--> <slot name="slot"></slot>
<!--</template>--> </template>
<!--</div>--> </div>
<!--</div>--> </div>
<!--</div>--> </div>
<!--<template v-if="slots">--> <template v-if="slots">
<!--<slot name="slot"></slot>--> <slot name="slot"></slot>
<!--</template>--> </template>
<!--<div v-else class="flex-box">--> <div v-else class="flex-box">
<!--<span class="flex-box ability-total" v-if="isTotal">共{{ total }}条</span>--> <span class="flex-box ability-total" v-if="isTotal">共{{ total }}条</span>
<!--<span class="flex-box ability-excel" v-hasPermi="['combine:info:export:win:bid']" v-if="isExcel && title ==='集团业绩'" @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>--> <span class="flex-box ability-excel" v-hasPermi="['combine:info:export:win:bid']" v-if="isExcel && title ==='集团业绩'" @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
<!--<span class="flex-box ability-excel" v-else @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>--> <span class="flex-box ability-excel" v-else @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
<!--</div>--> </div>
<!--</div>--> </div>
<!--</div>--> </div>
</div> </div>
......
<template>
<div class="head-form-new" v-if="title === '集团业绩'">
<div class="common-title" v-if="title">{{ title }}</div>
<div class="flex-box query-box" style="margin-bottom: 12px;">
<div class="flex-box query-params">
</div>
<template v-if="slots">
<slot name="slot"></slot>
</template>
<div v-else class="flex-box">
<span class="flex-box ability-total" v-if="isTotal">共{{ total }}条</span>
<span class="flex-box ability-excel" v-hasPermi="['combine:info:export:win:bid']" v-if="isExcel && title ==='集团业绩'" @click="clickEXCEL"><img
src="@/assets/images/ability_excel.png">导出EXCEL</span>
<span class="flex-box ability-excel" v-else @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
</div>
</div>
<div class="flex-box query-box">
<div class="flex-box query-params">
<div class="headForm-from">
<div class="from-item" :key="i" v-for="(form, i) in formData">
<!-- 单选 -->
<template v-if="form.type==1">
<el-select v-model="form.value" clearable class="form-content-width same-select-com" :class="[`select-adaptive-${form.uid}`]"
:style="form.width?'width:'+form.width+'px':'max-width: 110px'" :placeholder="form.placeholder" @change="iptAdaptive(form.uid)">
<el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value" :disabled="item.disabled" />
</el-select>
</template>
<!-- 年月日 -->
<template v-if="form.type==2">
<el-date-picker @change="changeSelect" class="fromTime" style="width: 210px" v-model="form.value" type="daterange"
prefix-icon="fromTime-icon" value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
</template>
<!-- 输入框 -->
<template v-if="form.type==3">
<!-- 未点击前的输入框样式 -->
<div class="normal-search-container" @click="showSearchBox = true" v-if="!showSearchBox">
<img src="@/assets/images/enterprise/enterprise-search-icon.svg" alt="">
<span>搜索</span>
</div>
<!-- 输入框展开后样式 -->
<transition @enter="onEnter" appear mode="out-in">
<div class="cooperate-name enterprise-search-container" :id="'focus'+i" v-if="showSearchBox">
<el-input clearable @clear="changeSelect" @focus="clickFocus('focus'+i)" @blur="clickFocus('focus'+i)" v-model="form.value"
:placeholder="form.placeholder" :style="form.width?'width:'+form.width+'px':'width:180px'"></el-input>
<span @click="changeSelect">搜索</span>
</div>
</transition>
</template>
<!-- 多选 -->
<template v-if="form.type==4">
<el-select class="form-content-width"
:class="form.value.length > 1 ? ['selectTag',`select-adaptive-${form.uid}`] : [`select-adaptive-${form.uid}`]" v-model="form.value"
multiple collapse-tags clearable :style="form.width?'width:'+form.width+'px':'max-width: 170px'" :placeholder="form.placeholder"
@change="iptAdaptive(form.uid,true)">
<el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value" />
</el-select>
</template>
<!-- 时间、自定义 -->
<template v-else-if="form.type==5">
<custom-time-select :class="[`select-adaptive-${form.uid}`,'custom-select']" :timeList="form.timeList" v-model="form.value"
:placeholder="form.placeholder" :dateFrom="form.dateFrom ? form.dateFrom : ''" :dateTo="form.dateTo ? form.dateTo : ''"
@handle-search="iptAdaptive(form.uid)" />
</template>
<!-- 金额 -->
<template v-else-if="form.type==6">
<custom-money-select :class="[`select-adaptive-${form.uid}`,'custom-select']" :moneyList="form.moneyList" v-model="form.value"
:placeholder="form.placeholder" @handle-search="iptAdaptive(form.uid)" />
</template>
<!-- 地区选择 -->
<template v-else-if="form.type==7">
<el-cascader :class="[`select-adaptive-${form.uid}`]" ref="cascader" :options="form.options" :props="form.props" v-model="form.value"
@change="iptAdaptive(form.uid,true)" :placeholder="form.placeholder" collapse-tags clearable></el-cascader>
</template>
<!-- 自定义 -->
<template v-if="form.type==0">
<slot name="slot"></slot>
</template>
</div>
</div>
</div>
</div>
</div>
<div class="head-form-new" v-else>
<div class="common-title" v-if="title">{{ title }}</div>
<div class="flex-box query-box">
<div class="flex-box query-params">
<div class="headForm-from">
<div class="from-item" :key="i" v-for="(form, i) in formData">
<!-- 单选 -->
<template v-if="form.type==1">
<el-select v-model="form.value" clearable class="form-content-width same-select-com" :class="[`select-adaptive-${form.uid}`]"
:style="form.width?'width:'+form.width+'px':'max-width: 110px'" :placeholder="form.placeholder" @change="iptAdaptive(form.uid)">
<el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value" :disabled="item.disabled" />
</el-select>
</template>
<!-- 年月日 -->
<template v-if="form.type==2">
<el-date-picker @change="changeSelect" class="fromTime" style="width: 210px" v-model="form.value" type="daterange"
prefix-icon="fromTime-icon" value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
</template>
<!-- 输入框 -->
<template v-if="form.type==3">
<!-- 未点击前的输入框样式 -->
<div class="normal-search-container" @click="showSearchBox = true" v-if="!showSearchBox">
<img src="@/assets/images/enterprise/enterprise-search-icon.svg" alt="">
<span>搜索</span>
</div>
<!-- 输入框展开后样式 -->
<transition @enter="onEnter" appear mode="out-in">
<div class="cooperate-name enterprise-search-container" :id="'focus'+i" v-if="showSearchBox">
<el-input clearable @clear="changeSelect" @focus="clickFocus('focus'+i)" @blur="clickFocus('focus'+i)" v-model="form.value"
:placeholder="form.placeholder" :style="form.width?'width:'+form.width+'px':'width:180px'"></el-input>
<span @click="changeSelect">搜索</span>
</div>
</transition>
</template>
<!-- 多选 -->
<template v-if="form.type==4">
<el-select class="form-content-width"
:class="form.value.length > 1 ? ['selectTag',`select-adaptive-${form.uid}`] : [`select-adaptive-${form.uid}`]" v-model="form.value"
multiple collapse-tags clearable :style="form.width?'width:'+form.width+'px':'max-width: 170px'" :placeholder="form.placeholder"
@change="iptAdaptive(form.uid,true)">
<el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value" />
</el-select>
</template>
<!-- 时间、自定义 -->
<template v-else-if="form.type==5">
<custom-time-select :class="[`select-adaptive-${form.uid}`,'custom-select']" :timeList="form.timeList" v-model="form.value"
:placeholder="form.placeholder" :dateFrom="form.dateFrom ? form.dateFrom : ''" :dateTo="form.dateTo ? form.dateTo : ''"
@handle-search="iptAdaptive(form.uid)" />
</template>
<!-- 金额 -->
<template v-else-if="form.type==6">
<custom-money-select :class="[`select-adaptive-${form.uid}`,'custom-select']" :moneyList="form.moneyList" v-model="form.value"
:placeholder="form.placeholder" @handle-search="iptAdaptive(form.uid)" />
</template>
<!-- 地区选择 -->
<template v-else-if="form.type==7">
<el-cascader :class="[`select-adaptive-${form.uid}`]" ref="cascader" :options="form.options" :props="form.props" v-model="form.value"
@change="iptAdaptive(form.uid,true)" :placeholder="form.placeholder" collapse-tags clearable></el-cascader>
</template>
<!-- 自定义 -->
<template v-if="form.type==0">
<slot name="slot"></slot>
</template>
</div>
</div>
</div>
<template v-if="slots">
<slot name="slot"></slot>
</template>
<div v-else class="flex-box">
<span class="flex-box ability-total" v-if="isTotal">共{{ total }}条</span>
<span class="flex-box ability-excel" v-hasPermi="['combine:info:export:win:bid']" v-if="isExcel && title ==='集团业绩'" @click="clickEXCEL"><img
src="@/assets/images/ability_excel.png">导出EXCEL</span>
<span class="flex-box ability-excel" v-else @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
</div>
</div>
</div>
</template>
<script>
import CustomTimeSelect from './CustomTimeSelect';
import CustomMoneySelect from './CustomMoneySelect';
import gsap from "gsap";
export default {
name: "HeadForm",
props: {
title: {
type: String,
default: ''
},
queryParams: {
type: Object,
default: () => ({})
},
formData: {
type: Array,
default: () => []
},
isTotal: {
type: Boolean,
default: true
},
total: {
type: Number,
default: 0
},
isExcel: {
type: Boolean,
default: false
},
slots: {
type: Boolean,
default: false
}
},
data() {
return {
showSearchBox: false
};
},
created() {
this.getPlaceholder();
},
components: {
CustomTimeSelect,
CustomMoneySelect
},
methods: {
async getPlaceholder() {
try {
await this.$nextTick();
const doms = document.querySelectorAll("[class*='select-adaptive-']");
if (doms?.length) {
doms.forEach(dom => {
const realStyles = window.getComputedStyle(dom);
const ipt = dom.querySelector("input");
const text = ipt.getAttribute("placeholder");
const textContainer = document.createElement("span");
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
const hasPadding = (parseInt(realStyles.paddingLeft) || parseInt(realStyles.paddingRight)) ? true : false;
hasPadding ? textContainer.style.setProperty("padding", "0px 8px") : null;
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = text;
document.body.append(textContainer);
// 加上按钮宽度 以及间距
let containerWidth = textContainer.offsetWidth + 12 + 8;
textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`);
});
}
} catch (error) {
}
},
onEnter(el, done) {
gsap.from(el, {
opacity: 0,
width: 0,
});
gsap.to(el, {
opacity: 1,
width: 242,
onComplete() {
// 完成动画聚焦输入框
el.querySelector("input").focus();
done();
}
});
},
iptAdaptive(uid, multiple = false) {
multiple ? this.multipleAdaptiveHandle(uid) : this.iptAdaptiveHandle(uid);
},
// 多选处理
async multipleAdaptiveHandle(uid) {
try {
await this.$nextTick();
const dom = document.querySelector(`.select-adaptive-${uid}`);
const iptChild = dom.querySelector(".el-input__inner");
if (dom) {
const textContainer = document.createElement("span");
const textName = `text-${uid}`;
textContainer.classList.add(textName);
const selectChildren = dom.querySelectorAll(".el-tag");
if (selectChildren.length) {
let width = 0;
selectChildren.forEach(item => {
const text = item.textContent;
const itemInfo = window.getComputedStyle(item);
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
textContainer.style.setProperty("padding", itemInfo.padding);
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = text;
document.body.append(textContainer);
width += textContainer.offsetWidth + parseInt(itemInfo.marginLeft) + parseInt(itemInfo.marginRight);
textContainer.remove();
});
dom.style.setProperty("width", `${width + 60}px`);
this.$emit('handle-search');
return;
}
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
textContainer.style.setProperty("padding", "0px 8px");
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = iptChild.getAttribute("placeholder");
document.body.append(textContainer);
let containerWidth = textContainer.offsetWidth + 12 + 8;
textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`);
this.$emit('handle-search');
}
} catch (error) {
console.log(error);
}
},
// 单选处理
async iptAdaptiveHandle(uid) {
try {
await this.$nextTick();
const dom = document.querySelector(`.select-adaptive-${uid}`);
const realStyles = window.getComputedStyle(dom);
if (dom) {
const iptChild = dom.querySelector(".el-input__inner");
const textContainer = document.createElement("span");
const textName = `text-${uid}`;
textContainer.classList.add(textName);
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
const hasPadding = (parseInt(realStyles.paddingLeft) || parseInt(realStyles.paddingRight)) ? true : false;
hasPadding ? textContainer.style.setProperty("padding", "0px 8px") : null;
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = iptChild.value ? iptChild.value : iptChild.getAttribute("placeholder");
document.body.append(textContainer);
let containerWidth = textContainer.offsetWidth + 12 + 8;
textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`);
}
this.$emit('handle-search');
} catch (error) {
}
},
changeSelect(e) {
this.$emit('handle-search');
},
clickEXCEL() {
if (this.title === '集团业绩') {
this.$emit('handle-excel');
} else {
this.$message({
message: '功能正在开发中',
type: 'warning'
});
}
},
clickFocus(e) {
document.getElementById(e).classList.toggle('span-ba');
}
}
}
</script>
<style lang="scss">
.el-popper[x-placement^="bottom"] {
margin-top: 5px !important;
}
</style>
<style lang="scss" scoped>
::v-deep .el-popper[x-placement^="bottom"] {
margin-top: 5px;
}
.head-form-new {
display: flex;
flex-direction: column;
margin-bottom: 14px;
.common-title {
margin-bottom: 8px;
}
::v-deep .el-input__inner {
border: 1px solid #d9d9d9;
height: 34px;
line-height: 34px;
padding-right: 27px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
border-radius: 4px;
}
::v-deep .el-form-item {
margin-right: 8px !important;
}
::v-deep .el-input--medium .el-input__icon {
line-height: 34px;
}
::v-deep .el-cascader {
height: 34px;
line-height: 34px;
width: 190px;
.el-input {
input {
height: 34px !important;
}
}
.el-cascader__tags {
flex-wrap: inherit;
margin-top: 1px;
.el-tag {
max-width: 100px;
}
}
.el-input__suffix {
top: 1px;
}
}
.headForm-from {
display: flex;
.from-item {
margin-right: 8px;
&:last-child {
margin-right: 0;
}
.cooperate-name {
display: flex;
border-radius: 2px;
border: 1px solid #d9d9d9;
line-height: 34px;
height: 34px;
span {
width: 60px;
height: 32px;
line-height: 32px;
font-size: 14px;
background: #f5f5f5;
text-align: center;
color: #0081ff;
border: 1px solid #efefef;
border-left: 0;
cursor: pointer;
}
&.span-ba {
border: 1px solid #0081ff;
span {
color: #ffffff;
background: #0081ff;
border: 1px solid #0081ff;
}
}
::v-deep .el-input {
flex: 1;
}
::v-deep .el-input__inner {
border: 0;
line-height: 32px;
height: 32px;
position: absolute;
top: 0;
padding-right: 22px;
font-size: 12px;
padding-left: 8px;
}
}
.fromTime {
::v-deep .el-range-input {
width: 100%;
}
::v-deep .el-range-separator,
::v-deep .el-range__close-icon {
line-height: 24px;
width: 20px;
}
}
.fromTime-icon {
display: none;
}
.el-select {
.el-input__suffix {
right: 10px;
}
}
.normal-search-container {
display: flex;
align-items: center;
cursor: pointer;
&:hover {
& > span {
color: #0081ff;
}
}
& > img {
width: 16px;
height: 16px;
margin-left: 12px;
}
& > span {
color: #232323;
color: rgba(35, 35, 35, 0.8);
font-weight: 400;
margin-left: 8px;
line-height: 22px;
font-size: 14px;
}
}
}
::v-deep .form-content-width {
width: 170px;
}
::v-deep .selectTag {
.el-select__tags {
.el-tag {
&:first-child {
width: 70px;
}
}
}
}
::v-deep .el-select__tags {
.el-tag {
&:first-child {
//width: 100%;
}
}
}
}
.ability-total {
font-size: 12px;
color: #3d3d3d;
position: relative;
&:before {
content: "";
display: inline-block;
width: 2px;
height: 2px;
background: rgba(35, 35, 35, 0.4);
margin-right: 4px;
}
}
.ability-excel {
font-size: 14px;
color: rgba(35, 35, 35, 0.8);
margin-left: 16px;
cursor: pointer;
&:hover {
color: #0081ff;
}
img {
width: 18px;
height: 18px;
margin-right: 4px;
}
}
}
</style>
\ No newline at end of file
<template> <template>
<div class="detail-container"> <div class="detail-container bidding-agent">
<head-form <head-form-new title="常合作招标代理单位" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="常合作招标代理单位" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="agency" slot-scope="scope"> <template slot="agency" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.agencyId)}`:`/company/${encodeStr(scope.row.agencyId)}`" tag="a" class="a-link" v-if="scope.row.agencyId&&scope.row.agency" v-html="scope.row.agency"></router-link> <router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.agencyId)}`:`/company/${encodeStr(scope.row.agencyId)}`" tag="a"
class="a-link" v-if="scope.row.agencyId&&scope.row.agency" v-html="scope.row.agency"></router-link>
<div v-else v-html="scope.row.agency || '--'"></div> <div v-else v-html="scope.row.agency || '--'"></div>
</template> </template>
<template slot="projectInfo" slot-scope="scope"> <template slot="projectInfo" slot-scope="scope">
<router-link :to="`/radar/Notice/details/${scope.row.projectInfo.bid}`" tag="a" class="a-link" v-if="scope.row.projectInfo.bid&&scope.row.projectInfo.dealTitle" v-html="scope.row.projectInfo.dealTitle"></router-link> <router-link :to="`/radar/Notice/details/${scope.row.projectInfo.bid}`" tag="a" class="a-link"
v-if="scope.row.projectInfo.bid&&scope.row.projectInfo.dealTitle" v-html="scope.row.projectInfo.dealTitle"></router-link>
<div v-else v-html="scope.row.projectInfo.dealTitle || '--'"></div> <div v-else v-html="scope.row.projectInfo.dealTitle || '--'"></div>
<div v-if="scope.row.count>1" @click="handleClick($event, scope.row)" style="color: #FF7E38;cursor: pointer;">{{scope.row.count}}个合作项目/工程 ></div> <div v-if="scope.row.count>1" @click="handleClick($event, scope.row)" style="color: #FF7E38;cursor: pointer;">{{scope.row.count}}个合作项目/工程 >
</div>
</template> </template>
</tables> </tables>
<client-detail <client-detail v-if="isDetails" :data="rowData" :title="'合作项目/工程明细'" @cancel="isDetails=false" />
v-if="isDetails"
:data="rowData"
:title="'合作项目/工程明细'"
@cancel="isDetails=false" />
</div> </div>
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {oftenAgencyPage} from '@/api/detail/party-a/dealings' import { oftenAgencyPage } from '@/api/detail/party-a/dealings';
import ClientDetail from './component/bidagencyDetail' import ClientDetail from './component/bidagencyDetail';
export default { export default {
name: 'Bidagency', name: 'Bidagency',
props: ['companyId'], props: ['companyId'],
...@@ -58,54 +41,58 @@ export default { ...@@ -58,54 +41,58 @@ export default {
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'issueTime', order: 'descending'}, defaultSort: { prop: 'issueTime', order: 'descending' },
forData: [ forData: [
{label: '招标代理单位名称', prop: 'agency', minWidth: '350', slot: true}, { label: '招标代理单位名称', prop: 'agency', minWidth: '350', slot: true },
{label: '合作项目/工程名称', prop: 'projectInfo', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6'}, { label: '合作项目/工程名称', prop: 'projectInfo', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6' },
{label: '最近一次合作时间', prop: 'issueTime', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4'} { label: '最近一次合作时间', prop: 'issueTime', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4' }
], ],
formData: [ formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询', options: [], uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isDetails: false, isDetails: false,
rowData: {} rowData: {}
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await oftenAgencyPage(param) let res = await oftenAgencyPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows.map((item)=>{ this.tableData = res.rows.map((item) => {
item.projectInfo = typeof item.projectInfo == 'string' ? JSON.parse(item.projectInfo) : item.projectInfo item.projectInfo = typeof item.projectInfo == 'string' ? JSON.parse(item.projectInfo) : item.projectInfo;
return item return item;
}) });
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
handleClick(e, data) { handleClick(e, data) {
this.rowData = data this.rowData = data;
this.isDetails = true this.isDetails = true;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.bidding-agent {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container bid-opening-record">
<head-form <head-form-new title="开标记录" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="开标记录" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
v-else :queryParams="queryParams" @handle-current-change="handleCurrentChange">
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="name" slot-scope="scope"> <template slot="name" slot-scope="scope">
<router-link :to="`/radar/BidRecord/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.name" v-html="scope.row.name"></router-link> <router-link :to="`/radar/BidRecord/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.name"
v-html="scope.row.name"></router-link>
<div v-else v-html="scope.row.name || '--'"></div> <div v-else v-html="scope.row.name || '--'"></div>
</template> </template>
<template slot="source" slot-scope="scope"> <template slot="source" slot-scope="scope">
<span class="a-link" v-if="scope.row.url&&scope.row.source" @click="handlePic(scope.row.url)" style="cursor: pointer;">{{ scope.row.source }}</span> <span class="a-link" v-if="scope.row.url&&scope.row.source" @click="handlePic(scope.row.url)"
style="cursor: pointer;">{{ scope.row.source }}</span>
<div v-else>{{ scope.row.source || '--' }}</div> <div v-else>{{ scope.row.source || '--' }}</div>
</template> </template>
</tables> </tables>
...@@ -32,8 +20,8 @@ ...@@ -32,8 +20,8 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {tenderPage} from '@/api/detail/party-a/dealings' import { tenderPage } from '@/api/detail/party-a/dealings';
export default { export default {
name: 'Bidrecords', name: 'Bidrecords',
props: ['companyId'], props: ['companyId'],
...@@ -49,50 +37,54 @@ export default { ...@@ -49,50 +37,54 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '项目名称', prop: 'name', minWidth: '320', slot: true}, { label: '项目名称', prop: 'name', minWidth: '320', slot: true },
{label: '本企业投标报价(万元)', prop: 'tenderOffer', minWidth: '160'}, { label: '本企业投标报价(万元)', prop: 'tenderOffer', minWidth: '160' },
{label: '发布日期', prop: 'publishTime', minWidth: '100'}, { label: '发布日期', prop: 'publishTime', minWidth: '100' },
{label: '项目地区', prop: 'province', minWidth: '160'}, { label: '项目地区', prop: 'province', minWidth: '160' },
{label: '信息来源', prop: 'source', minWidth: '280', slot: true} { label: '信息来源', prop: 'source', minWidth: '280', slot: true }
], ],
formData: [ formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称查询', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称查询', options: [], uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0 tableDataTotal: 0
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await tenderPage(param) let res = await tenderPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
handlePic(url){ handlePic(url) {
if(url){ if (url) {
window.open(url, "_blank") window.open(url, "_blank");
} }
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.bid-opening-record {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container client">
<head-form <head-form-new title="客户" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="客户" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="companyName" slot-scope="scope"> <template slot="companyName" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.companyId)}`:`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName" v-html="scope.row.companyName"></router-link> <router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.companyId)}`:`/company/${encodeStr(scope.row.companyId)}`" tag="a"
class="a-link" v-if="scope.row.companyId&&scope.row.companyName" v-html="scope.row.companyName"></router-link>
<div v-else v-html="scope.row.companyName || '--'"></div> <div v-else v-html="scope.row.companyName || '--'"></div>
</template> </template>
<!-- <template slot="projectAllName" slot-scope="scope"> <!-- <template slot="projectAllName" slot-scope="scope">
...@@ -31,22 +16,17 @@ ...@@ -31,22 +16,17 @@
<div v-if="scope.row.count>1" @click="handleClick($event, scope.row)" style="color: #FF7E38;cursor: pointer;">有{{scope.row.count}}个合作项目/工程 ></div> <div v-if="scope.row.count>1" @click="handleClick($event, scope.row)" style="color: #FF7E38;cursor: pointer;">有{{scope.row.count}}个合作项目/工程 ></div>
</template> --> </template> -->
<template slot="count" slot-scope="scope"> <template slot="count" slot-scope="scope">
<div v-if="scope.row.count>0" class="a-link" style="cursor: pointer;" @click="handleClick($event, scope.row)" >{{scope.row.count}}</div> <div v-if="scope.row.count>0" class="a-link" style="cursor: pointer;" @click="handleClick($event, scope.row)">{{scope.row.count}}</div>
</template> </template>
</tables> </tables>
<client-detail <client-detail v-if="isDetails" :data="rowData" :title="title" :company-id="companyId" @cancel="isDetails=false" />
v-if="isDetails"
:data="rowData"
:title="title"
:company-id="companyId"
@cancel="isDetails=false" />
</div> </div>
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import { clientPage,getSelect } from '@/api/detail/party-a/dealings' import { clientPage, getSelect } from '@/api/detail/party-a/dealings';
import ClientDetail from './component/customDetail' import ClientDetail from './component/customDetail';
export default { export default {
name: 'Custom', name: 'Custom',
props: ['companyId'], props: ['companyId'],
...@@ -56,95 +36,99 @@ export default { ...@@ -56,95 +36,99 @@ export default {
}, },
data() { data() {
return { return {
title:'', title: '',
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 5, sort: 5,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'count', order: 'descending'}, defaultSort: { prop: 'count', order: 'descending' },
forData: [ forData: [
{label: '客户名称', prop: 'companyName', minWidth: '350', slot: true}, { label: '客户名称', prop: 'companyName', minWidth: '350', slot: true },
// {label: '合作项目/工程名称', prop: 'projectAllName', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6'}, // {label: '合作项目/工程名称', prop: 'projectAllName', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6'},
{label: '最近合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4'}, { label: '最近合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4' },
{label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2'}, { label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2' },
{label: '合作次数', prop: 'count', minWidth: '150', sortable: 'custom',slot: true, descending: '5', ascending: '6'}, { label: '合作次数', prop: 'count', minWidth: '150', sortable: 'custom', slot: true, descending: '5', ascending: '6' },
], ],
formData: [ formData: [
{ type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: []}, { type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: []}, { type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '搜索客户名称', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '搜索客户名称', options: [], uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isDetails: false, isDetails: false,
rowData: {} rowData: {}
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.handleOption() this.handleOption();
}, },
methods: { methods: {
async handleOption(){ async handleOption() {
let res = await getSelect({}) let res = await getSelect({});
if(res.code==200){ if (res.code == 200) {
let data = res.data.projects let data = res.data.projects;
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({ this.formData[0].options.push({
name: data[i], name: data[i],
value: data[i], value: data[i],
}) });
} }
let data1 = res.data.sources let data1 = res.data.sources;
for (var i=0;i<data1.length;i++){ for (var i = 0; i < data1.length; i++) {
this.formData[1].options.push({ this.formData[1].options.push({
name: data1[i], name: data1[i],
value: data1[i], value: data1[i],
}) });
} }
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await clientPage(param) let res = await clientPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
if(this.tableData&&this.tableData.length>0){ if (this.tableData && this.tableData.length > 0) {
this.tableData.forEach(item => { this.tableData.forEach(item => {
typeof item.projectInfo=='string' ? item.projectInfo = JSON.parse(item.projectInfo) : '' typeof item.projectInfo == 'string' ? item.projectInfo = JSON.parse(item.projectInfo) : '';
item.amount ? item.amount = parseFloat(item.amount.toFixed(4)) : '' item.amount ? item.amount = parseFloat(item.amount.toFixed(4)) : '';
}) });
} }
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
handleClick(e, data) { handleClick(e, data) {
this.rowData = data this.rowData = data;
this.isDetails = true; this.isDetails = true;
this.title = '与客户'+data.companyName.replace(/<font color='red'>/g,'').replace(/<\/font>/g,'')+'合作记录' this.title = '与客户' + data.companyName.replace(/<font color='red'>/g, '').replace(/<\/font>/g, '') + '合作记录';
}, },
handleDetail(row){ handleDetail(row) {
if(row.sourceUrl){ if (row.sourceUrl) {
window.open(row.sourceUrl, "_blank") window.open(row.sourceUrl, "_blank");
} }
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.client {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container history-contract">
<head-form <head-form-new title="历史发包" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="历史发包" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="projectAllName" slot-scope="scope"> <template slot="projectAllName" slot-scope="scope">
<router-link :to="`/biddetail/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectAllName" >{{ scope.row.projectAllName }}</router-link> <router-link :to="`/biddetail/${scope.row.id}`" tag="a" class="a-link"
v-if="scope.row.id&&scope.row.projectAllName">{{ scope.row.projectAllName }}</router-link>
<div v-else v-html="scope.row&&scope.row.projectAllName || '--'"></div> <div v-else v-html="scope.row&&scope.row.projectAllName || '--'"></div>
</template> </template>
<template slot="companyName" slot-scope="scope"> <template slot="companyName" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.companyId)}`:`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName">{{ scope.row.companyName }}</router-link> <router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.companyId)}`:`/company/${encodeStr(scope.row.companyId)}`" tag="a"
class="a-link" v-if="scope.row.companyId&&scope.row.companyName">{{ scope.row.companyName }}</router-link>
<div v-else>{{ scope.row.companyName || '--' }}</div> <div v-else>{{ scope.row.companyName || '--' }}</div>
</template> </template>
</tables> </tables>
...@@ -34,8 +20,8 @@ ...@@ -34,8 +20,8 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {historySendProvince, historySendPage} from '@/api/detail/party-a/dealings' import { historySendProvince, historySendPage } from '@/api/detail/party-a/dealings';
export default { export default {
name: 'Hiscontract', name: 'Hiscontract',
props: ['companyId'], props: ['companyId'],
...@@ -53,68 +39,72 @@ export default { ...@@ -53,68 +39,72 @@ export default {
}, },
defaultSort: {}, defaultSort: {},
forData: [ forData: [
{label: '项目名称', prop: 'projectAllName', minWidth: '560', slot: true}, { label: '项目名称', prop: 'projectAllName', minWidth: '560', slot: true },
{label: '中标时间', prop: 'winBidTime', minWidth: '100', sortable: 'custom', descending: '3', ascending: '4'}, { label: '中标时间', prop: 'winBidTime', minWidth: '100', sortable: 'custom', descending: '3', ascending: '4' },
{label: '中标企业', prop: 'companyName', minWidth: '320', slot: true}, { label: '中标企业', prop: 'companyName', minWidth: '320', slot: true },
{label: '中标金额(万元)', prop: 'winBidAmount', minWidth: '140', sortable: 'custom', descending: '1', ascending: '2'}, { label: '中标金额(万元)', prop: 'winBidAmount', minWidth: '140', sortable: 'custom', descending: '1', ascending: '2' },
{label: '下浮率(%)', prop: 'lowerRate', minWidth: '120', sortable: 'custom', descending: '7', ascending: '8'}, { label: '下浮率(%)', prop: 'lowerRate', minWidth: '120', sortable: 'custom', descending: '7', ascending: '8' },
{label: '项目经理 / 负责人', prop: 'staffName', minWidth: '130'}, { label: '项目经理 / 负责人', prop: 'staffName', minWidth: '130' },
{label: '中标地区', prop: 'region', minWidth: '160'}, { label: '中标地区', prop: 'region', minWidth: '160' },
{label: '工期(天)', prop: 'period', minWidth: '110', sortable: 'custom', descending: '9', ascending: '10'}, { label: '工期(天)', prop: 'period', minWidth: '110', sortable: 'custom', descending: '9', ascending: '10' },
{label: '业绩类别', prop: 'boundType', minWidth: '110'} { label: '业绩类别', prop: 'boundType', minWidth: '110' }
], ],
formData: [ formData: [
{ type: 1, fieldName: 'provinceId', value: '', placeholder: '项目地区', options: [] }, { type: 1, fieldName: 'provinceId', value: '', placeholder: '项目地区', options: [], uid: this.getUid() },
{ type: 5, fieldName: 'time', value: '', placeholder: '中标时间', startTime: 'dateFrom', endTime: 'dateTo' }, { type: 5, fieldName: 'time', value: '', placeholder: '中标时间', startTime: 'dateFrom', endTime: 'dateTo', uid: this.getUid() },
{ type: 6, fieldName: 'money', value: '', placeholder: '中标金额', startMoney: 'amountMin', endMoney: 'amountMax' }, { type: 6, fieldName: 'money', value: '', placeholder: '中标金额', startMoney: 'amountMin', endMoney: 'amountMax', uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称查询', options: [] } { type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称查询', options: [], uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0 tableDataTotal: 0
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleOption() this.handleOption();
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleOption(){ async handleOption() {
let res = await historySendProvince({cid: this.companyId}) let res = await historySendProvince({ cid: this.companyId });
if(res.code==200){ if (res.code == 200) {
let region = res.data.map(item => { let region = res.data.map(item => {
let it = {name:item.province+'('+item.count+')',value:item.provinceId} let it = { name: item.province + '(' + item.count + ')', value: item.provinceId };
return it return it;
}) });
this.setFormData('provinceId', region) this.setFormData('provinceId', region);
} }
}, },
async handleQuery(params) { async handleQuery(params) {
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await historySendPage(param) let res = await historySendPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
handleDetail(row){ handleDetail(row) {
if(row.sourceUrl){ if (row.sourceUrl) {
window.open(row.sourceUrl, "_blank") window.open(row.sourceUrl, "_blank");
} }
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.history-contract {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container supplier">
<head-form <head-form-new title="供应商" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="供应商" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="companyName" slot-scope="scope"> <template slot="companyName" slot-scope="scope">
<router-link :to="`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName" v-html="scope.row.companyName"></router-link> <router-link :to="`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName"
v-html="scope.row.companyName"></router-link>
<div v-else v-html="scope.row.companyName || '--'"></div> <div v-else v-html="scope.row.companyName || '--'"></div>
</template> </template>
<template slot="count" slot-scope="scope"> <template slot="count" slot-scope="scope">
<div v-if="scope.row.count>0" class="a-link" style="cursor: pointer;" @click="handleClick($event, scope.row)" >{{scope.row.count}}</div> <div v-if="scope.row.count>0" class="a-link" style="cursor: pointer;" @click="handleClick($event, scope.row)">{{scope.row.count}}</div>
</template> </template>
</tables> </tables>
<client-detail <client-detail v-if="isDetails" :data="rowData" :title="title" :company-id="companyId" @cancel="isDetails=false" />
v-if="isDetails"
:data="rowData"
:title="title"
:company-id="companyId"
@cancel="isDetails=false" />
</div> </div>
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import { supplierPage,getSelect } from '@/api/detail/party-a/dealings' import { supplierPage, getSelect } from '@/api/detail/party-a/dealings';
import ClientDetail from './component/supplierDetail' import ClientDetail from './component/supplierDetail';
export default { export default {
name: 'Supplier', name: 'Supplier',
props: ['companyId'], props: ['companyId'],
...@@ -51,7 +31,7 @@ export default { ...@@ -51,7 +31,7 @@ export default {
}, },
data() { data() {
return { return {
title:'', title: '',
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 5, sort: 5,
...@@ -60,84 +40,88 @@ export default { ...@@ -60,84 +40,88 @@ export default {
}, },
defaultSort: {}, defaultSort: {},
forData: [ forData: [
{label: '供应商', prop: 'companyName', minWidth: '350', slot: true}, { label: '供应商', prop: 'companyName', minWidth: '350', slot: true },
{label: '最近合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4'}, { label: '最近合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4' },
{label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2'}, { label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2' },
{label: '合作次数', prop: 'count', minWidth: '150', sortable: 'custom',slot: true, descending: '5', ascending: '6'}, { label: '合作次数', prop: 'count', minWidth: '150', sortable: 'custom', slot: true, descending: '5', ascending: '6' },
], ],
formData: [ formData: [
{ type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: []}, { type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: []}, { type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '搜索供应商名称', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '搜索供应商名称', options: [], uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isDetails: false, isDetails: false,
rowData: {} rowData: {}
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.handleOption() this.handleOption();
}, },
methods: { methods: {
async handleOption(){ async handleOption() {
let res = await getSelect({}) let res = await getSelect({});
if(res.code==200){ if (res.code == 200) {
let data = res.data.projects let data = res.data.projects;
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({ this.formData[0].options.push({
name: data[i], name: data[i],
value: data[i], value: data[i],
}) });
} }
let data1 = res.data.sources let data1 = res.data.sources;
for (var i=0;i<data1.length;i++){ for (var i = 0; i < data1.length; i++) {
this.formData[1].options.push({ this.formData[1].options.push({
name: data1[i], name: data1[i],
value: data1[i], value: data1[i],
}) });
} }
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await supplierPage(param) let res = await supplierPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
if(this.tableData&&this.tableData.length>0){ if (this.tableData && this.tableData.length > 0) {
this.tableData.forEach(item => { this.tableData.forEach(item => {
typeof item.projectInfo=='string' ? item.projectInfo = JSON.parse(item.projectInfo) : '' typeof item.projectInfo == 'string' ? item.projectInfo = JSON.parse(item.projectInfo) : '';
item.amount ? item.amount = parseFloat(item.amount.toFixed(4)) : '' item.amount ? item.amount = parseFloat(item.amount.toFixed(4)) : '';
}) });
} }
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
handleClick(e, data) { handleClick(e, data) {
this.rowData = data this.rowData = data;
this.isDetails = true this.isDetails = true;
this.title = '与供应商'+data.companyName.replace(/<font color='red'>/g,'').replace(/<\/font>/g,'')+'合作记录' this.title = '与供应商' + data.companyName.replace(/<font color='red'>/g, '').replace(/<\/font>/g, '') + '合作记录';
}, },
handleDetail(row){ handleDetail(row) {
if(row.sourceUrl){ if (row.sourceUrl) {
window.open(row.sourceUrl, "_blank") window.open(row.sourceUrl, "_blank");
} }
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.supplier {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
import {encodeStr} from "@/assets/js/common" import {encodeStr} from "@/assets/js/common"
import HeadForm from "../component/HeadForm" import HeadForm from "../component/HeadForm"
import HeadFormNew from "../component/HeadFormNew"
import Tables from "../component/Tables" import Tables from "../component/Tables"
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton'
import { v4 } from "uuid";
export default { export default {
components: { components: {
HeadForm, HeadForm,
Tables, Tables,
skeleton skeleton,
HeadFormNew
}, },
data() { data() {
return { return {
...@@ -18,6 +21,9 @@ export default { ...@@ -18,6 +21,9 @@ export default {
}, },
methods: { methods: {
getUid() {
return v4();
},
// 设置下拉选项数据源 // 设置下拉选项数据源
setFormData(fieldName, list) { setFormData(fieldName, list) {
this.formData.forEach(item => { this.formData.forEach(item => {
......
<template> <template>
<div class="detail-container"> <div class="detail-container administrative-license">
<head-form <head-form-new title="行政许可" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" @handle-search="handleSearch" />
title="行政许可"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
v-else :queryParams="queryParams" @handle-current-change="handleCurrentChange">
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="deciWritName" slot-scope="scope"> <template slot="deciWritName" slot-scope="scope">
<div v-html="scope.row.deciWritName"></div> <div v-html="scope.row.deciWritName"></div>
</template> </template>
<template slot="content" slot-scope="scope"> <template slot="content" slot-scope="scope">
<div :class="[isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.content)?'cell-span':'']" :style="{'-webkit-line-clamp': 2}"> <div :class="[isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.content)?'cell-span':'']"
:style="{'-webkit-line-clamp': 2}">
<div v-html="scope.row.content"></div> <div v-html="scope.row.content"></div>
<span v-if="isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.content)" @click="changeShowAll(scope.index, 0)">...<span style="color: #0081FF;">展开</span></span> <span v-if="isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.content)" @click="changeShowAll(scope.index, 0)">...<span
style="color: #0081FF;">展开</span></span>
</div> </div>
</template> </template>
</tables> </tables>
...@@ -33,9 +21,9 @@ ...@@ -33,9 +21,9 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton';
import {creditXzxkPage} from '@/api/detail/party-a/opport' import { creditXzxkPage } from '@/api/detail/party-a/opport';
export default { export default {
name: 'Administrative', name: 'Administrative',
props: ['companyId'], props: ['companyId'],
...@@ -45,95 +33,95 @@ export default { ...@@ -45,95 +33,95 @@ export default {
}, },
data() { data() {
return { return {
isSkeleton:true, isSkeleton: true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '许可决定日期', prop: 'deciTime', width: '110'}, { label: '许可决定日期', prop: 'deciTime', width: '110' },
{label: '决定文书号', prop: 'deciWritNo', width: '200'}, { label: '决定文书号', prop: 'deciWritNo', width: '200' },
{label: '许可编号', prop: 'permitNo', width: '100'}, { label: '许可编号', prop: 'permitNo', width: '100' },
{label: '决定文书名称', prop: 'deciWritName', width: '190', slot: true}, { label: '决定文书名称', prop: 'deciWritName', width: '190', slot: true },
{label: '许可内容', prop: 'content', width: '300', slot: true}, { label: '许可内容', prop: 'content', width: '300', slot: true },
{label: '有效期自', prop: 'valiBegin', width: '100'}, { label: '有效期自', prop: 'valiBegin', width: '100' },
{label: '有效期至', prop: 'valiEnd', width: '100'}, { label: '有效期至', prop: 'valiEnd', width: '100' },
{label: '行政许可类别', prop: 'permitType', width: '110'}, { label: '行政许可类别', prop: 'permitType', width: '110' },
{label: '许可机关', prop: 'office', width: '180'}, { label: '许可机关', prop: 'office', width: '180' },
{label: '行政许可机关统一社会信用代码', prop: 'officeCreditCode', width: '210'}, { label: '行政许可机关统一社会信用代码', prop: 'officeCreditCode', width: '210' },
{label: '数据来源单位', prop: 'dataSourceOffice', width: '110'}, { label: '数据来源单位', prop: 'dataSourceOffice', width: '110' },
{label: '数据来源单位统一社会信用代码', prop: 'dataSourceOfficeCreditCode', width: '210'}, { label: '数据来源单位统一社会信用代码', prop: 'dataSourceOfficeCreditCode', width: '210' },
{label: '来源', prop: 'dataSource', width: '80'} { label: '来源', prop: 'dataSource', width: '80' }
], ],
formData: [ formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: [], uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
showList:[] showList: []
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await creditXzxkPage(param) let res = await creditXzxkPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
if(res.rows&&res.rows.length>0){ if (res.rows && res.rows.length > 0) {
res.rows.forEach(item => { res.rows.forEach(item => {
item.smallContent = item.content.replace(/<.*?>/ig,"") item.smallContent = item.content.replace(/<.*?>/ig, "");
}) });
} }
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
changeShowAll(row, column) { changeShowAll(row, column) {
this.showList.push({ this.showList.push({
row: row, row: row,
column: column column: column
}) });
}, },
isOverHiddenFlag(data, showList, row, column, value) { isOverHiddenFlag(data, showList, row, column, value) {
if(value && this.getByteLen(value) > 88) { if (value && this.getByteLen(value) > 88) {
return !showList.some(item => item.row==row&&item.column==column) return !showList.some(item => item.row == row && item.column == column);
}else { } else {
return false return false;
} }
}, },
/*getLenth(data) { /*getLenth(data) {
return Math.floor(data / 6) * 2 //宽度(300) / 一个字符的宽度(6) * 行数(2) return Math.floor(data / 6) * 2 //宽度(300) / 一个字符的宽度(6) * 行数(2)
},*/ },*/
getByteLen(val) { getByteLen(val) {
var len = 0 var len = 0;
for (var i = 0; i < val.length; i++) { for (var i = 0; i < val.length; i++) {
var a = val.charAt(i) var a = val.charAt(i);
if (a.match(/[^\x00-\xff]/ig) != null){ if (a.match(/[^\x00-\xff]/ig) != null) {
len += 2 len += 2;
}else{ } else {
len += 1 len += 1;
} }
} }
/*if(val.match(/ /g)){ /*if(val.match(/ /g)){
len =len+Math.floor(val.match(/ /g).length/2) len =len+Math.floor(val.match(/ /g).length/2)
}*/ }*/
return len return len;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
...@@ -147,7 +135,7 @@ export default { ...@@ -147,7 +135,7 @@ export default {
-webkit-line-clamp: 4; -webkit-line-clamp: 4;
cursor: pointer; cursor: pointer;
>span { > span {
display: inline-block; display: inline-block;
width: 37px; width: 37px;
position: absolute; position: absolute;
...@@ -158,4 +146,8 @@ export default { ...@@ -158,4 +146,8 @@ export default {
} }
} }
} }
.administrative-license {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container tender-announcement">
<head-form <head-form-new ref="headForm" title="招标公告" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
ref="headForm" @handle-search="handleSearch" />
title="招标公告"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="projectName" slot-scope="scope"> <template slot="projectName" slot-scope="scope">
<router-link :to="`/radar/Notice/details/${scope.row.bid}`" tag="a" class="a-link" v-if="scope.row.bid&&scope.row.projectName " v-html="scope.row.projectName"></router-link> <router-link :to="`/radar/Notice/details/${scope.row.bid}`" tag="a" class="a-link" v-if="scope.row.bid&&scope.row.projectName "
v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div> <div v-else v-html="scope.row.projectName || '--'"></div>
</template> </template>
<template slot="province" slot-scope="scope"> <template slot="province" slot-scope="scope">
...@@ -35,9 +19,9 @@ ...@@ -35,9 +19,9 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton';
import {bidNoticeArea, bidNoticeTenderStage, bidNoticePage} from '@/api/detail/party-a/opport' import { bidNoticeArea, bidNoticeTenderStage, bidNoticePage } from '@/api/detail/party-a/opport';
export default { export default {
name: 'Announcement', name: 'Announcement',
props: ['companyId'], props: ['companyId'],
...@@ -47,123 +31,127 @@ export default { ...@@ -47,123 +31,127 @@ export default {
}, },
data() { data() {
return { return {
isSkeleton:true, isSkeleton: true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 3, sort: 3,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'issueTime', order: 'descending'}, defaultSort: { prop: 'issueTime', order: 'descending' },
forData: [ forData: [
{label: '项目名称', prop: 'projectName', minWidth: '300', slot: true}, { label: '项目名称', prop: 'projectName', minWidth: '300', slot: true },
{label: '发布日期', prop: 'issueTime', sortable: 'custom', descending: '3', ascending: '4', width: '120'}, { label: '发布日期', prop: 'issueTime', sortable: 'custom', descending: '3', ascending: '4', width: '120' },
{label: '预算金额(万元)', prop: 'projectAmount', sortable: 'custom', descending: '1', ascending: '2', width: '140'}, { label: '预算金额(万元)', prop: 'projectAmount', sortable: 'custom', descending: '1', ascending: '2', width: '140' },
{label: '项目地区', prop: 'province', width: '120', slot: true}, { label: '项目地区', prop: 'province', width: '120', slot: true },
{label: '项目类别', prop: 'tenderStage', width: '90'}, { label: '项目类别', prop: 'tenderStage', width: '90' },
{label: '招采单位联系人', prop: 'contact', width: '120'}, { label: '招采单位联系人', prop: 'contact', width: '120' },
{label: '招采单位联系方式', prop: 'contactTel', width: '130'}, { label: '招采单位联系方式', prop: 'contactTel', width: '130' },
{label: '代理单位', prop: 'agency', minWidth: '170'}, { label: '代理单位', prop: 'agency', minWidth: '170' },
{label: '代理单位联系人', prop: 'agencyContact', width: '120'}, { label: '代理单位联系人', prop: 'agencyContact', width: '120' },
{label: '代理单位联系方式', prop: 'agencyContactTel', width: '130'}, { label: '代理单位联系方式', prop: 'agencyContactTel', width: '130' },
{label: '报名截止日期', prop: 'overTime', width: '110'} { label: '报名截止日期', prop: 'overTime', width: '110' }
], ],
formData: [ formData: [
{ type: 7, fieldName: 'province', value: '',props: {multiple: true}, placeholder: '项目地区', options: []}, { type: 7, fieldName: 'province', value: '', props: { multiple: true }, placeholder: '项目地区', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'tenderStage', value: '', placeholder: '项目类型', options: []}, { type: 4, fieldName: 'tenderStage', value: '', placeholder: '项目类型', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: []} { type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: [], uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0 tableDataTotal: 0
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleOption() this.handleOption();
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleOption(){ async handleOption() {
let [area, tender] = await Promise.all([ let [area, tender] = await Promise.all([
bidNoticeArea({cid: this.companyId}), bidNoticeArea({ cid: this.companyId }),
bidNoticeTenderStage({cid: this.companyId}) bidNoticeTenderStage({ cid: this.companyId })
]) ]);
if(area.code==200){ if (area.code == 200) {
let region = area.data.map(item => { let region = area.data.map(item => {
let province = {label:item.province+'('+item.count+')',value:item.provinceId} let province = { label: item.province + '(' + item.count + ')', value: item.provinceId };
if(item.citys&&item.citys.length>0){ if (item.citys && item.citys.length > 0) {
let city = [], citem = {} let city = [], citem = {};
for(let i=0;i<item.citys.length;i++){ for (let i = 0; i < item.citys.length; i++) {
citem = {label:item.citys[i].city, value:item.citys[i].cityId} citem = { label: item.citys[i].city, value: item.citys[i].cityId };
if(item.citys[i].areas&&item.citys[i].areas.length>0){ if (item.citys[i].areas && item.citys[i].areas.length > 0) {
let area = [], aitem = {} let area = [], aitem = {};
for(let j=0;j<item.citys[i].areas.length;j++){ for (let j = 0; j < item.citys[i].areas.length; j++) {
aitem = {label:item.citys[i].areas[j].area, value:item.citys[i].areas[j].areaId} aitem = { label: item.citys[i].areas[j].area, value: item.citys[i].areas[j].areaId };
area.push(aitem) area.push(aitem);
citem.children = area citem.children = area;
} }
} }
city.push(citem) city.push(citem);
} }
city.length>0 ? province.children = city : '' city.length > 0 ? province.children = city : '';
} }
return province return province;
}) });
this.setFormData('province', region) this.setFormData('province', region);
} }
if(tender.code==200){ if (tender.code == 200) {
let tenderStage = tender.data.map(item => { let tenderStage = tender.data.map(item => {
let it = {name:item.tenderStage+'('+item.count+')',value:item.tenderStage} let it = { name: item.tenderStage + '(' + item.count + ')', value: item.tenderStage };
return it return it;
}) });
this.setFormData('tenderStage', tenderStage) this.setFormData('tenderStage', tenderStage);
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = this.getAreaList(params || this.queryParams) let param = this.getAreaList(params || this.queryParams);
let res = await bidNoticePage(param) let res = await bidNoticePage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
getAreaList(params){ getAreaList(params) {
if(params.province&&params.province.length>0){ if (params.province && params.province.length > 0) {
let arr = this.$refs.headForm.$refs.cascader[0].getCheckedNodes() let arr = this.$refs.headForm.$refs.cascader[0].getCheckedNodes();
let provinceIds = [], cityIds = [], areaIds = [] let provinceIds = [], cityIds = [], areaIds = [];
for (var i in arr) { for (var i in arr) {
if (arr[i].parent) { if (arr[i].parent) {
if (!arr[i].parent.checked) { if (!arr[i].parent.checked) {
if(arr[i].hasChildren || arr[i].level==2){ if (arr[i].hasChildren || arr[i].level == 2) {
cityIds.push(arr[i].value) cityIds.push(arr[i].value);
}else{ } else {
areaIds.push(arr[i].value) areaIds.push(arr[i].value);
} }
} }
} else { } else {
provinceIds.push(arr[i].value) provinceIds.push(arr[i].value);
} }
} }
delete params.province delete params.province;
provinceIds.length>0?params.provinceIds = provinceIds:'' provinceIds.length > 0 ? params.provinceIds = provinceIds : '';
cityIds.length>0?params.cityIds = cityIds:'' cityIds.length > 0 ? params.cityIds = cityIds : '';
areaIds.length>0?params.areaIds = areaIds:'' areaIds.length > 0 ? params.areaIds = areaIds : '';
} }
return params return params;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.tender-announcement {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container bidding-plan">
<head-form <head-form-new title="招标计划" :form-data="formData" :query-params="queryParams" :isExcel="true" @handle-search="handleSearch"
title="招标计划" :total="tableDataTotal" />
:form-data="formData"
:query-params="queryParams"
:isExcel="true"
@handle-search="handleSearch"
:total="tableDataTotal"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="projectName" slot-scope="scope"> <template slot="projectName" slot-scope="scope">
<router-link :to="`/radar/Bidding/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName " v-html="scope.row.projectName"></router-link> <router-link :to="`/radar/Bidding/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName "
v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div> <div v-else v-html="scope.row.projectName || '--'"></div>
</template> </template>
<template slot="province" slot-scope="scope"> <template slot="province" slot-scope="scope">
...@@ -34,9 +19,9 @@ ...@@ -34,9 +19,9 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {bidPlanPage,bidPlanProjectType} from '@/api/detail/party-a/opport' import { bidPlanPage, bidPlanProjectType } from '@/api/detail/party-a/opport';
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton';
export default { export default {
name: 'Biddingplan', name: 'Biddingplan',
props: ['companyId'], props: ['companyId'],
...@@ -46,69 +31,73 @@ export default { ...@@ -46,69 +31,73 @@ export default {
}, },
data() { data() {
return { return {
isSkeleton:true, isSkeleton: true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 3, sort: 3,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'issueTime', order: 'descending'}, defaultSort: { prop: 'issueTime', order: 'descending' },
forData: [ forData: [
{label: '项目名称', prop: 'projectName', minWidth: '400', slot: true}, { label: '项目名称', prop: 'projectName', minWidth: '400', slot: true },
{label: '发布日期', prop: 'issueTime', sortable: 'custom', descending: '3', ascending: '4', width: '120'}, { label: '发布日期', prop: 'issueTime', sortable: 'custom', descending: '3', ascending: '4', width: '120' },
{label: '合同预估金额(万元)', prop: 'planTenderAmount', sortable: 'custom', descending: '1', ascending: '2', width: '170'}, { label: '合同预估金额(万元)', prop: 'planTenderAmount', sortable: 'custom', descending: '1', ascending: '2', width: '170' },
{label: '资金来源', prop: 'projecetCapitalSource', minWidth: '100'}, { label: '资金来源', prop: 'projecetCapitalSource', minWidth: '100' },
{label: '项目地区', prop: 'province', minWidth: '110', slot: true}, { label: '项目地区', prop: 'province', minWidth: '110', slot: true },
{label: '项目类型', prop: 'buildingProjectType', minWidth: '100'}, { label: '项目类型', prop: 'buildingProjectType', minWidth: '100' },
{label: '标的物类型', prop: 'objectType', minWidth: '100'}, { label: '标的物类型', prop: 'objectType', minWidth: '100' },
{label: '预计招标日期', prop: 'planTenderDateStart', sortable: 'custom', descending: '15', ascending: '16', minWidth: '110'} { label: '预计招标日期', prop: 'planTenderDateStart', sortable: 'custom', descending: '15', ascending: '16', minWidth: '110' }
], ],
formData: [ formData: [
{ type: 4, fieldName: 'buildingProjectType', value: '', placeholder: '项目类型', options: []}, { type: 4, fieldName: 'buildingProjectType', value: '', placeholder: '项目类型', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220} { type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220, uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0 tableDataTotal: 0
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.handleOption() this.handleOption();
}, },
methods: { methods: {
async handleOption(){ async handleOption() {
let res = await bidPlanProjectType({cid: this.companyId}) let res = await bidPlanProjectType({ cid: this.companyId });
if(res.code==200){ if (res.code == 200) {
let buildingProjectType = res.data.map(item => { let buildingProjectType = res.data.map(item => {
let it = {name:item.buildingProjectType+'('+item.count+')',value:item.buildingProjectType} let it = { name: item.buildingProjectType + '(' + item.count + ')', value: item.buildingProjectType };
return it return it;
}) });
this.setFormData('buildingProjectType', buildingProjectType) this.setFormData('buildingProjectType', buildingProjectType);
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await bidPlanPage(param) let res = await bidPlanPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.bidding-plan {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container special-bond">
<head-form <head-form-new title="专项债项目" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="专项债项目" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="projectName" slot-scope="scope"> <template slot="projectName" slot-scope="scope">
<router-link :to="`/radar/debtProject/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName " v-html="scope.row.projectName"></router-link> <router-link :to="`/radar/debtProject/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName "
v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div> <div v-else v-html="scope.row.projectName || '--'"></div>
</template> </template>
</tables> </tables>
...@@ -31,9 +16,9 @@ ...@@ -31,9 +16,9 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {specialDebtProjectPage} from '@/api/detail/party-a/opport' import { specialDebtProjectPage } from '@/api/detail/party-a/opport';
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton';
export default { export default {
name: 'Bond', name: 'Bond',
props: ['companyId'], props: ['companyId'],
...@@ -43,53 +28,57 @@ export default { ...@@ -43,53 +28,57 @@ export default {
}, },
data() { data() {
return { return {
isSkeleton:true, isSkeleton: true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 1, sort: 1,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'projectTotalInvestment', order: 'descending'}, defaultSort: { prop: 'projectTotalInvestment', order: 'descending' },
forData: [ forData: [
{label: '项目名称', prop: 'projectName', minWidth: '300', slot: true}, { label: '项目名称', prop: 'projectName', minWidth: '300', slot: true },
{label: '项目总投资(万元)', prop: 'projectTotalInvestment', sortable: 'custom', descending: '1', ascending: '2', width: '160'}, { label: '项目总投资(万元)', prop: 'projectTotalInvestment', sortable: 'custom', descending: '1', ascending: '2', width: '160' },
{label: '项目资本金(万元)', prop: 'projectCapital', sortable: 'custom', descending: '17', ascending: '18', width: '160'}, { label: '项目资本金(万元)', prop: 'projectCapital', sortable: 'custom', descending: '17', ascending: '18', width: '160' },
{label: '专项债用作资本金(万元)', prop: 'specialBondCapital', sortable: 'custom', descending: '19', ascending: '20', width: '200'} { label: '专项债用作资本金(万元)', prop: 'specialBondCapital', sortable: 'custom', descending: '19', ascending: '20', width: '200' }
], ],
formData: [ formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220}, { type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220, uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0 tableDataTotal: 0
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await specialDebtProjectPage(param) let res = await specialDebtProjectPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.special-bond {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container land-transaction">
<head-form <head-form-new title="土地交易" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="土地交易" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="projectName" slot-scope="scope"> <template slot="projectName" slot-scope="scope">
<router-link :to="`/radar/Land/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName " v-html="scope.row.projectName"></router-link> <router-link :to="`/radar/Land/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName "
v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div> <div v-else v-html="scope.row.projectName || '--'"></div>
</template> </template>
</tables> </tables>
...@@ -31,9 +16,9 @@ ...@@ -31,9 +16,9 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {landUse, landTransactionPage} from '@/api/detail/party-a/opport' import { landUse, landTransactionPage } from '@/api/detail/party-a/opport';
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton';
export default { export default {
name: 'Landtransaction', name: 'Landtransaction',
props: ['companyId'], props: ['companyId'],
...@@ -43,75 +28,79 @@ export default { ...@@ -43,75 +28,79 @@ export default {
}, },
data() { data() {
return { return {
isSkeleton:true, isSkeleton: true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 3, sort: 3,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'contractSignTime', order: 'descending'}, defaultSort: { prop: 'contractSignTime', order: 'descending' },
forData: [ forData: [
{label: '项目名称', prop: 'projectName', minWidth: '300', slot: true}, { label: '项目名称', prop: 'projectName', minWidth: '300', slot: true },
{label: '土地用途', prop: 'landUse', width: '130'}, { label: '土地用途', prop: 'landUse', width: '130' },
{label: '行业分类', prop: 'industry', width: '100'}, { label: '行业分类', prop: 'industry', width: '100' },
{label: '供地方式', prop: 'supplyLandWay', width: '100'}, { label: '供地方式', prop: 'supplyLandWay', width: '100' },
{label: '土地坐落', prop: 'landAddr', minWidth: '130'}, { label: '土地坐落', prop: 'landAddr', minWidth: '130' },
{label: '成交金额(万元)', prop: 'transactionPrice', sortable: 'custom', descending: '1', ascending: '2', width: '140'}, { label: '成交金额(万元)', prop: 'transactionPrice', sortable: 'custom', descending: '1', ascending: '2', width: '140' },
{label: '总面积(㎡)', prop: 'acreage', sortable: 'custom', descending: '11', ascending: '12', width: '130'}, { label: '总面积(㎡)', prop: 'acreage', sortable: 'custom', descending: '11', ascending: '12', width: '130' },
{label: '批准单位', prop: 'authority', width: '130'}, { label: '批准单位', prop: 'authority', width: '130' },
{label: '签订日期', prop: 'contractSignTime', sortable: 'custom', descending: '3', ascending: '4', width: '130'} { label: '签订日期', prop: 'contractSignTime', sortable: 'custom', descending: '3', ascending: '4', width: '130' }
], ],
formData: [ formData: [
{ type: 4, fieldName: 'landUse', value: '', placeholder: '土地用途', options: []}, { type: 4, fieldName: 'landUse', value: '', placeholder: '土地用途', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220} { type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220, uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0 tableDataTotal: 0
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleOption() this.handleOption();
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleOption(){ async handleOption() {
let res = await landUse({cid: this.companyId}) let res = await landUse({ cid: this.companyId });
if(res.code==200){ if (res.code == 200) {
let use = res.data.map(item => { let use = res.data.map(item => {
let it = {name:item.landUse+'('+item.count+')',value:item.landUse} let it = { name: item.landUse + '(' + item.count + ')', value: item.landUse };
return it return it;
}) });
this.setFormData('landUse', use) this.setFormData('landUse', use);
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await landTransactionPage(param) let res = await landTransactionPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
if(this.tableData.length>0){ if (this.tableData.length > 0) {
this.tableData.map(item=>{ this.tableData.map(item => {
item.transactionPrice==0&&(item.transactionPrice = '--') item.transactionPrice == 0 && (item.transactionPrice = '--');
}) });
} }
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.land-transaction {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container proposed-project">
<head-form <head-form-new title="拟建项目" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="拟建项目" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="projectName" slot-scope="scope"> <template slot="projectName" slot-scope="scope">
<router-link :to="`/radar/Establishment/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName " v-html="scope.row.projectName"></router-link> <router-link :to="`/radar/Establishment/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName "
v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div> <div v-else v-html="scope.row.projectName || '--'"></div>
</template> </template>
<template slot="isProjcet" slot-scope="scope"> <template slot="isProjcet" slot-scope="scope">
...@@ -34,9 +19,9 @@ ...@@ -34,9 +19,9 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import { approvalProjectPage } from '@/api/detail/party-a/opport' import { approvalProjectPage } from '@/api/detail/party-a/opport';
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton';
export default { export default {
name: 'Proposed', name: 'Proposed',
props: ['companyId'], props: ['companyId'],
...@@ -52,51 +37,55 @@ export default { ...@@ -52,51 +37,55 @@ export default {
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'planStartTime', order: 'descending'}, defaultSort: { prop: 'planStartTime', order: 'descending' },
forData: [ forData: [
{label: '项目名称', prop: 'projectName', minWidth: '300', slot: true}, { label: '项目名称', prop: 'projectName', minWidth: '300', slot: true },
// {label: '成交金额(万元)', prop: 'money', sortable: 'custom', descending: '1', ascending: '2', width: '150'}, // {label: '成交金额(万元)', prop: 'money', sortable: 'custom', descending: '1', ascending: '2', width: '150'},
{label: '项目类别', prop: 'projectCategories', width: '100'}, { label: '项目类别', prop: 'projectCategories', width: '100' },
{label: '计划开工日期', prop: 'planStartTime', sortable: 'custom', descending: '3', ascending: '4', width: '130'}, { label: '计划开工日期', prop: 'planStartTime', sortable: 'custom', descending: '3', ascending: '4', width: '130' },
{label: '计划完工日期', prop: 'planEndTime', sortable: 'custom', descending: '13', ascending: '14', width: '130'}, { label: '计划完工日期', prop: 'planEndTime', sortable: 'custom', descending: '13', ascending: '14', width: '130' },
{label: '审批结果', prop: 'examineStatus', width: '100'}, { label: '审批结果', prop: 'examineStatus', width: '100' },
{label: '是否为民间推介项目', prop: 'isProjcet', width: '150', slot: true} { label: '是否为民间推介项目', prop: 'isProjcet', width: '150', slot: true }
], ],
formData: [ formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220}, { type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220, uid: this.getUid() },
{ type: 1, fieldName: 'isProject', value: '', placeholder: '是否为民间推介项目', options: [{name:'不限',value:null},{name:'是',value:'1'},{name:'否',value:'0'}],width: 180}, { type: 1, fieldName: 'isProject', value: '', placeholder: '是否为民间推介项目', options: [{ name: '不限', value: null }, { name: '是', value: '1' }, { name: '否', value: '0' }], width: 180, uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true, isSkeleton: true,
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await approvalProjectPage(param) let res = await approvalProjectPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.proposed-project {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container beacon-pro">
<head-form <head-form-new title="标讯Pro" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="标讯Pro" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
v-else :queryParams="queryParams" @handle-current-change="handleCurrentChange">
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="projectName" slot-scope="scope"> <template slot="projectName" slot-scope="scope">
<router-link :to="`/radar/bxprozbgg/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName " v-html="scope.row.projectName"></router-link> <router-link :to="`/radar/bxprozbgg/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName "
v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div> <div v-else v-html="scope.row.projectName || '--'"></div>
</template> </template>
<template slot="tenderee" slot-scope="scope"> <template slot="tenderee" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.tendereeId)}`:`/company/${encodeStr(scope.row.tendereeId)}`" tag="a" class="a-link" v-if="scope.row.tendereeId&&scope.row.tenderee " v-html="scope.row.tenderee"></router-link> <router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.tendereeId)}`:`/company/${encodeStr(scope.row.tendereeId)}`" tag="a"
class="a-link" v-if="scope.row.tendereeId&&scope.row.tenderee " v-html="scope.row.tenderee"></router-link>
<div v-else v-html="scope.row.tenderee || '--'"></div> <div v-else v-html="scope.row.tenderee || '--'"></div>
</template> </template>
<template slot="agency" slot-scope="scope"> <template slot="agency" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.agencyId)}`:`/company/${encodeStr(scope.row.agencyId)}`" tag="a" class="a-link" v-if="scope.row.agencyId&&scope.row.agency " v-html="scope.row.agency"></router-link> <router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.agencyId)}`:`/company/${encodeStr(scope.row.agencyId)}`" tag="a"
class="a-link" v-if="scope.row.agencyId&&scope.row.agency " v-html="scope.row.agency"></router-link>
<div v-else v-html="scope.row.agency || '--'"></div> <div v-else v-html="scope.row.agency || '--'"></div>
</template> </template>
<template slot="province" slot-scope="scope"> <template slot="province" slot-scope="scope">
...@@ -40,9 +29,9 @@ ...@@ -40,9 +29,9 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton';
import { bidNoticeProProjectType, bidNoticeProProjectPurposes, bidNoticeProAssessmentWay, bidNoticeProPage } from '@/api/detail/party-a/opport' import { bidNoticeProProjectType, bidNoticeProProjectPurposes, bidNoticeProAssessmentWay, bidNoticeProPage } from '@/api/detail/party-a/opport';
export default { export default {
name: 'Tencent', name: 'Tencent',
props: ['companyId'], props: ['companyId'],
...@@ -58,101 +47,111 @@ export default { ...@@ -58,101 +47,111 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '项目名称', prop: 'projectName', minWidth: '320', slot: true}, { label: '项目名称', prop: 'projectName', minWidth: '320', slot: true },
{label: '发布日期', prop: 'pubdate', width: '110'}, { label: '发布日期', prop: 'pubdate', width: '110' },
{label: '金额(万元)', prop: '', children: [ {
{ label: '建安费暂估', prop: 'projectSafeAmount', width: '98px'}, label: '金额(万元)', prop: '', children: [
{ label: '勘察费暂估', prop: 'projectSurveyAmount', width: '98px'}, { label: '建安费暂估', prop: 'projectSafeAmount', width: '98px' },
{ label: '保证金', prop: 'projectEnsureAmount', width: '98px'} { label: '勘察费暂估', prop: 'projectSurveyAmount', width: '98px' },
]}, { label: '保证金', prop: 'projectEnsureAmount', width: '98px' }
{label: '招标人及联系方式', prop: '', children: [ ]
{ label: '招标人', prop: 'tenderee', width: '98px', slot: true}, },
{ label: '联系人', prop: 'tendereeTel', width: '98px'} {
]}, label: '招标人及联系方式', prop: '', children: [
{label: '代理机构及联系方式', prop: '', children: [ { label: '招标人', prop: 'tenderee', width: '98px', slot: true },
{ label: '代理机构', prop: 'agency', width: '88px', slot: true}, { label: '联系人', prop: 'tendereeTel', width: '98px' }
{ label: '联系人', prop: 'agencyTel', width: '88px'} ]
]}, },
{label: '项目分类', prop: 'projectType', width: '130'}, {
{label: '工程类别', prop: 'projectPurposes', width: '130'}, label: '代理机构及联系方式', prop: '', children: [
{label: '分部分项', prop: 'projectSub', width: '130'}, { label: '代理机构', prop: 'agency', width: '88px', slot: true },
{label: '项目级别', prop: 'projectLevel', width: '130'}, { label: '联系人', prop: 'agencyTel', width: '88px' }
{label: '评标办法', prop: 'bidAssessmentWay', width: '130'}, ]
{label: '项目属地', prop: 'province', width: '130', slot: true} },
{ label: '项目分类', prop: 'projectType', width: '130' },
{ label: '工程类别', prop: 'projectPurposes', width: '130' },
{ label: '分部分项', prop: 'projectSub', width: '130' },
{ label: '项目级别', prop: 'projectLevel', width: '130' },
{ label: '评标办法', prop: 'bidAssessmentWay', width: '130' },
{ label: '项目属地', prop: 'province', width: '130', slot: true }
], ],
formData: [ formData: [
{ type: 1, fieldName: 'projectType', value: '', placeholder: '项目类别', options: []}, { type: 1, fieldName: 'projectType', value: '', placeholder: '项目类别', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'projectPurposes', value: '', placeholder: '工程类别', options: []}, { type: 1, fieldName: 'projectPurposes', value: '', placeholder: '工程类别', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'bidAssessmentWay', value: '', placeholder: '评标办法', options: []}, { type: 1, fieldName: 'bidAssessmentWay', value: '', placeholder: '评标办法', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: []} { type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: [], uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true, isSkeleton: true,
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleOption() this.handleOption();
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleOption(){ async handleOption() {
let [projectType, projectPurposes, proAssessmentWay] = await Promise.all([ let [projectType, projectPurposes, proAssessmentWay] = await Promise.all([
bidNoticeProProjectType({cid: this.companyId}), bidNoticeProProjectType({ cid: this.companyId }),
bidNoticeProProjectPurposes({cid: this.companyId}), bidNoticeProProjectPurposes({ cid: this.companyId }),
bidNoticeProAssessmentWay({cid: this.companyId}) bidNoticeProAssessmentWay({ cid: this.companyId })
]) ]);
if(projectType.code==200){ if (projectType.code == 200) {
let type = projectType.data.map(item => { let type = projectType.data.map(item => {
let it = {name:item.projectType+'('+item.count+')',value:item.projectType} let it = { name: item.projectType + '(' + item.count + ')', value: item.projectType };
return it return it;
}) });
this.setFormData('projectType', type) this.setFormData('projectType', type);
} }
if(projectPurposes.code==200){ if (projectPurposes.code == 200) {
let purposes = projectPurposes.data.map(item => { let purposes = projectPurposes.data.map(item => {
let it = {name:item.projectPurposes+'('+item.count+')',value:item.projectPurposes} let it = { name: item.projectPurposes + '(' + item.count + ')', value: item.projectPurposes };
return it return it;
}) });
this.setFormData('projectPurposes', purposes) this.setFormData('projectPurposes', purposes);
} }
if(proAssessmentWay.code==200){ if (proAssessmentWay.code == 200) {
let way = proAssessmentWay.data.map(item => { let way = proAssessmentWay.data.map(item => {
let it = {name:item.bidAssessmentWay+'('+item.count+')',value:item.bidAssessmentWay} let it = { name: item.bidAssessmentWay + '(' + item.count + ')', value: item.bidAssessmentWay };
return it return it;
}) });
this.setFormData('bidAssessmentWay', way) this.setFormData('bidAssessmentWay', way);
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await bidNoticeProPage(param) let res = await bidNoticeProPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
if(this.tableData&&this.tableData.length>0){ if (this.tableData && this.tableData.length > 0) {
this.tableData.forEach(item => { this.tableData.forEach(item => {
item.projectSafeAmount ? item.projectSafeAmount = parseFloat(parseFloat(item.projectSafeAmount).toFixed(4)) : '' item.projectSafeAmount ? item.projectSafeAmount = parseFloat(parseFloat(item.projectSafeAmount).toFixed(4)) : '';
item.projectSurveyAmount ? item.projectSurveyAmount = parseFloat(parseFloat(item.projectSurveyAmount).toFixed(4)) : '' item.projectSurveyAmount ? item.projectSurveyAmount = parseFloat(parseFloat(item.projectSurveyAmount).toFixed(4)) : '';
item.projectEnsureAmount ? item.projectEnsureAmount = parseFloat(parseFloat(item.projectEnsureAmount).toFixed(4)) : '' item.projectEnsureAmount ? item.projectEnsureAmount = parseFloat(parseFloat(item.projectEnsureAmount).toFixed(4)) : '';
}) });
} }
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.beacon-pro {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <div class="app-container detail-container branch-office">
<div class="app-container detail-container" v-else> <head-form-new title="分支机构" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
<head-form @handle-search="handleSearch" />
title="分支机构" <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
:form-data="formData" <tables v-if="!isSkeleton" :indexFixed="true" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
:query-params="queryParams" :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange">
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<tables
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="name" slot-scope="scope"> <template slot="name" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.id)}`:`/company/${encodeStr(scope.row.id)}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.name " v-html="scope.row.name"></router-link> <router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.id)}`:`/company/${encodeStr(scope.row.id)}`" tag="a" class="a-link"
v-if="scope.row.id&&scope.row.name " v-html="scope.row.name"></router-link>
<div v-else v-html="scope.row.name || '--'"></div> <div v-else v-html="scope.row.name || '--'"></div>
<div class="tags" v-if="scope.row.status || scope.row.biddingAnnouncement"> <div class="tags" v-if="scope.row.status || scope.row.biddingAnnouncement">
<span class="tag style1" v-if="scope.row.status">{{scope.row.status}}</span> <span class="tag style1" v-if="scope.row.status">{{scope.row.status}}</span>
...@@ -32,8 +19,8 @@ ...@@ -32,8 +19,8 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {affiliates} from '@/api/detail/party-a/overview' import { affiliates } from '@/api/detail/party-a/overview';
export default { export default {
name: 'Branch', name: 'Branch',
props: ['companyId'], props: ['companyId'],
...@@ -46,68 +33,73 @@ export default { ...@@ -46,68 +33,73 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '被投资企业名称', prop: 'name', slot: true}, { label: '被投资企业名称', prop: 'name', slot: true },
{label: '负责人', prop: 'operName'}, { label: '负责人', prop: 'operName' },
{label: '成立日期', prop: 'startDate'} { label: '成立日期', prop: 'startDate' }
], ],
formData: [ formData: [
{ type: 1, fieldName: 'hasBid', value: '', placeholder: '招标公告', options: [ {
{name:'不限',value:'noLimit'}, type: 1, fieldName: 'hasBid', value: '', placeholder: '招标公告', options: [
{name:'有招标公告',value:1}, { name: '不限', value: 'noLimit' },
{name:'无招标公告',value:0} { name: '有招标公告', value: 1 },
{ name: '无招标公告', value: 0 }
] ]
} }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true; this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
if(param.hasBid=='noLimit'){ if (param.hasBid == 'noLimit') {
delete param.hasBid delete param.hasBid;
} }
let res = await affiliates(param) let res = await affiliates(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
margin: 0; margin: 0;
padding: 16px; padding: 16px;
background: #FFFFFF; background: #ffffff;
border-radius: 4px; border-radius: 4px;
.tags{ .tags {
.tag{ .tag {
display: inline-block; display: inline-block;
border-radius: 2px; border-radius: 2px;
padding: 1px 7px; padding: 1px 7px;
margin: 4px 8px 0 0; margin: 4px 8px 0 0;
&.style1{ &.style1 {
background: #E4F3FD; background: #e4f3fd;
color: #41A1FD; color: #41a1fd;
}
} }
} }
::v-deep .el-input__inner{
padding-left: 10px;
padding-right: 22px;
}
} }
::v-deep .el-input__inner {
padding-left: 10px;
padding-right: 22px;
}
}
.branch-office {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <div class="app-container detail-container outward-investment">
<div class="app-container detail-container" v-else> <head-form-new title="对外投资" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
<head-form @handle-search="handleSearch" />
title="对外投资" <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
:form-data="formData" <tables :indexFixed="true" :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:query-params="queryParams" :queryParams="queryParams" @handle-current-change="handleCurrentChange" v-if="!isSkeleton">
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<tables
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="investName" slot-scope="scope"> <template slot="investName" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.id)}`:`/company/${encodeStr(scope.row.id)}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.investName " v-html="scope.row.investName"></router-link> <router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.id)}`:`/company/${encodeStr(scope.row.id)}`" tag="a" class="a-link"
v-if="scope.row.id&&scope.row.investName " v-html="scope.row.investName"></router-link>
<div v-else v-html="scope.row.investName || '--'"></div> <div v-else v-html="scope.row.investName || '--'"></div>
<div class="tags" v-if="scope.row.businessStatus || scope.row.biddingAnnouncement"> <div class="tags" v-if="scope.row.businessStatus || scope.row.biddingAnnouncement">
<span class="tag" :class="labelArr.includes(scope.row.businessStatus)?'style2':'style1'" v-if="scope.row.businessStatus">{{scope.row.businessStatus}}</span> <span class="tag" :class="labelArr.includes(scope.row.businessStatus)?'style2':'style1'"
v-if="scope.row.businessStatus">{{scope.row.businessStatus}}</span>
<span class="tag style1" v-if="scope.row.biddingCount">招标数{{scope.row.biddingCount}}</span> <span class="tag style1" v-if="scope.row.biddingCount">招标数{{scope.row.biddingCount}}</span>
</div> </div>
</template> </template>
<template slot="proportion"> <template slot="proportion">
<div class="tab-header">股权占比 <el-popover placement="top-start" width="280" trigger="hover"> <div class="tab-header">股权占比 <el-popover placement="top-start" width="280" trigger="hover">
<div style="font-size: 12px;"> <div style="font-size: 12px;">
控股67%:绝对控制权67%,相当于100%的权力,修改公司章程/分立、合并、变更主营项目、重大决策<br /> 控股67%:绝对控制权67%,相当于100%的权力,修改公司章程/分立、合并、变更主营项目、重大决策<br />
控股51%:相对控制权51%,控制线,绝对控制公司<br /> 控股51%:相对控制权51%,控制线,绝对控制公司<br />
控股34%:安全控制权,一票否决权</div> 控股34%:安全控制权,一票否决权</div>
<img src="@/assets/images/detail/overview/zbph_question.png" slot="reference"> <img src="@/assets/images/detail/overview/zbph_question.png" slot="reference">
</el-popover></div> </el-popover></div>
</template> </template>
<template slot="stockPercentage" slot-scope="scope"> <template slot="stockPercentage" slot-scope="scope">
<span>{{scope.row.stockPercentage?parseFloat(Number(scope.row.stockPercentage*100).toFixed(4))+'%':'--'}}</span> <span>{{scope.row.stockPercentage?parseFloat(Number(scope.row.stockPercentage*100).toFixed(4))+'%':'--'}}</span>
...@@ -44,8 +32,8 @@ ...@@ -44,8 +32,8 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {investment} from '@/api/detail/party-a/overview' import { investment } from '@/api/detail/party-a/overview';
export default { export default {
name: 'Overseas', name: 'Overseas',
props: ['companyId'], props: ['companyId'],
...@@ -58,106 +46,113 @@ export default { ...@@ -58,106 +46,113 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '被投资企业名称', prop: 'investName', minWidth: '180', slot: true}, { label: '被投资企业名称', prop: 'investName', minWidth: '180', slot: true },
{label: '法定代表人', prop: 'investOperName'}, { label: '法定代表人', prop: 'investOperName' },
{label: '注册资本', prop: 'investRegistCapi'}, { label: '注册资本', prop: 'investRegistCapi' },
{label: '成立日期', prop: 'investStartDate'}, { label: '成立日期', prop: 'investStartDate' },
{label: '股权占比', prop: 'stockPercentage', slot: true, slotHeader: true, slotName: 'proportion'}, { label: '股权占比', prop: 'stockPercentage', slot: true, slotHeader: true, slotName: 'proportion' },
{label: '认缴出资额(万元)', prop: 'shouldCapi'} { label: '认缴出资额(万元)', prop: 'shouldCapi' }
], ],
formData: [ formData: [
{ type: 1, fieldName: 'hasBid', value: '', placeholder: '招标公告', options: [ {
{name:'不限',value:'noLimit'}, type: 1, fieldName: 'hasBid', value: '', placeholder: '招标公告', options: [
{name:'有招标公告',value:1}, { name: '不限', value: 'noLimit' },
{name:'无招标公告',value:0} { name: '有招标公告', value: 1 },
{ name: '无招标公告', value: 0 }
], ],
width: 130 width: 130,
uid: this.getUid()
}, },
{ type: 1, fieldName: 'proportion', value: '', placeholder: '股权占比', options: [ {
{name:'不限',value:'noLimit'}, type: 1, fieldName: 'proportion', value: '', placeholder: '股权占比', options: [
{name:'100%',value:'1~1'}, { name: '不限', value: 'noLimit' },
{name:'66.66%以上',value:'0.6666~1'}, { name: '100%', value: '1~1' },
{name:'50%以上',value:'0.5~1'}, { name: '66.66%以上', value: '0.6666~1' },
{name:'33.33%以上',value:'0.3333~1'}, { name: '50%以上', value: '0.5~1' },
{name:'25%以上',value:'0.25~1'}, { name: '33.33%以上', value: '0.3333~1' },
{name:'不到5%',value:'0~0.05'} { name: '25%以上', value: '0.25~1' },
{ name: '不到5%', value: '0~0.05' }
], ],
width: 130 width: 130
}, },
{ type: 3, fieldName: 'keyword', value: '', placeholder: '输入企业名称查询'}, { type: 3, fieldName: 'keyword', value: '', placeholder: '输入企业名称查询' },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
labelArr:['失信联合惩戒企业','严重行政处罚','司法纠纷','注销', '注销企业'], labelArr: ['失信联合惩戒企业', '严重行政处罚', '司法纠纷', '注销', '注销企业'],
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true; this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await investment(param) let res = await investment(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
handleSearch(){ handleSearch() {
let params = this.formParams() let params = this.formParams();
if(params.proportion){ if (params.proportion) {
if(params.proportion!='noLimit'){ if (params.proportion != 'noLimit') {
params.stockPercentageMin = parseFloat(params.proportion.split('~')[0]) params.stockPercentageMin = parseFloat(params.proportion.split('~')[0]);
params.stockPercentageMax = parseFloat(params.proportion.split('~')[1]) params.stockPercentageMax = parseFloat(params.proportion.split('~')[1]);
} }
delete params.proportion delete params.proportion;
} }
if(params.hasBid=='noLimit'){ if (params.hasBid == 'noLimit') {
delete params.hasBid delete params.hasBid;
} }
params.pageNum = 1 params.pageNum = 1;
this.queryParams.pageNum = 1 this.queryParams.pageNum = 1;
this.handleQuery(params) this.handleQuery(params);
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
margin: 0; margin: 0;
padding: 16px; padding: 16px;
background: #FFFFFF; background: #ffffff;
border-radius: 4px; border-radius: 4px;
.tab-header{ .tab-header {
img{ img {
margin-bottom: 2px; margin-bottom: 2px;
width: 14px; width: 14px;
height: 14px; height: 14px;
cursor: pointer; cursor: pointer;
} }
} }
.tags{ .tags {
.tag{ .tag {
display: inline-block; display: inline-block;
border-radius: 2px; border-radius: 2px;
padding: 1px 7px; padding: 1px 7px;
margin: 4px 8px 0 0; margin: 4px 8px 0 0;
&.style1{ &.style1 {
background: #E4F3FD; background: #e4f3fd;
color: #41A1FD; color: #41a1fd;
} }
&.style2{ &.style2 {
background: #FFF1F1; background: #fff1f1;
color: #FF3C3C; color: #ff3c3c;
} }
} }
} }
} }
.outward-investment {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel operating-anomaly">
<head-form <head-form-new title="经营异常" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="经营异常" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables v-if="!isSkeleton" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal" :queryParams="queryParams"
v-if="!isSkeleton" @handle-current-change="handleCurrentChange" />
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
/>
</div> </div>
</template> </template>
...@@ -25,9 +13,9 @@ ...@@ -25,9 +13,9 @@
import { import {
abnormalPage, abnormalPage,
abnormalYears abnormalYears
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
export default { export default {
name: 'BusinessAnomaly', name: 'BusinessAnomaly',
mixins: [mixin], mixins: [mixin],
...@@ -43,63 +31,79 @@ export default { ...@@ -43,63 +31,79 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '列入原因', prop: 'inReason'}, { label: '列入原因', prop: 'inReason', width: "508" },
{label: '列入日期', prop: 'inDate', width: '95'}, { label: '列入日期', prop: 'inDate', width: '95' },
{label: '做出决定机关(移入)', prop: 'department', width: '264'}, { label: '做出决定机关(移入)', prop: 'department', width: '264' },
{label: '移出经营异常名录原因', prop: 'outReason', width: '320'}, { label: '移出经营异常名录原因', prop: 'outReason', width: '320' },
{label: '移出日期', prop: 'outDate', width: '95'}, { label: '移出日期', prop: 'outDate', width: '95' },
{label: '做出决定机关(移出)', prop: 'outDepartment', width: '264'} { label: '做出决定机关(移出)', prop: 'outDepartment', width: '264' }
], ],
formData: [ formData: [
{ type: 4, fieldName: 'years', value: '', placeholder: '列入时间', options: []} { type: 4, fieldName: 'years', value: '', placeholder: '列入时间', options: [], uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.years() this.years();
}, },
computed: { computed: {
}, },
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
this.isSkeleton = true this.isSkeleton = true;
abnormalPage(data).then(res => { abnormalPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows;
this.tableDataTotal = res.total this.tableDataTotal = res.total;
this.isSkeleton = false this.isSkeleton = false;
}) });
}, },
years(){ years() {
abnormalYears({cid: this.queryParams.cid}).then(res => { abnormalYears({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (let i = 0; i < data.length; i++) {
this.formData[0].options.push({ this.formData[0].options.push({
name: data[i].year + '(' + data[i].count + ')', name: data[i].year + '(' + data[i].count + ')',
value: data[i].year, value: data[i].year,
}) });
} }
} }
}) });
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
} }
.operating-anomaly {
@import "@/assets/styles/search-common.scss";
::v-deep .head-form-new {
.query-box {
.el-select {
width: auto;
.el-select__tags {
flex-wrap: nowrap;
}
}
}
}
}
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel court-announcement">
<head-form <head-form-new title="法院公告" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="法院公告" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables v-if="!isSkeleton" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal" :queryParams="queryParams"
v-if="!isSkeleton" @handle-current-change="handleCurrentChange" />
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
/>
</div> </div>
</template> </template>
...@@ -27,9 +15,9 @@ import { ...@@ -27,9 +15,9 @@ import {
noticesType, noticesType,
noticesRole, noticesRole,
noticesCaseReason noticesCaseReason
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
export default { export default {
name: 'CourtNotice', name: 'CourtNotice',
mixins: [mixin], mixins: [mixin],
...@@ -45,97 +33,101 @@ export default { ...@@ -45,97 +33,101 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '案由', prop: 'caseReason'}, { label: '案由', prop: 'caseReason' },
{label: '公告时间', prop: 'date', width: '95'}, { label: '公告时间', prop: 'date', width: '95' },
{label: '当事人', prop: 'people', width: '240'}, { label: '当事人', prop: 'people', width: '240' },
{label: '公告类型', prop: 'type', width: '210'}, { label: '公告类型', prop: 'type', width: '210' },
{label: '公告法院', prop: 'court', width: '280'} { label: '公告法院', prop: 'court', width: '280' }
], ],
formData: [ formData: [
{ type: 1, fieldName: 'type', value: '', placeholder: '公告类型', options: []}, { type: 1, fieldName: 'type', value: '', placeholder: '公告类型', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'caseReason', value: '', placeholder: '案由', options: []}, { type: 1, fieldName: 'caseReason', value: '', placeholder: '案由', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'role', value: '', placeholder: '身份', options: []}, { type: 1, fieldName: 'role', value: '', placeholder: '身份', options: [], uid: this.getUid() },
{ type: 2, fieldName: 'time', value: '', placeholder: '',startTime: 'dateFrom',endTime: 'dateTo'} { type: 2, fieldName: 'time', value: '', placeholder: '', startTime: 'dateFrom', endTime: 'dateTo', uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.noticesTypes() this.noticesTypes();
this.noticesRoles() this.noticesRoles();
this.noticesCaseReasons() this.noticesCaseReasons();
}, },
computed: { computed: {
}, },
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
this.isSkeleton = true this.isSkeleton = true;
noticesPage(data).then(res => { noticesPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows;
this.tableDataTotal = res.total this.tableDataTotal = res.total;
this.isSkeleton = false this.isSkeleton = false;
}) });
}, },
// 公告 // 公告
noticesTypes(){ noticesTypes() {
noticesType({cid: this.queryParams.cid}).then(res => { noticesType({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({ this.formData[0].options.push({
name: data[i].type + '(' + data[i].count + ')', name: data[i].type + '(' + data[i].count + ')',
value: data[i].type, value: data[i].type,
}) });
} }
} }
}) });
}, },
// 身份 // 身份
noticesRoles(){ noticesRoles() {
noticesRole({cid: this.queryParams.cid}).then(res => { noticesRole({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[2].options.push({ this.formData[2].options.push({
name: data[i].role + '(' + data[i].count + ')', name: data[i].role + '(' + data[i].count + ')',
value: data[i].role, value: data[i].role,
}) });
} }
} }
}) });
}, },
// 案由 // 案由
noticesCaseReasons(){ noticesCaseReasons() {
noticesCaseReason({cid: this.queryParams.cid}).then(res => { noticesCaseReason({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[1].options.push({ this.formData[1].options.push({
name: data[i].caseReason + '(' + data[i].count + ')', name: data[i].caseReason + '(' + data[i].count + ')',
value: data[i].caseReason, value: data[i].caseReason,
}) });
} }
} }
}) });
}, },
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
} }
.court-announcement {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel persons-breach">
<head-form <head-form-new title="失信被执行人" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="false"
title="失信被执行人" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="false"
@handle-search="handleSearch"
/>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables v-if="!isSkeleton" :index-fixed="true" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
v-if="!isSkeleton" :queryParams="queryParams" @handle-current-change="handleCurrentChange" />
:index-fixed="true"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
/>
</div> </div>
</template> </template>
...@@ -25,9 +12,9 @@ ...@@ -25,9 +12,9 @@
<script> <script>
import { import {
executedPage executedPage
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
export default { export default {
name: 'Dishonesty', name: 'Dishonesty',
mixins: [mixin], mixins: [mixin],
...@@ -43,49 +30,53 @@ export default { ...@@ -43,49 +30,53 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '失信被执行人行为具体情形', prop: 'executionDesc', fixed: true}, { label: '失信被执行人行为具体情形', prop: 'executionDesc', fixed: true, width: "508" },
{label: '立案日期', prop: 'date', width: '95'}, { label: '立案日期', prop: 'date', width: '95' },
{label: '履行情况', prop: 'executionStatus', width: '120'}, { label: '履行情况', prop: 'executionStatus', width: '120' },
{label: '立案文号', prop: 'caseNumber', width: '210'}, { label: '立案文号', prop: 'caseNumber', width: '210' },
{label: '执行依据文号', prop: 'docNumber', width: '360'}, { label: '执行依据文号', prop: 'docNumber', width: '360' },
{label: '执行法院', prop: 'court', width: '280'} { label: '执行法院', prop: 'court', width: '280' }
], ],
formData: [ formData: [
{ type: 2, fieldName: 'time', value: '', placeholder: '执行时间',startTime: 'dateFrom',endTime: 'dateTo', options: []} { type: 2, fieldName: 'time', value: '', placeholder: '执行时间', startTime: 'dateFrom', endTime: 'dateTo', options: [], uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
computed: { computed: {
}, },
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
this.isSkeleton = true this.isSkeleton = true;
executedPage(data).then(res => { executedPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows;
this.tableDataTotal = res.total this.tableDataTotal = res.total;
this.isSkeleton = false this.isSkeleton = false;
}) });
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
} }
.persons-breach {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel person-subject">
<head-form <head-form-new title="被执行人" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="false"
title="被执行人" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="false"
@handle-search="handleSearch"
/>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables v-if="!isSkeleton" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal" :queryParams="queryParams"
v-if="!isSkeleton" @handle-current-change="handleCurrentChange" />
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
/>
</div> </div>
</template> </template>
...@@ -24,9 +12,9 @@ ...@@ -24,9 +12,9 @@
<script> <script>
import { import {
executedPersonsPage executedPersonsPage
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
export default { export default {
name: 'IfThePerson', name: 'IfThePerson',
mixins: [mixin], mixins: [mixin],
...@@ -42,47 +30,51 @@ export default { ...@@ -42,47 +30,51 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '执行标的(元)', prop: 'amount', width: '140'}, { label: '执行标的(元)', prop: 'amount', width: '140' },
{label: '案号', prop: 'caseNumber', width: '320'}, { label: '案号', prop: 'caseNumber', width: '320' },
{label: '执行法院', prop: 'court'}, { label: '执行法院', prop: 'court' },
{label: '立案日期', prop: 'caseDate', width: '95'} { label: '立案日期', prop: 'caseDate', width: '95' }
], ],
formData: [ formData: [
{ type: 2, fieldName: 'time', value: '', placeholder: '执行时间',startTime: 'dateFrom',endTime: 'dateTo', options: []} { type: 2, fieldName: 'time', value: '', placeholder: '执行时间', startTime: 'dateFrom', endTime: 'dateTo', options: [], uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
computed: { computed: {
}, },
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
this.isSkeleton = true this.isSkeleton = true;
executedPersonsPage(data).then(res => { executedPersonsPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows;
this.tableDataTotal = res.total this.tableDataTotal = res.total;
this.isSkeleton = false this.isSkeleton = false;
}) });
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
} }
.person-subject {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel judicial-document">
<head-form <head-form-new title="裁判文书" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="false"
title="裁判文书" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="false"
@handle-search="handleSearch"
/>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables v-if="!isSkeleton" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal" :queryParams="queryParams"
v-if="!isSkeleton" @handle-current-change="handleCurrentChange">
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="relatedCompanies" slot-scope="scope"> <template slot="relatedCompanies" slot-scope="scope">
<div v-for="item in scope.row.relatedCompanies"> <div v-for="item in scope.row.relatedCompanies">
<span>{{ item.clean_role }}</span>{{ item.name }} <span>{{ item.clean_role }}</span>{{ item.name }}
...@@ -24,7 +12,6 @@ ...@@ -24,7 +12,6 @@
</template> </template>
</tables> </tables>
</div> </div>
</template> </template>
...@@ -33,9 +20,9 @@ import { ...@@ -33,9 +20,9 @@ import {
lawsuitsPage, lawsuitsPage,
lawsuitsCauseAction, lawsuitsCauseAction,
lawsuitsRole lawsuitsRole
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
export default { export default {
name: 'Judgment', name: 'Judgment',
mixins: [mixin], mixins: [mixin],
...@@ -51,84 +38,88 @@ export default { ...@@ -51,84 +38,88 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '案由', prop: 'causeAction'}, { label: '案由', prop: 'causeAction' },
{label: '执行案号', prop: 'causeNo', width: '210'}, { label: '执行案号', prop: 'causeNo', width: '210' },
{label: '身份', prop: 'role', width: '120'}, { label: '身份', prop: 'role', width: '120' },
{label: '当事人', prop: 'relatedCompanies', width: '240', slot: true}, { label: '当事人', prop: 'relatedCompanies', width: '240', slot: true },
{label: '案件金额(元)', prop: 'subAmount', width: '140'}, { label: '案件金额(元)', prop: 'subAmount', width: '140', align: "right" },
{label: '判决结果', prop: 'judgeresult', width: '508'}, { label: '判决结果', prop: 'judgeresult', width: '508' },
{label: '判决日期', prop: 'date', width: '95'}, { label: '判决日期', prop: 'date', width: '95' },
], ],
formData: [ formData: [
{ type: 1, fieldName: 'causeAction', value: '', placeholder: '案由', options: []}, { type: 1, fieldName: 'causeAction', value: '', placeholder: '案由', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'role', value: '', placeholder: '身份', options: []}, { type: 1, fieldName: 'role', value: '', placeholder: '身份', options: [], uid: this.getUid() },
{ type: 2, fieldName: 'time', value: '', placeholder: '',startTime: 'dateFrom',endTime: 'dateTo'}, { type: 2, fieldName: 'time', value: '', placeholder: '', startTime: 'dateFrom', endTime: 'dateTo', uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入执行案号'} { type: 3, fieldName: 'keys', value: '', placeholder: '请输入执行案号', uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.lawsuitsCauseActions() this.lawsuitsCauseActions();
this.lawsuitsRoles() this.lawsuitsRoles();
}, },
computed: { computed: {
}, },
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
this.isSkeleton = true this.isSkeleton = true;
lawsuitsPage(data).then(res => { lawsuitsPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows;
for (var i=0;i<this.tableData.length;i++){ for (var i = 0; i < this.tableData.length; i++) {
this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies) this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies);
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
this.isSkeleton = false this.isSkeleton = false;
}) });
}, },
lawsuitsCauseActions(){ lawsuitsCauseActions() {
lawsuitsCauseAction({cid: this.queryParams.cid}).then(res => { lawsuitsCauseAction({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({ this.formData[0].options.push({
name: data[i].causeAction + '(' + data[i].num + ')', name: data[i].causeAction + '(' + data[i].num + ')',
value: data[i].causeAction, value: data[i].causeAction,
}) });
} }
} }
}) });
}, },
lawsuitsRoles(){ lawsuitsRoles() {
lawsuitsRole({cid: this.queryParams.cid}).then(res => { lawsuitsRole({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[1].options.push({ this.formData[1].options.push({
name: data[i].role + '(' + data[i].num + ')', name: data[i].role + '(' + data[i].num + ')',
value: data[i].role, value: data[i].role,
}) });
} }
} }
}) });
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
} }
.judicial-document {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel hearing-notice">
<head-form <head-form-new title="开庭公告" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="false"
title="开庭公告" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="false"
@handle-search="handleSearch"
/>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables :index-fixed="true" v-if="!isSkeleton" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:index-fixed="true" :queryParams="queryParams" @handle-current-change="handleCurrentChange">
v-if="!isSkeleton"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="relatedCompanies" slot-scope="scope"> <template slot="relatedCompanies" slot-scope="scope">
<div v-for="item in scope.row.relatedCompanies"> <div v-for="item in scope.row.relatedCompanies">
<span>{{ item.role }}</span>{{ item.name }} <span>{{ item.role }}</span>{{ item.name }}
...@@ -33,9 +20,9 @@ import { ...@@ -33,9 +20,9 @@ import {
kaitingPage, kaitingPage,
kaitingCauseAction, kaitingCauseAction,
kaitingPureRole kaitingPureRole
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
export default { export default {
name: 'OpenacourtsessionNotice', name: 'OpenacourtsessionNotice',
mixins: [mixin], mixins: [mixin],
...@@ -51,91 +38,95 @@ export default { ...@@ -51,91 +38,95 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '案由', prop: 'causeAction', fixed: true}, { label: '案由', prop: 'causeAction', fixed: true, width: "240" },
{label: '开庭日期', prop: 'hearingDate', width: '95'}, { label: '开庭日期', prop: 'hearingDate', width: '95' },
{label: '当事人', prop: 'relatedCompanies', width: '428', slot: true}, { label: '当事人', prop: 'relatedCompanies', width: '428', slot: true },
{label: '身份', prop: 'pureRole', width: '120'}, { label: '身份', prop: 'pureRole', width: '120' },
{label: '公告内容', prop: 'content', width: '508'}, { label: '公告内容', prop: 'content', width: '508' },
{label: '案号', prop: 'caseNo', width: '210'}, { label: '案号', prop: 'caseNo', width: '210' },
{label: '法院', prop: 'court', width: '280'}, { label: '法院', prop: 'court', width: '280' },
{label: '法庭', prop: 'tribunal', width: '180'}, { label: '法庭', prop: 'tribunal', width: '180' },
{label: '承办部门', prop: 'department', width: '280'}, { label: '承办部门', prop: 'department', width: '280' },
{label: '审判长/主判人', prop: 'judge', width: '110'} { label: '审判长/主判人', prop: 'judge', width: '110' }
], ],
formData: [ formData: [
{ type: 1, fieldName: 'causeAction', value: '', placeholder: '案由', options: []}, { type: 1, fieldName: 'causeAction', value: '', placeholder: '案由', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'pureRole', value: '', placeholder: '身份', options: []}, { type: 1, fieldName: 'pureRole', value: '', placeholder: '身份', options: [], uid: this.getUid() },
{ type: 2, fieldName: 'time', value: '', placeholder: '',startTime: 'dateFrom',endTime: 'dateTo'}, { type: 2, fieldName: 'time', value: '', placeholder: '', startTime: 'dateFrom', endTime: 'dateTo', uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入案号'}, { type: 3, fieldName: 'keys', value: '', placeholder: '请输入案号', uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.kaitingCauseActions() this.kaitingCauseActions();
this.kaitingPureRoles() this.kaitingPureRoles();
}, },
computed: { computed: {
}, },
methods: { methods: {
toDetail(){ toDetail() {
let Id = '111' let Id = '111';
this.$router.push({ path: '/project/projectList/detail', query: Id }); this.$router.push({ path: '/project/projectList/detail', query: Id });
}, },
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
this.isSkeleton = true this.isSkeleton = true;
kaitingPage(data).then(res => { kaitingPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows;
for (var i=0;i<this.tableData.length;i++){ for (var i = 0; i < this.tableData.length; i++) {
this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies) this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies);
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
this.isSkeleton = false this.isSkeleton = false;
}) });
}, },
kaitingCauseActions(){ kaitingCauseActions() {
kaitingCauseAction({cid: this.queryParams.cid}).then(res => { kaitingCauseAction({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({ this.formData[0].options.push({
name: data[i].causeAction + '(' + data[i].count + ')', name: data[i].causeAction + '(' + data[i].count + ')',
value: data[i].causeAction, value: data[i].causeAction,
}) });
} }
} }
}) });
}, },
kaitingPureRoles(){ kaitingPureRoles() {
kaitingPureRole({cid: this.queryParams.cid}).then(res => { kaitingPureRole({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[1].options.push({ this.formData[1].options.push({
name: data[i].pureRole + '(' + data[i].count + ')', name: data[i].pureRole + '(' + data[i].count + ')',
value: data[i].pureRole, value: data[i].pureRole,
}) });
} }
} }
}) });
}, },
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
} }
.hearing-notice {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel administrative-punishment">
<head-form <head-form-new title="行政处罚" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="行政处罚" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables v-if="!isSkeleton" :indexFixed="true" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
v-if="!isSkeleton" :queryParams="queryParams" @handle-current-change="handleCurrentChange">
:indexFixed="true"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="punishReason" slot-scope="scope"> <template slot="punishReason" slot-scope="scope">
<span :class="[isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.punishReason)?'cell-span':'']" :style="{'-webkit-line-clamp': 5}"> <span :class="[isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.punishReason)?'cell-span':'']"
:style="{'-webkit-line-clamp': 5}">
<div v-html="scope.row.punishReason"></div> <div v-html="scope.row.punishReason"></div>
<span v-if="isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.punishReason)" @click="changeShowAll(scope.index, 0)" class="more">...<span>更多</span></span> <span v-if="isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.punishReason)" @click="changeShowAll(scope.index, 0)"
class="more">...<span>更多</span></span>
</span> </span>
</template> </template>
</tables> </tables>
...@@ -30,12 +19,12 @@ ...@@ -30,12 +19,12 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import { import {
penalizePage, penalizePage,
penalizeReasonType penalizeReasonType
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
export default { export default {
name: 'Punish', name: 'Punish',
mixins: [mixin], mixins: [mixin],
...@@ -51,87 +40,87 @@ export default { ...@@ -51,87 +40,87 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '处罚原因', prop: 'punishReason', slot: true, fixed: true}, { label: '处罚原因', prop: 'punishReason', slot: true, fixed: true, width: '508' },
{label: '决定日期', prop: 'punishBegin', width: '105'}, { label: '决定日期', prop: 'punishBegin', width: '105' },
{label: '处罚结果', prop: 'punishResult', width: '264'}, { label: '处罚结果', prop: 'punishResult', width: '264' },
{label: '处罚文书号', prop: 'fileNum', width: '240'}, { label: '处罚文书号', prop: 'fileNum', width: '240' },
{label: '处罚机关', prop: 'office', width: '264'}, { label: '处罚机关', prop: 'office', width: '264' },
{label: '处罚结束日期', prop: 'punishEnd', width: '110'}, { label: '处罚结束日期', prop: 'punishEnd', width: '110' },
], ],
formData: [ formData: [
{ type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '处罚类别', options: []}, { type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '处罚类别', options: [] },
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', options: [] },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
showList:[], showList: [],
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.penalizeReasonTypeData() this.penalizeReasonTypeData();
}, },
computed: { computed: {
}, },
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
this.isSkeleton = true this.isSkeleton = true;
penalizePage(data).then((res) => { penalizePage(data).then((res) => {
this.tableData = res.rows this.tableData = res.rows;
this.tableDataTotal = res.total this.tableDataTotal = res.total;
this.isSkeleton = false this.isSkeleton = false;
}) });
}, },
penalizeReasonTypeData(){ penalizeReasonTypeData() {
penalizeReasonType({cid:this.queryParams.cid}).then((res) => { penalizeReasonType({ cid: this.queryParams.cid }).then((res) => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({ this.formData[0].options.push({
name: data[i].punishType + '(' + data[i].count + ')', name: data[i].punishType + '(' + data[i].count + ')',
value: data[i].punishTypeId, value: data[i].punishTypeId,
}) });
} }
} }
}) });
}, },
changeShowAll(row, column) { changeShowAll(row, column) {
this.showList.push({ this.showList.push({
row: row, row: row,
column: column column: column
}) });
}, },
isOverHiddenFlag(data, showList, row, column, value) { isOverHiddenFlag(data, showList, row, column, value) {
if(value && String(value).length > this.getLenth(data)) { if (value && String(value).length > this.getLenth(data)) {
return !showList.some(item => item.row==row&&item.column==column) return !showList.some(item => item.row == row && item.column == column);
}else { } else {
return false return false;
} }
}, },
getLenth(data) { getLenth(data) {
return Math.floor(data / 12) * 5 return Math.floor(data / 12) * 5;
}, },
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
input{ input {
border: 1px solid #EFEFEF; border: 1px solid #efefef;
} }
::v-deep .el-form-item{ ::v-deep .el-form-item {
margin-right: 8px !important; margin-right: 8px !important;
} }
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
.cell-span { .cell-span {
...@@ -144,7 +133,7 @@ export default { ...@@ -144,7 +133,7 @@ export default {
-webkit-line-clamp: 4; -webkit-line-clamp: 4;
cursor: pointer; cursor: pointer;
>span { > span {
display: inline-block; display: inline-block;
width: 37px; width: 37px;
position: absolute; position: absolute;
...@@ -155,4 +144,8 @@ export default { ...@@ -155,4 +144,8 @@ export default {
} }
} }
} }
.administrative-punishment {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel takes-over-the-land">
<head-form <head-form-new title="城投拿地" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="城投拿地" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables v-if="!isSkeleton" :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
v-if="!isSkeleton" :queryParams="queryParams" @handle-current-change="handleCurrentChange">
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="projectName" slot-scope="scope"> <template slot="projectName" slot-scope="scope">
<router-link :to="`/radar/Land/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName " v-html="scope.row.projectName"></router-link> <router-link :to="`/radar/Land/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName "
v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div> <div v-else v-html="scope.row.projectName || '--'"></div>
</template> </template>
<template slot="transactionPrice" slot-scope="scope"> <template slot="transactionPrice" slot-scope="scope">
...@@ -34,9 +22,9 @@ ...@@ -34,9 +22,9 @@
import { import {
landTransactionPage, landTransactionPage,
landUse landUse
} from '@/api/detail/party-a/urbanLnvestment' } from '@/api/detail/party-a/urbanLnvestment';
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
export default { export default {
name: 'landAcquisition', name: 'landAcquisition',
mixins: [mixin], mixins: [mixin],
...@@ -53,68 +41,72 @@ export default { ...@@ -53,68 +41,72 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '项目名称', prop: 'projectName', slot: true}, { label: '项目名称', prop: 'projectName', slot: true },
{label: '土地用途', prop: 'landUse', width: '120'}, { label: '土地用途', prop: 'landUse', width: '120' },
{label: '行业分类', prop: 'industry', width: '120'}, { label: '行业分类', prop: 'industry', width: '120' },
{label: '供地方式', prop: 'supplyLandWay', width: '120'}, { label: '供地方式', prop: 'supplyLandWay', width: '120' },
{label: '土地坐落', prop: 'landAddr', width: '150'}, { label: '土地坐落', prop: 'landAddr', width: '150' },
{label: '成交金额(万元)', prop: 'transactionPrice', width: '130',slot: true}, { label: '成交金额(万元)', prop: 'transactionPrice', width: '130', slot: true },
{label: '总面积(㎡)', prop: 'acreage', width: '120'}, { label: '总面积(㎡)', prop: 'acreage', width: '120' },
{label: '批准单位', prop: 'authority', width: '120'}, { label: '批准单位', prop: 'authority', width: '120' },
{label: '签订日期', prop: 'contractSignTime', width: '120'} { label: '签订日期', prop: 'contractSignTime', width: '120' }
], ],
formData: [ formData: [
{ type: 4, fieldName: 'landUse', value: '', placeholder: '土地用途', options: []}, { type: 4, fieldName: 'landUse', value: '', placeholder: '土地用途', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词'}, { type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.getlandUse() this.getlandUse();
}, },
computed: { computed: {
}, },
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
this.isSkeleton = true this.isSkeleton = true;
landTransactionPage(data).then(res=>{ landTransactionPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows;
this.tableDataTotal = res.total this.tableDataTotal = res.total;
this.isSkeleton = false this.isSkeleton = false;
}) });
}, },
//土地用途 //土地用途
getlandUse(){ getlandUse() {
landUse({cid: this.queryParams.cid}).then(res=>{ landUse({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({ this.formData[0].options.push({
name: data[i].landUse + '(' + data[i].count + ')', name: data[i].landUse + '(' + data[i].count + ')',
value: data[i].landUse, value: data[i].landUse,
}) });
} }
} }
}) });
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
} }
.takes-over-the-land {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="regionalEconomies"> <div class="regionalEconomies regional-economy">
<div class="flex-box query-box"> <div class="head-form-new">
<div class="flex-box query-params"> <div class="common-title">区域经济</div>
<span class="common-title">区域经济</span> <div class="flex-box query-box">
<div class="flex-box query-params">
</div>
<div class="params-dw"><img src="@/assets/images/addree.png" />{{ addressList }}</div>
</div> </div>
<div class="params-dw"><img src="@/assets/images/addree.png" />{{ addressList }}</div>
</div> </div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="table-item" v-if="!isSkeleton"> <div class="table-item" v-if="!isSkeleton">
<el-table <el-table :tableLoading="tableLoading" :data="getValues" :show-header="false" border :cell-style="rowStyle">
:tableLoading="tableLoading" <el-table-column v-for="(item, index) in getHeaders" :key="index" :prop="item" :formatter="formatStatus">
:data="getValues"
:show-header="false"
border
:cell-style="rowStyle"
>
<el-table-column
v-for="(item, index) in getHeaders"
:key="index"
:prop="item"
:formatter="formatStatus"
>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
...@@ -29,20 +21,20 @@ ...@@ -29,20 +21,20 @@
</template> </template>
<script> <script>
import dataRegion from '@/assets/json/dataRegion' import dataRegion from '@/assets/json/dataRegion';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
import { import {
regionalEconomy regionalEconomy
} from '@/api/detail/party-a/urbanLnvestment' } from '@/api/detail/party-a/urbanLnvestment';
export default { export default {
name: 'regionalEconomies', name: 'regionalEconomies',
components: { components: {
skeleton skeleton
}, },
props: ['companyId','companyInfo'], props: ['companyId', 'companyInfo'],
data() { data() {
return { return {
addressList:'', addressList: '',
params: { params: {
provinceId: this.companyInfo.provinceId, provinceId: this.companyInfo.provinceId,
cityId: this.companyInfo.cityId cityId: this.companyInfo.cityId
...@@ -212,116 +204,116 @@ export default { ...@@ -212,116 +204,116 @@ export default {
}, },
], ],
tableLoading: true, tableLoading: true,
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.regionalEconomys() this.regionalEconomys();
}, },
computed: { computed: {
getHeaders() { getHeaders() {
return this.tableData.reduce((pre, cur, index) => pre.concat(`value${index}`), ['title']) return this.tableData.reduce((pre, cur, index) => pre.concat(`value${index}`), ['title']);
}, },
getValues() { getValues() {
return this.headers.map(item => { return this.headers.map(item => {
return this.tableData.reduce((pre, cur, index) => Object.assign(pre, {['value' + index]: cur[item.prop]}), {'title': item.label,}) return this.tableData.reduce((pre, cur, index) => Object.assign(pre, { ['value' + index]: cur[item.prop] }), { 'title': item.label, });
}); });
} }
}, },
methods: { methods: {
//地区 //地区
regionalEconomys() { regionalEconomys() {
this.isSkeleton = true this.isSkeleton = true;
if(this.companyInfo){ if (this.companyInfo) {
regionalEconomy(this.params).then(res => { regionalEconomy(this.params).then(res => {
this.tableData = res.data this.tableData = res.data;
this.isSkeleton = false this.isSkeleton = false;
}) });
this.dataRegion(this.companyInfo.provinceId, this.companyInfo.cityId) this.dataRegion(this.companyInfo.provinceId, this.companyInfo.cityId);
} }
}, },
dataRegion(p,c) { dataRegion(p, c) {
var str = []; var str = [];
for (let x = 0; x < 2; x++) { for (let x = 0; x < 2; x++) {
for (let i = 0; i < dataRegion.length; i++) { for (let i = 0; i < dataRegion.length; i++) {
if (dataRegion[i].regionLevel == x + 1 && x + 1 == 1) { if (dataRegion[i].regionLevel == x + 1 && x + 1 == 1) {
if(p == dataRegion[i].id){ if (p == dataRegion[i].id) {
str.push(dataRegion[i].regionName) str.push(dataRegion[i].regionName);
} }
} else if (dataRegion[i].regionLevel == x + 1 && x + 1 == 2) { } else if (dataRegion[i].regionLevel == x + 1 && x + 1 == 2) {
if(c == dataRegion[i].id){ if (c == dataRegion[i].id) {
str.push(dataRegion[i].regionName) str.push(dataRegion[i].regionName);
} }
} }
} }
} }
this.addressList = str.join(' - '); this.addressList = str.join(' - ');
}, },
formatStatus: function(row, column, cellValue) { formatStatus: function (row, column, cellValue) {
if(row.title === '经济'||row.title === '财政'||row.title === '债务'){ if (row.title === '经济' || row.title === '财政' || row.title === '债务') {
return cellValue return cellValue;
}else { } else {
return cellValue? cellValue : '--' return cellValue ? cellValue : '--';
} }
}, },
rowStyle(row){ rowStyle(row) {
if (row.row.title === '经济'||row.row.title === '财政'||row.row.title === '债务'){ if (row.row.title === '经济' || row.row.title === '财政' || row.row.title === '债务') {
return { return {
// background: '#FAF5EB', // background: '#FAF5EB',
color:'#232323', color: '#232323',
fontWeight: 'bold' fontWeight: 'bold'
} };
} }
}, },
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.regionalEconomies{ .regionalEconomies {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
::v-deep .el-table tr{ ::v-deep .el-table tr {
background: #F9FCFF; background: #f9fcff;
} }
::v-deep .table-item{ ::v-deep .table-item {
.el-table{ .el-table {
overflow:visible; overflow: visible;
.el-table__body-wrapper{ .el-table__body-wrapper {
overflow:visible; overflow: visible;
} }
.el-table__body{ .el-table__body {
tr:first-child{ tr:first-child {
position: sticky; position: sticky;
top:56px; top: 56px;
z-index: 9; z-index: 9;
} }
} }
td.el-table__cell{ td.el-table__cell {
border-bottom: 0; border-bottom: 0;
} }
.el-table__body-wrapper{ .el-table__body-wrapper {
tr{ tr {
&:first-child{ &:first-child {
background: #F0F3FA; background: #f0f3fa;
div{ div {
color: rgba(35,35,35,0.8); color: rgba(35, 35, 35, 0.8);
} }
} }
&:nth-child(2n){ &:nth-child(2n) {
background: #FFFFFF; background: #ffffff;
} }
} }
} }
} }
} }
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
.params-dw{ .params-dw {
font-size: 14px; font-size: 14px;
font-weight: 400; font-weight: 400;
color: #0081FF; color: #0081ff;
img{ img {
width: 14px; width: 14px;
height: 14px; height: 14px;
margin-right: 5px; margin-right: 5px;
...@@ -330,11 +322,23 @@ export default { ...@@ -330,11 +322,23 @@ export default {
} }
} }
.regional-economy {
@import "@/assets/styles/search-common.scss";
.head-form-new {
.common-title {
margin-bottom: 8px;
}
.query-box {
margin: 0px;
}
}
}
::v-deep .el-table__body-wrapper tr:nth-child(2) td, ::v-deep .el-table__body-wrapper tr:nth-child(2) td,
::v-deep .el-table__body-wrapper tr:nth-child(17) td, ::v-deep .el-table__body-wrapper tr:nth-child(17) td,
::v-deep .el-table__body-wrapper tr:nth-child(29) td{ ::v-deep .el-table__body-wrapper tr:nth-child(29) td {
//font-weight: bold; //font-weight: bold;
//color: #232323; //color: #232323;
} }
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel city-investment">
<head-form <head-form-new title="同地区城投" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="同地区城投" @handle-search="handleSearch">
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
>
<template slot="slot"> <template slot="slot">
<div class="search-box"> <div class="search-box">
<span class="search-box-t" <span class="search-box-t" :class="queryParams.uipExecutiveLevel ||
:class="queryParams.uipExecutiveLevel ||
queryParams.uipBusinessType.length > 0 || queryParams.uipBusinessType.length > 0 ||
queryParams.bratingSubjectLevel.length > 0 || queryParams.bratingSubjectLevel.length > 0 ||
queryParams.shareholderBg.length > 0 || queryParams.shareholderBg.length > 0 ||
queryParams.equityRelationship.length > 0 || queryParams.equityRelationship.length > 0 ||
queryParams.platformImportance.length > 0 || queryParams.platformImportance.length > 0 ||
queryParams.developmentZone.length > 0 ? 'search-box-ta' : ''" queryParams.developmentZone.length > 0 ? 'search-box-ta' : ''" @click="handleSearch1">筛选<i
@click="handleSearch1">筛选<i :class="searchState ? 'el-icon-caret-top' : 'el-icon-caret-bottom'"></i></span> :class="searchState ? 'el-icon-caret-top' : 'el-icon-caret-bottom'"></i></span>
<div v-show="searchState" ref="showContent" class="search-main"> <div v-show="searchState" ref="showContent" class="search-main">
<div class="item"> <div class="item">
<span class="wrap_label">行政等级</span> <span class="wrap_label">行政等级</span>
...@@ -34,7 +27,8 @@ ...@@ -34,7 +27,8 @@
<div class="item_ckquery"> <div class="item_ckquery">
<span :class="{color_text:queryParams.uipBusinessType.length == 0}" @click="changeBeCurrent('','uipBusinessType')">全部</span> <span :class="{color_text:queryParams.uipBusinessType.length == 0}" @click="changeBeCurrent('','uipBusinessType')">全部</span>
<template v-for="(item,index) in uipGroupDatalist.uipBusinessType"> <template v-for="(item,index) in uipGroupDatalist.uipBusinessType">
<span :class="{color_text:queryParams.uipBusinessType.includes(item)}" @click="changeBeCurrent(item,'uipBusinessType')">{{item}}</span> <span :class="{color_text:queryParams.uipBusinessType.includes(item)}"
@click="changeBeCurrent(item,'uipBusinessType')">{{item}}</span>
</template> </template>
</div> </div>
</div> </div>
...@@ -43,7 +37,8 @@ ...@@ -43,7 +37,8 @@
<div class="item_ckquery"> <div class="item_ckquery">
<span :class="{color_text:queryParams.bratingSubjectLevel.length == 0}" @click="changeBeCurrent('','bratingSubjectLevel')">全部</span> <span :class="{color_text:queryParams.bratingSubjectLevel.length == 0}" @click="changeBeCurrent('','bratingSubjectLevel')">全部</span>
<template v-for="(item,index) in uipGroupDatalist.bratingSubjectLevel"> <template v-for="(item,index) in uipGroupDatalist.bratingSubjectLevel">
<span :class="{color_text:queryParams.bratingSubjectLevel.includes(item)}" @click="changeBeCurrent(item,'bratingSubjectLevel')">{{item}}</span> <span :class="{color_text:queryParams.bratingSubjectLevel.includes(item)}"
@click="changeBeCurrent(item,'bratingSubjectLevel')">{{item}}</span>
</template> </template>
</div> </div>
</div> </div>
...@@ -61,7 +56,8 @@ ...@@ -61,7 +56,8 @@
<div class="item_ckquery"> <div class="item_ckquery">
<span :class="{color_text:queryParams.equityRelationship.length == 0}" @click="changeBeCurrent('','equityRelationship')">全部</span> <span :class="{color_text:queryParams.equityRelationship.length == 0}" @click="changeBeCurrent('','equityRelationship')">全部</span>
<template v-for="(item,index) in uipGroupDatalist.equityRelationship"> <template v-for="(item,index) in uipGroupDatalist.equityRelationship">
<span :class="{color_text:queryParams.equityRelationship.includes(item)}" @click="changeBeCurrent(item,'equityRelationship')">{{item}}</span> <span :class="{color_text:queryParams.equityRelationship.includes(item)}"
@click="changeBeCurrent(item,'equityRelationship')">{{item}}</span>
</template> </template>
</div> </div>
</div> </div>
...@@ -70,7 +66,8 @@ ...@@ -70,7 +66,8 @@
<div class="item_ckquery"> <div class="item_ckquery">
<span :class="{color_text:queryParams.platformImportance.length == 0}" @click="changeBeCurrent('','platformImportance')">全部</span> <span :class="{color_text:queryParams.platformImportance.length == 0}" @click="changeBeCurrent('','platformImportance')">全部</span>
<template v-for="(item,index) in uipGroupDatalist.platformImportance"> <template v-for="(item,index) in uipGroupDatalist.platformImportance">
<span :class="{color_text:queryParams.platformImportance.includes(item)}" @click="changeBeCurrent(item,'platformImportance')">{{item}}</span> <span :class="{color_text:queryParams.platformImportance.includes(item)}"
@click="changeBeCurrent(item,'platformImportance')">{{item}}</span>
</template> </template>
</div> </div>
</div> </div>
...@@ -79,27 +76,21 @@ ...@@ -79,27 +76,21 @@
<div class="item_ckquery"> <div class="item_ckquery">
<span :class="{color_text:queryParams.developmentZone.length == 0}" @click="changeBeCurrent('','developmentZone')">全部</span> <span :class="{color_text:queryParams.developmentZone.length == 0}" @click="changeBeCurrent('','developmentZone')">全部</span>
<template v-for="(item,index) in lfqType"> <template v-for="(item,index) in lfqType">
<span :class="{color_text:queryParams.developmentZone.includes(item)}" @click="changeBeCurrent(item,'developmentZone')">{{item}}</span> <span :class="{color_text:queryParams.developmentZone.includes(item)}"
@click="changeBeCurrent(item,'developmentZone')">{{item}}</span>
</template> </template>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
</head-form> </head-form-new>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables v-if="!isSkeleton" :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
v-if="!isSkeleton" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="companyName" slot-scope="scope"> <template slot="companyName" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.companyId)}`:`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName " v-html="scope.row.companyName"></router-link> <router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.companyId)}`:`/company/${encodeStr(scope.row.companyId)}`" tag="a"
class="a-link" v-if="scope.row.companyId&&scope.row.companyName " v-html="scope.row.companyName"></router-link>
<div v-else v-html="scope.row.companyName || '--'"></div> <div v-else v-html="scope.row.companyName || '--'"></div>
</template> </template>
<template slot="area" slot-scope="scope"> <template slot="area" slot-scope="scope">
...@@ -118,13 +109,13 @@ ...@@ -118,13 +109,13 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
import dataRegion from '@/assets/json/dataRegion' import dataRegion from '@/assets/json/dataRegion';
import { import {
urbanInvestmentPage, urbanInvestmentPage,
uipGroupData uipGroupData
} from '@/api/detail/party-a/urbanLnvestment' } from '@/api/detail/party-a/urbanLnvestment';
export default { export default {
name: 'SameRegion', name: 'SameRegion',
mixins: [mixin], mixins: [mixin],
...@@ -148,47 +139,47 @@ export default { ...@@ -148,47 +139,47 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '企业名称', prop: 'companyName', width: '369', slot: true}, { label: '企业名称', prop: 'companyName', width: '369', slot: true },
{label: '区域', prop: 'area', width: '120', slot: true}, { label: '区域', prop: 'area', width: '120', slot: true },
{label: '招标数量', prop: 'biddingCount', width: '100', sortable: true}, { label: '招标数量', prop: 'biddingCount', width: '100', sortable: true },
{label: '城投拿地', prop: 'landInfoCount', width: '100', sortable: true}, { label: '城投拿地', prop: 'landInfoCount', width: '100', sortable: true },
{label: '供应商', prop: 'supplierCount', width: '100', sortable: true}, { label: '供应商', prop: 'supplierCount', width: '100', sortable: true },
{label: '主体评级', prop: 'bratingSubjectLevel', width: '110'}, { label: '主体评级', prop: 'bratingSubjectLevel', width: '110' },
{label: '债劵余额(亿元)', prop: 'bondBalance', width: '130'}, { label: '债劵余额(亿元)', prop: 'bondBalance', width: '130' },
{label: '行政级别', prop: 'uipExecutiveLevel', width: '120'}, { label: '行政级别', prop: 'uipExecutiveLevel', width: '120' },
{label: '股东背景', prop: 'shareholderBg', width: '120'}, { label: '股东背景', prop: 'shareholderBg', width: '120' },
{label: '股权关系', prop: 'equityRelationship', width: '120'}, { label: '股权关系', prop: 'equityRelationship', width: '120' },
{label: '平台重要性', prop: 'platformImportance', width: '120'}, { label: '平台重要性', prop: 'platformImportance', width: '120' },
{label: '城投业务类型', prop: 'uipBusinessType', width: '120'}, { label: '城投业务类型', prop: 'uipBusinessType', width: '120' },
{label: '实控人', prop: 'actualController', width: '280'}, { label: '实控人', prop: 'actualController', width: '280' },
{label: '最新报告期', prop: 'latestReportPeriod', width: '120'}, { label: '最新报告期', prop: 'latestReportPeriod', width: '120' },
{label: '总资产(亿元)', prop: 'totalAssets', width: '120'}, { label: '总资产(亿元)', prop: 'totalAssets', width: '120' },
{label: '归母净资产(亿元)', prop: 'belongNetAssets', width: '140'}, { label: '归母净资产(亿元)', prop: 'belongNetAssets', width: '140' },
{label: '货币资金(亿元)', prop: 'monetaryFunds', width: '130'}, { label: '货币资金(亿元)', prop: 'monetaryFunds', width: '130' },
{label: '土地资产(亿元)', prop: 'landAssets', width: '130'}, { label: '土地资产(亿元)', prop: 'landAssets', width: '130' },
{label: '受限资产(亿元)', prop: 'restrictedAssets', width: '130'}, { label: '受限资产(亿元)', prop: 'restrictedAssets', width: '130' },
{label: '应收账款(亿元)', prop: 'accountsReceivable', width: '130'}, { label: '应收账款(亿元)', prop: 'accountsReceivable', width: '130' },
{label: '其他应收款(亿元)', prop: 'otherReceivable', width: '140'}, { label: '其他应收款(亿元)', prop: 'otherReceivable', width: '140' },
{label: '公益性&准公益性主营占比(%)', prop: 'econData001', width: '200'}, { label: '公益性&准公益性主营占比(%)', prop: 'econData001', width: '200' },
{label: '应收类款项来自政府占比(%)', prop: 'receivableFromGovRatio', width: '200'}, { label: '应收类款项来自政府占比(%)', prop: 'receivableFromGovRatio', width: '200' },
{label: '政府补助(亿元)', prop: 'govSubsidy', width: '130'}, { label: '政府补助(亿元)', prop: 'govSubsidy', width: '130' },
{label: '专项应付款(亿元)', prop: 'specialPayable', width: '140'}, { label: '专项应付款(亿元)', prop: 'specialPayable', width: '140' },
{label: '营业收入(亿元)', prop: 'operatingIncome', width: '130'}, { label: '营业收入(亿元)', prop: 'operatingIncome', width: '130' },
{label: '所属开发区', prop: 'developmentZone', width: '120'} { label: '所属开发区', prop: 'developmentZone', width: '120' }
], ],
formData: [ formData: [
{ type: 0, fieldName: 'penalizeReasonType', value: '', placeholder: '筛选', options: []}, { type: 0, fieldName: 'penalizeReasonType', value: '', placeholder: '筛选', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keyword', value: '', placeholder: '请输入关键词', options: []}, { type: 3, fieldName: 'keyword', value: '', placeholder: '请输入关键词', options: [], uid: this.getUid() },
], ],
xzdj:['省级','地级市','区县级'], xzdj: ['省级', '地级市', '区县级'],
selected:[], selected: [],
xzdjCalss:'', xzdjCalss: '',
typeList:['土地开发整理','基础设施建设','棚改保障房建设','公用事业','文化旅游','交通建设运营','产投平台'], typeList: ['土地开发整理', '基础设施建设', '棚改保障房建设', '公用事业', '文化旅游', '交通建设运营', '产投平台'],
ztpj:['AAA','AA+','AA','A+','A','A-','BBB+','其他'], ztpj: ['AAA', 'AA+', 'AA', 'A+', 'A', 'A-', 'BBB+', '其他'],
gdbj:['政府','财政','国资委','其他'], gdbj: ['政府', '财政', '国资委', '其他'],
gqgx:['直接控股','间接控股'], gqgx: ['直接控股', '间接控股'],
pt:['重要平台','主要平台','一般平台'], pt: ['重要平台', '主要平台', '一般平台'],
lfqType:['国家级经开','国家级高新区','国家海关监管区域','国家级新区','国家边和区','其他国家级','省级新区','省级开发区'], lfqType: ['国家级经开', '国家级高新区', '国家海关监管区域', '国家级新区', '国家边和区', '其他国家级', '省级新区', '省级开发区'],
props: { props: {
value: 'id', value: 'id',
multiple: true, multiple: true,
...@@ -196,17 +187,17 @@ export default { ...@@ -196,17 +187,17 @@ export default {
addressList: [], addressList: [],
addressType: [], addressType: [],
addresslength: 0, addresslength: 0,
searchState:false, searchState: false,
uipGroupDatalist:[], uipGroupDatalist: [],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true isSkeleton: true
} };
}, },
watch:{ watch: {
searchState:{ searchState: {
handler(newVal, olVal) { handler(newVal, olVal) {
if (newVal) { if (newVal) {
setTimeout(() => { setTimeout(() => {
...@@ -219,11 +210,11 @@ export default { ...@@ -219,11 +210,11 @@ export default {
} }
}, },
created() { created() {
if(this.companyInfo){ if (this.companyInfo) {
this.queryParams.provinceIds.push(this.companyInfo.provinceId) this.queryParams.provinceIds.push(this.companyInfo.provinceId);
this.queryParams.cityIds.push(this.companyInfo.cityId) this.queryParams.cityIds.push(this.companyInfo.cityId);
this.handleQuery() this.handleQuery();
this.getScreen() this.getScreen();
} }
}, },
computed: { computed: {
...@@ -274,7 +265,7 @@ export default { ...@@ -274,7 +265,7 @@ export default {
this.addressList = str; this.addressList = str;
}, },
// 筛选 // 筛选
handleSearch1(event){ handleSearch1(event) {
// this.searchState=!this.searchState; // this.searchState=!this.searchState;
let dom = this.$refs.showContent; let dom = this.$refs.showContent;
if (!dom.contains(event.target)) { if (!dom.contains(event.target)) {
...@@ -283,45 +274,45 @@ export default { ...@@ -283,45 +274,45 @@ export default {
} }
}, },
// 请求筛选条件 // 请求筛选条件
getScreen(){ getScreen() {
uipGroupData().then(res => { uipGroupData().then(res => {
this.uipGroupDatalist = res.data this.uipGroupDatalist = res.data;
}) });
}, },
changeXZDJ(index) { changeXZDJ(index) {
this.queryParams.uipExecutiveLevel = index; this.queryParams.uipExecutiveLevel = index;
this.changes() this.changes();
}, },
changeBeCurrent(index,name) { changeBeCurrent(index, name) {
if(index){ if (index) {
let i = this.queryParams[name].indexOf(index) let i = this.queryParams[name].indexOf(index);
if(i == -1){ if (i == -1) {
this.queryParams[name].push(index); this.queryParams[name].push(index);
}else{ } else {
this.queryParams[name].splice(i,1); this.queryParams[name].splice(i, 1);
} }
}else{ } else {
this.queryParams[name] = [] this.queryParams[name] = [];
} }
this.changes() this.changes();
this.$forceUpdate(); this.$forceUpdate();
}, },
changes(){ changes() {
let params = this.formParams() let params = this.formParams();
params.pageNum = 1 params.pageNum = 1;
this.queryParams.pageNum = 1 this.queryParams.pageNum = 1;
params.uipExecutiveLevel = this.queryParams.uipExecutiveLevel params.uipExecutiveLevel = this.queryParams.uipExecutiveLevel;
params.uipBusinessType = this.queryParams.uipBusinessType params.uipBusinessType = this.queryParams.uipBusinessType;
params.bratingSubjectLevel = this.queryParams.bratingSubjectLevel params.bratingSubjectLevel = this.queryParams.bratingSubjectLevel;
params.shareholderBg = this.queryParams.shareholderBg params.shareholderBg = this.queryParams.shareholderBg;
params.equityRelationship = this.queryParams.equityRelationship params.equityRelationship = this.queryParams.equityRelationship;
params.platformImportance = this.queryParams.platformImportance params.platformImportance = this.queryParams.platformImportance;
params.developmentZone = this.queryParams.developmentZone params.developmentZone = this.queryParams.developmentZone;
this.handleQuery(params) this.handleQuery(params);
}, },
addressListbtn() { addressListbtn() {
let arr = this.$refs.address.getCheckedNodes(); let arr = this.$refs.address.getCheckedNodes();
let provinceCode = [],cityCode = [],countyCode = []; let provinceCode = [], cityCode = [], countyCode = [];
for (var i in arr) { for (var i in arr) {
if (arr[i].parent) { if (arr[i].parent) {
if (!arr[i].parent.checked) { if (!arr[i].parent.checked) {
...@@ -329,7 +320,7 @@ export default { ...@@ -329,7 +320,7 @@ export default {
!arr[i].hasChildren && countyCode.push(arr[i].value); !arr[i].hasChildren && countyCode.push(arr[i].value);
} }
} else { } else {
provinceCode.push(arr[i].value) provinceCode.push(arr[i].value);
} }
} }
if (provinceCode.length > 0 || cityCode.length > 0 || countyCode.length > 0) { if (provinceCode.length > 0 || cityCode.length > 0 || countyCode.length > 0) {
...@@ -339,93 +330,93 @@ export default { ...@@ -339,93 +330,93 @@ export default {
} }
}, },
handleQuery(params){ handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
urbanInvestmentPage(data).then(res => { urbanInvestmentPage(data).then(res => {
this.tableData = res.data.list this.tableData = res.data.list;
this.tableDataTotal = res.data.totalCount this.tableDataTotal = res.data.totalCount;
this.isSkeleton = false this.isSkeleton = false;
}) });
}, },
//排序 //排序
sortChange(e){ sortChange(e) {
if(e.order=='ascending'){ if (e.order == 'ascending') {
this.queryParams.field = e.prop this.queryParams.field = e.prop;
this.queryParams.order = 'asc' this.queryParams.order = 'asc';
}else if(e.order=='descending'){ } else if (e.order == 'descending') {
this.queryParams.field = e.prop this.queryParams.field = e.prop;
this.queryParams.order = 'desc' this.queryParams.order = 'desc';
}else{ } else {
delete this.queryParams.field delete this.queryParams.field;
delete this.queryParams.order delete this.queryParams.order;
} }
this.handleSearch(); this.handleSearch();
}, },
// attr 参数表示当前点击的是哪一列,传进来的是点击列的标识 // attr 参数表示当前点击的是哪一列,传进来的是点击列的标识
// rev 参数表示的是点击当前列表头之后是升序降序或者null,三种值分别是['ascending', 'descending', null] // rev 参数表示的是点击当前列表头之后是升序降序或者null,三种值分别是['ascending', 'descending', null]
sortFun(attr, rev){ sortFun(attr, rev) {
if(rev === 'ascending') { if (rev === 'ascending') {
rev = 1 rev = 1;
} else if (rev === 'descending') { } else if (rev === 'descending') {
rev = -1 rev = -1;
} else { } else {
rev = 0 rev = 0;
} }
return function (x, y) { return function (x, y) {
let a = x[attr] let a = x[attr];
let b = y[attr] let b = y[attr];
if (!a) { if (!a) {
a = "" a = "";
} }
if (!b) { if (!b) {
b = "" b = "";
} }
if (a < b) { if (a < b) {
return rev * -1 return rev * -1;
} }
if (a > b) { if (a > b) {
return rev * 1 return rev * 1;
} }
return 0 return 0;
} };
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
.search-box{ .search-box {
display: inline-block; display: inline-block;
/*cursor: pointer;*/ /*cursor: pointer;*/
position: relative; position: relative;
.search-box-t{ .search-box-t {
font-size: 14px; font-size: 14px;
font-weight: 400; font-weight: 400;
line-height: 32px; line-height: 32px;
color:#232323; color: #232323;
margin-right: 8px; margin-right: 8px;
cursor: pointer; cursor: pointer;
i{ i {
color:rgba(35,35,35,0.4); color: rgba(35, 35, 35, 0.4);
margin-left: 5px margin-left: 5px;
} }
} }
.search-box-ta{ .search-box-ta {
color: #0081FF; color: #0081ff;
i{ i {
color: #0081FF; color: #0081ff;
} }
} }
.search-main{ .search-main {
background: #ffffff; background: #ffffff;
box-shadow: 0px 4px 10px 0px rgba(0,0,0,0.1); box-shadow: 0px 4px 10px 0px rgba(0, 0, 0, 0.1);
border-radius: 4px; border-radius: 4px;
width: 880px; width: 880px;
//height: 337px; //height: 337px;
...@@ -434,33 +425,33 @@ export default { ...@@ -434,33 +425,33 @@ export default {
top: 25px; top: 25px;
left: 0; left: 0;
z-index: 2001; z-index: 2001;
.item{ .item {
margin-bottom: 5px; margin-bottom: 5px;
display: flex; display: flex;
/*align-items: center;*/ /*align-items: center;*/
font-size: 14px; font-size: 14px;
.wrap_label{ .wrap_label {
color: rgba(35,35,35,0.8); color: rgba(35, 35, 35, 0.8);
margin-right: 12px; margin-right: 12px;
line-height: 30px; line-height: 30px;
} }
.item_ckquery{ .item_ckquery {
position: relative; position: relative;
flex: 1; flex: 1;
span{ span {
color: #232323; color: #232323;
padding: 5px 6px; padding: 5px 6px;
display: inline-block; display: inline-block;
cursor: pointer; cursor: pointer;
margin-right: 8px; margin-right: 8px;
} }
.color_text{ .color_text {
background: #F3F4F5; background: #f3f4f5;
border-radius: 4px; border-radius: 4px;
color: #0081FF; color: #0081ff;
} }
.select-active{ .select-active {
color: #0081FF; color: #0081ff;
} }
} }
...@@ -475,4 +466,8 @@ export default { ...@@ -475,4 +466,8 @@ export default {
} }
} }
} }
.city-investment {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
navigation: {isFixed: true, fixedHeight: 56, totalHeight: 68}, // iframe之外页面顶部对象,ifFixed:是否浮动;fixedHeight:浮动对象高度;totalHeight:顶部整体高度 navigation: {isFixed: true, fixedHeight: 56, totalHeight: 68}, // iframe之外页面顶部对象,ifFixed:是否浮动;fixedHeight:浮动对象高度;totalHeight:顶部整体高度
src: '', //iframe嵌套页面地址 src: '', //iframe嵌套页面地址
domain: 'https://plug.jiansheku.com', // 插件地址 domain: 'https://plug.jiansheku.com', // 插件地址
// domain: 'http://192.168.60.19:3400', // domain: 'http://192.168.60.104:3400',
// domain: 'http://192.168.60.30:3300', // domain: 'http://192.168.60.30:3300',
ak: 'aec7b3ff2y2q8x6t49a7e2c463ce21912', // 需要携带的sdkId ak: 'aec7b3ff2y2q8x6t49a7e2c463ce21912', // 需要携带的sdkId
uid: this.$store.state.user.userId, // 需要携带的uid uid: this.$store.state.user.userId, // 需要携带的uid
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
v-loading="tableLoading" v-loading="tableLoading"
:data="tableData" :data="tableData"
border border
v-horizontal-scroll="'hover'" v-horizontal-scroll="tableData.total > 15 ? 'hover' : 'false'"
highlight-current-row highlight-current-row
@sort-change="sortChange" @sort-change="sortChange"
:default-sort = "{prop: 'gdp', order: 'descending'}" :default-sort = "{prop: 'gdp', order: 'descending'}"
......
...@@ -321,6 +321,7 @@ ...@@ -321,6 +321,7 @@
this.getRangeBidMoney() this.getRangeBidMoney()
this.getRangeBidFiveYears() this.getRangeBidFiveYears()
this.getLowerRateByYear() this.getLowerRateByYear()
this.getLowerRangeTenderType()
}, },
beforeDestroy(){ beforeDestroy(){
...@@ -345,7 +346,6 @@ ...@@ -345,7 +346,6 @@
this.initChart1(list) this.initChart1(list)
}) })
} }
this.getLowerRangeTenderType()
}) })
}, },
getCountBidGroupByProvince(){ getCountBidGroupByProvince(){
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<p>{{itme.value}}</p> <p>{{itme.value}}</p>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<p class="solid"></p> <p class="solid"></p>
...@@ -30,8 +30,8 @@ ...@@ -30,8 +30,8 @@
<Tender v-if="personnelHerf=='Tender'" /> <Tender v-if="personnelHerf=='Tender'" />
<!-- 开标记录 --> <!-- 开标记录 -->
<BidRecord v-if="personnelHerf=='BidRecord'" /> <BidRecord v-if="personnelHerf=='BidRecord'" />
</div> </div>
</template> </template>
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
import BidRecord from "./components/BidRecord/index.vue"; import BidRecord from "./components/BidRecord/index.vue";
import Bidding from "./components/Bidding/index.vue"; import Bidding from "./components/Bidding/index.vue";
import MajorProject from "./components/MajorProject/index.vue"; import MajorProject from "./components/MajorProject/index.vue";
import "@/assets/styles/public.scss"; import "@/assets/styles/public.scss";
export default { export default {
name: 'Radar', name: 'Radar',
...@@ -80,25 +80,25 @@ ...@@ -80,25 +80,25 @@
key: 'Bidding', key: 'Bidding',
status: false, status: false,
value: '招标计划', value: '招标计划',
},
{
key: 'bxprozbgg',
status: false,
value: '标讯pro',
}, },
// {
// key: 'bxprozbgg',
// status: false,
// value: '标讯pro',
//
// },
{ {
key: 'Tender', key: 'Tender',
status: false, status: false,
value: '公招标讯', value: '公招标讯',
}, },
{ {
key: 'BidRecord', key: 'BidRecord',
status: false, status: false,
value: '开标记录', value: '开标记录',
}, },
], ],
...@@ -121,7 +121,7 @@ ...@@ -121,7 +121,7 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.app-container { .app-container {
margin: 12px 24px; margin: 12px 24px;
padding: 0; padding: 0;
...@@ -129,7 +129,7 @@ ...@@ -129,7 +129,7 @@
.content{ .content{
padding: 0px 16px; padding: 0px 16px;
background: #FFFFFF; background: #FFFFFF;
} }
.app-container .combined-title { .app-container .combined-title {
...@@ -261,4 +261,4 @@ ...@@ -261,4 +261,4 @@
border-bottom: 2px solid #0081FF; border-bottom: 2px solid #0081FF;
font-weight: bold; font-weight: bold;
} }
</style> </style>
\ No newline at end of file
<template> <template>
<div> <div>
<div class="user-info-head" @click="editCropper()"><img v-bind:src="options.img" title="点击上传头像" class="img-circle img-lg" /></div> <div class="user-info-head" @click="editCropper()"><img v-bind:src="options.img" title="点击上传头像" class="img-circle img-lg" /></div>
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened" @close="closeDialog"> <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened" @close="closeDialog">
<el-row> <el-row>
<el-col :xs="24" :md="12" :style="{height: '350px'}"> <el-col :xs="24" :md="12" :style="{height: '350px'}">
<vue-cropper <vue-cropper ref="cropper" :img="options.img" :info="true" :autoCrop="options.autoCrop" :autoCropWidth="options.autoCropWidth"
ref="cropper" :autoCropHeight="options.autoCropHeight" :fixedBox="options.fixedBox" :outputType="options.outputType" @realTime="realTime"
:img="options.img" v-if="visible" />
:info="true"
:autoCrop="options.autoCrop"
:autoCropWidth="options.autoCropWidth"
:autoCropHeight="options.autoCropHeight"
:fixedBox="options.fixedBox"
:outputType="options.outputType"
@realTime="realTime"
v-if="visible"
/>
</el-col> </el-col>
<el-col :xs="24" :md="12" :style="{height: '350px'}"> <el-col :xs="24" :md="12" :style="{height: '350px'}">
<div class="avatar-upload-preview"> <div class="avatar-upload-preview">
...@@ -57,7 +48,7 @@ ...@@ -57,7 +48,7 @@
import store from "@/store"; import store from "@/store";
import { VueCropper } from "vue-cropper"; import { VueCropper } from "vue-cropper";
import { uploadAvatar } from "@/api/system/user"; import { uploadAvatar } from "@/api/system/user";
import { debounce } from '@/utils' import { debounce } from '@/utils';
export default { export default {
components: { VueCropper }, components: { VueCropper },
...@@ -80,13 +71,21 @@ export default { ...@@ -80,13 +71,21 @@ export default {
autoCropWidth: 200, // 默认生成截图框宽度 autoCropWidth: 200, // 默认生成截图框宽度
autoCropHeight: 200, // 默认生成截图框高度 autoCropHeight: 200, // 默认生成截图框高度
fixedBox: true, // 固定截图框大小 不允许改变 fixedBox: true, // 固定截图框大小 不允许改变
outputType:"png", // 默认生成截图为PNG格式 outputType: "png", // 默认生成截图为PNG格式
filename: '' filename: ''
}, },
previews: {}, previews: {},
resizeHandler: null resizeHandler: null
}; };
}, },
watch: {
user: {
handler(newVal, oldVal) {
this.options.img = newVal.avatar;
},
deep: true
}
},
methods: { methods: {
// 编辑头像 // 编辑头像
editCropper() { editCropper() {
...@@ -97,10 +96,10 @@ export default { ...@@ -97,10 +96,10 @@ export default {
this.visible = true; this.visible = true;
if (!this.resizeHandler) { if (!this.resizeHandler) {
this.resizeHandler = debounce(() => { this.resizeHandler = debounce(() => {
this.refresh() this.refresh();
}, 100) }, 100);
} }
window.addEventListener("resize", this.resizeHandler) window.addEventListener("resize", this.resizeHandler);
}, },
// 刷新组件 // 刷新组件
refresh() { refresh() {
...@@ -139,7 +138,7 @@ export default { ...@@ -139,7 +138,7 @@ export default {
uploadImg() { uploadImg() {
this.$refs.cropper.getCropBlob(data => { this.$refs.cropper.getCropBlob(data => {
let formData = new FormData(); let formData = new FormData();
console.log(this.options.filename) console.log(this.options.filename);
formData.append("avatarfile", data, this.options.filename); formData.append("avatarfile", data, this.options.filename);
uploadAvatar(formData).then(response => { uploadAvatar(formData).then(response => {
this.open = false; this.open = false;
...@@ -156,9 +155,9 @@ export default { ...@@ -156,9 +155,9 @@ export default {
}, },
// 关闭窗口 // 关闭窗口
closeDialog() { closeDialog() {
this.options.img = store.getters.avatar this.options.img = store.getters.avatar;
this.visible = false; this.visible = false;
window.removeEventListener("resize", this.resizeHandler) window.removeEventListener("resize", this.resizeHandler);
} }
} }
}; };
...@@ -171,7 +170,7 @@ export default { ...@@ -171,7 +170,7 @@ export default {
} }
.user-info-head:hover:after { .user-info-head:hover:after {
content: '+'; content: "+";
position: absolute; position: absolute;
left: 0; left: 0;
right: 0; right: 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment