Commit dd64481b authored by tianhongyang's avatar tianhongyang

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

parent ac457c0b
......@@ -46,6 +46,7 @@
"element-ui": "2.15.12",
"file-saver": "2.0.5",
"fuse.js": "6.4.3",
"gsap": "^3.12.2",
"highlight.js": "9.18.5",
"jquery": "^3.7.0",
"js-beautify": "1.13.0",
......@@ -56,6 +57,7 @@
"quill": "1.3.7",
"screenfull": "5.0.2",
"sortablejs": "^1.15.0",
"uuid": "^9.0.1",
"vue": "2.6.12",
"vue-count-to": "1.0.13",
"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>
\ 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="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
<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>
\ 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="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
<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 @@
* 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:指向当前实例(可忽略)
let dom = window
const steerScroll = function (iframeId, navigation, footHeight, state, parentId, _this) { // iframeId: iframe的id;navigation:页面排除iframe后剩下的顶部高度;footHeight: 页面排除iframe后剩下的底部高度;state:监听or移除监听;parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例(可忽略)
let dom = window;
if (parentId) { // 默认页面可以滚动
dom = document.getElementById(parentId)
dom = document.getElementById(parentId);
if (!dom) {
return
return;
}
dom.style.overflow = 'auto'
dom.style.overflow = 'auto';
} else {
document.body.style.overflow = 'visible'
document.body.style.overflow = 'visible';
}
if (state) {
window.addEventListener('message', function(e) {
const data = e.data
const sct = parentId ? dom.scrollTop : document && document.documentElement.scrollTop || document && document.body.scrollTop
window.addEventListener('message', function (e) {
const data = e.data;
const sct = parentId ? dom.scrollTop : document && document.documentElement.scrollTop || document && document.body.scrollTop;
if (data && typeof data === 'object') {
// 动态设置iFrame高度
if (data.height) {
document.getElementById(iframeId).style.height = data.height + 'px'
scrolling(iframeId, navigation, footHeight, parentId) // 初始加载获取滚动条距离顶部高度
document.getElementById(iframeId).style.height = data.height + 'px';
scrolling(iframeId, navigation, footHeight, parentId); // 初始加载获取滚动条距离顶部高度
}
// 插件当前路由
if (_this && data.currentPath) {
_this.currentRoute = data
_this.searchFlag = data.currentName.includes('search-') ? true : false
_this.currentRoute = data;
_this.searchFlag = data.currentName.includes('search-') ? true : false;
}
// 点击企业详情页 栏目名动态设置滚动高度
if (data.scrollHeight) {
const navHeight = navigation.isFixed && !parentId ? navigation.totalHeight - navigation.fixedHeight : !parentId ? navigation.totalHeight : 0
dom.scrollTo(sct, parseInt(data.scrollHeight) + navHeight)
const navHeight = navigation.isFixed && !parentId ? navigation.totalHeight - navigation.fixedHeight : !parentId ? navigation.totalHeight : 0;
dom.scrollTo(sct, parseInt(data.scrollHeight) + navHeight);
}
// 点击企业详情页 栏目下拉子标签动态设置滚动高度
if (data.clientHeight) {
dom.scrollTo(sct, sct - parseInt(data.clientHeight))
dom.scrollTo(sct, sct - parseInt(data.clientHeight));
}
// 点击下拉子标签动态设置滚动高度
if (data.initHeight >= 0) {
dom.scrollTo(sct, data.initHeight)
dom.scrollTo(sct, data.initHeight);
}
// 根据子页面弹窗显示隐藏控制当前页面是否固定不可滚动
if (data.scrollDisabled || data.scrollDisabled === false) {
if (parentId) {
dom.style.overflow = data.scrollDisabled ? 'hidden' : 'auto'
dom.style.overflow = data.scrollDisabled ? 'hidden' : 'auto';
} else {
document.body.style.overflow = data.scrollDisabled ? 'hidden' : 'visible'
document.body.style.overflow = data.scrollDisabled ? 'hidden' : 'visible';
}
}
}
})
});
dom.addEventListener('scroll', (event) => {
scrolling(iframeId, navigation, footHeight, parentId)
})
scrolling(iframeId, navigation, footHeight, parentId);
});
} else {
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)
scrollTop = scrollTop + navigation.totalHeight
let rippleHeight = 0 //插件筛选条件浮动层距离底部距离
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 domHeight = parentId ? document.getElementById(parentId).clientHeight : window.clientHeight || document.body.clientHeight || document.documentElement.clientHeight
if(parentId){ //网页内部嵌套时
rippleHeight = scrollHeight-scrollGap-domHeight
}else{ //
if(scrollHeight-scrollGap-domHeight <= footHeight){
rippleHeight = 0
}else{
rippleHeight = scrollHeight-scrollGap-domHeight - footHeight
const ifa = document.getElementById(iframeId);
scrollTop = scrollTop + navigation.totalHeight;
let rippleHeight = 0; //插件筛选条件浮动层距离底部距离
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 domHeight = parentId ? document.getElementById(parentId).clientHeight : window.clientHeight || document.body.clientHeight || document.documentElement.clientHeight;
if (parentId) { //网页内部嵌套时
rippleHeight = scrollHeight - scrollGap - domHeight;
} else { //
if (scrollHeight - scrollGap - domHeight <= footHeight) {
rippleHeight = 0;
} else {
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 {
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 {
.el-table__header-wrapper{
th{
background: #F0F3FA;
text-align: left;
// text-align: left;
}
}
.el-table__fixed-header-wrapper{
......@@ -625,7 +625,7 @@ ul, li {
line-height: 32px;
}
&:hover{
color: #f;
color: #fff;
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 './assets/styles/element-variables.scss'
import Element from 'element-ui';
import './assets/styles/element-variables.scss';
import '@/assets/styles/index.scss' // global css
import '@/assets/styles/ruoyi.scss' // ruoyi css
import App from './App'
import store from './store'
import router from './router'
import directive from './directive' // directive
import plugins from './plugins' // plugins
import { download } from '@/utils/request'
import horizontalScroll from 'el-table-horizontal-scroll'
import "@/assets/styles/common.css";
import '@/assets/styles/index.scss'; // global css
import '@/assets/styles/ruoyi.scss'; // ruoyi css
import App from './App';
import store from './store';
import router from './router';
import directive from './directive'; // directive
import plugins from './plugins'; // plugins
import { download } from '@/utils/request';
import horizontalScroll from 'el-table-horizontal-scroll';
import './assets/icons' // icon
import './permission' // permission control
import './assets/icons'; // icon
import './permission'; // permission control
import { getDicts } from "@/api/system/dict/data";
import { getConfigKey } from "@/api/system/config";
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi";
// 分页组件
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.getConfigKey = getConfigKey
Vue.prototype.parseTime = parseTime
Vue.prototype.resetForm = resetForm
Vue.prototype.addDateRange = addDateRange
Vue.prototype.selectDictLabel = selectDictLabel
Vue.prototype.selectDictLabels = selectDictLabels
Vue.prototype.download = download
Vue.prototype.handleTree = handleTree
Vue.prototype.getDicts = getDicts;
Vue.prototype.getConfigKey = getConfigKey;
Vue.prototype.parseTime = parseTime;
Vue.prototype.resetForm = resetForm;
Vue.prototype.addDateRange = addDateRange;
Vue.prototype.selectDictLabel = selectDictLabel;
Vue.prototype.selectDictLabels = selectDictLabels;
Vue.prototype.download = download;
Vue.prototype.handleTree = handleTree;
// 全局组件挂载
Vue.component('DictTag', DictTag)
Vue.component('Pagination', Pagination)
Vue.component('RightToolbar', RightToolbar)
Vue.component('Editor', Editor)
Vue.component('FileUpload', FileUpload)
Vue.component('ImageUpload', ImageUpload)
Vue.component('ImagePreview', ImagePreview)
Vue.component('DictTag', DictTag);
Vue.component('Pagination', Pagination);
Vue.component('RightToolbar', RightToolbar);
Vue.component('Editor', Editor);
Vue.component('FileUpload', FileUpload);
Vue.component('ImageUpload', ImageUpload);
Vue.component('ImagePreview', ImagePreview);
Vue.use(horizontalScroll)
Vue.use(directive)
Vue.use(plugins)
Vue.use(VueMeta)
DictData.install()
Vue.use(horizontalScroll);
Vue.use(directive);
Vue.use(plugins);
Vue.use(VueMeta);
DictData.install();
/**
* If you don't want to use mock-server
......@@ -76,13 +77,13 @@ DictData.install()
Vue.use(Element, {
size: Cookies.get('size') || 'medium' // set element-ui default size
})
});
Vue.config.productionTip = false
Vue.config.productionTip = false;
new Vue({
el: '#app',
router,
store,
render: h => h(App)
})
});
......@@ -18,7 +18,7 @@
</div>
</div>
<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"
stripe border
style="width: 100%">
......
......@@ -118,8 +118,8 @@
自定义
<el-date-picker
ref="picker"
v-if="datatype ==3"
:default-value="defaultValue"
style="position: absolute;opacity: 0;left: -12px;width: 60px;"
v-model="pickerValue"
type="daterange"
range-separator="至"
......@@ -507,10 +507,10 @@
}
this.datatype=key;
if(value == '自定义') {
// this.$refs.picker && this.$refs.picker.length && this.$refs.picker[0].focus()
// this.$nextTick(() => {
this.$refs.picker && this.$refs.picker.length && this.$refs.picker[0].focus()
this.$nextTick(() => {
// this.$refs['picker-block'].appendChild(this.$refs.picker[0].popperElm)
// })
})
}else {
this.pickerValue = []
let timeStr = []
......@@ -856,8 +856,8 @@
.time-label{
.labels{
width: 240px;
height: 32px;
line-height: 32px;
height: 30px;
line-height: 30px;
border-radius: 4px;
>div{
height: 100%;
......@@ -885,12 +885,7 @@
}
}
}
::v-deep .el-date-editor{
width: 320px;
position: absolute;
right: 250px;
height: 32px;
}
::v-deep .picker-block {
position: relative;
......@@ -901,6 +896,14 @@
visibility:hidden;
clear:both;
}
.el-picker-panel.el-date-range-picker.el-popper {
left: -650px !important;
}
.popper__arrow {
left: 30px !important;
}
}
}
}
......
......@@ -7,7 +7,7 @@
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
@handle-excel="clickDialog"
@handle-excel="clickEXCEL"
>
<template slot="slot">
......@@ -48,55 +48,6 @@
<div>{{scope.row.bidAmount || '--'}}{{scope.row.bidAmount ? '万元':''}}</div>
</template>
</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>
</template>
......@@ -153,45 +104,7 @@
],
timeList: ['近三天', '近七天', '近半月', '自定义'],
moneyList: ['5000万以下', '5000万-1亿', '1亿-5亿', '5亿-10亿','10亿以上', '自定义'],
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:{}
dataEXCEL:{}
}
},
created() {
......@@ -350,33 +263,20 @@
this.handleQuery(params)
this.$emit('handle-scroll')
},
clickDialog(){
this.dialogExportVisible=true;
},
clickEXCEL() {
if(this.value > 2000){
return
}
this.dialogExportVisible=false;
this.dataEXCEL.combineName=this.combineName;
if(this.value){
this.dataEXCEL.pageSize=this.value
if(this.tableDataTotal > 2000){
this.dataEXCEL.pageSize=2000;
}else {
this.dataEXCEL.pageSize=this.tableDataTotal > 2000 ? 2000 : this.tableDataTotal;
this.dataEXCEL.pageSize=this.tableDataTotal;
}
delete this.dataEXCEL.pageNum
exportWinBid(this.dataEXCEL).then(res=>{
if(res.code === 200){
this.dialogExportVisible1=true;
this.value=''
this.exportData=res.data;
this.downloadFile(res.data.url,res.data.originalName)
}
})
},
cancel(){
this.dialogExportVisible=false
this.value=''
// this.$download.exportByPost('/combine/info/export/win/bid',this.dataEXCEL,'集团中标.xlsx');
},
downloadFile(url, fileName) {
const x = new XMLHttpRequest()
......@@ -391,13 +291,7 @@
a.remove()
}
x.send()
},
toUrl(){
this.dialogExportVisible1=false;
this.$router.push({
path: '/user/profile',
})
},
}
}
}
</script>
......@@ -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>
......@@ -92,7 +92,7 @@
</div>
<div class="flex-box">
<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>
......@@ -132,53 +132,6 @@
<div>{{scope.row.bidAmount || '--'}}{{scope.row.bidAmount ? '万元':''}}</div>
</template>
</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>
</template>
......@@ -244,36 +197,6 @@
timeList: ['近三天', '近七天', '近半月', '自定义'],
moneyList: ['5000万以下', '5000万-1亿', '1亿-5亿', '5亿-10亿','10亿以上', '自定义'],
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() {
......@@ -331,6 +254,7 @@
this.dataEXCEL=JSON.parse(JSON.stringify(data));
bidPage(data).then(res=>{
this.tableData = res.code == 200 ? res.rows:[];
console.log(res.total)
this.tableDataTotal = res.total
this.isSkeleton = false
this.tableLoading = false
......@@ -431,37 +355,20 @@
changeSelect(){
this.handleSearch()
},
clickFocus(e){
document.getElementById(e).classList.toggle('span-ba')
},
clickDialog(){
this.dialogExportVisible=true;
},
clickEXCEL() {
if(this.value > 2000){
return
}
this.dialogExportVisible=false;
this.dataEXCEL.combineName=this.combineName;
if(this.value){
this.dataEXCEL.pageSize=this.value
if(this.tableDataTotal > 2000){
this.dataEXCEL.pageSize=2000;
}else {
this.dataEXCEL.pageSize=this.tableDataTotal > 2000 ? 2000 : this.tableDataTotal;
this.dataEXCEL.pageSize=this.tableDataTotal;
}
delete this.dataEXCEL.pageNum
exportBid(this.dataEXCEL).then(res=>{
if(res.code === 200){
this.dialogExportVisible1=true;
this.value=''
this.exportData=res.data;
this.downloadFile(res.data.url,res.data.originalName)
}
})
},
cancel(){
this.dialogExportVisible=false
this.value=''
},
downloadFile(url, fileName) {
const x = new XMLHttpRequest()
x.open("GET", url, true)
......@@ -476,12 +383,9 @@
}
x.send()
},
toUrl(){
this.dialogExportVisible1=false;
this.$router.push({
path: '/user/profile',
})
},
clickFocus(e){
document.getElementById(e).classList.toggle('span-ba')
}
}
}
</script>
......@@ -664,89 +568,4 @@
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>
<template>
<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-params">
<span class="common-title" v-if="title">{{ title }}</span>
......@@ -10,7 +10,7 @@
</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" @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>
</div>
</div>
......@@ -108,110 +108,110 @@
</div>
</div>
</div>
<!--<div class="headForm" v-else>-->
<!--<div class="flex-box query-box">-->
<!--<div class="flex-box query-params">-->
<!--<span class="common-title" v-if="title">{{ title }}</span>-->
<!--<div class="headForm-from">-->
<!--<div class="from-item" :key="i" v-for="(form, i) in formData">-->
<!--&lt;!&ndash; 单选 &ndash;&gt;-->
<!--<template v-if="form.type==1">-->
<!--<el-select-->
<!--v-model="form.value"-->
<!--clearable-->
<!--class="form-content-width"-->
<!--:style="form.width?'width:'+form.width+'px':'max-width: 110px'"-->
<!--:placeholder="form.placeholder"-->
<!--@change="changeSelect">-->
<!--<el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value" :disabled="item.disabled"/>-->
<!--</el-select>-->
<!--</template>-->
<!--&lt;!&ndash; 年月日 &ndash;&gt;-->
<!--<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>-->
<!--&lt;!&ndash; 输入框 &ndash;&gt;-->
<!--<template v-if="form.type==3">-->
<!--<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>-->
<!--<span @click="changeSelect">搜索</span>-->
<!--</div>-->
<!--</template>-->
<!--&lt;!&ndash; 多选 &ndash;&gt;-->
<!--<template v-if="form.type==4">-->
<!--<el-select-->
<!--class="form-content-width"-->
<!--:class="form.value.length > 1 ? 'selectTag' : ''"-->
<!--v-model="form.value"-->
<!--multiple-->
<!--collapse-tags-->
<!--clearable-->
<!--:style="form.width?'width:'+form.width+'px':'max-width: 170px'"-->
<!--:placeholder="form.placeholder"-->
<!--@change="changeSelect">-->
<!--<el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value"/>-->
<!--</el-select>-->
<!--</template>-->
<!--&lt;!&ndash; 时间、自定义 &ndash;&gt;-->
<!--<template v-else-if="form.type==5">-->
<!--<custom-time-select-->
<!--:timeList="form.timeList"-->
<!--v-model="form.value"-->
<!--:placeholder="form.placeholder"-->
<!--:dateFrom="form.dateFrom ? form.dateFrom : ''"-->
<!--:dateTo="form.dateTo ? form.dateTo : ''"-->
<!--@handle-search="changeSelect" />-->
<!--</template>-->
<!--&lt;!&ndash; 金额 &ndash;&gt;-->
<!--<template v-else-if="form.type==6">-->
<!--<custom-money-select-->
<!--:moneyList="form.moneyList"-->
<!--v-model="form.value"-->
<!--:placeholder="form.placeholder"-->
<!--@handle-search="changeSelect" />-->
<!--</template>-->
<!--&lt;!&ndash; 地区选择 &ndash;&gt;-->
<!--<template v-else-if="form.type==7">-->
<!--<el-cascader-->
<!--ref="cascader"-->
<!--:options="form.options"-->
<!--:props="form.props"-->
<!--v-model="form.value"-->
<!--@change="changeSelect"-->
<!--:placeholder="form.placeholder"-->
<!--collapse-tags-->
<!--clearable></el-cascader>-->
<!--</template>-->
<!--&lt;!&ndash; 自定义 &ndash;&gt;-->
<!--<template v-if="form.type==0">-->
<!--<slot name="slot"></slot>-->
<!--</template>-->
<div class="headForm" v-else>
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title" v-if="title">{{ title }}</span>
<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"
:style="form.width?'width:'+form.width+'px':'max-width: 110px'"
:placeholder="form.placeholder"
@change="changeSelect">
<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="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>
<span @click="changeSelect">搜索</span>
</div>
</template>
<!-- 多选 -->
<template v-if="form.type==4">
<el-select
class="form-content-width"
:class="form.value.length > 1 ? 'selectTag' : ''"
v-model="form.value"
multiple
collapse-tags
clearable
:style="form.width?'width:'+form.width+'px':'max-width: 170px'"
:placeholder="form.placeholder"
@change="changeSelect">
<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
:timeList="form.timeList"
v-model="form.value"
:placeholder="form.placeholder"
:dateFrom="form.dateFrom ? form.dateFrom : ''"
:dateTo="form.dateTo ? form.dateTo : ''"
@handle-search="changeSelect" />
</template>
<!-- 金额 -->
<template v-else-if="form.type==6">
<custom-money-select
:moneyList="form.moneyList"
v-model="form.value"
:placeholder="form.placeholder"
@handle-search="changeSelect" />
</template>
<!-- 地区选择 -->
<template v-else-if="form.type==7">
<el-cascader
ref="cascader"
:options="form.options"
:props="form.props"
v-model="form.value"
@change="changeSelect"
:placeholder="form.placeholder"
collapse-tags
clearable></el-cascader>
</template>
<!-- 自定义 -->
<template v-if="form.type==0">
<slot name="slot"></slot>
</template>
<!--</div>-->
</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>-->
</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>
</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>
<div class="detail-container">
<head-form
title="常合作招标代理单位"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<div class="detail-container bidding-agent">
<head-form-new title="常合作招标代理单位" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables
v-else
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<tables v-else :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">
<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>
</template>
<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-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>
</tables>
<client-detail
v-if="isDetails"
:data="rowData"
:title="'合作项目/工程明细'"
@cancel="isDetails=false" />
<client-detail v-if="isDetails" :data="rowData" :title="'合作项目/工程明细'" @cancel="isDetails=false" />
</div>
</template>
<script>
import mixin from '../mixins/mixin'
import {oftenAgencyPage} from '@/api/detail/party-a/dealings'
import ClientDetail from './component/bidagencyDetail'
import mixin from '../mixins/mixin';
import { oftenAgencyPage } from '@/api/detail/party-a/dealings';
import ClientDetail from './component/bidagencyDetail';
export default {
name: 'Bidagency',
props: ['companyId'],
......@@ -58,54 +41,58 @@ export default {
pageNum: 1,
pageSize: 20
},
defaultSort: {prop: 'issueTime', order: 'descending'},
defaultSort: { prop: 'issueTime', order: 'descending' },
forData: [
{label: '招标代理单位名称', prop: 'agency', minWidth: '350', slot: true},
{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: 'agency', minWidth: '350', slot: true },
{ label: '合作项目/工程名称', prop: 'projectInfo', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6' },
{ label: '最近一次合作时间', prop: 'issueTime', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4' }
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询', options: [], uid: this.getUid() },
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isDetails: false,
rowData: {}
}
};
},
computed: {
},
created() {
this.handleQuery()
this.handleQuery();
},
methods: {
async handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
let res = await oftenAgencyPage(param)
this.tableLoading = false
if(res.code==200){
this.tableLoading = true;
let param = params ? params : this.queryParams;
let res = await oftenAgencyPage(param);
this.tableLoading = false;
if (res.code == 200) {
this.isSkeleton = false;
this.tableData = res.rows.map((item)=>{
item.projectInfo = typeof item.projectInfo == 'string' ? JSON.parse(item.projectInfo) : item.projectInfo
return item
})
this.tableData = res.rows.map((item) => {
item.projectInfo = typeof item.projectInfo == 'string' ? JSON.parse(item.projectInfo) : item.projectInfo;
return item;
});
}
this.tableDataTotal = res.total
this.tableDataTotal = res.total;
},
handleClick(e, data) {
this.rowData = data
this.isDetails = true
this.rowData = data;
this.isDetails = true;
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
.detail-container {
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
.bidding-agent {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="detail-container">
<head-form
title="开标记录"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<div class="detail-container bid-opening-record">
<head-form-new title="开标记录" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables
v-else
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<tables v-else :indexFixed="true" :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" @handle-current-change="handleCurrentChange">
<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>
</template>
<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>
</template>
</tables>
......@@ -32,8 +20,8 @@
</template>
<script>
import mixin from '../mixins/mixin'
import {tenderPage} from '@/api/detail/party-a/dealings'
import mixin from '../mixins/mixin';
import { tenderPage } from '@/api/detail/party-a/dealings';
export default {
name: 'Bidrecords',
props: ['companyId'],
......@@ -49,50 +37,54 @@ export default {
pageSize: 20
},
forData: [
{label: '项目名称', prop: 'name', minWidth: '320', slot: true},
{label: '本企业投标报价(万元)', prop: 'tenderOffer', minWidth: '160'},
{label: '发布日期', prop: 'publishTime', minWidth: '100'},
{label: '项目地区', prop: 'province', minWidth: '160'},
{label: '信息来源', prop: 'source', minWidth: '280', slot: true}
{ label: '项目名称', prop: 'name', minWidth: '320', slot: true },
{ label: '本企业投标报价(万元)', prop: 'tenderOffer', minWidth: '160' },
{ label: '发布日期', prop: 'publishTime', minWidth: '100' },
{ label: '项目地区', prop: 'province', minWidth: '160' },
{ label: '信息来源', prop: 'source', minWidth: '280', slot: true }
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称查询', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称查询', options: [], uid: this.getUid() },
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0
}
tableLoading: false,
tableData: [],
tableDataTotal: 0
};
},
computed: {
},
created() {
this.handleQuery()
this.handleQuery();
},
methods: {
async handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
let res = await tenderPage(param)
this.tableLoading = false
if(res.code==200){
this.tableLoading = true;
let param = params ? params : this.queryParams;
let res = await tenderPage(param);
this.tableLoading = false;
if (res.code == 200) {
this.isSkeleton = false;
this.tableData = res.rows
this.tableData = res.rows;
}
this.tableDataTotal = res.total
this.tableDataTotal = res.total;
},
handlePic(url){
if(url){
window.open(url, "_blank")
handlePic(url) {
if (url) {
window.open(url, "_blank");
}
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
.detail-container {
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
.bid-opening-record {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="detail-container">
<head-form
title="客户"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<div class="detail-container client">
<head-form-new title="客户" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables
v-else
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<tables v-else :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">
<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>
</template>
<!-- <template slot="projectAllName" slot-scope="scope">
......@@ -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>
</template> -->
<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>
</tables>
<client-detail
v-if="isDetails"
:data="rowData"
:title="title"
:company-id="companyId"
@cancel="isDetails=false" />
<client-detail v-if="isDetails" :data="rowData" :title="title" :company-id="companyId" @cancel="isDetails=false" />
</div>
</template>
<script>
import mixin from '../mixins/mixin'
import { clientPage,getSelect } from '@/api/detail/party-a/dealings'
import ClientDetail from './component/customDetail'
import mixin from '../mixins/mixin';
import { clientPage, getSelect } from '@/api/detail/party-a/dealings';
import ClientDetail from './component/customDetail';
export default {
name: 'Custom',
props: ['companyId'],
......@@ -56,95 +36,99 @@ export default {
},
data() {
return {
title:'',
title: '',
queryParams: {
cid: this.companyId,
sort: 5,
pageNum: 1,
pageSize: 20
},
defaultSort: {prop: 'count', order: 'descending'},
defaultSort: { prop: 'count', order: 'descending' },
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: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4'},
{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: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4' },
{ label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2' },
{ label: '合作次数', prop: 'count', minWidth: '150', sortable: 'custom', slot: true, descending: '5', ascending: '6' },
],
formData: [
{ type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: []},
{ type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '搜索客户名称', options: []},
{ type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '搜索客户名称', options: [], uid: this.getUid() },
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isDetails: false,
rowData: {}
}
};
},
computed: {
},
created() {
this.handleQuery()
this.handleOption()
this.handleQuery();
this.handleOption();
},
methods: {
async handleOption(){
let res = await getSelect({})
if(res.code==200){
let data = res.data.projects
for (var i=0;i<data.length;i++){
async handleOption() {
let res = await getSelect({});
if (res.code == 200) {
let data = res.data.projects;
for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({
name: data[i],
value: data[i],
})
});
}
let data1 = res.data.sources
for (var i=0;i<data1.length;i++){
let data1 = res.data.sources;
for (var i = 0; i < data1.length; i++) {
this.formData[1].options.push({
name: data1[i],
value: data1[i],
})
});
}
}
},
async handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
let res = await clientPage(param)
this.tableLoading = false
if(res.code==200){
this.tableLoading = true;
let param = params ? params : this.queryParams;
let res = await clientPage(param);
this.tableLoading = false;
if (res.code == 200) {
this.isSkeleton = false;
this.tableData = res.rows
if(this.tableData&&this.tableData.length>0){
this.tableData = res.rows;
if (this.tableData && this.tableData.length > 0) {
this.tableData.forEach(item => {
typeof item.projectInfo=='string' ? item.projectInfo = JSON.parse(item.projectInfo) : ''
item.amount ? item.amount = parseFloat(item.amount.toFixed(4)) : ''
})
typeof item.projectInfo == 'string' ? item.projectInfo = JSON.parse(item.projectInfo) : '';
item.amount ? item.amount = parseFloat(item.amount.toFixed(4)) : '';
});
}
}
this.tableDataTotal = res.total
this.tableDataTotal = res.total;
},
handleClick(e, data) {
this.rowData = data
this.rowData = data;
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){
if(row.sourceUrl){
handleDetail(row) {
if (row.sourceUrl) {
window.open(row.sourceUrl, "_blank")
window.open(row.sourceUrl, "_blank");
}
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
.detail-container {
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
.client {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="detail-container">
<head-form
title="历史发包"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<div class="detail-container history-contract">
<head-form-new title="历史发包" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables
v-else
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<tables v-else :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">
<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>
</template>
<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>
</template>
</tables>
......@@ -34,8 +20,8 @@
</template>
<script>
import mixin from '../mixins/mixin'
import {historySendProvince, historySendPage} from '@/api/detail/party-a/dealings'
import mixin from '../mixins/mixin';
import { historySendProvince, historySendPage } from '@/api/detail/party-a/dealings';
export default {
name: 'Hiscontract',
props: ['companyId'],
......@@ -53,68 +39,72 @@ export default {
},
defaultSort: {},
forData: [
{label: '项目名称', prop: 'projectAllName', minWidth: '560', slot: true},
{label: '中标时间', prop: 'winBidTime', minWidth: '100', sortable: 'custom', descending: '3', ascending: '4'},
{label: '中标企业', prop: 'companyName', minWidth: '320', slot: true},
{label: '中标金额(万元)', prop: 'winBidAmount', minWidth: '140', sortable: 'custom', descending: '1', ascending: '2'},
{label: '下浮率(%)', prop: 'lowerRate', minWidth: '120', sortable: 'custom', descending: '7', ascending: '8'},
{label: '项目经理 / 负责人', prop: 'staffName', minWidth: '130'},
{label: '中标地区', prop: 'region', minWidth: '160'},
{label: '工期(天)', prop: 'period', minWidth: '110', sortable: 'custom', descending: '9', ascending: '10'},
{label: '业绩类别', prop: 'boundType', minWidth: '110'}
{ label: '项目名称', prop: 'projectAllName', minWidth: '560', slot: true },
{ label: '中标时间', prop: 'winBidTime', minWidth: '100', sortable: 'custom', descending: '3', ascending: '4' },
{ label: '中标企业', prop: 'companyName', minWidth: '320', slot: true },
{ label: '中标金额(万元)', prop: 'winBidAmount', minWidth: '140', sortable: 'custom', descending: '1', ascending: '2' },
{ label: '下浮率(%)', prop: 'lowerRate', minWidth: '120', sortable: 'custom', descending: '7', ascending: '8' },
{ label: '项目经理 / 负责人', prop: 'staffName', minWidth: '130' },
{ label: '中标地区', prop: 'region', minWidth: '160' },
{ label: '工期(天)', prop: 'period', minWidth: '110', sortable: 'custom', descending: '9', ascending: '10' },
{ label: '业绩类别', prop: 'boundType', minWidth: '110' }
],
formData: [
{ type: 1, fieldName: 'provinceId', value: '', placeholder: '项目地区', options: [] },
{ type: 5, fieldName: 'time', value: '', placeholder: '中标时间', startTime: 'dateFrom', endTime: 'dateTo' },
{ type: 6, fieldName: 'money', value: '', placeholder: '中标金额', startMoney: 'amountMin', endMoney: 'amountMax' },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称查询', options: [] }
{ type: 1, fieldName: 'provinceId', value: '', placeholder: '项目地区', options: [], uid: this.getUid() },
{ type: 5, fieldName: 'time', value: '', placeholder: '中标时间', startTime: 'dateFrom', endTime: 'dateTo', uid: this.getUid() },
{ type: 6, fieldName: 'money', value: '', placeholder: '中标金额', startMoney: 'amountMin', endMoney: 'amountMax', uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称查询', options: [], uid: this.getUid() }
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0
}
tableLoading: false,
tableData: [],
tableDataTotal: 0
};
},
computed: {
},
created() {
this.handleOption()
this.handleQuery()
this.handleOption();
this.handleQuery();
},
methods: {
async handleOption(){
let res = await historySendProvince({cid: this.companyId})
if(res.code==200){
async handleOption() {
let res = await historySendProvince({ cid: this.companyId });
if (res.code == 200) {
let region = res.data.map(item => {
let it = {name:item.province+'('+item.count+')',value:item.provinceId}
return it
})
this.setFormData('provinceId', region)
let it = { name: item.province + '(' + item.count + ')', value: item.provinceId };
return it;
});
this.setFormData('provinceId', region);
}
},
async handleQuery(params) {
let param = params?params:this.queryParams
let res = await historySendPage(param)
this.tableLoading = false
if(res.code==200){
let param = params ? params : this.queryParams;
let res = await historySendPage(param);
this.tableLoading = false;
if (res.code == 200) {
this.isSkeleton = false;
this.tableData = res.rows
this.tableData = res.rows;
}
this.tableDataTotal = res.total
this.tableDataTotal = res.total;
},
handleDetail(row){
if(row.sourceUrl){
window.open(row.sourceUrl, "_blank")
handleDetail(row) {
if (row.sourceUrl) {
window.open(row.sourceUrl, "_blank");
}
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
.detail-container {
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
.history-contract {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="detail-container">
<head-form
title="供应商"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<div class="detail-container supplier">
<head-form-new title="供应商" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables
v-else
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<tables v-else :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">
<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>
</template>
<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>
</tables>
<client-detail
v-if="isDetails"
:data="rowData"
:title="title"
:company-id="companyId"
@cancel="isDetails=false" />
<client-detail v-if="isDetails" :data="rowData" :title="title" :company-id="companyId" @cancel="isDetails=false" />
</div>
</template>
<script>
import mixin from '../mixins/mixin'
import { supplierPage,getSelect } from '@/api/detail/party-a/dealings'
import ClientDetail from './component/supplierDetail'
import mixin from '../mixins/mixin';
import { supplierPage, getSelect } from '@/api/detail/party-a/dealings';
import ClientDetail from './component/supplierDetail';
export default {
name: 'Supplier',
props: ['companyId'],
......@@ -51,7 +31,7 @@ export default {
},
data() {
return {
title:'',
title: '',
queryParams: {
cid: this.companyId,
sort: 5,
......@@ -60,84 +40,88 @@ export default {
},
defaultSort: {},
forData: [
{label: '供应商', prop: 'companyName', minWidth: '350', slot: true},
{label: '最近合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4'},
{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: 'companyName', minWidth: '350', slot: true },
{ label: '最近合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4' },
{ label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2' },
{ label: '合作次数', prop: 'count', minWidth: '150', sortable: 'custom', slot: true, descending: '5', ascending: '6' },
],
formData: [
{ type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: []},
{ type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '搜索供应商名称', options: []},
{ type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '搜索供应商名称', options: [], uid: this.getUid() },
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isDetails: false,
rowData: {}
}
};
},
computed: {
},
created() {
this.handleQuery()
this.handleOption()
this.handleQuery();
this.handleOption();
},
methods: {
async handleOption(){
let res = await getSelect({})
if(res.code==200){
let data = res.data.projects
for (var i=0;i<data.length;i++){
async handleOption() {
let res = await getSelect({});
if (res.code == 200) {
let data = res.data.projects;
for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({
name: data[i],
value: data[i],
})
});
}
let data1 = res.data.sources
for (var i=0;i<data1.length;i++){
let data1 = res.data.sources;
for (var i = 0; i < data1.length; i++) {
this.formData[1].options.push({
name: data1[i],
value: data1[i],
})
});
}
}
},
async handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
let res = await supplierPage(param)
this.tableLoading = false
if(res.code==200){
this.tableLoading = true;
let param = params ? params : this.queryParams;
let res = await supplierPage(param);
this.tableLoading = false;
if (res.code == 200) {
this.isSkeleton = false;
this.tableData = res.rows
if(this.tableData&&this.tableData.length>0){
this.tableData = res.rows;
if (this.tableData && this.tableData.length > 0) {
this.tableData.forEach(item => {
typeof item.projectInfo=='string' ? item.projectInfo = JSON.parse(item.projectInfo) : ''
item.amount ? item.amount = parseFloat(item.amount.toFixed(4)) : ''
})
typeof item.projectInfo == 'string' ? item.projectInfo = JSON.parse(item.projectInfo) : '';
item.amount ? item.amount = parseFloat(item.amount.toFixed(4)) : '';
});
}
}
this.tableDataTotal = res.total
this.tableDataTotal = res.total;
},
handleClick(e, data) {
this.rowData = data
this.isDetails = true
this.title = '与供应商'+data.companyName.replace(/<font color='red'>/g,'').replace(/<\/font>/g,'')+'合作记录'
this.rowData = data;
this.isDetails = true;
this.title = '与供应商' + data.companyName.replace(/<font color='red'>/g, '').replace(/<\/font>/g, '') + '合作记录';
},
handleDetail(row){
if(row.sourceUrl){
window.open(row.sourceUrl, "_blank")
handleDetail(row) {
if (row.sourceUrl) {
window.open(row.sourceUrl, "_blank");
}
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
.detail-container {
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
.supplier {
@import "@/assets/styles/search-common.scss";
}
</style>
import {encodeStr} from "@/assets/js/common"
import HeadForm from "../component/HeadForm"
import HeadFormNew from "../component/HeadFormNew"
import Tables from "../component/Tables"
import skeleton from '@/views/project/projectList/component/skeleton'
import { v4 } from "uuid";
export default {
components: {
HeadForm,
Tables,
skeleton
skeleton,
HeadFormNew
},
data() {
return {
......@@ -18,6 +21,9 @@ export default {
},
methods: {
getUid() {
return v4();
},
// 设置下拉选项数据源
setFormData(fieldName, list) {
this.formData.forEach(item => {
......
<template>
<div class="detail-container">
<head-form
title="行政许可"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
@handle-search="handleSearch"
/>
<div class="detail-container administrative-license">
<head-form-new title="行政许可" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" @handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables
v-else
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<tables v-else :indexFixed="true" :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" @handle-current-change="handleCurrentChange">
<template slot="deciWritName" slot-scope="scope">
<div v-html="scope.row.deciWritName"></div>
</template>
<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>
<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>
</template>
</tables>
......@@ -33,9 +21,9 @@
</template>
<script>
import mixin from '../mixins/mixin'
import skeleton from '@/views/project/projectList/component/skeleton'
import {creditXzxkPage} from '@/api/detail/party-a/opport'
import mixin from '../mixins/mixin';
import skeleton from '@/views/project/projectList/component/skeleton';
import { creditXzxkPage } from '@/api/detail/party-a/opport';
export default {
name: 'Administrative',
props: ['companyId'],
......@@ -45,95 +33,95 @@ export default {
},
data() {
return {
isSkeleton:true,
isSkeleton: true,
queryParams: {
cid: this.companyId,
pageNum: 1,
pageSize: 20
},
forData: [
{label: '许可决定日期', prop: 'deciTime', width: '110'},
{label: '决定文书号', prop: 'deciWritNo', width: '200'},
{label: '许可编号', prop: 'permitNo', width: '100'},
{label: '决定文书名称', prop: 'deciWritName', width: '190', slot: true},
{label: '许可内容', prop: 'content', width: '300', slot: true},
{label: '有效期自', prop: 'valiBegin', width: '100'},
{label: '有效期至', prop: 'valiEnd', width: '100'},
{label: '行政许可类别', prop: 'permitType', width: '110'},
{label: '许可机关', prop: 'office', width: '180'},
{label: '行政许可机关统一社会信用代码', prop: 'officeCreditCode', width: '210'},
{label: '数据来源单位', prop: 'dataSourceOffice', width: '110'},
{label: '数据来源单位统一社会信用代码', prop: 'dataSourceOfficeCreditCode', width: '210'},
{label: '来源', prop: 'dataSource', width: '80'}
{ label: '许可决定日期', prop: 'deciTime', width: '110' },
{ label: '决定文书号', prop: 'deciWritNo', width: '200' },
{ label: '许可编号', prop: 'permitNo', width: '100' },
{ label: '决定文书名称', prop: 'deciWritName', width: '190', slot: true },
{ label: '许可内容', prop: 'content', width: '300', slot: true },
{ label: '有效期自', prop: 'valiBegin', width: '100' },
{ label: '有效期至', prop: 'valiEnd', width: '100' },
{ label: '行政许可类别', prop: 'permitType', width: '110' },
{ label: '许可机关', prop: 'office', width: '180' },
{ label: '行政许可机关统一社会信用代码', prop: 'officeCreditCode', width: '210' },
{ label: '数据来源单位', prop: 'dataSourceOffice', width: '110' },
{ label: '数据来源单位统一社会信用代码', prop: 'dataSourceOfficeCreditCode', width: '210' },
{ label: '来源', prop: 'dataSource', width: '80' }
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: [], uid: this.getUid() },
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
showList:[]
}
tableLoading: false,
tableData: [],
tableDataTotal: 0,
showList: []
};
},
computed: {
},
created() {
this.handleQuery()
this.handleQuery();
},
methods: {
async handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
let res = await creditXzxkPage(param)
this.tableLoading = false
if(res.code==200){
this.tableLoading = true;
let param = params ? params : this.queryParams;
let res = await creditXzxkPage(param);
this.tableLoading = false;
if (res.code == 200) {
this.isSkeleton = false;
if(res.rows&&res.rows.length>0){
if (res.rows && res.rows.length > 0) {
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) {
this.showList.push({
row: row,
column: column
})
});
},
isOverHiddenFlag(data, showList, row, column, value) {
if(value && this.getByteLen(value) > 88) {
return !showList.some(item => item.row==row&&item.column==column)
}else {
return false
if (value && this.getByteLen(value) > 88) {
return !showList.some(item => item.row == row && item.column == column);
} else {
return false;
}
},
/*getLenth(data) {
return Math.floor(data / 6) * 2 //宽度(300) / 一个字符的宽度(6) * 行数(2)
},*/
getByteLen(val) {
var len = 0
var len = 0;
for (var i = 0; i < val.length; i++) {
var a = val.charAt(i)
if (a.match(/[^\x00-\xff]/ig) != null){
len += 2
}else{
len += 1
var a = val.charAt(i);
if (a.match(/[^\x00-\xff]/ig) != null) {
len += 2;
} else {
len += 1;
}
}
/*if(val.match(/ /g)){
len =len+Math.floor(val.match(/ /g).length/2)
}*/
return len
return len;
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
.detail-container {
background: #ffffff;
border-radius: 4px;
padding: 16px;
......@@ -147,7 +135,7 @@ export default {
-webkit-line-clamp: 4;
cursor: pointer;
>span {
> span {
display: inline-block;
width: 37px;
position: absolute;
......@@ -158,4 +146,8 @@ export default {
}
}
}
.administrative-license {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="detail-container">
<head-form
ref="headForm"
title="招标公告"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<div class="detail-container tender-announcement">
<head-form-new ref="headForm" title="招标公告" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables
v-else
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<tables v-else :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">
<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>
</template>
<template slot="province" slot-scope="scope">
......@@ -35,9 +19,9 @@
</template>
<script>
import mixin from '../mixins/mixin'
import skeleton from '@/views/project/projectList/component/skeleton'
import {bidNoticeArea, bidNoticeTenderStage, bidNoticePage} from '@/api/detail/party-a/opport'
import mixin from '../mixins/mixin';
import skeleton from '@/views/project/projectList/component/skeleton';
import { bidNoticeArea, bidNoticeTenderStage, bidNoticePage } from '@/api/detail/party-a/opport';
export default {
name: 'Announcement',
props: ['companyId'],
......@@ -47,123 +31,127 @@ export default {
},
data() {
return {
isSkeleton:true,
isSkeleton: true,
queryParams: {
cid: this.companyId,
sort: 3,
pageNum: 1,
pageSize: 20
},
defaultSort: {prop: 'issueTime', order: 'descending'},
defaultSort: { prop: 'issueTime', order: 'descending' },
forData: [
{label: '项目名称', prop: 'projectName', minWidth: '300', slot: true},
{label: '发布日期', prop: 'issueTime', sortable: 'custom', descending: '3', ascending: '4', width: '120'},
{label: '预算金额(万元)', prop: 'projectAmount', sortable: 'custom', descending: '1', ascending: '2', width: '140'},
{label: '项目地区', prop: 'province', width: '120', slot: true},
{label: '项目类别', prop: 'tenderStage', width: '90'},
{label: '招采单位联系人', prop: 'contact', width: '120'},
{label: '招采单位联系方式', prop: 'contactTel', width: '130'},
{label: '代理单位', prop: 'agency', minWidth: '170'},
{label: '代理单位联系人', prop: 'agencyContact', width: '120'},
{label: '代理单位联系方式', prop: 'agencyContactTel', width: '130'},
{label: '报名截止日期', prop: 'overTime', width: '110'}
{ label: '项目名称', prop: 'projectName', minWidth: '300', slot: true },
{ label: '发布日期', prop: 'issueTime', sortable: 'custom', descending: '3', ascending: '4', width: '120' },
{ label: '预算金额(万元)', prop: 'projectAmount', sortable: 'custom', descending: '1', ascending: '2', width: '140' },
{ label: '项目地区', prop: 'province', width: '120', slot: true },
{ label: '项目类别', prop: 'tenderStage', width: '90' },
{ label: '招采单位联系人', prop: 'contact', width: '120' },
{ label: '招采单位联系方式', prop: 'contactTel', width: '130' },
{ label: '代理单位', prop: 'agency', minWidth: '170' },
{ label: '代理单位联系人', prop: 'agencyContact', width: '120' },
{ label: '代理单位联系方式', prop: 'agencyContactTel', width: '130' },
{ label: '报名截止日期', prop: 'overTime', width: '110' }
],
formData: [
{ type: 7, fieldName: 'province', value: '',props: {multiple: true}, placeholder: '项目地区', options: []},
{ type: 4, fieldName: 'tenderStage', value: '', placeholder: '项目类型', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: []}
{ type: 7, fieldName: 'province', value: '', props: { multiple: true }, placeholder: '项目地区', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'tenderStage', value: '', placeholder: '项目类型', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: [], uid: this.getUid() }
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0
}
tableLoading: false,
tableData: [],
tableDataTotal: 0
};
},
computed: {
},
created() {
this.handleOption()
this.handleQuery()
this.handleOption();
this.handleQuery();
},
methods: {
async handleOption(){
async handleOption() {
let [area, tender] = await Promise.all([
bidNoticeArea({cid: this.companyId}),
bidNoticeTenderStage({cid: this.companyId})
])
if(area.code==200){
bidNoticeArea({ cid: this.companyId }),
bidNoticeTenderStage({ cid: this.companyId })
]);
if (area.code == 200) {
let region = area.data.map(item => {
let province = {label:item.province+'('+item.count+')',value:item.provinceId}
if(item.citys&&item.citys.length>0){
let city = [], citem = {}
for(let i=0;i<item.citys.length;i++){
citem = {label:item.citys[i].city, value:item.citys[i].cityId}
if(item.citys[i].areas&&item.citys[i].areas.length>0){
let area = [], aitem = {}
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}
area.push(aitem)
citem.children = area
let province = { label: item.province + '(' + item.count + ')', value: item.provinceId };
if (item.citys && item.citys.length > 0) {
let city = [], citem = {};
for (let i = 0; i < item.citys.length; i++) {
citem = { label: item.citys[i].city, value: item.citys[i].cityId };
if (item.citys[i].areas && item.citys[i].areas.length > 0) {
let area = [], aitem = {};
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 };
area.push(aitem);
citem.children = area;
}
}
city.push(citem)
city.push(citem);
}
city.length>0 ? province.children = city : ''
city.length > 0 ? province.children = city : '';
}
return province
})
this.setFormData('province', region)
return province;
});
this.setFormData('province', region);
}
if(tender.code==200){
if (tender.code == 200) {
let tenderStage = tender.data.map(item => {
let it = {name:item.tenderStage+'('+item.count+')',value:item.tenderStage}
return it
})
this.setFormData('tenderStage', tenderStage)
let it = { name: item.tenderStage + '(' + item.count + ')', value: item.tenderStage };
return it;
});
this.setFormData('tenderStage', tenderStage);
}
},
async handleQuery(params) {
this.tableLoading = true
let param = this.getAreaList(params || this.queryParams)
let res = await bidNoticePage(param)
this.tableLoading = false
if(res.code==200){
this.tableLoading = true;
let param = this.getAreaList(params || this.queryParams);
let res = await bidNoticePage(param);
this.tableLoading = false;
if (res.code == 200) {
this.isSkeleton = false;
this.tableData = res.rows
this.tableData = res.rows;
}
this.tableDataTotal = res.total
this.tableDataTotal = res.total;
},
getAreaList(params){
if(params.province&&params.province.length>0){
let arr = this.$refs.headForm.$refs.cascader[0].getCheckedNodes()
let provinceIds = [], cityIds = [], areaIds = []
getAreaList(params) {
if (params.province && params.province.length > 0) {
let arr = this.$refs.headForm.$refs.cascader[0].getCheckedNodes();
let provinceIds = [], cityIds = [], areaIds = [];
for (var i in arr) {
if (arr[i].parent) {
if (!arr[i].parent.checked) {
if(arr[i].hasChildren || arr[i].level==2){
cityIds.push(arr[i].value)
}else{
areaIds.push(arr[i].value)
if (arr[i].hasChildren || arr[i].level == 2) {
cityIds.push(arr[i].value);
} else {
areaIds.push(arr[i].value);
}
}
} else {
provinceIds.push(arr[i].value)
provinceIds.push(arr[i].value);
}
}
delete params.province
provinceIds.length>0?params.provinceIds = provinceIds:''
cityIds.length>0?params.cityIds = cityIds:''
areaIds.length>0?params.areaIds = areaIds:''
delete params.province;
provinceIds.length > 0 ? params.provinceIds = provinceIds : '';
cityIds.length > 0 ? params.cityIds = cityIds : '';
areaIds.length > 0 ? params.areaIds = areaIds : '';
}
return params
return params;
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
.detail-container {
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
.tender-announcement {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="detail-container">
<head-form
title="招标计划"
:form-data="formData"
:query-params="queryParams"
:isExcel="true"
@handle-search="handleSearch"
:total="tableDataTotal"
/>
<div class="detail-container bidding-plan">
<head-form-new title="招标计划" :form-data="formData" :query-params="queryParams" :isExcel="true" @handle-search="handleSearch"
:total="tableDataTotal" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables
v-else
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<tables v-else :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">
<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>
</template>
<template slot="province" slot-scope="scope">
......@@ -34,9 +19,9 @@
</template>
<script>
import mixin from '../mixins/mixin'
import {bidPlanPage,bidPlanProjectType} from '@/api/detail/party-a/opport'
import skeleton from '@/views/project/projectList/component/skeleton'
import mixin from '../mixins/mixin';
import { bidPlanPage, bidPlanProjectType } from '@/api/detail/party-a/opport';
import skeleton from '@/views/project/projectList/component/skeleton';
export default {
name: 'Biddingplan',
props: ['companyId'],
......@@ -46,69 +31,73 @@ export default {
},
data() {
return {
isSkeleton:true,
isSkeleton: true,
queryParams: {
cid: this.companyId,
sort: 3,
pageNum: 1,
pageSize: 20
},
defaultSort: {prop: 'issueTime', order: 'descending'},
defaultSort: { prop: 'issueTime', order: 'descending' },
forData: [
{label: '项目名称', prop: 'projectName', minWidth: '400', slot: true},
{label: '发布日期', prop: 'issueTime', sortable: 'custom', descending: '3', ascending: '4', width: '120'},
{label: '合同预估金额(万元)', prop: 'planTenderAmount', sortable: 'custom', descending: '1', ascending: '2', width: '170'},
{label: '资金来源', prop: 'projecetCapitalSource', minWidth: '100'},
{label: '项目地区', prop: 'province', minWidth: '110', slot: true},
{label: '项目类型', prop: 'buildingProjectType', minWidth: '100'},
{label: '标的物类型', prop: 'objectType', minWidth: '100'},
{label: '预计招标日期', prop: 'planTenderDateStart', sortable: 'custom', descending: '15', ascending: '16', minWidth: '110'}
{ label: '项目名称', prop: 'projectName', minWidth: '400', slot: true },
{ label: '发布日期', prop: 'issueTime', sortable: 'custom', descending: '3', ascending: '4', width: '120' },
{ label: '合同预估金额(万元)', prop: 'planTenderAmount', sortable: 'custom', descending: '1', ascending: '2', width: '170' },
{ label: '资金来源', prop: 'projecetCapitalSource', minWidth: '100' },
{ label: '项目地区', prop: 'province', minWidth: '110', slot: true },
{ label: '项目类型', prop: 'buildingProjectType', minWidth: '100' },
{ label: '标的物类型', prop: 'objectType', minWidth: '100' },
{ label: '预计招标日期', prop: 'planTenderDateStart', sortable: 'custom', descending: '15', ascending: '16', minWidth: '110' }
],
formData: [
{ type: 4, fieldName: 'buildingProjectType', value: '', placeholder: '项目类型', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220}
{ type: 4, fieldName: 'buildingProjectType', value: '', placeholder: '项目类型', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220, uid: this.getUid() }
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0
}
tableLoading: false,
tableData: [],
tableDataTotal: 0
};
},
computed: {
},
created() {
this.handleQuery()
this.handleOption()
this.handleQuery();
this.handleOption();
},
methods: {
async handleOption(){
let res = await bidPlanProjectType({cid: this.companyId})
if(res.code==200){
async handleOption() {
let res = await bidPlanProjectType({ cid: this.companyId });
if (res.code == 200) {
let buildingProjectType = res.data.map(item => {
let it = {name:item.buildingProjectType+'('+item.count+')',value:item.buildingProjectType}
return it
})
this.setFormData('buildingProjectType', buildingProjectType)
let it = { name: item.buildingProjectType + '(' + item.count + ')', value: item.buildingProjectType };
return it;
});
this.setFormData('buildingProjectType', buildingProjectType);
}
},
async handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
let res = await bidPlanPage(param)
this.tableLoading = false
if(res.code==200){
this.tableLoading = true;
let param = params ? params : this.queryParams;
let res = await bidPlanPage(param);
this.tableLoading = false;
if (res.code == 200) {
this.isSkeleton = false;
this.tableData = res.rows
this.tableData = res.rows;
}
this.tableDataTotal = res.total
this.tableDataTotal = res.total;
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
.detail-container {
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
.bidding-plan {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="detail-container">
<head-form
title="专项债项目"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<div class="detail-container special-bond">
<head-form-new title="专项债项目" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables
v-else
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<tables v-else :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">
<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>
</template>
</tables>
......@@ -31,9 +16,9 @@
</template>
<script>
import mixin from '../mixins/mixin'
import {specialDebtProjectPage} from '@/api/detail/party-a/opport'
import skeleton from '@/views/project/projectList/component/skeleton'
import mixin from '../mixins/mixin';
import { specialDebtProjectPage } from '@/api/detail/party-a/opport';
import skeleton from '@/views/project/projectList/component/skeleton';
export default {
name: 'Bond',
props: ['companyId'],
......@@ -43,53 +28,57 @@ export default {
},
data() {
return {
isSkeleton:true,
isSkeleton: true,
queryParams: {
cid: this.companyId,
sort: 1,
pageNum: 1,
pageSize: 20
},
defaultSort: {prop: 'projectTotalInvestment', order: 'descending'},
defaultSort: { prop: 'projectTotalInvestment', order: 'descending' },
forData: [
{label: '项目名称', prop: 'projectName', minWidth: '300', slot: true},
{label: '项目总投资(万元)', prop: 'projectTotalInvestment', sortable: 'custom', descending: '1', ascending: '2', 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: 'projectName', minWidth: '300', slot: true },
{ label: '项目总投资(万元)', prop: 'projectTotalInvestment', sortable: 'custom', descending: '1', ascending: '2', width: '160' },
{ label: '项目资本金(万元)', prop: 'projectCapital', sortable: 'custom', descending: '17', ascending: '18', width: '160' },
{ label: '专项债用作资本金(万元)', prop: 'specialBondCapital', sortable: 'custom', descending: '19', ascending: '20', width: '200' }
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220, uid: this.getUid() },
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0
}
tableLoading: false,
tableData: [],
tableDataTotal: 0
};
},
computed: {
},
created() {
this.handleQuery()
this.handleQuery();
},
methods: {
async handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
let res = await specialDebtProjectPage(param)
this.tableLoading = false
if(res.code==200){
this.tableLoading = true;
let param = params ? params : this.queryParams;
let res = await specialDebtProjectPage(param);
this.tableLoading = false;
if (res.code == 200) {
this.isSkeleton = false;
this.tableData = res.rows
this.tableData = res.rows;
}
this.tableDataTotal = res.total
this.tableDataTotal = res.total;
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
.detail-container {
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
.special-bond {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="detail-container">
<head-form
title="土地交易"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<div class="detail-container land-transaction">
<head-form-new title="土地交易" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables
v-else
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<tables v-else :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">
<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>
</template>
</tables>
......@@ -31,9 +16,9 @@
</template>
<script>
import mixin from '../mixins/mixin'
import {landUse, landTransactionPage} from '@/api/detail/party-a/opport'
import skeleton from '@/views/project/projectList/component/skeleton'
import mixin from '../mixins/mixin';
import { landUse, landTransactionPage } from '@/api/detail/party-a/opport';
import skeleton from '@/views/project/projectList/component/skeleton';
export default {
name: 'Landtransaction',
props: ['companyId'],
......@@ -43,75 +28,79 @@ export default {
},
data() {
return {
isSkeleton:true,
isSkeleton: true,
queryParams: {
cid: this.companyId,
sort: 3,
pageNum: 1,
pageSize: 20
},
defaultSort: {prop: 'contractSignTime', order: 'descending'},
defaultSort: { prop: 'contractSignTime', order: 'descending' },
forData: [
{label: '项目名称', prop: 'projectName', minWidth: '300', slot: true},
{label: '土地用途', prop: 'landUse', width: '130'},
{label: '行业分类', prop: 'industry', width: '100'},
{label: '供地方式', prop: 'supplyLandWay', width: '100'},
{label: '土地坐落', prop: 'landAddr', minWidth: '130'},
{label: '成交金额(万元)', prop: 'transactionPrice', sortable: 'custom', descending: '1', ascending: '2', width: '140'},
{label: '总面积(㎡)', prop: 'acreage', sortable: 'custom', descending: '11', ascending: '12', width: '130'},
{label: '批准单位', prop: 'authority', width: '130'},
{label: '签订日期', prop: 'contractSignTime', sortable: 'custom', descending: '3', ascending: '4', width: '130'}
{ label: '项目名称', prop: 'projectName', minWidth: '300', slot: true },
{ label: '土地用途', prop: 'landUse', width: '130' },
{ label: '行业分类', prop: 'industry', width: '100' },
{ label: '供地方式', prop: 'supplyLandWay', width: '100' },
{ label: '土地坐落', prop: 'landAddr', minWidth: '130' },
{ label: '成交金额(万元)', prop: 'transactionPrice', sortable: 'custom', descending: '1', ascending: '2', width: '140' },
{ label: '总面积(㎡)', prop: 'acreage', sortable: 'custom', descending: '11', ascending: '12', width: '130' },
{ label: '批准单位', prop: 'authority', width: '130' },
{ label: '签订日期', prop: 'contractSignTime', sortable: 'custom', descending: '3', ascending: '4', width: '130' }
],
formData: [
{ type: 4, fieldName: 'landUse', value: '', placeholder: '土地用途', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220}
{ type: 4, fieldName: 'landUse', value: '', placeholder: '土地用途', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220, uid: this.getUid() }
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0
}
tableLoading: false,
tableData: [],
tableDataTotal: 0
};
},
computed: {
},
created() {
this.handleOption()
this.handleQuery()
this.handleOption();
this.handleQuery();
},
methods: {
async handleOption(){
let res = await landUse({cid: this.companyId})
if(res.code==200){
async handleOption() {
let res = await landUse({ cid: this.companyId });
if (res.code == 200) {
let use = res.data.map(item => {
let it = {name:item.landUse+'('+item.count+')',value:item.landUse}
return it
})
this.setFormData('landUse', use)
let it = { name: item.landUse + '(' + item.count + ')', value: item.landUse };
return it;
});
this.setFormData('landUse', use);
}
},
async handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
let res = await landTransactionPage(param)
this.tableLoading = false
if(res.code==200){
this.tableLoading = true;
let param = params ? params : this.queryParams;
let res = await landTransactionPage(param);
this.tableLoading = false;
if (res.code == 200) {
this.isSkeleton = false;
this.tableData = res.rows
if(this.tableData.length>0){
this.tableData.map(item=>{
item.transactionPrice==0&&(item.transactionPrice = '--')
})
this.tableData = res.rows;
if (this.tableData.length > 0) {
this.tableData.map(item => {
item.transactionPrice == 0 && (item.transactionPrice = '--');
});
}
}
this.tableDataTotal = res.total
this.tableDataTotal = res.total;
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
.detail-container {
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
.land-transaction {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="detail-container">
<head-form
title="拟建项目"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<div class="detail-container proposed-project">
<head-form-new title="拟建项目" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables
v-else
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<tables v-else :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">
<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>
</template>
<template slot="isProjcet" slot-scope="scope">
......@@ -34,9 +19,9 @@
</template>
<script>
import mixin from '../mixins/mixin'
import { approvalProjectPage } from '@/api/detail/party-a/opport'
import skeleton from '@/views/project/projectList/component/skeleton'
import mixin from '../mixins/mixin';
import { approvalProjectPage } from '@/api/detail/party-a/opport';
import skeleton from '@/views/project/projectList/component/skeleton';
export default {
name: 'Proposed',
props: ['companyId'],
......@@ -52,51 +37,55 @@ export default {
pageNum: 1,
pageSize: 20
},
defaultSort: {prop: 'planStartTime', order: 'descending'},
defaultSort: { prop: 'planStartTime', order: 'descending' },
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: 'projectCategories', width: '100'},
{label: '计划开工日期', prop: 'planStartTime', sortable: 'custom', descending: '3', ascending: '4', width: '130'},
{label: '计划完工日期', prop: 'planEndTime', sortable: 'custom', descending: '13', ascending: '14', width: '130'},
{label: '审批结果', prop: 'examineStatus', width: '100'},
{label: '是否为民间推介项目', prop: 'isProjcet', width: '150', slot: true}
{ label: '项目类别', prop: 'projectCategories', width: '100' },
{ label: '计划开工日期', prop: 'planStartTime', sortable: 'custom', descending: '3', ascending: '4', width: '130' },
{ label: '计划完工日期', prop: 'planEndTime', sortable: 'custom', descending: '13', ascending: '14', width: '130' },
{ label: '审批结果', prop: 'examineStatus', width: '100' },
{ label: '是否为民间推介项目', prop: 'isProjcet', width: '150', slot: true }
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220},
{ type: 1, fieldName: 'isProject', value: '', placeholder: '是否为民间推介项目', options: [{name:'不限',value:null},{name:'是',value:'1'},{name:'否',value:'0'}],width: 180},
{ 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, uid: this.getUid() },
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
isSkeleton:true,
}
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isSkeleton: true,
};
},
computed: {
},
created() {
this.handleQuery()
this.handleQuery();
},
methods: {
async handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
let res = await approvalProjectPage(param)
this.tableLoading = false
if(res.code==200){
this.tableLoading = true;
let param = params ? params : this.queryParams;
let res = await approvalProjectPage(param);
this.tableLoading = false;
if (res.code == 200) {
this.isSkeleton = false;
this.tableData = res.rows
this.tableData = res.rows;
}
this.tableDataTotal = res.total
this.tableDataTotal = res.total;
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
.detail-container {
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
.proposed-project {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="detail-container">
<head-form
title="标讯Pro"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<div class="detail-container beacon-pro">
<head-form-new title="标讯Pro" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables
v-else
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<tables v-else :indexFixed="true" :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" @handle-current-change="handleCurrentChange">
<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>
</template>
<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>
</template>
<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>
</template>
<template slot="province" slot-scope="scope">
......@@ -40,9 +29,9 @@
</template>
<script>
import mixin from '../mixins/mixin'
import skeleton from '@/views/project/projectList/component/skeleton'
import { bidNoticeProProjectType, bidNoticeProProjectPurposes, bidNoticeProAssessmentWay, bidNoticeProPage } from '@/api/detail/party-a/opport'
import mixin from '../mixins/mixin';
import skeleton from '@/views/project/projectList/component/skeleton';
import { bidNoticeProProjectType, bidNoticeProProjectPurposes, bidNoticeProAssessmentWay, bidNoticeProPage } from '@/api/detail/party-a/opport';
export default {
name: 'Tencent',
props: ['companyId'],
......@@ -58,101 +47,111 @@ export default {
pageSize: 20
},
forData: [
{label: '项目名称', prop: 'projectName', minWidth: '320', slot: true},
{label: '发布日期', prop: 'pubdate', width: '110'},
{label: '金额(万元)', prop: '', children: [
{ label: '建安费暂估', prop: 'projectSafeAmount', 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: 'agency', width: '88px', slot: true},
{ label: '联系人', prop: 'agencyTel', width: '88px'}
]},
{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}
{ label: '项目名称', prop: 'projectName', minWidth: '320', slot: true },
{ label: '发布日期', prop: 'pubdate', width: '110' },
{
label: '金额(万元)', prop: '', children: [
{ label: '建安费暂估', prop: 'projectSafeAmount', 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: 'agency', width: '88px', slot: true },
{ label: '联系人', prop: 'agencyTel', width: '88px' }
]
},
{ 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: [
{ type: 1, fieldName: 'projectType', value: '', placeholder: '项目类别', options: []},
{ type: 1, fieldName: 'projectPurposes', value: '', placeholder: '工程类别', options: []},
{ type: 1, fieldName: 'bidAssessmentWay', value: '', placeholder: '评标办法', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: []}
{ type: 1, fieldName: 'projectType', value: '', placeholder: '项目类别', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'projectPurposes', value: '', placeholder: '工程类别', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'bidAssessmentWay', value: '', placeholder: '评标办法', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: [], uid: this.getUid() }
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
isSkeleton:true,
}
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isSkeleton: true,
};
},
computed: {
},
created() {
this.handleOption()
this.handleQuery()
this.handleOption();
this.handleQuery();
},
methods: {
async handleOption(){
async handleOption() {
let [projectType, projectPurposes, proAssessmentWay] = await Promise.all([
bidNoticeProProjectType({cid: this.companyId}),
bidNoticeProProjectPurposes({cid: this.companyId}),
bidNoticeProAssessmentWay({cid: this.companyId})
])
if(projectType.code==200){
bidNoticeProProjectType({ cid: this.companyId }),
bidNoticeProProjectPurposes({ cid: this.companyId }),
bidNoticeProAssessmentWay({ cid: this.companyId })
]);
if (projectType.code == 200) {
let type = projectType.data.map(item => {
let it = {name:item.projectType+'('+item.count+')',value:item.projectType}
return it
})
this.setFormData('projectType', type)
let it = { name: item.projectType + '(' + item.count + ')', value: item.projectType };
return it;
});
this.setFormData('projectType', type);
}
if(projectPurposes.code==200){
if (projectPurposes.code == 200) {
let purposes = projectPurposes.data.map(item => {
let it = {name:item.projectPurposes+'('+item.count+')',value:item.projectPurposes}
return it
})
this.setFormData('projectPurposes', purposes)
let it = { name: item.projectPurposes + '(' + item.count + ')', value: item.projectPurposes };
return it;
});
this.setFormData('projectPurposes', purposes);
}
if(proAssessmentWay.code==200){
if (proAssessmentWay.code == 200) {
let way = proAssessmentWay.data.map(item => {
let it = {name:item.bidAssessmentWay+'('+item.count+')',value:item.bidAssessmentWay}
return it
})
this.setFormData('bidAssessmentWay', way)
let it = { name: item.bidAssessmentWay + '(' + item.count + ')', value: item.bidAssessmentWay };
return it;
});
this.setFormData('bidAssessmentWay', way);
}
},
async handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
let res = await bidNoticeProPage(param)
this.tableLoading = false
if(res.code==200){
this.tableLoading = true;
let param = params ? params : this.queryParams;
let res = await bidNoticeProPage(param);
this.tableLoading = false;
if (res.code == 200) {
this.isSkeleton = false;
this.tableData = res.rows
if(this.tableData&&this.tableData.length>0){
this.tableData = res.rows;
if (this.tableData && this.tableData.length > 0) {
this.tableData.forEach(item => {
item.projectSafeAmount ? item.projectSafeAmount = parseFloat(parseFloat(item.projectSafeAmount).toFixed(4)) : ''
item.projectSurveyAmount ? item.projectSurveyAmount = parseFloat(parseFloat(item.projectSurveyAmount).toFixed(4)) : ''
item.projectEnsureAmount ? item.projectEnsureAmount = parseFloat(parseFloat(item.projectEnsureAmount).toFixed(4)) : ''
})
item.projectSafeAmount ? item.projectSafeAmount = parseFloat(parseFloat(item.projectSafeAmount).toFixed(4)) : '';
item.projectSurveyAmount ? item.projectSurveyAmount = parseFloat(parseFloat(item.projectSurveyAmount).toFixed(4)) : '';
item.projectEnsureAmount ? item.projectEnsureAmount = parseFloat(parseFloat(item.projectEnsureAmount).toFixed(4)) : '';
});
}
}
this.tableDataTotal = res.total
this.tableDataTotal = res.total;
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
.detail-container {
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
.beacon-pro {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="app-container detail-container" v-else>
<head-form
title="分支机构"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<tables
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<div class="app-container detail-container branch-office">
<head-form-new title="分支机构" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables v-if="!isSkeleton" :indexFixed="true" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
:tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange">
<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 class="tags" v-if="scope.row.status || scope.row.biddingAnnouncement">
<span class="tag style1" v-if="scope.row.status">{{scope.row.status}}</span>
......@@ -32,8 +19,8 @@
</template>
<script>
import mixin from '../mixins/mixin'
import {affiliates} from '@/api/detail/party-a/overview'
import mixin from '../mixins/mixin';
import { affiliates } from '@/api/detail/party-a/overview';
export default {
name: 'Branch',
props: ['companyId'],
......@@ -46,68 +33,73 @@ export default {
pageSize: 20
},
forData: [
{label: '被投资企业名称', prop: 'name', slot: true},
{label: '负责人', prop: 'operName'},
{label: '成立日期', prop: 'startDate'}
{ label: '被投资企业名称', prop: 'name', slot: true },
{ label: '负责人', prop: 'operName' },
{ label: '成立日期', prop: 'startDate' }
],
formData: [
{ type: 1, fieldName: 'hasBid', value: '', placeholder: '招标公告', options: [
{name:'不限',value:'noLimit'},
{name:'有招标公告',value:1},
{name:'无招标公告',value:0}
{
type: 1, fieldName: 'hasBid', value: '', placeholder: '招标公告', options: [
{ name: '不限', value: 'noLimit' },
{ name: '有招标公告', value: 1 },
{ name: '无招标公告', value: 0 }
]
}
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
}
tableLoading: false,
tableData: [],
tableDataTotal: 0,
};
},
created() {
this.handleQuery()
this.handleQuery();
},
methods: {
async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true
let param = params?params:this.queryParams
if(param.hasBid=='noLimit'){
delete param.hasBid
this.tableLoading = true;
let param = params ? params : this.queryParams;
if (param.hasBid == 'noLimit') {
delete param.hasBid;
}
let res = await affiliates(param)
this.tableLoading = false
if(res.code==200){
let res = await affiliates(param);
this.tableLoading = false;
if (res.code == 200) {
this.isSkeleton = false;
this.tableData = res.rows
this.tableData = res.rows;
}
this.tableDataTotal = res.total
this.tableDataTotal = res.total;
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
margin: 0;
padding: 16px;
background: #FFFFFF;
border-radius: 4px;
.tags{
.tag{
display: inline-block;
border-radius: 2px;
padding: 1px 7px;
margin: 4px 8px 0 0;
&.style1{
background: #E4F3FD;
color: #41A1FD;
}
.detail-container {
margin: 0;
padding: 16px;
background: #ffffff;
border-radius: 4px;
.tags {
.tag {
display: inline-block;
border-radius: 2px;
padding: 1px 7px;
margin: 4px 8px 0 0;
&.style1 {
background: #e4f3fd;
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>
<template>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="app-container detail-container" v-else>
<head-form
title="对外投资"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<tables
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<div class="app-container detail-container outward-investment">
<head-form-new title="对外投资" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables :indexFixed="true" :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" @handle-current-change="handleCurrentChange" v-if="!isSkeleton">
<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 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>
</div>
</template>
<template slot="proportion">
<div class="tab-header">股权占比 <el-popover placement="top-start" width="280" trigger="hover">
<div style="font-size: 12px;">
控股67%:绝对控制权67%,相当于100%的权力,修改公司章程/分立、合并、变更主营项目、重大决策<br />
控股51%:相对控制权51%,控制线,绝对控制公司<br />
控股34%:安全控制权,一票否决权</div>
<img src="@/assets/images/detail/overview/zbph_question.png" slot="reference">
</el-popover></div>
<div style="font-size: 12px;">
控股67%:绝对控制权67%,相当于100%的权力,修改公司章程/分立、合并、变更主营项目、重大决策<br />
控股51%:相对控制权51%,控制线,绝对控制公司<br />
控股34%:安全控制权,一票否决权</div>
<img src="@/assets/images/detail/overview/zbph_question.png" slot="reference">
</el-popover></div>
</template>
<template slot="stockPercentage" slot-scope="scope">
<span>{{scope.row.stockPercentage?parseFloat(Number(scope.row.stockPercentage*100).toFixed(4))+'%':'--'}}</span>
......@@ -44,8 +32,8 @@
</template>
<script>
import mixin from '../mixins/mixin'
import {investment} from '@/api/detail/party-a/overview'
import mixin from '../mixins/mixin';
import { investment } from '@/api/detail/party-a/overview';
export default {
name: 'Overseas',
props: ['companyId'],
......@@ -58,106 +46,113 @@ export default {
pageSize: 20
},
forData: [
{label: '被投资企业名称', prop: 'investName', minWidth: '180', slot: true},
{label: '法定代表人', prop: 'investOperName'},
{label: '注册资本', prop: 'investRegistCapi'},
{label: '成立日期', prop: 'investStartDate'},
{label: '股权占比', prop: 'stockPercentage', slot: true, slotHeader: true, slotName: 'proportion'},
{label: '认缴出资额(万元)', prop: 'shouldCapi'}
{ label: '被投资企业名称', prop: 'investName', minWidth: '180', slot: true },
{ label: '法定代表人', prop: 'investOperName' },
{ label: '注册资本', prop: 'investRegistCapi' },
{ label: '成立日期', prop: 'investStartDate' },
{ label: '股权占比', prop: 'stockPercentage', slot: true, slotHeader: true, slotName: 'proportion' },
{ label: '认缴出资额(万元)', prop: 'shouldCapi' }
],
formData: [
{ type: 1, fieldName: 'hasBid', value: '', placeholder: '招标公告', options: [
{name:'不限',value:'noLimit'},
{name:'有招标公告',value:1},
{name:'无招标公告',value:0}
{
type: 1, fieldName: 'hasBid', value: '', placeholder: '招标公告', options: [
{ name: '不限', value: 'noLimit' },
{ name: '有招标公告', value: 1 },
{ name: '无招标公告', value: 0 }
],
width: 130
width: 130,
uid: this.getUid()
},
{ type: 1, fieldName: 'proportion', value: '', placeholder: '股权占比', options: [
{name:'不限',value:'noLimit'},
{name:'100%',value:'1~1'},
{name:'66.66%以上',value:'0.6666~1'},
{name:'50%以上',value:'0.5~1'},
{name:'33.33%以上',value:'0.3333~1'},
{name:'25%以上',value:'0.25~1'},
{name:'不到5%',value:'0~0.05'}
{
type: 1, fieldName: 'proportion', value: '', placeholder: '股权占比', options: [
{ name: '不限', value: 'noLimit' },
{ name: '100%', value: '1~1' },
{ name: '66.66%以上', value: '0.6666~1' },
{ name: '50%以上', value: '0.5~1' },
{ name: '33.33%以上', value: '0.3333~1' },
{ name: '25%以上', value: '0.25~1' },
{ name: '不到5%', value: '0~0.05' }
],
width: 130
},
{ type: 3, fieldName: 'keyword', value: '', placeholder: '输入企业名称查询'},
{ type: 3, fieldName: 'keyword', value: '', placeholder: '输入企业名称查询' },
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
labelArr:['失信联合惩戒企业','严重行政处罚','司法纠纷','注销', '注销企业'],
}
tableLoading: false,
tableData: [],
tableDataTotal: 0,
labelArr: ['失信联合惩戒企业', '严重行政处罚', '司法纠纷', '注销', '注销企业'],
};
},
created() {
this.handleQuery()
this.handleQuery();
},
methods: {
async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true
let param = params?params:this.queryParams
let res = await investment(param)
this.tableLoading = false
if(res.code==200){
this.tableLoading = true;
let param = params ? params : this.queryParams;
let res = await investment(param);
this.tableLoading = false;
if (res.code == 200) {
this.isSkeleton = false;
this.tableData = res.rows
this.tableData = res.rows;
}
this.tableDataTotal = res.total
this.tableDataTotal = res.total;
},
handleSearch(){
let params = this.formParams()
if(params.proportion){
if(params.proportion!='noLimit'){
params.stockPercentageMin = parseFloat(params.proportion.split('~')[0])
params.stockPercentageMax = parseFloat(params.proportion.split('~')[1])
handleSearch() {
let params = this.formParams();
if (params.proportion) {
if (params.proportion != 'noLimit') {
params.stockPercentageMin = parseFloat(params.proportion.split('~')[0]);
params.stockPercentageMax = parseFloat(params.proportion.split('~')[1]);
}
delete params.proportion
delete params.proportion;
}
if(params.hasBid=='noLimit'){
delete params.hasBid
if (params.hasBid == 'noLimit') {
delete params.hasBid;
}
params.pageNum = 1
this.queryParams.pageNum = 1
this.handleQuery(params)
params.pageNum = 1;
this.queryParams.pageNum = 1;
this.handleQuery(params);
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
.detail-container {
margin: 0;
padding: 16px;
background: #FFFFFF;
background: #ffffff;
border-radius: 4px;
.tab-header{
img{
.tab-header {
img {
margin-bottom: 2px;
width: 14px;
height: 14px;
cursor: pointer;
}
}
.tags{
.tag{
.tags {
.tag {
display: inline-block;
border-radius: 2px;
padding: 1px 7px;
margin: 4px 8px 0 0;
&.style1{
background: #E4F3FD;
color: #41A1FD;
&.style1 {
background: #e4f3fd;
color: #41a1fd;
}
&.style2{
background: #FFF1F1;
color: #FF3C3C;
&.style2 {
background: #fff1f1;
color: #ff3c3c;
}
}
}
}
.outward-investment {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="corePersonnel">
<head-form
title="经营异常"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<div class="corePersonnel operating-anomaly">
<head-form-new title="经营异常" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables
v-if="!isSkeleton"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
/>
<tables v-if="!isSkeleton" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal" :queryParams="queryParams"
@handle-current-change="handleCurrentChange" />
</div>
</template>
......@@ -25,9 +13,9 @@
import {
abnormalPage,
abnormalYears
} from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
} from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton';
export default {
name: 'BusinessAnomaly',
mixins: [mixin],
......@@ -43,63 +31,79 @@ export default {
pageSize: 20
},
forData: [
{label: '列入原因', prop: 'inReason'},
{label: '列入日期', prop: 'inDate', width: '95'},
{label: '做出决定机关(移入)', prop: 'department', width: '264'},
{label: '移出经营异常名录原因', prop: 'outReason', width: '320'},
{label: '移出日期', prop: 'outDate', width: '95'},
{label: '做出决定机关(移出)', prop: 'outDepartment', width: '264'}
{ label: '列入原因', prop: 'inReason', width: "508" },
{ label: '列入日期', prop: 'inDate', width: '95' },
{ label: '做出决定机关(移入)', prop: 'department', width: '264' },
{ label: '移出经营异常名录原因', prop: 'outReason', width: '320' },
{ label: '移出日期', prop: 'outDate', width: '95' },
{ label: '做出决定机关(移出)', prop: 'outDepartment', width: '264' }
],
formData: [
{ type: 4, fieldName: 'years', value: '', placeholder: '列入时间', options: []}
{ type: 4, fieldName: 'years', value: '', placeholder: '列入时间', options: [], uid: this.getUid() }
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
isSkeleton:true
}
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isSkeleton: true
};
},
created() {
this.handleQuery()
this.years()
this.handleQuery();
this.years();
},
computed: {
},
methods: {
handleQuery(params) {
let data = params ? params : this.queryParams
this.isSkeleton = true
let data = params ? params : this.queryParams;
this.isSkeleton = true;
abnormalPage(data).then(res => {
this.tableData = res.rows
this.tableDataTotal = res.total
this.isSkeleton = false
})
this.tableData = res.rows;
this.tableDataTotal = res.total;
this.isSkeleton = false;
});
},
years(){
abnormalYears({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
years() {
abnormalYears({ cid: this.queryParams.cid }).then(res => {
let data = res.data;
if (data.length > 0) {
for (let i = 0; i < data.length; i++) {
this.formData[0].options.push({
name: data[i].year + '(' + data[i].count + ')',
value: data[i].year,
})
});
}
}
})
});
}
}
}
</script>
<style lang="scss" scoped>
.corePersonnel{
.corePersonnel {
background: #ffffff;
border-radius: 4px;
padding: 16px;
.query-box{
.query-box {
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>
<template>
<div class="corePersonnel">
<head-form
title="法院公告"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<div class="corePersonnel court-announcement">
<head-form-new title="法院公告" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables
v-if="!isSkeleton"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
/>
<tables v-if="!isSkeleton" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal" :queryParams="queryParams"
@handle-current-change="handleCurrentChange" />
</div>
</template>
......@@ -27,9 +15,9 @@ import {
noticesType,
noticesRole,
noticesCaseReason
} from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
} from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton';
export default {
name: 'CourtNotice',
mixins: [mixin],
......@@ -45,97 +33,101 @@ export default {
pageSize: 20
},
forData: [
{label: '案由', prop: 'caseReason'},
{label: '公告时间', prop: 'date', width: '95'},
{label: '当事人', prop: 'people', width: '240'},
{label: '公告类型', prop: 'type', width: '210'},
{label: '公告法院', prop: 'court', width: '280'}
{ label: '案由', prop: 'caseReason' },
{ label: '公告时间', prop: 'date', width: '95' },
{ label: '当事人', prop: 'people', width: '240' },
{ label: '公告类型', prop: 'type', width: '210' },
{ label: '公告法院', prop: 'court', width: '280' }
],
formData: [
{ type: 1, fieldName: 'type', value: '', placeholder: '公告类型', options: []},
{ type: 1, fieldName: 'caseReason', value: '', placeholder: '案由', options: []},
{ type: 1, fieldName: 'role', value: '', placeholder: '身份', options: []},
{ type: 2, fieldName: 'time', value: '', placeholder: '',startTime: 'dateFrom',endTime: 'dateTo'}
{ type: 1, fieldName: 'type', value: '', placeholder: '公告类型', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'caseReason', value: '', placeholder: '案由', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'role', value: '', placeholder: '身份', options: [], uid: this.getUid() },
{ type: 2, fieldName: 'time', value: '', placeholder: '', startTime: 'dateFrom', endTime: 'dateTo', uid: this.getUid() }
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
isSkeleton:true
}
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isSkeleton: true
};
},
created() {
this.handleQuery()
this.noticesTypes()
this.noticesRoles()
this.noticesCaseReasons()
this.handleQuery();
this.noticesTypes();
this.noticesRoles();
this.noticesCaseReasons();
},
computed: {
},
methods: {
handleQuery(params) {
let data = params ? params : this.queryParams
this.isSkeleton = true
let data = params ? params : this.queryParams;
this.isSkeleton = true;
noticesPage(data).then(res => {
this.tableData = res.rows
this.tableDataTotal = res.total
this.isSkeleton = false
})
this.tableData = res.rows;
this.tableDataTotal = res.total;
this.isSkeleton = false;
});
},
// 公告
noticesTypes(){
noticesType({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
noticesTypes() {
noticesType({ cid: this.queryParams.cid }).then(res => {
let data = res.data;
if (data.length > 0) {
for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({
name: data[i].type + '(' + data[i].count + ')',
value: data[i].type,
})
});
}
}
})
});
},
// 身份
noticesRoles(){
noticesRole({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
noticesRoles() {
noticesRole({ cid: this.queryParams.cid }).then(res => {
let data = res.data;
if (data.length > 0) {
for (var i = 0; i < data.length; i++) {
this.formData[2].options.push({
name: data[i].role + '(' + data[i].count + ')',
value: data[i].role,
})
});
}
}
})
});
},
// 案由
noticesCaseReasons(){
noticesCaseReason({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
noticesCaseReasons() {
noticesCaseReason({ cid: this.queryParams.cid }).then(res => {
let data = res.data;
if (data.length > 0) {
for (var i = 0; i < data.length; i++) {
this.formData[1].options.push({
name: data[i].caseReason + '(' + data[i].count + ')',
value: data[i].caseReason,
})
});
}
}
})
});
},
}
}
</script>
<style lang="scss" scoped>
.corePersonnel{
.corePersonnel {
background: #ffffff;
border-radius: 4px;
padding: 16px;
.query-box{
.query-box {
margin: 10px 0 20px;
}
}
.court-announcement {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="corePersonnel">
<head-form
title="失信被执行人"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="false"
@handle-search="handleSearch"
/>
<div class="corePersonnel persons-breach">
<head-form-new title="失信被执行人" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="false"
@handle-search="handleSearch" />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables
v-if="!isSkeleton"
:index-fixed="true"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
/>
<tables v-if="!isSkeleton" :index-fixed="true" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" @handle-current-change="handleCurrentChange" />
</div>
</template>
......@@ -25,9 +12,9 @@
<script>
import {
executedPage
} from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
} from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton';
export default {
name: 'Dishonesty',
mixins: [mixin],
......@@ -43,49 +30,53 @@ export default {
pageSize: 20
},
forData: [
{label: '失信被执行人行为具体情形', prop: 'executionDesc', fixed: true},
{label: '立案日期', prop: 'date', width: '95'},
{label: '履行情况', prop: 'executionStatus', width: '120'},
{label: '立案文号', prop: 'caseNumber', width: '210'},
{label: '执行依据文号', prop: 'docNumber', width: '360'},
{label: '执行法院', prop: 'court', width: '280'}
{ label: '失信被执行人行为具体情形', prop: 'executionDesc', fixed: true, width: "508" },
{ label: '立案日期', prop: 'date', width: '95' },
{ label: '履行情况', prop: 'executionStatus', width: '120' },
{ label: '立案文号', prop: 'caseNumber', width: '210' },
{ label: '执行依据文号', prop: 'docNumber', width: '360' },
{ label: '执行法院', prop: 'court', width: '280' }
],
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,
tableData:[],
tableDataTotal:0,
isSkeleton:true
}
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isSkeleton: true
};
},
created() {
this.handleQuery()
this.handleQuery();
},
computed: {
},
methods: {
handleQuery(params) {
let data = params ? params : this.queryParams
this.isSkeleton = true
let data = params ? params : this.queryParams;
this.isSkeleton = true;
executedPage(data).then(res => {
this.tableData = res.rows
this.tableDataTotal = res.total
this.isSkeleton = false
})
this.tableData = res.rows;
this.tableDataTotal = res.total;
this.isSkeleton = false;
});
}
}
}
</script>
<style lang="scss" scoped>
.corePersonnel{
.corePersonnel {
background: #ffffff;
border-radius: 4px;
padding: 16px;
.query-box{
.query-box {
margin: 10px 0 20px;
}
}
.persons-breach {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="corePersonnel">
<head-form
title="被执行人"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="false"
@handle-search="handleSearch"
/>
<div class="corePersonnel person-subject">
<head-form-new title="被执行人" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="false"
@handle-search="handleSearch" />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables
v-if="!isSkeleton"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
/>
<tables v-if="!isSkeleton" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal" :queryParams="queryParams"
@handle-current-change="handleCurrentChange" />
</div>
</template>
......@@ -24,9 +12,9 @@
<script>
import {
executedPersonsPage
} from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
} from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton';
export default {
name: 'IfThePerson',
mixins: [mixin],
......@@ -42,47 +30,51 @@ export default {
pageSize: 20
},
forData: [
{label: '执行标的(元)', prop: 'amount', width: '140'},
{label: '案号', prop: 'caseNumber', width: '320'},
{label: '执行法院', prop: 'court'},
{label: '立案日期', prop: 'caseDate', width: '95'}
{ label: '执行标的(元)', prop: 'amount', width: '140' },
{ label: '案号', prop: 'caseNumber', width: '320' },
{ label: '执行法院', prop: 'court' },
{ label: '立案日期', prop: 'caseDate', width: '95' }
],
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,
tableData:[],
tableDataTotal:0,
isSkeleton:true
}
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isSkeleton: true
};
},
created() {
this.handleQuery()
this.handleQuery();
},
computed: {
},
methods: {
handleQuery(params) {
let data = params ? params : this.queryParams
this.isSkeleton = true
let data = params ? params : this.queryParams;
this.isSkeleton = true;
executedPersonsPage(data).then(res => {
this.tableData = res.rows
this.tableDataTotal = res.total
this.isSkeleton = false
})
this.tableData = res.rows;
this.tableDataTotal = res.total;
this.isSkeleton = false;
});
}
}
}
</script>
<style lang="scss" scoped>
.corePersonnel{
.corePersonnel {
background: #ffffff;
border-radius: 4px;
padding: 16px;
.query-box{
.query-box {
margin: 10px 0 20px;
}
}
.person-subject {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="corePersonnel">
<head-form
title="裁判文书"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="false"
@handle-search="handleSearch"
/>
<div class="corePersonnel judicial-document">
<head-form-new title="裁判文书" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="false"
@handle-search="handleSearch" />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables
v-if="!isSkeleton"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<tables v-if="!isSkeleton" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal" :queryParams="queryParams"
@handle-current-change="handleCurrentChange">
<template slot="relatedCompanies" slot-scope="scope">
<div v-for="item in scope.row.relatedCompanies">
<span>{{ item.clean_role }}</span>{{ item.name }}
......@@ -24,7 +12,6 @@
</template>
</tables>
</div>
</template>
......@@ -33,9 +20,9 @@ import {
lawsuitsPage,
lawsuitsCauseAction,
lawsuitsRole
} from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
} from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton';
export default {
name: 'Judgment',
mixins: [mixin],
......@@ -51,84 +38,88 @@ export default {
pageSize: 20
},
forData: [
{label: '案由', prop: 'causeAction'},
{label: '执行案号', prop: 'causeNo', width: '210'},
{label: '身份', prop: 'role', width: '120'},
{label: '当事人', prop: 'relatedCompanies', width: '240', slot: true},
{label: '案件金额(元)', prop: 'subAmount', width: '140'},
{label: '判决结果', prop: 'judgeresult', width: '508'},
{label: '判决日期', prop: 'date', width: '95'},
{ label: '案由', prop: 'causeAction' },
{ label: '执行案号', prop: 'causeNo', width: '210' },
{ label: '身份', prop: 'role', width: '120' },
{ label: '当事人', prop: 'relatedCompanies', width: '240', slot: true },
{ label: '案件金额(元)', prop: 'subAmount', width: '140', align: "right" },
{ label: '判决结果', prop: 'judgeresult', width: '508' },
{ label: '判决日期', prop: 'date', width: '95' },
],
formData: [
{ type: 1, fieldName: 'causeAction', value: '', placeholder: '案由', options: []},
{ type: 1, fieldName: 'role', value: '', placeholder: '身份', options: []},
{ type: 2, fieldName: 'time', value: '', placeholder: '',startTime: 'dateFrom',endTime: 'dateTo'},
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入执行案号'}
{ type: 1, fieldName: 'causeAction', value: '', placeholder: '案由', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'role', value: '', placeholder: '身份', options: [], uid: this.getUid() },
{ type: 2, fieldName: 'time', value: '', placeholder: '', startTime: 'dateFrom', endTime: 'dateTo', uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入执行案号', uid: this.getUid() }
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
isSkeleton:true
}
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isSkeleton: true
};
},
created() {
this.handleQuery()
this.lawsuitsCauseActions()
this.lawsuitsRoles()
this.handleQuery();
this.lawsuitsCauseActions();
this.lawsuitsRoles();
},
computed: {
},
methods: {
handleQuery(params) {
let data = params ? params : this.queryParams
this.isSkeleton = true
let data = params ? params : this.queryParams;
this.isSkeleton = true;
lawsuitsPage(data).then(res => {
this.tableData = res.rows
for (var i=0;i<this.tableData.length;i++){
this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies)
this.tableData = res.rows;
for (var i = 0; i < this.tableData.length; i++) {
this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies);
}
this.tableDataTotal = res.total
this.isSkeleton = false
})
this.tableDataTotal = res.total;
this.isSkeleton = false;
});
},
lawsuitsCauseActions(){
lawsuitsCauseAction({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
lawsuitsCauseActions() {
lawsuitsCauseAction({ cid: this.queryParams.cid }).then(res => {
let data = res.data;
if (data.length > 0) {
for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({
name: data[i].causeAction + '(' + data[i].num + ')',
value: data[i].causeAction,
})
});
}
}
})
});
},
lawsuitsRoles(){
lawsuitsRole({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
lawsuitsRoles() {
lawsuitsRole({ cid: this.queryParams.cid }).then(res => {
let data = res.data;
if (data.length > 0) {
for (var i = 0; i < data.length; i++) {
this.formData[1].options.push({
name: data[i].role + '(' + data[i].num + ')',
value: data[i].role,
})
});
}
}
})
});
}
}
}
</script>
<style lang="scss" scoped>
.corePersonnel{
.corePersonnel {
background: #ffffff;
border-radius: 4px;
padding: 16px;
.query-box{
.query-box {
margin: 10px 0 20px;
}
}
.judicial-document {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="corePersonnel">
<head-form
title="开庭公告"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="false"
@handle-search="handleSearch"
/>
<div class="corePersonnel hearing-notice">
<head-form-new title="开庭公告" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="false"
@handle-search="handleSearch" />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables
:index-fixed="true"
v-if="!isSkeleton"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<tables :index-fixed="true" v-if="!isSkeleton" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" @handle-current-change="handleCurrentChange">
<template slot="relatedCompanies" slot-scope="scope">
<div v-for="item in scope.row.relatedCompanies">
<span>{{ item.role }}</span>{{ item.name }}
......@@ -33,9 +20,9 @@ import {
kaitingPage,
kaitingCauseAction,
kaitingPureRole
} from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
} from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton';
export default {
name: 'OpenacourtsessionNotice',
mixins: [mixin],
......@@ -51,91 +38,95 @@ export default {
pageSize: 20
},
forData: [
{label: '案由', prop: 'causeAction', fixed: true},
{label: '开庭日期', prop: 'hearingDate', width: '95'},
{label: '当事人', prop: 'relatedCompanies', width: '428', slot: true},
{label: '身份', prop: 'pureRole', width: '120'},
{label: '公告内容', prop: 'content', width: '508'},
{label: '案号', prop: 'caseNo', width: '210'},
{label: '法院', prop: 'court', width: '280'},
{label: '法庭', prop: 'tribunal', width: '180'},
{label: '承办部门', prop: 'department', width: '280'},
{label: '审判长/主判人', prop: 'judge', width: '110'}
{ label: '案由', prop: 'causeAction', fixed: true, width: "240" },
{ label: '开庭日期', prop: 'hearingDate', width: '95' },
{ label: '当事人', prop: 'relatedCompanies', width: '428', slot: true },
{ label: '身份', prop: 'pureRole', width: '120' },
{ label: '公告内容', prop: 'content', width: '508' },
{ label: '案号', prop: 'caseNo', width: '210' },
{ label: '法院', prop: 'court', width: '280' },
{ label: '法庭', prop: 'tribunal', width: '180' },
{ label: '承办部门', prop: 'department', width: '280' },
{ label: '审判长/主判人', prop: 'judge', width: '110' }
],
formData: [
{ type: 1, fieldName: 'causeAction', value: '', placeholder: '案由', options: []},
{ type: 1, fieldName: 'pureRole', value: '', placeholder: '身份', options: []},
{ type: 2, fieldName: 'time', value: '', placeholder: '',startTime: 'dateFrom',endTime: 'dateTo'},
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入案号'},
{ type: 1, fieldName: 'causeAction', value: '', placeholder: '案由', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'pureRole', value: '', placeholder: '身份', options: [], uid: this.getUid() },
{ type: 2, fieldName: 'time', value: '', placeholder: '', startTime: 'dateFrom', endTime: 'dateTo', uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入案号', uid: this.getUid() },
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
isSkeleton:true
}
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isSkeleton: true
};
},
created() {
this.handleQuery()
this.kaitingCauseActions()
this.kaitingPureRoles()
this.handleQuery();
this.kaitingCauseActions();
this.kaitingPureRoles();
},
computed: {
},
methods: {
toDetail(){
let Id = '111'
toDetail() {
let Id = '111';
this.$router.push({ path: '/project/projectList/detail', query: Id });
},
handleQuery(params) {
let data = params ? params : this.queryParams
this.isSkeleton = true
let data = params ? params : this.queryParams;
this.isSkeleton = true;
kaitingPage(data).then(res => {
this.tableData = res.rows
for (var i=0;i<this.tableData.length;i++){
this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies)
this.tableData = res.rows;
for (var i = 0; i < this.tableData.length; i++) {
this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies);
}
this.tableDataTotal = res.total
this.isSkeleton = false
})
this.tableDataTotal = res.total;
this.isSkeleton = false;
});
},
kaitingCauseActions(){
kaitingCauseAction({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
kaitingCauseActions() {
kaitingCauseAction({ cid: this.queryParams.cid }).then(res => {
let data = res.data;
if (data.length > 0) {
for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({
name: data[i].causeAction + '(' + data[i].count + ')',
value: data[i].causeAction,
})
});
}
}
})
});
},
kaitingPureRoles(){
kaitingPureRole({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
kaitingPureRoles() {
kaitingPureRole({ cid: this.queryParams.cid }).then(res => {
let data = res.data;
if (data.length > 0) {
for (var i = 0; i < data.length; i++) {
this.formData[1].options.push({
name: data[i].pureRole + '(' + data[i].count + ')',
value: data[i].pureRole,
})
});
}
}
})
});
},
}
}
</script>
<style lang="scss" scoped>
.corePersonnel{
.corePersonnel {
background: #ffffff;
border-radius: 4px;
padding: 16px;
.query-box{
.query-box {
margin: 10px 0 20px;
}
}
.hearing-notice {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="corePersonnel">
<head-form
title="行政处罚"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<div class="corePersonnel administrative-punishment">
<head-form-new title="行政处罚" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables
v-if="!isSkeleton"
:indexFixed="true"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<tables v-if="!isSkeleton" :indexFixed="true" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" @handle-current-change="handleCurrentChange">
<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>
<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>
</template>
</tables>
......@@ -30,12 +19,12 @@
</template>
<script>
import mixin from '../mixins/mixin'
import mixin from '../mixins/mixin';
import {
penalizePage,
penalizeReasonType
} from '@/api/detail/party-a/riskInformation'
import skeleton from '../component/skeleton'
} from '@/api/detail/party-a/riskInformation';
import skeleton from '../component/skeleton';
export default {
name: 'Punish',
mixins: [mixin],
......@@ -51,87 +40,87 @@ export default {
pageSize: 20
},
forData: [
{label: '处罚原因', prop: 'punishReason', slot: true, fixed: true},
{label: '决定日期', prop: 'punishBegin', width: '105'},
{label: '处罚结果', prop: 'punishResult', width: '264'},
{label: '处罚文书号', prop: 'fileNum', width: '240'},
{label: '处罚机关', prop: 'office', width: '264'},
{label: '处罚结束日期', prop: 'punishEnd', width: '110'},
{ label: '处罚原因', prop: 'punishReason', slot: true, fixed: true, width: '508' },
{ label: '决定日期', prop: 'punishBegin', width: '105' },
{ label: '处罚结果', prop: 'punishResult', width: '264' },
{ label: '处罚文书号', prop: 'fileNum', width: '240' },
{ label: '处罚机关', prop: 'office', width: '264' },
{ label: '处罚结束日期', prop: 'punishEnd', width: '110' },
],
formData: [
{ type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '处罚类别', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', options: []},
{ type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '处罚类别', options: [] },
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', options: [] },
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
showList:[],
isSkeleton:true
}
tableLoading: false,
tableData: [],
tableDataTotal: 0,
showList: [],
isSkeleton: true
};
},
created() {
this.handleQuery()
this.penalizeReasonTypeData()
this.handleQuery();
this.penalizeReasonTypeData();
},
computed: {
},
methods: {
handleQuery(params) {
let data = params ? params : this.queryParams
this.isSkeleton = true
let data = params ? params : this.queryParams;
this.isSkeleton = true;
penalizePage(data).then((res) => {
this.tableData = res.rows
this.tableDataTotal = res.total
this.isSkeleton = false
})
this.tableData = res.rows;
this.tableDataTotal = res.total;
this.isSkeleton = false;
});
},
penalizeReasonTypeData(){
penalizeReasonType({cid:this.queryParams.cid}).then((res) => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
penalizeReasonTypeData() {
penalizeReasonType({ cid: this.queryParams.cid }).then((res) => {
let data = res.data;
if (data.length > 0) {
for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({
name: data[i].punishType + '(' + data[i].count + ')',
value: data[i].punishTypeId,
})
});
}
}
})
});
},
changeShowAll(row, column) {
this.showList.push({
row: row,
column: column
})
});
},
isOverHiddenFlag(data, showList, row, column, value) {
if(value && String(value).length > this.getLenth(data)) {
return !showList.some(item => item.row==row&&item.column==column)
}else {
return false
if (value && String(value).length > this.getLenth(data)) {
return !showList.some(item => item.row == row && item.column == column);
} else {
return false;
}
},
getLenth(data) {
return Math.floor(data / 12) * 5
return Math.floor(data / 12) * 5;
},
}
}
</script>
<style lang="scss" scoped>
.corePersonnel{
.corePersonnel {
background: #ffffff;
border-radius: 4px;
padding: 16px;
input{
border: 1px solid #EFEFEF;
input {
border: 1px solid #efefef;
}
::v-deep .el-form-item{
::v-deep .el-form-item {
margin-right: 8px !important;
}
.query-box{
.query-box {
margin: 10px 0 20px;
}
.cell-span {
......@@ -144,7 +133,7 @@ export default {
-webkit-line-clamp: 4;
cursor: pointer;
>span {
> span {
display: inline-block;
width: 37px;
position: absolute;
......@@ -155,4 +144,8 @@ export default {
}
}
}
.administrative-punishment {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="corePersonnel">
<head-form
title="城投拿地"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<div class="corePersonnel takes-over-the-land">
<head-form-new title="城投拿地" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables
v-if="!isSkeleton"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<tables v-if="!isSkeleton" :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" @handle-current-change="handleCurrentChange">
<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>
</template>
<template slot="transactionPrice" slot-scope="scope">
......@@ -34,9 +22,9 @@
import {
landTransactionPage,
landUse
} from '@/api/detail/party-a/urbanLnvestment'
import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
} from '@/api/detail/party-a/urbanLnvestment';
import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton';
export default {
name: 'landAcquisition',
mixins: [mixin],
......@@ -53,68 +41,72 @@ export default {
pageSize: 20
},
forData: [
{label: '项目名称', prop: 'projectName', slot: true},
{label: '土地用途', prop: 'landUse', width: '120'},
{label: '行业分类', prop: 'industry', width: '120'},
{label: '供地方式', prop: 'supplyLandWay', width: '120'},
{label: '土地坐落', prop: 'landAddr', width: '150'},
{label: '成交金额(万元)', prop: 'transactionPrice', width: '130',slot: true},
{label: '总面积(㎡)', prop: 'acreage', width: '120'},
{label: '批准单位', prop: 'authority', width: '120'},
{label: '签订日期', prop: 'contractSignTime', width: '120'}
{ label: '项目名称', prop: 'projectName', slot: true },
{ label: '土地用途', prop: 'landUse', width: '120' },
{ label: '行业分类', prop: 'industry', width: '120' },
{ label: '供地方式', prop: 'supplyLandWay', width: '120' },
{ label: '土地坐落', prop: 'landAddr', width: '150' },
{ label: '成交金额(万元)', prop: 'transactionPrice', width: '130', slot: true },
{ label: '总面积(㎡)', prop: 'acreage', width: '120' },
{ label: '批准单位', prop: 'authority', width: '120' },
{ label: '签订日期', prop: 'contractSignTime', width: '120' }
],
formData: [
{ type: 4, fieldName: 'landUse', value: '', placeholder: '土地用途', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词'},
{ type: 4, fieldName: 'landUse', value: '', placeholder: '土地用途', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', uid: this.getUid() },
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
isSkeleton:true
}
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isSkeleton: true
};
},
created() {
this.handleQuery()
this.getlandUse()
this.handleQuery();
this.getlandUse();
},
computed: {
},
methods: {
handleQuery(params) {
let data = params ? params : this.queryParams
this.isSkeleton = true
landTransactionPage(data).then(res=>{
this.tableData = res.rows
this.tableDataTotal = res.total
this.isSkeleton = false
})
let data = params ? params : this.queryParams;
this.isSkeleton = true;
landTransactionPage(data).then(res => {
this.tableData = res.rows;
this.tableDataTotal = res.total;
this.isSkeleton = false;
});
},
//土地用途
getlandUse(){
landUse({cid: this.queryParams.cid}).then(res=>{
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
getlandUse() {
landUse({ cid: this.queryParams.cid }).then(res => {
let data = res.data;
if (data.length > 0) {
for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({
name: data[i].landUse + '(' + data[i].count + ')',
value: data[i].landUse,
})
});
}
}
})
});
}
}
}
</script>
<style lang="scss" scoped>
.corePersonnel{
.corePersonnel {
background: #ffffff;
border-radius: 4px;
padding: 16px;
.query-box{
.query-box {
margin: 10px 0 20px;
}
}
.takes-over-the-land {
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="regionalEconomies">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">区域经济</span>
<div class="regionalEconomies regional-economy">
<div class="head-form-new">
<div class="common-title">区域经济</div>
<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 class="params-dw"><img src="@/assets/images/addree.png" />{{ addressList }}</div>
</div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="table-item" v-if="!isSkeleton">
<el-table
:tableLoading="tableLoading"
: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 :tableLoading="tableLoading" :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>
</div>
......@@ -29,20 +21,20 @@
</template>
<script>
import dataRegion from '@/assets/json/dataRegion'
import skeleton from '../component/skeleton'
import dataRegion from '@/assets/json/dataRegion';
import skeleton from '../component/skeleton';
import {
regionalEconomy
} from '@/api/detail/party-a/urbanLnvestment'
} from '@/api/detail/party-a/urbanLnvestment';
export default {
name: 'regionalEconomies',
components: {
skeleton
},
props: ['companyId','companyInfo'],
props: ['companyId', 'companyInfo'],
data() {
return {
addressList:'',
addressList: '',
params: {
provinceId: this.companyInfo.provinceId,
cityId: this.companyInfo.cityId
......@@ -212,116 +204,116 @@ export default {
},
],
tableLoading: true,
isSkeleton:true
}
isSkeleton: true
};
},
created() {
this.regionalEconomys()
this.regionalEconomys();
},
computed: {
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() {
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: {
//地区
regionalEconomys() {
this.isSkeleton = true
if(this.companyInfo){
this.isSkeleton = true;
if (this.companyInfo) {
regionalEconomy(this.params).then(res => {
this.tableData = res.data
this.isSkeleton = false
})
this.dataRegion(this.companyInfo.provinceId, this.companyInfo.cityId)
this.tableData = res.data;
this.isSkeleton = false;
});
this.dataRegion(this.companyInfo.provinceId, this.companyInfo.cityId);
}
},
dataRegion(p,c) {
dataRegion(p, c) {
var str = [];
for (let x = 0; x < 2; x++) {
for (let i = 0; i < dataRegion.length; i++) {
if (dataRegion[i].regionLevel == x + 1 && x + 1 == 1) {
if(p == dataRegion[i].id){
str.push(dataRegion[i].regionName)
if (p == dataRegion[i].id) {
str.push(dataRegion[i].regionName);
}
} else if (dataRegion[i].regionLevel == x + 1 && x + 1 == 2) {
if(c == dataRegion[i].id){
str.push(dataRegion[i].regionName)
if (c == dataRegion[i].id) {
str.push(dataRegion[i].regionName);
}
}
}
}
this.addressList = str.join(' - ');
},
formatStatus: function(row, column, cellValue) {
if(row.title === '经济'||row.title === '财政'||row.title === '债务'){
return cellValue
}else {
return cellValue? cellValue : '--'
formatStatus: function (row, column, cellValue) {
if (row.title === '经济' || row.title === '财政' || row.title === '债务') {
return cellValue;
} else {
return cellValue ? cellValue : '--';
}
},
rowStyle(row){
if (row.row.title === '经济'||row.row.title === '财政'||row.row.title === '债务'){
rowStyle(row) {
if (row.row.title === '经济' || row.row.title === '财政' || row.row.title === '债务') {
return {
// background: '#FAF5EB',
color:'#232323',
color: '#232323',
fontWeight: 'bold'
}
};
}
},
}
}
</script>
<style lang="scss" scoped>
.regionalEconomies{
.regionalEconomies {
background: #ffffff;
border-radius: 4px;
padding: 16px;
::v-deep .el-table tr{
background: #F9FCFF;
::v-deep .el-table tr {
background: #f9fcff;
}
::v-deep .table-item{
.el-table{
overflow:visible;
.el-table__body-wrapper{
overflow:visible;
::v-deep .table-item {
.el-table {
overflow: visible;
.el-table__body-wrapper {
overflow: visible;
}
.el-table__body{
tr:first-child{
.el-table__body {
tr:first-child {
position: sticky;
top:56px;
top: 56px;
z-index: 9;
}
}
td.el-table__cell{
td.el-table__cell {
border-bottom: 0;
}
.el-table__body-wrapper{
tr{
&:first-child{
background: #F0F3FA;
div{
color: rgba(35,35,35,0.8);
.el-table__body-wrapper {
tr {
&:first-child {
background: #f0f3fa;
div {
color: rgba(35, 35, 35, 0.8);
}
}
&:nth-child(2n){
background: #FFFFFF;
&:nth-child(2n) {
background: #ffffff;
}
}
}
}
}
.query-box{
.query-box {
margin: 10px 0 20px;
.params-dw{
.params-dw {
font-size: 14px;
font-weight: 400;
color: #0081FF;
img{
color: #0081ff;
img {
width: 14px;
height: 14px;
margin-right: 5px;
......@@ -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(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;
//color: #232323;
}
</style>
<template>
<div class="corePersonnel">
<head-form
title="同地区城投"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
>
<div class="corePersonnel city-investment">
<head-form-new title="同地区城投" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch">
<template slot="slot">
<div class="search-box">
<span class="search-box-t"
:class="queryParams.uipExecutiveLevel ||
<span class="search-box-t" :class="queryParams.uipExecutiveLevel ||
queryParams.uipBusinessType.length > 0 ||
queryParams.bratingSubjectLevel.length > 0 ||
queryParams.shareholderBg.length > 0 ||
queryParams.equityRelationship.length > 0 ||
queryParams.platformImportance.length > 0 ||
queryParams.developmentZone.length > 0 ? 'search-box-ta' : ''"
@click="handleSearch1">筛选<i :class="searchState ? 'el-icon-caret-top' : 'el-icon-caret-bottom'"></i></span>
queryParams.developmentZone.length > 0 ? 'search-box-ta' : ''" @click="handleSearch1">筛选<i
:class="searchState ? 'el-icon-caret-top' : 'el-icon-caret-bottom'"></i></span>
<div v-show="searchState" ref="showContent" class="search-main">
<div class="item">
<span class="wrap_label">行政等级</span>
......@@ -34,7 +27,8 @@
<div class="item_ckquery">
<span :class="{color_text:queryParams.uipBusinessType.length == 0}" @click="changeBeCurrent('','uipBusinessType')">全部</span>
<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>
</div>
</div>
......@@ -43,7 +37,8 @@
<div class="item_ckquery">
<span :class="{color_text:queryParams.bratingSubjectLevel.length == 0}" @click="changeBeCurrent('','bratingSubjectLevel')">全部</span>
<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>
</div>
</div>
......@@ -61,7 +56,8 @@
<div class="item_ckquery">
<span :class="{color_text:queryParams.equityRelationship.length == 0}" @click="changeBeCurrent('','equityRelationship')">全部</span>
<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>
</div>
</div>
......@@ -70,7 +66,8 @@
<div class="item_ckquery">
<span :class="{color_text:queryParams.platformImportance.length == 0}" @click="changeBeCurrent('','platformImportance')">全部</span>
<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>
</div>
</div>
......@@ -79,27 +76,21 @@
<div class="item_ckquery">
<span :class="{color_text:queryParams.developmentZone.length == 0}" @click="changeBeCurrent('','developmentZone')">全部</span>
<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>
</div>
</div>
</div>
</div>
</template>
</head-form>
</head-form-new>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables
v-if="!isSkeleton"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<tables v-if="!isSkeleton" :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
<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>
</template>
<template slot="area" slot-scope="scope">
......@@ -118,13 +109,13 @@
</template>
<script>
import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
import dataRegion from '@/assets/json/dataRegion'
import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton';
import dataRegion from '@/assets/json/dataRegion';
import {
urbanInvestmentPage,
uipGroupData
} from '@/api/detail/party-a/urbanLnvestment'
} from '@/api/detail/party-a/urbanLnvestment';
export default {
name: 'SameRegion',
mixins: [mixin],
......@@ -148,47 +139,47 @@ export default {
pageSize: 20
},
forData: [
{label: '企业名称', prop: 'companyName', width: '369', slot: true},
{label: '区域', prop: 'area', width: '120', slot: true},
{label: '招标数量', prop: 'biddingCount', width: '100', sortable: true},
{label: '城投拿地', prop: 'landInfoCount', width: '100', sortable: true},
{label: '供应商', prop: 'supplierCount', width: '100', sortable: true},
{label: '主体评级', prop: 'bratingSubjectLevel', width: '110'},
{label: '债劵余额(亿元)', prop: 'bondBalance', width: '130'},
{label: '行政级别', prop: 'uipExecutiveLevel', width: '120'},
{label: '股东背景', prop: 'shareholderBg', width: '120'},
{label: '股权关系', prop: 'equityRelationship', width: '120'},
{label: '平台重要性', prop: 'platformImportance', width: '120'},
{label: '城投业务类型', prop: 'uipBusinessType', width: '120'},
{label: '实控人', prop: 'actualController', width: '280'},
{label: '最新报告期', prop: 'latestReportPeriod', width: '120'},
{label: '总资产(亿元)', prop: 'totalAssets', width: '120'},
{label: '归母净资产(亿元)', prop: 'belongNetAssets', width: '140'},
{label: '货币资金(亿元)', prop: 'monetaryFunds', width: '130'},
{label: '土地资产(亿元)', prop: 'landAssets', width: '130'},
{label: '受限资产(亿元)', prop: 'restrictedAssets', width: '130'},
{label: '应收账款(亿元)', prop: 'accountsReceivable', width: '130'},
{label: '其他应收款(亿元)', prop: 'otherReceivable', width: '140'},
{label: '公益性&准公益性主营占比(%)', prop: 'econData001', width: '200'},
{label: '应收类款项来自政府占比(%)', prop: 'receivableFromGovRatio', width: '200'},
{label: '政府补助(亿元)', prop: 'govSubsidy', width: '130'},
{label: '专项应付款(亿元)', prop: 'specialPayable', width: '140'},
{label: '营业收入(亿元)', prop: 'operatingIncome', width: '130'},
{label: '所属开发区', prop: 'developmentZone', width: '120'}
{ label: '企业名称', prop: 'companyName', width: '369', slot: true },
{ label: '区域', prop: 'area', width: '120', slot: true },
{ label: '招标数量', prop: 'biddingCount', width: '100', sortable: true },
{ label: '城投拿地', prop: 'landInfoCount', width: '100', sortable: true },
{ label: '供应商', prop: 'supplierCount', width: '100', sortable: true },
{ label: '主体评级', prop: 'bratingSubjectLevel', width: '110' },
{ label: '债劵余额(亿元)', prop: 'bondBalance', width: '130' },
{ label: '行政级别', prop: 'uipExecutiveLevel', width: '120' },
{ label: '股东背景', prop: 'shareholderBg', width: '120' },
{ label: '股权关系', prop: 'equityRelationship', width: '120' },
{ label: '平台重要性', prop: 'platformImportance', width: '120' },
{ label: '城投业务类型', prop: 'uipBusinessType', width: '120' },
{ label: '实控人', prop: 'actualController', width: '280' },
{ label: '最新报告期', prop: 'latestReportPeriod', width: '120' },
{ label: '总资产(亿元)', prop: 'totalAssets', width: '120' },
{ label: '归母净资产(亿元)', prop: 'belongNetAssets', width: '140' },
{ label: '货币资金(亿元)', prop: 'monetaryFunds', width: '130' },
{ label: '土地资产(亿元)', prop: 'landAssets', width: '130' },
{ label: '受限资产(亿元)', prop: 'restrictedAssets', width: '130' },
{ label: '应收账款(亿元)', prop: 'accountsReceivable', width: '130' },
{ label: '其他应收款(亿元)', prop: 'otherReceivable', width: '140' },
{ label: '公益性&准公益性主营占比(%)', prop: 'econData001', width: '200' },
{ label: '应收类款项来自政府占比(%)', prop: 'receivableFromGovRatio', width: '200' },
{ label: '政府补助(亿元)', prop: 'govSubsidy', width: '130' },
{ label: '专项应付款(亿元)', prop: 'specialPayable', width: '140' },
{ label: '营业收入(亿元)', prop: 'operatingIncome', width: '130' },
{ label: '所属开发区', prop: 'developmentZone', width: '120' }
],
formData: [
{ type: 0, fieldName: 'penalizeReasonType', value: '', placeholder: '筛选', options: []},
{ type: 3, fieldName: 'keyword', value: '', placeholder: '请输入关键词', options: []},
{ type: 0, fieldName: 'penalizeReasonType', value: '', placeholder: '筛选', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keyword', value: '', placeholder: '请输入关键词', options: [], uid: this.getUid() },
],
xzdj:['省级','地级市','区县级'],
selected:[],
xzdjCalss:'',
typeList:['土地开发整理','基础设施建设','棚改保障房建设','公用事业','文化旅游','交通建设运营','产投平台'],
ztpj:['AAA','AA+','AA','A+','A','A-','BBB+','其他'],
gdbj:['政府','财政','国资委','其他'],
gqgx:['直接控股','间接控股'],
pt:['重要平台','主要平台','一般平台'],
lfqType:['国家级经开','国家级高新区','国家海关监管区域','国家级新区','国家边和区','其他国家级','省级新区','省级开发区'],
xzdj: ['省级', '地级市', '区县级'],
selected: [],
xzdjCalss: '',
typeList: ['土地开发整理', '基础设施建设', '棚改保障房建设', '公用事业', '文化旅游', '交通建设运营', '产投平台'],
ztpj: ['AAA', 'AA+', 'AA', 'A+', 'A', 'A-', 'BBB+', '其他'],
gdbj: ['政府', '财政', '国资委', '其他'],
gqgx: ['直接控股', '间接控股'],
pt: ['重要平台', '主要平台', '一般平台'],
lfqType: ['国家级经开', '国家级高新区', '国家海关监管区域', '国家级新区', '国家边和区', '其他国家级', '省级新区', '省级开发区'],
props: {
value: 'id',
multiple: true,
......@@ -196,17 +187,17 @@ export default {
addressList: [],
addressType: [],
addresslength: 0,
searchState:false,
uipGroupDatalist:[],
searchState: false,
uipGroupDatalist: [],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
isSkeleton:true
}
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isSkeleton: true
};
},
watch:{
searchState:{
watch: {
searchState: {
handler(newVal, olVal) {
if (newVal) {
setTimeout(() => {
......@@ -219,11 +210,11 @@ export default {
}
},
created() {
if(this.companyInfo){
this.queryParams.provinceIds.push(this.companyInfo.provinceId)
this.queryParams.cityIds.push(this.companyInfo.cityId)
this.handleQuery()
this.getScreen()
if (this.companyInfo) {
this.queryParams.provinceIds.push(this.companyInfo.provinceId);
this.queryParams.cityIds.push(this.companyInfo.cityId);
this.handleQuery();
this.getScreen();
}
},
computed: {
......@@ -274,7 +265,7 @@ export default {
this.addressList = str;
},
// 筛选
handleSearch1(event){
handleSearch1(event) {
// this.searchState=!this.searchState;
let dom = this.$refs.showContent;
if (!dom.contains(event.target)) {
......@@ -283,45 +274,45 @@ export default {
}
},
// 请求筛选条件
getScreen(){
getScreen() {
uipGroupData().then(res => {
this.uipGroupDatalist = res.data
})
this.uipGroupDatalist = res.data;
});
},
changeXZDJ(index) {
this.queryParams.uipExecutiveLevel = index;
this.changes()
this.changes();
},
changeBeCurrent(index,name) {
if(index){
let i = this.queryParams[name].indexOf(index)
if(i == -1){
changeBeCurrent(index, name) {
if (index) {
let i = this.queryParams[name].indexOf(index);
if (i == -1) {
this.queryParams[name].push(index);
}else{
this.queryParams[name].splice(i,1);
} else {
this.queryParams[name].splice(i, 1);
}
}else{
this.queryParams[name] = []
} else {
this.queryParams[name] = [];
}
this.changes()
this.changes();
this.$forceUpdate();
},
changes(){
let params = this.formParams()
params.pageNum = 1
this.queryParams.pageNum = 1
params.uipExecutiveLevel = this.queryParams.uipExecutiveLevel
params.uipBusinessType = this.queryParams.uipBusinessType
params.bratingSubjectLevel = this.queryParams.bratingSubjectLevel
params.shareholderBg = this.queryParams.shareholderBg
params.equityRelationship = this.queryParams.equityRelationship
params.platformImportance = this.queryParams.platformImportance
params.developmentZone = this.queryParams.developmentZone
this.handleQuery(params)
changes() {
let params = this.formParams();
params.pageNum = 1;
this.queryParams.pageNum = 1;
params.uipExecutiveLevel = this.queryParams.uipExecutiveLevel;
params.uipBusinessType = this.queryParams.uipBusinessType;
params.bratingSubjectLevel = this.queryParams.bratingSubjectLevel;
params.shareholderBg = this.queryParams.shareholderBg;
params.equityRelationship = this.queryParams.equityRelationship;
params.platformImportance = this.queryParams.platformImportance;
params.developmentZone = this.queryParams.developmentZone;
this.handleQuery(params);
},
addressListbtn() {
let arr = this.$refs.address.getCheckedNodes();
let provinceCode = [],cityCode = [],countyCode = [];
let provinceCode = [], cityCode = [], countyCode = [];
for (var i in arr) {
if (arr[i].parent) {
if (!arr[i].parent.checked) {
......@@ -329,7 +320,7 @@ export default {
!arr[i].hasChildren && countyCode.push(arr[i].value);
}
} else {
provinceCode.push(arr[i].value)
provinceCode.push(arr[i].value);
}
}
if (provinceCode.length > 0 || cityCode.length > 0 || countyCode.length > 0) {
......@@ -339,93 +330,93 @@ export default {
}
},
handleQuery(params){
let data = params ? params : this.queryParams
handleQuery(params) {
let data = params ? params : this.queryParams;
urbanInvestmentPage(data).then(res => {
this.tableData = res.data.list
this.tableDataTotal = res.data.totalCount
this.isSkeleton = false
})
this.tableData = res.data.list;
this.tableDataTotal = res.data.totalCount;
this.isSkeleton = false;
});
},
//排序
sortChange(e){
if(e.order=='ascending'){
this.queryParams.field = e.prop
this.queryParams.order = 'asc'
}else if(e.order=='descending'){
this.queryParams.field = e.prop
this.queryParams.order = 'desc'
}else{
delete this.queryParams.field
delete this.queryParams.order
sortChange(e) {
if (e.order == 'ascending') {
this.queryParams.field = e.prop;
this.queryParams.order = 'asc';
} else if (e.order == 'descending') {
this.queryParams.field = e.prop;
this.queryParams.order = 'desc';
} else {
delete this.queryParams.field;
delete this.queryParams.order;
}
this.handleSearch();
},
// attr 参数表示当前点击的是哪一列,传进来的是点击列的标识
// rev 参数表示的是点击当前列表头之后是升序降序或者null,三种值分别是['ascending', 'descending', null]
sortFun(attr, rev){
if(rev === 'ascending') {
rev = 1
sortFun(attr, rev) {
if (rev === 'ascending') {
rev = 1;
} else if (rev === 'descending') {
rev = -1
rev = -1;
} else {
rev = 0
rev = 0;
}
return function (x, y) {
let a = x[attr]
let b = y[attr]
let a = x[attr];
let b = y[attr];
if (!a) {
a = ""
a = "";
}
if (!b) {
b = ""
b = "";
}
if (a < b) {
return rev * -1
return rev * -1;
}
if (a > b) {
return rev * 1
return rev * 1;
}
return 0
}
return 0;
};
}
}
}
</script>
<style lang="scss" scoped>
.corePersonnel{
.corePersonnel {
background: #ffffff;
border-radius: 4px;
padding: 16px;
.query-box{
.query-box {
margin: 10px 0 20px;
}
.search-box{
.search-box {
display: inline-block;
/*cursor: pointer;*/
position: relative;
.search-box-t{
.search-box-t {
font-size: 14px;
font-weight: 400;
line-height: 32px;
color:#232323;
color: #232323;
margin-right: 8px;
cursor: pointer;
i{
color:rgba(35,35,35,0.4);
margin-left: 5px
i {
color: rgba(35, 35, 35, 0.4);
margin-left: 5px;
}
}
.search-box-ta{
color: #0081FF;
i{
color: #0081FF;
.search-box-ta {
color: #0081ff;
i {
color: #0081ff;
}
}
.search-main{
.search-main {
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;
width: 880px;
//height: 337px;
......@@ -434,33 +425,33 @@ export default {
top: 25px;
left: 0;
z-index: 2001;
.item{
.item {
margin-bottom: 5px;
display: flex;
/*align-items: center;*/
font-size: 14px;
.wrap_label{
color: rgba(35,35,35,0.8);
.wrap_label {
color: rgba(35, 35, 35, 0.8);
margin-right: 12px;
line-height: 30px;
}
.item_ckquery{
.item_ckquery {
position: relative;
flex: 1;
span{
span {
color: #232323;
padding: 5px 6px;
display: inline-block;
cursor: pointer;
margin-right: 8px;
}
.color_text{
background: #F3F4F5;
.color_text {
background: #f3f4f5;
border-radius: 4px;
color: #0081FF;
color: #0081ff;
}
.select-active{
color: #0081FF;
.select-active {
color: #0081ff;
}
}
......@@ -475,4 +466,8 @@ export default {
}
}
}
.city-investment {
@import "@/assets/styles/search-common.scss";
}
</style>
......@@ -22,7 +22,7 @@
navigation: {isFixed: true, fixedHeight: 56, totalHeight: 68}, // iframe之外页面顶部对象,ifFixed:是否浮动;fixedHeight:浮动对象高度;totalHeight:顶部整体高度
src: '', //iframe嵌套页面地址
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',
ak: 'aec7b3ff2y2q8x6t49a7e2c463ce21912', // 需要携带的sdkId
uid: this.$store.state.user.userId, // 需要携带的uid
......
......@@ -22,7 +22,7 @@
v-loading="tableLoading"
:data="tableData"
border
v-horizontal-scroll="'hover'"
v-horizontal-scroll="tableData.total > 15 ? 'hover' : 'false'"
highlight-current-row
@sort-change="sortChange"
:default-sort = "{prop: 'gdp', order: 'descending'}"
......
......@@ -321,6 +321,7 @@
this.getRangeBidMoney()
this.getRangeBidFiveYears()
this.getLowerRateByYear()
this.getLowerRangeTenderType()
},
beforeDestroy(){
......@@ -345,7 +346,6 @@
this.initChart1(list)
})
}
this.getLowerRangeTenderType()
})
},
getCountBidGroupByProvince(){
......
......@@ -9,7 +9,7 @@
<p>{{itme.value}}</p>
</div>
</div>
</div>
</div>
<p class="solid"></p>
......@@ -30,8 +30,8 @@
<Tender v-if="personnelHerf=='Tender'" />
<!-- 开标记录 -->
<BidRecord v-if="personnelHerf=='BidRecord'" />
</div>
</template>
......@@ -44,7 +44,7 @@
import BidRecord from "./components/BidRecord/index.vue";
import Bidding from "./components/Bidding/index.vue";
import MajorProject from "./components/MajorProject/index.vue";
import "@/assets/styles/public.scss";
export default {
name: 'Radar',
......@@ -80,25 +80,25 @@
key: 'Bidding',
status: false,
value: '招标计划',
},
{
key: 'bxprozbgg',
status: false,
value: '标讯pro',
},
// {
// key: 'bxprozbgg',
// status: false,
// value: '标讯pro',
//
// },
{
key: 'Tender',
status: false,
value: '公招标讯',
},
{
key: 'BidRecord',
status: false,
value: '开标记录',
},
],
......@@ -121,7 +121,7 @@
</script>
<style lang="scss" scoped>
.app-container {
margin: 12px 24px;
padding: 0;
......@@ -129,7 +129,7 @@
.content{
padding: 0px 16px;
background: #FFFFFF;
}
.app-container .combined-title {
......@@ -261,4 +261,4 @@
border-bottom: 2px solid #0081FF;
font-weight: bold;
}
</style>
</style>
\ No newline at end of file
<template>
<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-col :xs="24" :md="12" :style="{height: '350px'}">
<vue-cropper
ref="cropper"
:img="options.img"
:info="true"
:autoCrop="options.autoCrop"
:autoCropWidth="options.autoCropWidth"
:autoCropHeight="options.autoCropHeight"
:fixedBox="options.fixedBox"
:outputType="options.outputType"
@realTime="realTime"
v-if="visible"
/>
<vue-cropper ref="cropper" :img="options.img" :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 :xs="24" :md="12" :style="{height: '350px'}">
<div class="avatar-upload-preview">
......@@ -57,7 +48,7 @@
import store from "@/store";
import { VueCropper } from "vue-cropper";
import { uploadAvatar } from "@/api/system/user";
import { debounce } from '@/utils'
import { debounce } from '@/utils';
export default {
components: { VueCropper },
......@@ -80,13 +71,21 @@ export default {
autoCropWidth: 200, // 默认生成截图框宽度
autoCropHeight: 200, // 默认生成截图框高度
fixedBox: true, // 固定截图框大小 不允许改变
outputType:"png", // 默认生成截图为PNG格式
outputType: "png", // 默认生成截图为PNG格式
filename: ''
},
previews: {},
resizeHandler: null
};
},
watch: {
user: {
handler(newVal, oldVal) {
this.options.img = newVal.avatar;
},
deep: true
}
},
methods: {
// 编辑头像
editCropper() {
......@@ -97,10 +96,10 @@ export default {
this.visible = true;
if (!this.resizeHandler) {
this.resizeHandler = debounce(() => {
this.refresh()
}, 100)
this.refresh();
}, 100);
}
window.addEventListener("resize", this.resizeHandler)
window.addEventListener("resize", this.resizeHandler);
},
// 刷新组件
refresh() {
......@@ -139,7 +138,7 @@ export default {
uploadImg() {
this.$refs.cropper.getCropBlob(data => {
let formData = new FormData();
console.log(this.options.filename)
console.log(this.options.filename);
formData.append("avatarfile", data, this.options.filename);
uploadAvatar(formData).then(response => {
this.open = false;
......@@ -156,9 +155,9 @@ export default {
},
// 关闭窗口
closeDialog() {
this.options.img = store.getters.avatar
this.options.img = store.getters.avatar;
this.visible = false;
window.removeEventListener("resize", this.resizeHandler)
window.removeEventListener("resize", this.resizeHandler);
}
}
};
......@@ -171,7 +170,7 @@ export default {
}
.user-info-head:hover:after {
content: '+';
content: "+";
position: absolute;
left: 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