HelloWorld.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. <template>
  2. <el-form
  3. ref="ruleForm"
  4. :model="ruleForm"
  5. :rules="rules"
  6. label-width="120px"
  7. class="demo-ruleForm"
  8. >
  9. <el-form-item label="webhook 地址" prop="webhook">
  10. <el-input v-model="ruleForm.webhook" disabled></el-input>
  11. </el-form-item>
  12. <el-form-item label="项目" prop="selected_project">
  13. <el-select v-model="ruleForm.selected_project" placeholder="项目">
  14. <el-option
  15. v-for="item in ruleForm.project"
  16. :label="item.label"
  17. :value="item.value"
  18. @click="changeProject(item.page,item.label)"
  19. ></el-option>
  20. </el-select>
  21. </el-form-item>
  22. <el-form-item label="页面" prop="selected_page">
  23. <el-select v-model="ruleForm.selected_page" placeholder="页面">
  24. <el-option
  25. v-for="item in ruleForm.page"
  26. :label="item.name"
  27. :value="item.value"
  28. ></el-option>
  29. </el-select>
  30. </el-form-item>
  31. <el-form-item label="分支" prop="selected_branch">
  32. <el-select
  33. v-model="ruleForm.selected_branch"
  34. placeholder="分支"
  35. filterable
  36. >
  37. <el-option
  38. v-for="item in ruleForm.branch"
  39. :label="item"
  40. :value="item"
  41. ></el-option>
  42. </el-select>
  43. </el-form-item>
  44. <el-form-item label="环境" prop="selected_mode">
  45. <el-select v-model="ruleForm.selected_mode" placeholder="环境">
  46. <el-option
  47. v-for="item in ruleForm.mode"
  48. :label="item.label"
  49. :value="item.value"
  50. @click="clickMode(item.label)"
  51. ></el-option>
  52. </el-select>
  53. </el-form-item>
  54. <el-form-item>
  55. <el-button
  56. type="primary"
  57. :loading="loading"
  58. @click="submitForm('ruleForm')"
  59. >发送飞书</el-button
  60. >
  61. </el-form-item>
  62. </el-form>
  63. </template>
  64. <script>
  65. import axios from "axios";
  66. export default {
  67. data() {
  68. return {
  69. url:'192.168.80.253:7777',
  70. // url:'http://192.168.80.185:7777',
  71. loading: false,
  72. ruleForm: {
  73. webhook:
  74. "https://open.feishu.cn/open-apis/bot/v2/hook/a924b6a5-86ef-4c76-a7e4-eb42056f70cc",
  75. region: "",
  76. resource: "",
  77. desc: "",
  78. selected_project: "",
  79. selected_branch: "",
  80. selected_mode: "",
  81. selected_page: "",
  82. project_name: "",
  83. mode_name: "",
  84. page: [],
  85. mode: [
  86. {
  87. label: "正式",
  88. value: "PRODUCTION",
  89. },
  90. {
  91. label: "预发布",
  92. value: "PRE",
  93. },
  94. {
  95. label: "测试",
  96. value: "TEST",
  97. },
  98. ],
  99. branch: [],
  100. project: [
  101. {
  102. label: "票圈vlog",
  103. value: "vlog",
  104. page: [
  105. {
  106. name: "首页",
  107. value: "pages/category",
  108. },
  109. {
  110. name: "资源传输",
  111. value:
  112. "package-clip-tool/resource-transport/resource-transport",
  113. },
  114. ],
  115. },
  116. {
  117. value: "video",
  118. label: "票圈video",
  119. page: [
  120. {
  121. name: "首页",
  122. value: "pages/category",
  123. },
  124. {
  125. name: "资源传输",
  126. value:
  127. "package-clip-tool/resource-transport/resource-transport",
  128. },
  129. ],
  130. },
  131. {
  132. value: "shortVideo",
  133. label: "票圈短视频",
  134. page: [
  135. {
  136. name: "首页",
  137. value: "pages/category",
  138. },
  139. {
  140. name: "资源传输",
  141. value:
  142. "package-clip-tool/resource-transport/resource-transport",
  143. },
  144. ],
  145. },
  146. {
  147. value: "longVideo",
  148. label: "票圈长视频",
  149. page: [
  150. {
  151. name: "首页",
  152. value: "pages/category",
  153. },
  154. {
  155. name: "资源传输",
  156. value:
  157. "package-clip-tool/resource-transport/resource-transport",
  158. },
  159. ],
  160. },
  161. {
  162. value: "flashSound",
  163. label: "闪音卡点",
  164. page: [
  165. {
  166. name: "首页",
  167. value: "pages/post/post",
  168. },
  169. ],
  170. },
  171. {
  172. value: "gaoxiao",
  173. label: "智能剪辑",
  174. page: [
  175. {
  176. name: "首页",
  177. value: "pages/post/post",
  178. },
  179. ],
  180. },
  181. {
  182. value: "happyStar",
  183. label: "票圈剪辑",
  184. page: [
  185. {
  186. name: "首页",
  187. value: "pages/post/post",
  188. },
  189. ],
  190. },
  191. ],
  192. },
  193. rules: {
  194. webhook: [
  195. {
  196. required: true,
  197. message: "WebHook不能为空",
  198. },
  199. ],
  200. selected_project: [
  201. {
  202. required: true,
  203. message: "不能为空",
  204. },
  205. ],
  206. selected_page: [
  207. {
  208. required: true,
  209. message: "不能为空",
  210. },
  211. ],
  212. selected_mode: [
  213. {
  214. required: true,
  215. message: "不能为空",
  216. },
  217. ],
  218. selected_branch: [
  219. {
  220. required: true,
  221. message: "不能为空",
  222. },
  223. ],
  224. },
  225. };
  226. },
  227. mounted() {
  228. this.getBranchpage();
  229. },
  230. methods: {
  231. changeProject(item,val) {
  232. this.ruleForm.page = item;
  233. this.ruleForm.selected_page = item[0].value;
  234. this.ruleForm.project_name = val;
  235. },
  236. clickMode(val) {
  237. this.ruleForm.mode_name = val;
  238. },
  239. // 获取分支
  240. getBranchpage() {
  241. axios.get(this.url+"/getBranch").then((res) => {
  242. res = res.data;
  243. if (res.code == 0) {
  244. this.ruleForm.branch = res.data;
  245. }
  246. });
  247. },
  248. submitForm(formName) {
  249. this.$refs[formName].validate((valid) => {
  250. if (valid) {
  251. this.loading = true;
  252. axios
  253. .post(this.url+"/send", {
  254. project: this.ruleForm.selected_project,
  255. webhook: this.ruleForm.webhook,
  256. mode: this.ruleForm.selected_mode,
  257. page: this.ruleForm.selected_page,
  258. branch: this.ruleForm.selected_branch,
  259. project_name: this.ruleForm.project_name,
  260. mode_name: this.ruleForm.mode_name,
  261. })
  262. .then((res) => {
  263. res = res.data;
  264. if (res.code == 0) {
  265. alert("发送成功");
  266. } else {
  267. alert(res.msg);
  268. }
  269. this.loading = false;
  270. })
  271. .error(() => {
  272. alert("网络错误");
  273. this.loading = false;
  274. });
  275. } else {
  276. console.log("error submit!!");
  277. return false;
  278. }
  279. });
  280. },
  281. },
  282. };
  283. </script>