index.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833
  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}]}}" :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}]}}" :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="{xAxis:{labelCount:2},extra:{bar:{linearType:'custom',barBorderCircle:true}}}" />
  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}]}}" :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. chartData1:{
  189. "categories": [],
  190. "series": [
  191. {
  192. "name": "先进制造业产值(亿元)",
  193. "data": [],
  194. }
  195. ]
  196. },
  197. chartData2:{
  198. "categories": ["1月", "2月","3月", "4月","5月", "6月","7月", "8月","9月", "10月","11月", "12月"],
  199. "series": [
  200. {name: "本年度",data: [],textSize:1},
  201. {name: "上年度", data: [],textSize:1}
  202. ]
  203. },
  204. industryData:{
  205. chartDataBarOptIndustry:{extra:{bar:{linearType:'custom',barBorderCircle:true}}},
  206. discuss_project_count:'',
  207. industrial_investment_project_count:'',
  208. instore_project_count:'',
  209. chartData:{
  210. categories: ["在库项目", "技改项目"],
  211. series: [
  212. {
  213. name: "目标任务",
  214. data: [],
  215. otherData:[],
  216. format:'moreDataShow',
  217. textSize:10
  218. },
  219. {
  220. name: "目前已完成",
  221. data: [],
  222. otherData:[],
  223. format:'moreDataShow',
  224. textSize:10,
  225. },
  226. ]
  227. },
  228. chartData2:{
  229. "categories": ["1月", "2月","3月", "4月","5月", "6月","7月", "8月","9月", "10月","11月", "12月"],
  230. "series": [
  231. {name: "本年度",data: [],textSize:1},
  232. {name: "上年度", data: [],textSize:1}
  233. ]
  234. }
  235. },
  236. importantData:{
  237. importent_project_count:'',
  238. new_project_count:'',
  239. continue_project_count:'',
  240. investment_count:'',
  241. chartData:{
  242. categories: ["省级","市级", "新区级","新城级"],
  243. series: [
  244. {
  245. name: "数量",
  246. data: [],
  247. },
  248. ]
  249. },
  250. chartData2:{
  251. "categories": ["1月", "2月","3月", "4月","5月", "6月","7月", "8月","9月", "10月","11月", "12月"],
  252. "series": [
  253. {name: "本年度",data: [],textSize:1},
  254. {name: "上年度", data: [],textSize:1}
  255. ]
  256. }
  257. },
  258. techData:{
  259. target:{},
  260. finish:{}
  261. },
  262. ereaData:{
  263. chartDataBar:{
  264. "categories": [],
  265. "series": [
  266. {
  267. "name":"",
  268. "index": 0,
  269. "data": [],
  270. "type": "column"
  271. },
  272. {
  273. "name": "增速",
  274. "index": 1,
  275. "data": [],
  276. "type": "line",
  277. "color":"#cc0000",
  278. "textSize":10,
  279. "format":'lineRaito'
  280. },
  281. ]
  282. },
  283. chartDataPie:{
  284. "categories": [],
  285. "series": [
  286. {
  287. "data": [
  288. ]
  289. }
  290. ]
  291. },
  292. }
  293. }
  294. },
  295. onLoad() {
  296. this.makeMonthArr(this.dateYear)
  297. // this.topChartFn(this.dateYear,this.dateMonth)
  298. },
  299. methods:{
  300. topChartFn(year,month){
  301. this.getStandardChart(year,month);
  302. this.getAdvancedCompanyChart(year,month);
  303. this.getIndustryChart(year,month);
  304. this.getImportantChart(year,month);
  305. this.getTechInfo(year,month);
  306. this.getEreaInfos(year,month,1);
  307. },
  308. makeMonthArr(y){
  309. this.arrayMonth = [];
  310. if(y == new Date().getFullYear()){
  311. let length = new Date().getMonth() + 1;
  312. for(let i = 1 ; i <= length; i++){
  313. this.arrayMonth.push(i)
  314. }
  315. this.dateMonth = length;
  316. }else {
  317. this.arrayMonth = ["1", "2","3", "4","5", "6","7", "8","9", "10","11", "12"]
  318. }
  319. this.topChartFn(this.dateYear,this.dateMonth)
  320. },
  321. getStandardChart(y,m){
  322. let md5Sign = md5(
  323. "method=" +
  324. "stat" +
  325. "&timestamp=" +
  326. getApp().globalData.globalTimestamp +
  327. "&secret=" +
  328. getApp().globalData.secret
  329. );
  330. let url =
  331. getApp().globalData.shareUrl +
  332. "api/api.php" +
  333. "?method=stat&action=standard_target&timestamp=" +
  334. getApp().globalData.globalTimestamp +
  335. "&sign=" +
  336. md5Sign;
  337. uni.request({
  338. url: url,
  339. method: "POST",
  340. header: {
  341. "content-type": "application/x-www-form-urlencoded",
  342. },
  343. data: {
  344. year:y,
  345. month:m,
  346. },
  347. success: (res) => {
  348. if (res.data.code === 200) {
  349. let targetData = [],targetData1 = [],finishData = [],finishData1 = [],targetRatio1 = '',targetRatio2 = '';
  350. this.standard_sized_count = res.data.data.standard_sized_count || '-';
  351. this.standard_sized_increase_ratio = res.data.data.standard_sized_increase_ratio || '-';
  352. this.advanced_count = res.data.data.advanced_count || '-';
  353. this.advanced_increase_ratio = res.data.data.advanced_increase_ratio || '-';
  354. let dataList = res.data.data;
  355. if(dataList.target.length){
  356. dataList.target.forEach((item,index)=>{
  357. if(item.source == '1'){
  358. targetRatio1 = Number(item.increase_ratio) || 0
  359. let dataObj = {
  360. value:Number(item.increase_ratio),
  361. color:'#1890FF'
  362. }
  363. if(Number(item.increase_ratio) === 0 && Number(item.increase_balance) === 0){
  364. dataObj.color = '#4c4c4c'
  365. }
  366. targetData.push(Number(item.increase_balance))
  367. targetData1.push(dataObj)
  368. }
  369. if(item.source == '2'){
  370. targetRatio2 = Number(item.increase_ratio) || 0
  371. let dataObj = {
  372. value:Number(item.increase_ratio),
  373. color:'#1890FF'
  374. }
  375. if(Number(item.increase_ratio) === 0 && Number(item.increase_balance) === 0){
  376. dataObj.color = '#4c4c4c'
  377. }
  378. targetData.push(Number(item.increase_balance))
  379. targetData1.push(dataObj)
  380. }
  381. })
  382. }
  383. if(dataList.finish.length){
  384. this.chartDataBarOpt.xAxis = {min:0}
  385. dataList.finish.forEach((item,index)=>{
  386. if(item.source == '1'){
  387. let dataObj = {
  388. value:Number(item.increase_ratio),
  389. color:Number(item.increase_ratio) > targetRatio1 ? '#68d889' : '#cc0000'
  390. }
  391. if(Number(item.increase_ratio) === 0 && Number(item.increase_balance) === 0){
  392. dataObj.color = '#4c4c4c'
  393. }
  394. finishData.push(Number(item.increase_balance))
  395. finishData1.push(dataObj)
  396. }
  397. if(item.source == '2'){
  398. let dataObj = {
  399. value:Number(item.increase_ratio),
  400. color:Number(item.increase_ratio) > targetRatio2 ? '#68d889' : '#cc0000'
  401. }
  402. if(Number(item.increase_ratio) === 0 && Number(item.increase_balance) === 0){
  403. dataObj.color = '#4c4c4c'
  404. }
  405. finishData.push(Number(item.increase_balance))
  406. finishData1.push(dataObj)
  407. }
  408. if(Number(item.increase_ratio) < 0){
  409. this.chartDataBarOpt.xAxis = {min:-8}
  410. }
  411. })
  412. }
  413. this.chartData.series[0].data = targetData1
  414. this.chartData.series[0].otherData = targetData
  415. this.chartData.series[1].data = finishData1
  416. this.chartData.series[1].otherData = finishData
  417. }
  418. },
  419. fail: () => {
  420. console.log("连接失败");
  421. },
  422. });
  423. },
  424. getAdvancedCompanyChart(y,m){
  425. let md5Sign = md5(
  426. "method=" +
  427. "stat" +
  428. "&timestamp=" +
  429. getApp().globalData.globalTimestamp +
  430. "&secret=" +
  431. getApp().globalData.secret
  432. );
  433. let url =
  434. getApp().globalData.shareUrl +
  435. "api/api.php" +
  436. "?method=stat&action=advanced_company&timestamp=" +
  437. getApp().globalData.globalTimestamp +
  438. "&sign=" +
  439. md5Sign;
  440. uni.request({
  441. url: url,
  442. method: "POST",
  443. header: {
  444. "content-type": "application/x-www-form-urlencoded",
  445. },
  446. data: {
  447. year:y,
  448. month:m,
  449. },
  450. success: (res) => {
  451. if (res.data.code === 200) {
  452. let categoriesList = [],balanceList = [],lineBalanceList = [], lineLast = [];
  453. let companyList = res.data.data.company_list
  454. if(companyList.length){
  455. if(companyList.length > 4){
  456. this.companyOpts.enableScroll = true;
  457. }
  458. companyList.forEach((item)=>{
  459. categoriesList.push(item.short_name);
  460. balanceList.push(item.balance)
  461. })
  462. }else if(companyList.length === 0){
  463. this.companyOpts.enableScroll = false;
  464. }
  465. balanceList = balanceList.map((item)=>{ return (Number(item)/10000).toFixed(2)});
  466. // res.data.data.month_list.forEach((item)=>{
  467. // lineBalanceList.push(item.balance);
  468. // lineLast.push(item.last_balance)
  469. // })
  470. for(let key in res.data.data.month_list ){
  471. lineBalanceList.push(res.data.data.month_list[key].balance)
  472. lineLast.push(res.data.data.month_list[key].last_balance)
  473. }
  474. this.chartData1.categories = categoriesList;
  475. this.chartData1.series[0].data = balanceList;
  476. this.chartData2.series[0].data = lineBalanceList;
  477. this.chartData2.series[1].data = lineLast;
  478. }
  479. },
  480. fail: () => {
  481. console.log("连接失败");
  482. },
  483. });
  484. },
  485. industryFilter(data){
  486. let targetData = [],targetData1 = [],finishData = [],finishData1 = [],lineBalanceList = [], lineLast = [],storeRatio = '',techRatio = '';
  487. this.industryData.discuss_project_count = data.discuss_project_count || '-';
  488. this.industryData.industrial_investment_project_count = data.industrial_investment_project_count || '-';
  489. this.industryData.instore_project_count = data.instore_project_count || '-';
  490. if(data.target.length){
  491. let targetList = data.target;
  492. targetList.forEach((item)=>{
  493. if(item.source === '3'){
  494. storeRatio = Number(item.increase_ratio) || 0
  495. }
  496. if(item.source === '4'){
  497. techRatio = Number(item.increase_ratio) || 0
  498. }
  499. if(item.source !== '0'){
  500. let dataObj = {
  501. value:Number(item.increase_ratio),
  502. color:'#1890FF'
  503. }
  504. if(Number(item.increase_ratio) === 0 && Number(item.increase_balance) === 0){
  505. dataObj.color = '#4c4c4c'
  506. }
  507. targetData.push(Number(item.increase_balance))
  508. targetData1.push(dataObj)
  509. }
  510. })
  511. }
  512. if(data.finish.length){
  513. let finishList = data.finish;
  514. this.industryData.chartDataBarOptIndustry.xAxis = {min:0}
  515. let dataStoreObj = {
  516. value:Number(finishList[0].store_ratio),
  517. color:Number(finishList[0].store_ratio) > storeRatio ? '#68d889' : '#cc0000'
  518. }
  519. finishData1.push(dataStoreObj)
  520. let dataTechObj = {
  521. value:Number(finishList[0].tech_ratio),
  522. color:Number(finishList[0].tech_ratio) > techRatio ? '#68d889' : '#cc0000'
  523. }
  524. finishData1.push(dataTechObj)
  525. finishData = [Number(finishList[0].store_balance),Number(finishList[0].tech_balance)];
  526. if(Number(finishList[0].store_ratio) < 0 || Number(finishList[0].tech_ratio) < 0){
  527. this.industryData.chartDataBarOptIndustry.xAxis = {min:-8}
  528. }
  529. }
  530. for(let key in data.month_list ){
  531. lineBalanceList.push(data.month_list[key].balance)
  532. lineLast.push(data.month_list[key].last_balance)
  533. }
  534. this.industryData.chartData.series[0].data = targetData1
  535. this.industryData.chartData.series[0].otherData = targetData
  536. this.industryData.chartData.series[1].data = finishData1
  537. this.industryData.chartData.series[1].otherData = finishData
  538. this.industryData.chartData2.series[0].data = lineBalanceList;
  539. this.industryData.chartData2.series[1].data = lineLast;
  540. },
  541. getIndustryChart(y,m){
  542. let md5Sign = md5(
  543. "method=" +
  544. "stat" +
  545. "&timestamp=" +
  546. getApp().globalData.globalTimestamp +
  547. "&secret=" +
  548. getApp().globalData.secret
  549. );
  550. let url =
  551. getApp().globalData.shareUrl +
  552. "api/api.php" +
  553. "?method=stat&action=industry&timestamp=" +
  554. getApp().globalData.globalTimestamp +
  555. "&sign=" +
  556. md5Sign;
  557. uni.request({
  558. url: url,
  559. method: "POST",
  560. header: {
  561. "content-type": "application/x-www-form-urlencoded",
  562. },
  563. data: {
  564. year:y,
  565. month:m,
  566. },
  567. success: (res) => {
  568. if (res.data.code === 200) {
  569. this.industryFilter(res.data.data)
  570. }
  571. },
  572. fail: () => {
  573. console.log("连接失败");
  574. },
  575. });
  576. },
  577. importantFilter(data){
  578. let lineBalanceList = [], lineLast = [];
  579. this.importantData.importent_project_count = data.importent_project_count || '-';
  580. this.importantData.new_project_count = data.new_project_count|| '-';
  581. this.importantData.continue_project_count = data.continue_project_count|| '-';
  582. this.importantData.investment_count = data.investment_count ? (data.investment_count/10000).toFixed(2):0
  583. if(data.province_level_count == 0 && data.city_level_count == 0 && data.area_level_count == 0 && data.new_city_level_count == 0){
  584. this.importantData.chartData.series[0].data = []
  585. }else{
  586. this.importantData.chartData.series[0].data = [data.province_level_count,data.city_level_count,data.area_level_count,data.new_city_level_count]
  587. }
  588. //this.importantData.chartData.series[0].data = [5,16,21]
  589. for(let key in data.month_list ){
  590. lineBalanceList.push(data.month_list[key].balance)
  591. lineLast.push(data.month_list[key].last_balance)
  592. }
  593. this.importantData.chartData2.series[0].data = lineBalanceList;
  594. this.importantData.chartData2.series[1].data = lineLast;
  595. },
  596. getImportantChart(y,m){
  597. let md5Sign = md5(
  598. "method=" +
  599. "stat" +
  600. "&timestamp=" +
  601. getApp().globalData.globalTimestamp +
  602. "&secret=" +
  603. getApp().globalData.secret
  604. );
  605. let url =
  606. getApp().globalData.shareUrl +
  607. "api/api.php" +
  608. "?method=stat&action=importent_project&timestamp=" +
  609. getApp().globalData.globalTimestamp +
  610. "&sign=" +
  611. md5Sign;
  612. uni.request({
  613. url: url,
  614. method: "POST",
  615. header: {
  616. "content-type": "application/x-www-form-urlencoded",
  617. },
  618. data: {
  619. year:y,
  620. month:m,
  621. },
  622. success: (res) => {
  623. if (res.data.code === 200) {
  624. this.importantFilter(res.data.data)
  625. }
  626. },
  627. fail: () => {
  628. console.log("连接失败");
  629. },
  630. });
  631. },
  632. getTechInfo(y,m){
  633. let md5Sign = md5(
  634. "method=" +
  635. "stat" +
  636. "&timestamp=" +
  637. getApp().globalData.globalTimestamp +
  638. "&secret=" +
  639. getApp().globalData.secret
  640. );
  641. let url =
  642. getApp().globalData.shareUrl +
  643. "api/api.php" +
  644. "?method=stat&action=tech_infos&timestamp=" +
  645. getApp().globalData.globalTimestamp +
  646. "&sign=" +
  647. md5Sign;
  648. uni.request({
  649. url: url,
  650. method: "POST",
  651. header: {
  652. "content-type": "application/x-www-form-urlencoded",
  653. },
  654. data: {
  655. year:y,
  656. month:m,
  657. },
  658. success: (res) => {
  659. if (res.data.code === 200) {
  660. this.techData.target = res.data.data.target;
  661. this.techData.finish = res.data.data.finish;
  662. }
  663. },
  664. fail: () => {
  665. console.log("连接失败");
  666. },
  667. });
  668. },
  669. ereaInfoFilter(data){
  670. let categoriesList = [], barData = [], pieData = [],lineData = [];
  671. for(let key in data.area_list ){
  672. if(data.area_list[key].name !== '西咸新区'){
  673. data.area_list[key].name = (data.area_list[key].name).substr(0,2)
  674. }
  675. categoriesList.push(data.area_list[key].name);
  676. barData.push(Number(data.area_list[key].value));
  677. if(data.area_list[key].ratio){
  678. lineData.push(Number(data.area_list[key].ratio))
  679. }
  680. pieData.push(data.area_list[key])
  681. }
  682. this.ereaData.chartDataBar.categories = categoriesList;
  683. this.ereaData.chartDataPie.categories = categoriesList;
  684. this.ereaData.chartDataBar.series[0].name = "各新城" + this.sortSelect;
  685. this.ereaData.chartDataBar.series[0].data = barData;
  686. // this.ereaData.chartDataBar.series[1].name = "各新城" + this.sortSelect;
  687. this.ereaData.chartDataBar.series[1].data = lineData;
  688. console.log(this.ereaData.chartDataBar)
  689. pieData.forEach((item)=>{item.value = Number(item.value)})
  690. this.ereaData.chartDataPie.series[0].data =pieData.filter((item)=>{return item.name !== '西咸新区'});
  691. },
  692. getEreaInfos(y,m,select){
  693. let md5Sign = md5(
  694. "method=" +
  695. "stat" +
  696. "&timestamp=" +
  697. getApp().globalData.globalTimestamp +
  698. "&secret=" +
  699. getApp().globalData.secret
  700. );
  701. let url =
  702. getApp().globalData.shareUrl +
  703. "api/api.php" +
  704. "?method=stat&action=erea_infos&timestamp=" +
  705. getApp().globalData.globalTimestamp +
  706. "&sign=" +
  707. md5Sign;
  708. uni.request({
  709. url: url,
  710. method: "POST",
  711. header: {
  712. "content-type": "application/x-www-form-urlencoded",
  713. },
  714. data: {
  715. year:y,
  716. month:m,
  717. source:select
  718. },
  719. success: (res) => {
  720. if (res.data.code === 200) {
  721. this.ereaInfoFilter(res.data.data)
  722. }
  723. },
  724. fail: () => {
  725. console.log("连接失败");
  726. },
  727. });
  728. },
  729. bindDateChange(e){
  730. this.dateYear = e.target.value
  731. this.makeMonthArr(e.target.value);
  732. },
  733. bindDateMonthChange(e){
  734. this.dateMonth = this.arrayMonth[e.target.value]
  735. this.topChartFn(this.dateYear,this.dateMonth)
  736. },
  737. bindDateCityChange(e){
  738. this.sortSelect = this.arrayNewCity[e.target.value]
  739. let dataSelect = Number(e.target.value) + 1;
  740. this.getEreaInfos(this.dateYear,this.dateMonth,dataSelect)
  741. },
  742. goScale(title,techType){
  743. uni.navigateTo({
  744. url:'./largeScale/index?title=' + title + '&year=' + this.dateYear + '&month=' + this.dateMonth + '&tech=' + techType
  745. })
  746. },
  747. goProject(idx){
  748. uni.navigateTo({
  749. url:'./projectPage/index?idx=' + idx + '&year=' + this.dateYear + '&month=' + this.dateMonth
  750. })
  751. },
  752. goImportant(idx){
  753. uni.navigateTo({
  754. url:'./importantPage/index?idx=' + idx
  755. })
  756. }
  757. }
  758. };
  759. </script>
  760. <style>
  761. .content-box {
  762. display: flex;
  763. flex-direction: column;
  764. flex: 1;
  765. }
  766. .title-date-box {
  767. margin-top: 10px;
  768. border-bottom: 1px solid #d7d7d7;
  769. padding-bottom: 10px;
  770. }
  771. .charts-box-title{
  772. width: 100%;
  773. height: 100rpx;
  774. }
  775. .charts-box {
  776. width: 100%;
  777. height: 600rpx;
  778. }
  779. .picker-class {
  780. border-radius: 10rpx;
  781. padding: 10rpx;
  782. width: 180rpx;
  783. font-size: 28rpx;
  784. background: #f5f5f5;
  785. margin-left: 20rpx;
  786. }
  787. .picker-class image {
  788. width: 26rpx;
  789. height: 26rpx;
  790. }
  791. .block-box-content {
  792. display: flex;
  793. flex-direction: column;
  794. justify-content: center;
  795. align-items: center;
  796. font-size: 34rpx;
  797. border-radius: 10rpx;
  798. width: 46%;
  799. height: 140rpx;
  800. color: #fff;
  801. background-color:#F2F2F2;
  802. }
  803. .title-second {
  804. width: 100%;
  805. height: 60rpx;
  806. line-height: 60rpx;
  807. text-align: center;
  808. font-size: 30rpx;
  809. /* font-weight: 550; */
  810. }
  811. .pos-font {
  812. position: absolute;
  813. color: rgba(255, 255, 255, 0.8);
  814. font-size: 20rpx;
  815. text-align: center;
  816. width: 110rpx;
  817. font-weight: 600;
  818. }
  819. .font-size30 {
  820. font-size: 30rpx;
  821. }
  822. </style>