billboardJTList.vue 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. <template>
  2. <div class="ZTGlobal" style="height: 100%; width: 100%; padding: 5px">
  3. <el-container style="height: 100%">
  4. <el-header height="50px">
  5. <el-row :gutter="10" style="display: flex; align-items: center">
  6. <el-col :span="6">
  7. <el-button size="mini" type="primary" plain @click="addJTInfo"
  8. >添加截图</el-button
  9. >
  10. </el-col>
  11. <el-col :span="18">
  12. 添加位置截图时,系统将自动保存当前视角,请现将当前视角调整到合适为止
  13. </el-col>
  14. </el-row>
  15. </el-header>
  16. <el-main>
  17. <el-table
  18. :data="billboardModelJTList"
  19. style="width: 100%; border: 1px solid rgb(81 102 111 / 37%)"
  20. height="100%"
  21. v-loading="loading"
  22. element-loading-text="加载中"
  23. element-loading-spinner="el-icon-loading"
  24. element-loading-background="rgba(0, 0, 0, 0.8)"
  25. >
  26. <el-table-column prop="jtName" label="截图名称"> </el-table-column>
  27. <el-table-column label="操作">
  28. <template slot-scope="scope">
  29. <el-button
  30. @click="downloadimg(scope.row)"
  31. type="text"
  32. size="small"
  33. style="color: aqua"
  34. >下载</el-button
  35. >
  36. <el-button
  37. @click="updateZtBillboardJt(scope.row)"
  38. type="text"
  39. size="small"
  40. style="color: aqua"
  41. >修改名称</el-button
  42. >
  43. <el-button
  44. @click="deleteBillardJT(scope.row)"
  45. type="text"
  46. size="small"
  47. style="color: aqua"
  48. >删除</el-button
  49. >
  50. </template>
  51. </el-table-column>
  52. </el-table>
  53. </el-main>
  54. <el-footer height="50px">
  55. <!-- :hide-on-single-page="true" -->
  56. <el-pagination
  57. style="color: white"
  58. @size-change="handleSizeChange"
  59. @current-change="handleCurrentChange"
  60. :page-size="queryParams.pageSize"
  61. layout="prev, pager, next"
  62. :total="queryParams.total"
  63. >
  64. </el-pagination>
  65. </el-footer>
  66. </el-container>
  67. </div>
  68. </template>
  69. <script>
  70. import {
  71. listZtBillboardJt,
  72. addZtBillboardJt,
  73. updateZtBillboardJt,
  74. delZtBillboardJt,
  75. } from "@/api/zt/ztApi.js";
  76. import { v4 as uuidv4 } from "uuid";
  77. export default {
  78. data() {
  79. return {
  80. billboardModelJTList: [],
  81. loading: false,
  82. queryParams: {
  83. total: 0,
  84. pageNum: 1,
  85. pageSize: 5,
  86. },
  87. };
  88. },
  89. props: {
  90. info: {
  91. type: Object,
  92. default: () => {
  93. return {};
  94. },
  95. },
  96. layerid: {
  97. type: String,
  98. default: "",
  99. },
  100. lydata: {
  101. type: Object,
  102. default: () => {
  103. return {};
  104. },
  105. },
  106. lyoption: {
  107. type: Object,
  108. default: () => {
  109. return {};
  110. },
  111. },
  112. },
  113. mounted() {
  114. this.getZtBillboardJtList();
  115. },
  116. methods: {
  117. //页大小触发
  118. handleSizeChange(val) {
  119. this.queryParams.pageSize = val;
  120. this.queryParams.pageNum = 1;
  121. this.getZtBillboardJtList();
  122. },
  123. //跳转页触发
  124. handleCurrentChange(val) {
  125. this.queryParams.pageNum = val;
  126. this.getZtBillboardJtList();
  127. },
  128. /**
  129. * 获取广告截图信息
  130. */
  131. async getZtBillboardJtList() {
  132. debugger;
  133. this.loading = true;
  134. let dataList = await listZtBillboardJt({
  135. modelid: this.info.id,
  136. ...this.queryParams,
  137. });
  138. this.loading = false;
  139. this.queryParams.total = dataList.total;
  140. this.billboardModelJTList = dataList.rows;
  141. },
  142. /**
  143. * 添加截图
  144. */
  145. addJTInfo() {
  146. let that = this;
  147. debugger;
  148. var promise = scene.outputSceneToFile();
  149. Cesium.when(promise, function (base64data) {
  150. if (!that.info.id) {
  151. that.$message({
  152. message: "未读取到广告牌信息,请关闭窗口后重试",
  153. type: "warning",
  154. });
  155. return;
  156. }
  157. that
  158. .$prompt("请输入截图名称", "提示", {
  159. confirmButtonText: "确定",
  160. cancelButtonText: "取消",
  161. inputPattern: /\S/,
  162. inputErrorMessage: "请输入截图名称",
  163. })
  164. .then(async ({ value }) => {
  165. var form = { id: "", modelid: "", jtName: "", jtBase: "" };
  166. form.id = uuidv4();
  167. form.modelid = that.info.id;
  168. form.jtName = value;
  169. form.jtBase = base64data;
  170. let result = await addZtBillboardJt(form);
  171. if (result.code) {
  172. that.getZtBillboardJtList(that.info.id);
  173. that.$message({
  174. message: "添加成功",
  175. type: "success",
  176. });
  177. }
  178. })
  179. .catch(() => {});
  180. });
  181. },
  182. /**
  183. * 编辑截图名称
  184. */
  185. updateZtBillboardJt(row) {
  186. let that = this;
  187. this.$prompt("请输入截图名称", "提示", {
  188. confirmButtonText: "确定",
  189. cancelButtonText: "取消",
  190. inputPattern: /\S/,
  191. inputErrorMessage: "请输入截图名称",
  192. inputValue: row.jtName,
  193. })
  194. .then(async ({ value }) => {
  195. var form = { id: "", jtName: "" };
  196. form.id = row.id;
  197. form.jtName = value;
  198. let result = await updateZtBillboardJt(form);
  199. if (result.code) {
  200. that.getZtBillboardJtList(that.info.id);
  201. that.$message({
  202. message: "修改成功",
  203. type: "success",
  204. });
  205. }
  206. })
  207. .catch(() => {});
  208. },
  209. /*
  210. *删除广告牌
  211. */
  212. deleteBillardJT(model) {
  213. debugger;
  214. var that = this;
  215. var confirmid = that.$layer.confirm(
  216. "确定要删除当前截图, 是否继续?",
  217. {},
  218. async function () {
  219. that.$layer.close(confirmid);
  220. debugger;
  221. let result = await delZtBillboardJt(model.id);
  222. debugger;
  223. if (result.code == 200) {
  224. that.getZtBillboardJtList(that.info.id);
  225. that.$message({
  226. message: "删除成功",
  227. type: "success",
  228. });
  229. } else {
  230. that.getZtBillboardJtList(that.info.id);
  231. that.$message({
  232. message: "删除失败",
  233. type: "error",
  234. });
  235. }
  236. },
  237. function () {
  238. return;
  239. }
  240. );
  241. // var that = this;
  242. // this.$confirm("确定要删除当前截图, 是否继续?", "提示", {
  243. // confirmButtonText: "确定",
  244. // cancelButtonText: "取消",
  245. // type: "warning",
  246. // })
  247. // .then(async () => {
  248. // debugger;
  249. // let result = await delZtBillboardJt(model.id);
  250. // debugger;
  251. // if (result.code == 200) {
  252. // that.getZtBillboardJtList(that.info.id);
  253. // that.$message({
  254. // message: "删除成功",
  255. // type: "success",
  256. // });
  257. // }
  258. // })
  259. // .catch(() => {
  260. // debugger;
  261. // this.$message({
  262. // type: "info",
  263. // message: "已取消删除",
  264. // });
  265. // });
  266. },
  267. /**
  268. * 根据图片生成画布
  269. */
  270. convertImageToCanvas(image) {
  271. var canvas = document.createElement("canvas");
  272. canvas.width = image.width;
  273. canvas.height = image.height;
  274. canvas.getContext("2d").drawImage(image, 0, 0);
  275. return canvas;
  276. },
  277. /**
  278. * 下载图片
  279. */
  280. downloadimg(row) {
  281. let that = this;
  282. var image = new Image();
  283. image.src = row.jtBase;
  284. image.onload = function () {
  285. var canvas = that.convertImageToCanvas(image);
  286. var url = canvas.toDataURL("image/jpeg");
  287. var a = document.createElement("a");
  288. var event = new MouseEvent("click");
  289. a.download = new Date().getTime() + ".jpg"; // 指定下载图片的名称
  290. a.href = url;
  291. a.dispatchEvent(event); // 触发超链接的点击事件
  292. };
  293. },
  294. },
  295. };
  296. </script>
  297. <style lang="scss">
  298. @import "@/../../zt.scss";
  299. </style>
  300. <style scoped></style>