CASCI.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378
  1. <style lang="scss" scoped>
  2. </style>
  3. <template>
  4. <section>
  5. <p>CASCI数据统计</p>
  6. <div class="content">
  7. <div class="filter">
  8. <el-form
  9. size="small"
  10. label-width="70px"
  11. :inline="true"
  12. label-position="left"
  13. >
  14. <el-form-item label="">
  15. <el-input
  16. clearable
  17. placeholder="请输入信息标题"
  18. v-model="form.name"
  19. @clear="getData"
  20. ></el-input>
  21. </el-form-item>
  22. <el-form-item>
  23. <el-date-picker
  24. v-model="form.timerange"
  25. type="daterange"
  26. range-separator="至"
  27. start-placeholder="开始日期"
  28. end-placeholder="结束日期"
  29. value-format="yyyy-MM-dd"
  30. :picker-options="pickerOptions"
  31. >
  32. </el-date-picker>
  33. </el-form-item>
  34. <el-form-item>
  35. <el-button type="primary" @click="search">搜索</el-button>
  36. </el-form-item>
  37. <el-form-item style="float: right">
  38. <el-button
  39. @click="download"
  40. plain
  41. icon="el-icon-download"
  42. type="primary"
  43. >导出</el-button
  44. >
  45. </el-form-item>
  46. </el-form>
  47. </div>
  48. <el-table
  49. class="table"
  50. :data="list"
  51. height="57vh"
  52. border
  53. v-loading="loading"
  54. default-expand-all
  55. row-key="id"
  56. style="width: 100%"
  57. @sort-change="changeTableSort"
  58. >
  59. <el-table-column prop="rank" width="80" label="排名"> </el-table-column>
  60. <el-table-column prop="journal_img" label="期刊封面" width="120">
  61. <template slot-scope="scope">
  62. <img :src="scope.row.journal_img" alt="" width="80" style="margin: 5px" />
  63. </template>
  64. </el-table-column>
  65. <el-table-column prop="journal_name" label="期刊名称"> </el-table-column>
  66. <el-table-column prop="article_count" label="统计资源数量(总)" sortable="custom">
  67. </el-table-column>
  68. <el-table-column
  69. prop="article_count_mp"
  70. label="统计资源数量(公众号)"
  71. sortable="custom"
  72. >
  73. </el-table-column>
  74. <el-table-column
  75. prop="article_count_xcx"
  76. label="统计资源数量(小程序)"
  77. sortable="custom"
  78. >
  79. </el-table-column>
  80. <el-table-column prop="read_num" label="总阅读量(次))" sortable="custom">
  81. </el-table-column>
  82. <el-table-column
  83. prop="read_num_mp"
  84. label="公众号阅读量(次)"
  85. sortable="custom"
  86. >
  87. </el-table-column>
  88. <el-table-column
  89. prop="read_num_xcx"
  90. label="小程序阅读量(次)"
  91. sortable="custom"
  92. >
  93. </el-table-column>
  94. <el-table-column prop="zhuanfa_num" label="总转发量量(次)" sortable="custom">
  95. </el-table-column>
  96. <el-table-column
  97. prop="zhuanfa_num_mp"
  98. label="公众号转发量(次)"
  99. sortable="custom"
  100. >
  101. </el-table-column>
  102. <el-table-column
  103. prop="zhuanfa_num_xcx"
  104. label="小程序转发量(次)"
  105. sortable="custom"
  106. >
  107. </el-table-column>
  108. <el-table-column prop="casci" label="CASCI" sortable="custom">
  109. </el-table-column>
  110. <el-table-column
  111. prop="zip"
  112. width="150"
  113. align="center"
  114. label="操作"
  115. fixed="right"
  116. >
  117. <template slot-scope="scope">
  118. <el-button type="text" @click="showCASCI(scope.row)"
  119. >查看</el-button
  120. >
  121. </template>
  122. </el-table-column>
  123. </el-table>
  124. <Page
  125. ref="pageButton"
  126. :current="form.page"
  127. :page_size="form.page_size"
  128. :total="total"
  129. @pageChange="gopage"
  130. />
  131. <!--二维码上传-->
  132. <el-dialog
  133. class="fu-dialog"
  134. :title="dialogTitle"
  135. :close-on-click-modal="false"
  136. :visible.sync="dialogVisible"
  137. >
  138. <el-form
  139. size="small"
  140. class="preview"
  141. :inline="false"
  142. label-width="100px"
  143. :model="form1"
  144. ref="form1"
  145. >
  146. <el-form-item label="上传二维码:" prop="img">
  147. <el-upload
  148. class="avatar-uploader"
  149. action="/api/admin/uploadfile"
  150. :show-file-list="false"
  151. :on-success="handleAvatarSuccess"
  152. >
  153. <img v-if="form1.qrcode" :src="form1.qrcode" class="avatar" />
  154. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  155. </el-upload>
  156. <p v-if="form1.qrcode" class="del" @click="delImg">删除</p>
  157. <!-- <span style="font-size: 12px; color: #999999"
  158. >建议图片尺寸为:210*160</span
  159. > -->
  160. </el-form-item>
  161. </el-form>
  162. <span slot="footer" class="dialog-footer">
  163. <el-button
  164. size="small"
  165. type="normal"
  166. @click="(dialogVisible = false), (form1 = {})"
  167. >取消</el-button
  168. >
  169. <el-button size="small" type="primary" @click="save">确 定</el-button>
  170. </span>
  171. </el-dialog>
  172. <el-dialog
  173. class="fu-dialog"
  174. title="导入期刊"
  175. width="400px"
  176. :close-on-click-modal="false"
  177. :visible.sync="dialogVisible1"
  178. >
  179. <el-upload
  180. class="upload-demo"
  181. action="/api/admin/uploadfile"
  182. :show-file-list="false"
  183. :on-success="handleAvatarSuccess1"
  184. >
  185. <el-button size="small" type="primary">点击上传</el-button>
  186. <div slot="tip" class="el-upload__tip">
  187. 只能上传.xls/.xlsx文件,且不超过500M
  188. </div>
  189. </el-upload>
  190. <div>{{ file }}</div>
  191. <span slot="footer" class="dialog-footer">
  192. <el-button size="small" type="normal" @click="dialogVisible1 = false"
  193. >取消</el-button
  194. >
  195. <el-button size="small" type="primary" @click="upload"
  196. >确 定</el-button
  197. >
  198. </span>
  199. </el-dialog>
  200. </div>
  201. </section>
  202. </template>
  203. <script>
  204. import Page from "../../components/Page";
  205. export default {
  206. components: {
  207. Page,
  208. },
  209. data() {
  210. return {
  211. // edit:0,
  212. form: {
  213. name: "",
  214. page: 1,
  215. page_size: 20,
  216. date: "day",
  217. timerange: [
  218. new Date(new Date()-1000*60*60*24).toLocaleDateString().split("/").join("-"),
  219. new Date(new Date()-1000*60*60*24).toLocaleDateString().split("/").join("-"),
  220. ],
  221. },
  222. total: 1,
  223. list: [{ name: "2333" }],
  224. loading: false,
  225. input: "",
  226. dialogVisible: false,
  227. dialogTitle: "",
  228. dialogVisible1: false,
  229. form1: { qrcode: "" },
  230. file: "",
  231. pickerOptions:{
  232. disabledDate:(time)=>{
  233. return time.getTime() > new Date()-1000*60*60*24;
  234. }
  235. }
  236. };
  237. },
  238. methods: {
  239. changeTableSort(e) {
  240. let parm = { order_by: e.prop, order: e.order };
  241. console.log(parm);
  242. },
  243. delImg() {
  244. this.$set(this.form1, "qrcode", null);
  245. this.$forceUpdate();
  246. },
  247. save() {
  248. this.$refs["form1"].validate((valid) => {
  249. if (valid) {
  250. let parm = this.form1;
  251. let id = this.form1.id;
  252. this.$api.updateJournal(parm).then((res) => {
  253. if (res.data.code == 0) {
  254. this.$message({
  255. type: "success",
  256. message: "上传成功!",
  257. });
  258. this.dialogVisible = false;
  259. this.getData();
  260. } else {
  261. this.$message.error("上传失败!");
  262. }
  263. });
  264. }
  265. });
  266. },
  267. upload() {
  268. this.$api.upJournalData({ file: this.file }).then((res) => {
  269. this.dialogVisible1 = false;
  270. this.getData();
  271. this.$message({
  272. message: "上传成功",
  273. type: "success",
  274. });
  275. });
  276. },
  277. download() {
  278. this.$api.getJournalData().then((res) => {
  279. var elink = document.createElement("a");
  280. let blob = new Blob([res.data], {
  281. type: "application/vnd.ms-excel,charset=UTF-8",
  282. });
  283. let objUrl = URL.createObjectURL(blob);
  284. let file_name = decodeURIComponent(
  285. res.headers["content-disposition"].split("=")[1]
  286. );
  287. console.log(file_name);
  288. elink.download = file_name;
  289. elink.style.display = "none";
  290. elink.href = objUrl;
  291. document.body.appendChild(elink);
  292. elink.click();
  293. document.body.removeChild(elink);
  294. });
  295. },
  296. showQrcode(row) {
  297. // this.form1.journal_id = row.id;
  298. this.form1.id = row.id;
  299. this.form1.qrcode = row.qrcode;
  300. this.dialogVisible = true;
  301. },
  302. showCASCI(row) {
  303. this.$router.push({
  304. path: "/journal/casci/detail",
  305. query: { id: row.journal_id },
  306. });
  307. },
  308. //封面
  309. handleAvatarSuccess(res, file) {
  310. // this.form1.qrcode=file.response.data
  311. this.$set(this.form1, "qrcode", file.response.data);
  312. },
  313. handleAvatarSuccess1(res, file) {
  314. this.file = file.response.data;
  315. },
  316. gopage(size) {
  317. if (size) {
  318. this.form.page_size = size;
  319. }
  320. this.form.page = this.$refs.pageButton.page;
  321. this.getData();
  322. },
  323. edit(row) {
  324. this.$router.push({
  325. path: "/journal/journal/add",
  326. query: { id: row.id },
  327. });
  328. },
  329. add() {
  330. this.$router.push({ path: "/journal/journal/add" });
  331. },
  332. detail(id) {
  333. this.$router.push({
  334. path: "/company/detail",
  335. query: { id: id, page: this.form.page, page_size: this.form.page_size },
  336. });
  337. },
  338. search() {
  339. this.getData();
  340. },
  341. getData() {
  342. // var parm = this.form;
  343. var parm = {...this.form};
  344. parm.timerange = parm.timerange.join(",")
  345. this.loading = true;
  346. this.$api.getCASCIList(parm).then((res) => {
  347. this.list = res.data.data.list;
  348. this.total = res.data.data.total;
  349. this.loading = false;
  350. });
  351. },
  352. del(id) {
  353. this.$confirm("确定删除吗?关联数据都会被删除!", "提示", {
  354. type: "warning",
  355. }).then(() => {
  356. this.$api.delJournal({ id: id }).then((res) => {
  357. this.$message({
  358. message: "删除成功",
  359. type: "success",
  360. });
  361. this.getData();
  362. });
  363. });
  364. },
  365. },
  366. created() {
  367. this.getData();
  368. },
  369. beforeRouteEnter(to, from, next) {
  370. next((vm) => {
  371. if (from.path.indexOf("add") >= 0) {
  372. vm.getData();
  373. }
  374. });
  375. },
  376. };
  377. </script>