index.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851
  1. <template>
  2. <view class="content-box">
  3. <view class="uni-list title-date-box">
  4. <view class="uni-list-cell">
  5. <view class="uni-list-cell-db display-flex-start">
  6. <picker mode="date" fields="year" @change="bindDateChange" class="picker-class">
  7. <view class="uni-input display-between items-center">{{dateYear}}年<image src="../../static/arrow_down.svg" mode="aspectFit"></image></view>
  8. </picker>
  9. <view style="font-size: 26rpx;margin-left: 20rpx;">1月~ </view>
  10. <picker :range="arrayMonth" :value="dateMonth" @change="bindDateMonthChange" class="picker-class">
  11. <view class="uni-input display-between items-center" style="color: #707070;">{{dateMonth}}月<image src="../../static/calendar_icon.svg" mode="aspectFit"></image></view>
  12. </picker>
  13. </view>
  14. </view>
  15. </view>
  16. <qiun-title-bar title="规上工业企业"/>
  17. <view class="block-box display-wrap items-center" style="justify-content: space-around;height: 320rpx;">
  18. <view class="block-box-content" style="background-color: #77AFCA;" @click="goScale('规上工业企业')">
  19. <view class="font-size30">规上工业企业</view>
  20. <view>{{standard_sized_count}}</view>
  21. </view>
  22. <view class="block-box-content" style="background-color: #A5C9D3;">
  23. <view class="font-size30">工业增加值增速</view>
  24. <view>同比增长{{standard_sized_increase_ratio}}%</view>
  25. </view>
  26. <view class="block-box-content" style="background-color: #8D7E95;" @click="goScale('先进制造业企业')">
  27. <view class="font-size30">先进制造业</view>
  28. <view>{{advanced_count}}</view>
  29. </view>
  30. <view class="block-box-content" style="background-color: #C1ABBC;">
  31. <view class="font-size30">先进制造业总产值</view>
  32. <view>同比增长{{advanced_increase_ratio}}%</view>
  33. </view>
  34. </view>
  35. <!-- <qiun-title-bar title="2021年规上工业任务目标"/> -->
  36. <view class="title-second">{{dateYear}}年规上工业任务目标</view>
  37. <view class="charts-box" style="position: relative;">
  38. <qiun-data-charts type="bar" background="#4C4C4C" :opts="chartDataBarOpt" :chartData="chartData"/>
  39. <view class="pos-font" style="top: 26%;">增速</view>
  40. <view class="pos-font" style="top: 64.5%;">总产值</view>
  41. </view>
  42. <!-- <qiun-title-bar title="先进制造业产值(亿元)"/> -->
  43. <view class="title-second">先进制造业产值(亿元)</view>
  44. <view class="charts-box">
  45. <qiun-data-charts type="column" :chartData="chartData1" background="#4C4C4C" :ontouch="true" :opts="companyOpts"/>
  46. </view>
  47. <!-- <qiun-title-bar title="工业产值"/> -->
  48. <view class="title-second">工业产值</view>
  49. <view class="charts-box">
  50. <qiun-data-charts type="demotype" :opts="{fontColor:'#666',xAxis:{boundaryGap:'justify'},yAxis:{boundaryGap:'justify',data:[{position:'left',textAlign:'left',fontSize:10,tofix:2}]}}" :chartData="chartData2"/>
  51. </view>
  52. <qiun-title-bar title="工业投资" style="border-top:10rpx solid #f2f2f2" />
  53. <view class="block-box display-around items-center">
  54. <view class="block-box-content" style="width:30%;background-color:#F2CD4F;" @click="goProject(0)">
  55. <view class="font-size30">在库项目</view>
  56. <view>{{industryData.instore_project_count}}</view>
  57. </view>
  58. <view class="block-box-content" style="width:30%;background-color: #9776F2;" @click="goProject(1)">
  59. <view class="font-size30">技改项目</view>
  60. <view>{{industryData.industrial_investment_project_count}}</view>
  61. </view>
  62. <view class="block-box-content" style="width:30%;background-color: #51A9E3;" @click="goProject(2)">
  63. <view class="font-size30">在谈项目</view>
  64. <view>{{industryData.discuss_project_count}}</view>
  65. </view>
  66. </view>
  67. <!-- <qiun-title-bar title="2021年工业投资任务目标"/> -->
  68. <view class="title-second">{{dateYear}}年工业投资任务目标</view>
  69. <view class="charts-box">
  70. <qiun-data-charts type="bar" background="#4C4C4C" :opts="industryData.chartDataBarOptIndustry" :chartData="industryData.chartData"/>
  71. </view>
  72. <!-- <qiun-title-bar title="工业投资额"/> -->
  73. <view class="title-second">工业投资额</view>
  74. <view class="charts-box">
  75. <qiun-data-charts type="demotype" :opts="{fontColor:'#666',xAxis:{boundaryGap:'justify'},yAxis:{boundaryGap:'justify',data:[{position:'left',textAlign:'left',fontSize:10,tofix:2}]}}" :chartData="industryData.chartData2"/>
  76. </view>
  77. <qiun-title-bar title="重点项目" style="border-top:10rpx solid #f2f2f2" />
  78. <view class="block-box display-around items-center">
  79. <view class="block-box-content" style="width:30%;background-color:#F2CD4F;" @click="goImportant(0)">
  80. <view class="font-size30">重点项目</view>
  81. <view>{{importantData.importent_project_count}}</view>
  82. </view>
  83. <view class="block-box-content" style="width:30%;background-color: #9776F2;" @click="goImportant(0)">
  84. <view class="font-size30">新建/续建</view>
  85. <view>{{importantData.new_project_count}}/{{importantData.continue_project_count}}</view>
  86. </view>
  87. <view class="block-box-content" style="width:30%;background-color: #51A9E3;">
  88. <view class="font-size30">总投资(亿元)</view>
  89. <view>{{importantData.investment_count}}</view>
  90. </view>
  91. </view>
  92. <!-- <qiun-title-bar title="重点项目级别分布"/> -->
  93. <view class="title-second">重点项目级别分布</view>
  94. <view class="charts-box">
  95. <qiun-data-charts type="bar" background="#4C4C4C" :chartData="importantData.chartData" :opts="importantBarOpts" />
  96. </view>
  97. <!-- <qiun-title-bar title="工业投资额"/> -->
  98. <view class="title-second">工业投资额</view>
  99. <view class="charts-box">
  100. <qiun-data-charts type="demotype" :opts="{fontColor:'#666',yAxis:{boundaryGap:'justify',data:[{position:'left',textAlign:'left',fontSize:10,tofix:2}]}}" :chartData="importantData.chartData2"/>
  101. </view>
  102. <qiun-title-bar title="科技创新指标" style="border-top:10rpx solid #f2f2f2;margin-bottom: 10rpx;" />
  103. <view class="block-box display-around items-center">
  104. <view class="block-box-content" style="width:46%;color: #555;" @click="goScale('科技创新企业','high_tech')">
  105. <view class="font-size30">国家高新技术企业</view>
  106. <view>{{techData.target.high ||'-'}}/<text style="color: red;">{{techData.finish.high ||'-'}}</text></view>
  107. </view>
  108. <view class="block-box-content" style="width:46%;color: #555;" @click="goScale('科技创新企业','tech')">
  109. <view class="font-size30">科技型中小企业</view>
  110. <view>{{techData.target.mini ||'-'}}/<text style="color: red;">{{techData.finish.mini ||'-'}}</text></view>
  111. </view>
  112. </view>
  113. <view class="display-around-column items-center" style="height: 640rpx; margin: 10rpx 0 10rpx 0;">
  114. <view class="block-box-content" style="width:96%;color: #555;" @click="goScale('科技创新企业','standard_industry')">
  115. <view class="font-size30">累计研发投入规上工业企业</view>
  116. <view>{{techData.target.standard_industry ||'-'}}/<text style="color: red;">{{techData.finish.standard_industry ||'-'}}</text></view>
  117. </view>
  118. <view class="block-box-content" style="width:96%;color: #555;" @click="goScale('科技创新企业','standard_service')">
  119. <view class="font-size30">累计研发投入规上服务业企业</view>
  120. <view>{{techData.target.standard_service ||'-'}}/<text style="color: red;">{{techData.finish.standard_service ||'-'}}</text></view>
  121. </view>
  122. <view class="block-box-content" style="width:96%;color: #555;" @click="goScale('科技创新企业','rd_five_percent' )">
  123. <view class="font-size30">累计研发投入占主营业务5%的企业</view>
  124. <view>{{techData.target.rd_five_percent ||'-'}}/<text style="color: red;">{{techData.finish.rd_five_percent ||'-'}}</text></view>
  125. </view>
  126. <view class="block-box-content" style="width:96%;color: #555;" @click="goScale('科技创新企业','rd_five_million')">
  127. <view class="font-size30">累计研发投入500万以上的企业</view>
  128. <view>{{techData.target.rd_five_million ||'-'}}/<text style="color: red;">{{techData.finish.rd_five_million ||'-'}}</text></view>
  129. </view>
  130. </view>
  131. <qiun-title-bar title="各新城指标排序" style="border-top:10rpx solid #f2f2f2" />
  132. <view class="uni-list title-date-box" style="border: none;">
  133. <view class="uni-list-cell">
  134. <view class="uni-list-cell-db display-flex-start">
  135. <picker :range="arrayNewCity" :value="sortSelect" @change="bindDateCityChange" class="picker-class" style="width: 65%;">
  136. <view class="uni-input display-between items-center" style="color: #707070;">{{sortSelect}}<image src="../../static/arrow_down.svg" mode="aspectFit"></image></view>
  137. </picker>
  138. </view>
  139. </view>
  140. </view>
  141. <!-- <qiun-title-bar title="各新城规上工业企业数量"/> -->
  142. <view class="title-second">各新城{{sortSelect}}</view>
  143. <view class="charts-box">
  144. <qiun-data-charts type="mix" :chartData="ereaData.chartDataBar"
  145. :opts="{yAxis:{showTitle:false,padding:5,data:[{position:'left',textAlign:'left',fontSize:10},{position:'right',textAlign:'right',min: -60,max: 30,fontSize:10,format:'lineRaitoY'},{position:'right',disabled:true}]}}"
  146. background="#4C4C4C"/>
  147. </view>
  148. <!-- <qiun-title-bar title="各新城规上工业企业数量占比"/> -->
  149. <view class="title-second">各新城{{sortSelect}}占比</view>
  150. <view class="charts-box" style="margin-bottom: 20rpx;">
  151. <qiun-data-charts type="pie" :chartData="ereaData.chartDataPie" :opts="{legend:{fontSize:13}}" background="#4C4C4C"/>
  152. </view>
  153. </view>
  154. </template>
  155. <script>
  156. import md5 from "@/common/md5.js";
  157. export default {
  158. data() {
  159. return{
  160. dateYear:new Date().getFullYear(),
  161. dateMonth:new Date().getMonth() + 1,
  162. arrayMonth:[],
  163. arrayNewCity:['规上工业企业数量','工业产值及增速','工业增加值增速','工业投资及增速','工业技改及增速'],
  164. sortSelect:'规上工业企业数量',
  165. standard_sized_count:'',
  166. standard_sized_increase_ratio:'',
  167. advanced_count:'',
  168. advanced_increase_ratio:'',
  169. chartData:{
  170. categories: [ "工业增加值","先进制造业" ],//增速1,总产值2
  171. series: [
  172. { name: "目标任务", //TARGET
  173. otherData:[],
  174. data: [],
  175. format:'moreDataShow',
  176. textSize:10
  177. },
  178. { name: "目前已完成", //FINISH
  179. otherData:[],
  180. data: [],
  181. format:'moreDataShow',
  182. textSize:10
  183. },
  184. ]
  185. },
  186. chartDataBarOpt:{extra:{bar:{linearType:'custom',barBorderCircle:true}}},
  187. companyOpts:{enableScroll: false,xAxis:{scrollShow: true,itemCount:5},yAxis:{data:[{min:0,max:3,tofix:2}]}},
  188. importantBarOpts:{xAxis:{labelCount:2},extra:{bar:{linearType:'custom',barBorderCircle:true}}},
  189. chartData1:{
  190. "categories": [],
  191. "series": [
  192. {
  193. "name": "先进制造业产值(亿元)",
  194. "data": [],
  195. }
  196. ]
  197. },
  198. chartData2:{
  199. "categories": ["1月", "2月","3月", "4月","5月", "6月","7月", "8月","9月", "10月","11月", "12月"],
  200. "series": [
  201. {name: "本年度",data: [],textSize:1},
  202. {name: "上年度", data: [],textSize:1}
  203. ]
  204. },
  205. industryData:{
  206. chartDataBarOptIndustry:{extra:{bar:{linearType:'custom',barBorderCircle:true}}},
  207. discuss_project_count:'',
  208. industrial_investment_project_count:'',
  209. instore_project_count:'',
  210. chartData:{
  211. categories: ["在库项目", "技改项目"],
  212. series: [
  213. {
  214. name: "目标任务",
  215. data: [],
  216. otherData:[],
  217. format:'moreDataShow',
  218. textSize:10
  219. },
  220. {
  221. name: "目前已完成",
  222. data: [],
  223. otherData:[],
  224. format:'moreDataShow',
  225. textSize:10,
  226. },
  227. ]
  228. },
  229. chartData2:{
  230. "categories": ["1月", "2月","3月", "4月","5月", "6月","7月", "8月","9月", "10月","11月", "12月"],
  231. "series": [
  232. {name: "本年度",data: [],textSize:1},
  233. {name: "上年度", data: [],textSize:1}
  234. ]
  235. }
  236. },
  237. importantData:{
  238. importent_project_count:'',
  239. new_project_count:'',
  240. continue_project_count:'',
  241. investment_count:'',
  242. chartData:{
  243. categories: ["省级","市级", "新区级","新城级"],
  244. series: [
  245. {
  246. name: "数量",
  247. data: [],
  248. format:'exceptZero',
  249. },
  250. ]
  251. },
  252. chartData2:{
  253. "categories": ["1月", "2月","3月", "4月","5月", "6月","7月", "8月","9月", "10月","11月", "12月"],
  254. "series": [
  255. {name: "本年度",data: [],textSize:1},
  256. {name: "上年度", data: [],textSize:1}
  257. ]
  258. }
  259. },
  260. techData:{
  261. target:{},
  262. finish:{}
  263. },
  264. ereaData:{
  265. chartDataBar:{
  266. "categories": [],
  267. "series": [
  268. {
  269. "name":"",
  270. "index": 0,
  271. "data": [],
  272. "type": "column"
  273. },
  274. {
  275. "name": "增速",
  276. "index": 1,
  277. "data": [],
  278. "type": "line",
  279. "color":"#cc0000",
  280. "textSize":10,
  281. "format":'lineRaito'
  282. },
  283. ]
  284. },
  285. chartDataPie:{
  286. "categories": [],
  287. "series": [
  288. {
  289. "data": [
  290. ]
  291. }
  292. ]
  293. },
  294. }
  295. }
  296. },
  297. onLoad() {
  298. this.makeMonthArr(this.dateYear)
  299. // this.topChartFn(this.dateYear,this.dateMonth)
  300. },
  301. methods:{
  302. topChartFn(year,month){
  303. this.getStandardChart(year,month);
  304. this.getAdvancedCompanyChart(year,month);
  305. this.getIndustryChart(year,month);
  306. this.getImportantChart(year,month);
  307. this.getTechInfo(year,month);
  308. this.getEreaInfos(year,month,1);
  309. },
  310. makeMonthArr(y){
  311. this.arrayMonth = [];
  312. if(y == new Date().getFullYear()){
  313. let length = new Date().getMonth() + 1;
  314. for(let i = 1 ; i <= length; i++){
  315. this.arrayMonth.push(i)
  316. }
  317. this.dateMonth = length;
  318. }else {
  319. this.arrayMonth = ["1", "2","3", "4","5", "6","7", "8","9", "10","11", "12"]
  320. }
  321. this.topChartFn(this.dateYear,this.dateMonth)
  322. },
  323. getStandardChart(y,m){
  324. let md5Sign = md5(
  325. "method=" +
  326. "stat" +
  327. "&timestamp=" +
  328. getApp().globalData.globalTimestamp +
  329. "&secret=" +
  330. getApp().globalData.secret
  331. );
  332. let url =
  333. getApp().globalData.shareUrl +
  334. "api/api.php" +
  335. "?method=stat&action=standard_target&timestamp=" +
  336. getApp().globalData.globalTimestamp +
  337. "&sign=" +
  338. md5Sign;
  339. uni.request({
  340. url: url,
  341. method: "POST",
  342. header: {
  343. "content-type": "application/x-www-form-urlencoded",
  344. },
  345. data: {
  346. year:y,
  347. month:m,
  348. },
  349. success: (res) => {
  350. if (res.data.code === 200) {
  351. let targetData = [],targetData1 = [],finishData = [],finishData1 = [],targetRatio1 = '',targetRatio2 = '';
  352. this.standard_sized_count = res.data.data.standard_sized_count || '-';
  353. this.standard_sized_increase_ratio = res.data.data.standard_sized_increase_ratio || '-';
  354. this.advanced_count = res.data.data.advanced_count || '-';
  355. this.advanced_increase_ratio = res.data.data.advanced_increase_ratio || '-';
  356. let dataList = res.data.data;
  357. if(dataList.target.length){
  358. dataList.target.forEach((item,index)=>{
  359. if(item.source == '1'){
  360. targetRatio1 = Number(item.increase_ratio) || 0
  361. let dataObj = {
  362. value:Number(item.increase_ratio),
  363. color:'#1890FF'
  364. }
  365. if(Number(item.increase_ratio) === 0 && Number(item.increase_balance) === 0){
  366. dataObj.color = '#4c4c4c'
  367. }
  368. targetData.push(Number(item.increase_balance))
  369. targetData1.push(dataObj)
  370. }
  371. if(item.source == '2'){
  372. targetRatio2 = Number(item.increase_ratio) || 0
  373. let dataObj = {
  374. value:Number(item.increase_ratio),
  375. color:'#1890FF'
  376. }
  377. if(Number(item.increase_ratio) === 0 && Number(item.increase_balance) === 0){
  378. dataObj.color = '#4c4c4c'
  379. }
  380. targetData.push(Number(item.increase_balance))
  381. targetData1.push(dataObj)
  382. }
  383. })
  384. }
  385. if(dataList.finish.length){
  386. this.chartDataBarOpt.xAxis = {min:0}
  387. dataList.finish.forEach((item,index)=>{
  388. if(item.source == '1'){
  389. let dataObj = {
  390. value:Number(item.increase_ratio),
  391. color:Number(item.increase_ratio) > targetRatio1 ? '#68d889' : '#cc0000'
  392. }
  393. if(Number(item.increase_ratio) === 0 && Number(item.increase_balance) === 0){
  394. dataObj.color = '#4c4c4c'
  395. }
  396. finishData.push(Number(item.increase_balance))
  397. finishData1.push(dataObj)
  398. }
  399. if(item.source == '2'){
  400. let dataObj = {
  401. value:Number(item.increase_ratio),
  402. color:Number(item.increase_ratio) > targetRatio2 ? '#68d889' : '#cc0000'
  403. }
  404. if(Number(item.increase_ratio) === 0 && Number(item.increase_balance) === 0){
  405. dataObj.color = '#4c4c4c'
  406. }
  407. finishData.push(Number(item.increase_balance))
  408. finishData1.push(dataObj)
  409. }
  410. if(Number(item.increase_ratio) < 0){
  411. this.chartDataBarOpt.xAxis = {min:-8}
  412. }
  413. })
  414. }
  415. this.chartData.series[0].data = targetData1
  416. this.chartData.series[0].otherData = targetData
  417. this.chartData.series[1].data = finishData1
  418. this.chartData.series[1].otherData = finishData
  419. }
  420. },
  421. fail: () => {
  422. console.log("连接失败");
  423. },
  424. });
  425. },
  426. getAdvancedCompanyChart(y,m){
  427. let md5Sign = md5(
  428. "method=" +
  429. "stat" +
  430. "&timestamp=" +
  431. getApp().globalData.globalTimestamp +
  432. "&secret=" +
  433. getApp().globalData.secret
  434. );
  435. let url =
  436. getApp().globalData.shareUrl +
  437. "api/api.php" +
  438. "?method=stat&action=advanced_company&timestamp=" +
  439. getApp().globalData.globalTimestamp +
  440. "&sign=" +
  441. md5Sign;
  442. uni.request({
  443. url: url,
  444. method: "POST",
  445. header: {
  446. "content-type": "application/x-www-form-urlencoded",
  447. },
  448. data: {
  449. year:y,
  450. month:m,
  451. },
  452. success: (res) => {
  453. if (res.data.code === 200) {
  454. let categoriesList = [],balanceList = [],lineBalanceList = [], lineLast = [];
  455. let companyList = res.data.data.company_list
  456. if(companyList.length){
  457. if(companyList.length > 4){
  458. this.companyOpts.enableScroll = true;
  459. }
  460. companyList.forEach((item)=>{
  461. categoriesList.push(item.short_name);
  462. balanceList.push(item.balance)
  463. })
  464. }else if(companyList.length === 0){
  465. this.companyOpts.enableScroll = false;
  466. }
  467. // balanceList = balanceList.map((item)=>{ return (Number(item)/10000).toFixed(2)});
  468. // res.data.data.month_list.forEach((item)=>{
  469. // lineBalanceList.push(item.balance);
  470. // lineLast.push(item.last_balance)
  471. // })
  472. for(let key in res.data.data.month_list ){
  473. lineBalanceList.push(res.data.data.month_list[key].balance)
  474. lineLast.push(res.data.data.month_list[key].last_balance)
  475. }
  476. lineBalanceList = lineBalanceList.splice(0,Number(this.dateMonth));
  477. this.chartData1.categories = categoriesList;
  478. this.chartData1.series[0].data = balanceList;
  479. this.chartData2.series[0].data = lineBalanceList;
  480. this.chartData2.series[1].data = lineLast;
  481. }
  482. },
  483. fail: () => {
  484. console.log("连接失败");
  485. },
  486. });
  487. },
  488. industryFilter(data){
  489. let targetData = [],targetData1 = [],finishData = [],finishData1 = [],lineBalanceList = [], lineLast = [],storeRatio = '',techRatio = '';
  490. this.industryData.discuss_project_count = data.discuss_project_count || '-';
  491. this.industryData.industrial_investment_project_count = data.industrial_investment_project_count || '-';
  492. this.industryData.instore_project_count = data.instore_project_count || '-';
  493. if(data.target.length){
  494. let targetList = data.target;
  495. targetList.forEach((item)=>{
  496. if(item.source === '3'){
  497. storeRatio = Number(item.increase_ratio) || 0
  498. }
  499. if(item.source === '4'){
  500. techRatio = Number(item.increase_ratio) || 0
  501. }
  502. if(item.source !== '0'){
  503. let dataObj = {
  504. value:Number(item.increase_ratio),
  505. color:'#1890FF'
  506. }
  507. if(Number(item.increase_ratio) === 0 && Number(item.increase_balance) === 0){
  508. dataObj.color = '#4c4c4c'
  509. }
  510. targetData.push(Number(item.increase_balance))
  511. targetData1.push(dataObj)
  512. }
  513. })
  514. }
  515. if(data.finish.length){
  516. let finishList = data.finish;
  517. this.industryData.chartDataBarOptIndustry.xAxis = {min:0}
  518. let dataStoreObj = {
  519. value:Number(finishList[0].store_ratio),
  520. color:Number(finishList[0].store_ratio) > storeRatio ? '#68d889' : '#cc0000'
  521. }
  522. finishData1.push(dataStoreObj)
  523. let dataTechObj = {
  524. value:Number(finishList[0].tech_ratio),
  525. color:Number(finishList[0].tech_ratio) > techRatio ? '#68d889' : '#cc0000'
  526. }
  527. finishData1.push(dataTechObj)
  528. finishData = [Number(finishList[0].store_balance),Number(finishList[0].tech_balance)];
  529. if(Number(finishList[0].store_ratio) < 0 || Number(finishList[0].tech_ratio) < 0){
  530. this.industryData.chartDataBarOptIndustry.xAxis = {min:-8}
  531. }
  532. }
  533. for(let key in data.month_list ){
  534. lineBalanceList.push(data.month_list[key].balance)
  535. lineLast.push(data.month_list[key].last_balance)
  536. }
  537. lineBalanceList = lineBalanceList.splice(0,Number(this.dateMonth));
  538. this.industryData.chartData.series[0].data = targetData1
  539. this.industryData.chartData.series[0].otherData = targetData
  540. this.industryData.chartData.series[1].data = finishData1
  541. this.industryData.chartData.series[1].otherData = finishData
  542. this.industryData.chartData2.series[0].data = lineBalanceList;
  543. this.industryData.chartData2.series[1].data = lineLast;
  544. },
  545. getIndustryChart(y,m){
  546. let md5Sign = md5(
  547. "method=" +
  548. "stat" +
  549. "&timestamp=" +
  550. getApp().globalData.globalTimestamp +
  551. "&secret=" +
  552. getApp().globalData.secret
  553. );
  554. let url =
  555. getApp().globalData.shareUrl +
  556. "api/api.php" +
  557. "?method=stat&action=industry&timestamp=" +
  558. getApp().globalData.globalTimestamp +
  559. "&sign=" +
  560. md5Sign;
  561. uni.request({
  562. url: url,
  563. method: "POST",
  564. header: {
  565. "content-type": "application/x-www-form-urlencoded",
  566. },
  567. data: {
  568. year:y,
  569. month:m,
  570. },
  571. success: (res) => {
  572. if (res.data.code === 200) {
  573. this.industryFilter(res.data.data)
  574. }
  575. },
  576. fail: () => {
  577. console.log("连接失败");
  578. },
  579. });
  580. },
  581. importantFilter(data){
  582. let barList = [],barObjList = [], lineBalanceList = [], lineLast = [];
  583. this.importantData.importent_project_count = data.importent_project_count || '-';
  584. this.importantData.new_project_count = data.new_project_count|| '-';
  585. this.importantData.continue_project_count = data.continue_project_count|| '-';
  586. this.importantData.investment_count = data.investment_count || 0;
  587. //this.importantData.investment_count = data.investment_count ? (data.investment_count/10000).toFixed(2):0
  588. if(data.province_level_count == 0 && data.city_level_count == 0 && data.area_level_count == 0 && data.new_city_level_count == 0){
  589. barList = [],barObjList = [];
  590. }else{
  591. barList = [data.province_level_count,data.city_level_count,data.area_level_count,data.new_city_level_count]
  592. barList.forEach((item)=>{
  593. let dataObj = {
  594. value:Number(item),
  595. color:'#1890FF'
  596. }
  597. if(Number(item) === 0){
  598. dataObj.color = '#4c4c4c'
  599. }
  600. barObjList.push(dataObj)
  601. })
  602. }
  603. //this.importantData.chartData.series[0].data = [5,16,21]
  604. for(let key in data.month_list ){
  605. lineBalanceList.push(data.month_list[key].balance)
  606. lineLast.push(data.month_list[key].last_balance)
  607. }
  608. lineBalanceList = lineBalanceList.splice(0,Number(this.dateMonth));
  609. this.importantData.chartData.series[0].data = barObjList;
  610. this.importantData.chartData2.series[0].data = lineBalanceList;
  611. this.importantData.chartData2.series[1].data = lineLast;
  612. },
  613. getImportantChart(y,m){
  614. let md5Sign = md5(
  615. "method=" +
  616. "stat" +
  617. "&timestamp=" +
  618. getApp().globalData.globalTimestamp +
  619. "&secret=" +
  620. getApp().globalData.secret
  621. );
  622. let url =
  623. getApp().globalData.shareUrl +
  624. "api/api.php" +
  625. "?method=stat&action=importent_project&timestamp=" +
  626. getApp().globalData.globalTimestamp +
  627. "&sign=" +
  628. md5Sign;
  629. uni.request({
  630. url: url,
  631. method: "POST",
  632. header: {
  633. "content-type": "application/x-www-form-urlencoded",
  634. },
  635. data: {
  636. year:y,
  637. month:m,
  638. },
  639. success: (res) => {
  640. if (res.data.code === 200) {
  641. this.importantFilter(res.data.data)
  642. }
  643. },
  644. fail: () => {
  645. console.log("连接失败");
  646. },
  647. });
  648. },
  649. getTechInfo(y,m){
  650. let md5Sign = md5(
  651. "method=" +
  652. "stat" +
  653. "&timestamp=" +
  654. getApp().globalData.globalTimestamp +
  655. "&secret=" +
  656. getApp().globalData.secret
  657. );
  658. let url =
  659. getApp().globalData.shareUrl +
  660. "api/api.php" +
  661. "?method=stat&action=tech_infos&timestamp=" +
  662. getApp().globalData.globalTimestamp +
  663. "&sign=" +
  664. md5Sign;
  665. uni.request({
  666. url: url,
  667. method: "POST",
  668. header: {
  669. "content-type": "application/x-www-form-urlencoded",
  670. },
  671. data: {
  672. year:y,
  673. month:m,
  674. },
  675. success: (res) => {
  676. if (res.data.code === 200) {
  677. this.techData.target = res.data.data.target;
  678. this.techData.finish = res.data.data.finish;
  679. }
  680. },
  681. fail: () => {
  682. console.log("连接失败");
  683. },
  684. });
  685. },
  686. ereaInfoFilter(data){
  687. let categoriesList = [], barData = [], pieData = [],lineData = [];
  688. for(let key in data.area_list ){
  689. if(data.area_list[key].name !== '西咸新区'){
  690. data.area_list[key].name = (data.area_list[key].name).substr(0,2)
  691. }
  692. categoriesList.push(data.area_list[key].name);
  693. barData.push(Number(data.area_list[key].value));
  694. if(data.area_list[key].ratio){
  695. lineData.push(Number(data.area_list[key].ratio))
  696. }
  697. pieData.push(data.area_list[key])
  698. }
  699. this.ereaData.chartDataBar.categories = categoriesList;
  700. this.ereaData.chartDataPie.categories = categoriesList;
  701. this.ereaData.chartDataBar.series[0].name = "各新城" + this.sortSelect;
  702. this.ereaData.chartDataBar.series[0].data = barData;
  703. // this.ereaData.chartDataBar.series[1].name = "各新城" + this.sortSelect;
  704. this.ereaData.chartDataBar.series[1].data = lineData;
  705. console.log(this.ereaData.chartDataBar)
  706. pieData.forEach((item)=>{item.value = Number(item.value)})
  707. this.ereaData.chartDataPie.series[0].data =pieData.filter((item)=>{return item.name !== '西咸新区'});
  708. },
  709. getEreaInfos(y,m,select){
  710. let md5Sign = md5(
  711. "method=" +
  712. "stat" +
  713. "&timestamp=" +
  714. getApp().globalData.globalTimestamp +
  715. "&secret=" +
  716. getApp().globalData.secret
  717. );
  718. let url =
  719. getApp().globalData.shareUrl +
  720. "api/api.php" +
  721. "?method=stat&action=erea_infos&timestamp=" +
  722. getApp().globalData.globalTimestamp +
  723. "&sign=" +
  724. md5Sign;
  725. uni.request({
  726. url: url,
  727. method: "POST",
  728. header: {
  729. "content-type": "application/x-www-form-urlencoded",
  730. },
  731. data: {
  732. year:y,
  733. month:m,
  734. source:select
  735. },
  736. success: (res) => {
  737. if (res.data.code === 200) {
  738. this.ereaInfoFilter(res.data.data)
  739. }
  740. },
  741. fail: () => {
  742. console.log("连接失败");
  743. },
  744. });
  745. },
  746. bindDateChange(e){
  747. this.dateYear = e.target.value
  748. this.makeMonthArr(e.target.value);
  749. },
  750. bindDateMonthChange(e){
  751. this.dateMonth = this.arrayMonth[e.target.value]
  752. this.topChartFn(this.dateYear,this.dateMonth)
  753. },
  754. bindDateCityChange(e){
  755. this.sortSelect = this.arrayNewCity[e.target.value]
  756. let dataSelect = Number(e.target.value) + 1;
  757. this.getEreaInfos(this.dateYear,this.dateMonth,dataSelect)
  758. },
  759. goScale(title,techType){
  760. uni.navigateTo({
  761. url:'./largeScale/index?title=' + title + '&year=' + this.dateYear + '&month=' + this.dateMonth + '&tech=' + techType
  762. })
  763. },
  764. goProject(idx){
  765. uni.navigateTo({
  766. url:'./projectPage/index?idx=' + idx + '&year=' + this.dateYear + '&month=' + this.dateMonth
  767. })
  768. },
  769. goImportant(idx){
  770. uni.navigateTo({
  771. url:'./importantPage/index?idx=' + idx + '&year=' + this.dateYear + '&month=' + this.dateMonth
  772. })
  773. }
  774. }
  775. };
  776. </script>
  777. <style>
  778. .content-box {
  779. display: flex;
  780. flex-direction: column;
  781. flex: 1;
  782. }
  783. .title-date-box {
  784. margin-top: 10px;
  785. border-bottom: 1px solid #d7d7d7;
  786. padding-bottom: 10px;
  787. }
  788. .charts-box-title{
  789. width: 100%;
  790. height: 100rpx;
  791. }
  792. .charts-box {
  793. width: 100%;
  794. height: 600rpx;
  795. }
  796. .picker-class {
  797. border-radius: 10rpx;
  798. padding: 10rpx;
  799. width: 180rpx;
  800. font-size: 28rpx;
  801. background: #f5f5f5;
  802. margin-left: 20rpx;
  803. }
  804. .picker-class image {
  805. width: 26rpx;
  806. height: 26rpx;
  807. }
  808. .block-box-content {
  809. display: flex;
  810. flex-direction: column;
  811. justify-content: center;
  812. align-items: center;
  813. font-size: 34rpx;
  814. border-radius: 10rpx;
  815. width: 46%;
  816. height: 140rpx;
  817. color: #fff;
  818. background-color:#F2F2F2;
  819. }
  820. .title-second {
  821. width: 100%;
  822. height: 60rpx;
  823. line-height: 60rpx;
  824. text-align: center;
  825. font-size: 30rpx;
  826. /* font-weight: 550; */
  827. }
  828. .pos-font {
  829. position: absolute;
  830. color: rgba(255, 255, 255, 0.8);
  831. font-size: 20rpx;
  832. text-align: center;
  833. width: 110rpx;
  834. font-weight: 600;
  835. }
  836. .font-size30 {
  837. font-size: 30rpx;
  838. }
  839. </style>