Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2018
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.58 KB | None | 0 0
  1. <!--suppress ALL -->
  2. <template>
  3. <div class="app-container">
  4. <div class="filter-container">
  5. <el-form>
  6. <el-form-item>
  7. <el-button type="primary" icon="plus" @click="showCreate" v-if="hasPerm('reporter:add')">Create</el-button>
  8. </el-form-item>
  9. </el-form>
  10. </div>
  11. <el-table :data="list"
  12. v-loading.body="listLoading"
  13. element-loading-text="loading"
  14. border fit
  15. highlight-current-row>
  16. <el-table-column align="center" label="No" width="80">
  17. <template slot-scope="scope">
  18. <span v-text="getIndex(scope.$index)"> </span>
  19. </template>
  20. </el-table-column>
  21. <el-table-column align="center" label="Name Reporter" prop="nameReporter" style="width: 60px;" ></el-table-column>
  22. <el-table-column align="center" label="Date Reporter" prop="date" style="width: 60px;"></el-table-column>
  23. <el-table-column align="center" label="Name Tools" prop="host_name" style="width: 60px;"></el-table-column>
  24. <el-table-column align="center" label="Problems" prop="description" style="width: 60px;"></el-table-column>
  25. <el-table-column align="center" label="Confirm" style="width: 60px;">
  26. <template slot-scope="scope">
  27. <el-tag type="danger" v-if="scope.row.confirm===1">has not been confirmed</el-tag>
  28. <el-tag type="success" v-else>has confirmed</el-tag>
  29. </template>
  30. </el-table-column>
  31. <el-table-column align="center" label="Action" width="220" v-if="hasPerm('reporter:update')">
  32. <template slot-scope="scope">
  33. <el-button type="primary" icon="edit" @click="showUpdate(scope.$index)">Edit</el-button>
  34. <!--<router-link to="/master/tools" tag="button" type="primary" icon="edit">foo</router-link>-->
  35. </template>
  36. </el-table-column>
  37. </el-table>
  38. <el-pagination
  39. @size-change="handleSizeChange"
  40. @current-change="handleCurrentChange"
  41. :current-page="listQuery.pageNum"
  42. :page-size="listQuery.pageRow"
  43. :total="totalCount"
  44. :page-sizes="[10, 20, 50, 100]"
  45. layout="total, sizes, prev, pager, next, jumper">
  46. </el-pagination>
  47. <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible">
  48. <el-form class="small-space" :model="tempReporter" label-position="left" label-width="120px"
  49. style='width: 300px; margin-left:50px;'>
  50. <el-form-item label="Name Reporter" required>
  51. <el-input type="text" v-model="tempReporter.name">
  52. </el-input>
  53. </el-form-item>
  54. <el-form-item label="Date Report" style="width: 400px;" required>
  55. <el-date-picker type="datetime" format="yyyy/MM/dd HH:mm:ss"
  56. value-format="yyyy-MM-dd HH:mm:ss" v-model="tempReporter.dateReport"></el-date-picker>
  57. </el-form-item>
  58. <el-form-item label="Tools Name" style="width: 400px;" required>
  59. <el-select v-model="tempReporter.toolsId" placeholder="please choose">
  60. <el-option
  61. v-for="item in tools"
  62. :key="item.tools_id"
  63. :label="item.host_name"
  64. :value="item.id">
  65. </el-option>
  66. </el-select>
  67. </el-form-item>
  68. <el-form-item label="Problems " style="width: 400px;" required>
  69. <el-select v-model="tempReporter.problemsId" placeholder="please choose" onchange="">
  70. <el-option
  71. v-for="item in problems"
  72. :key="item.id"
  73. :label="item.description"
  74. :value="item.id">
  75. </el-option>
  76. </el-select>
  77. </el-form-item>
  78. <el-form-item label="Screen Shot Problem">
  79. <el-upload
  80. class="upload-demo"
  81. action="http://localhost:8080/uploadImage/upload"
  82. :show-file-list="false"
  83. :on-success="handleAvatarSuccess"
  84. list-type="picture">
  85. <img v-if="tempReporter.avatar" :src="tempReporter.avatar" class="avatar">
  86. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  87. </el-upload>
  88. </el-form-item>
  89. <el-form-item
  90. prop="email"
  91. label="Email"
  92. :rules="
  93. [{ required: true, message: 'Please input email address', trigger: 'blur' },
  94. { type: 'email', message: 'Please input correct email address', trigger: 'blur,change' }]">
  95. <el-input v-model="tempReporter.carbon"></el-input>
  96. </el-form-item>
  97.  
  98. </el-form>
  99. <div slot="footer" class="dialog-footer">
  100. <el-button @click="dialogFormVisible = false">Cancel</el-button>
  101. <el-button v-if="dialogStatus=='create'" type="success" @click=" createReporter(); sendEmail();">Create</el-button>
  102. <el-button type="primary" v-else @click="updateReporter(); sendEmail();">Modify</el-button>
  103. </div>
  104. </el-dialog>
  105. </div>
  106. </template>
  107.  
  108. <style>
  109. .avatar-uploader .el-upload {
  110. border: 1px dashed #d9d9d9;
  111. border-radius: 6px;
  112. cursor: pointer;
  113. position: relative;
  114. overflow: hidden;
  115. }
  116. .avatar-uploader .el-upload:hover {
  117. border-color: #409EFF;
  118. }
  119. .avatar-uploader-icon {
  120. font-size: 28px;
  121. color: #8c939d;
  122. width: 178px;
  123. height: 178px;
  124. line-height: 178px;
  125. text-align: center;
  126. }
  127. .avatar {
  128. width: 178px;
  129. height: 178px;
  130. display: block;
  131. }
  132. </style>
  133. <script>
  134. export default {
  135. data() {
  136. return {
  137. totalCount: 0,
  138. list: [],
  139. listLoading: false,
  140. listQuery: {
  141. pageNum: 1,
  142. pageRow: 50,
  143. name: ''
  144. },
  145. tools: [],
  146. problems:'',
  147.  
  148. dialogStatus: 'create',
  149. dialogFormVisible: false,
  150. textMap: {
  151. update: 'Update Reporter',
  152. create: 'Create Reporter'
  153. },
  154. tempReporter: {
  155. name: '',
  156. dateReport:'',
  157. toolsId:'',
  158. problemsId:'',
  159. confirm:'',
  160. avatar:'',
  161. carbon:'',
  162. desc:''
  163. }
  164. }
  165. },
  166. created() {
  167. this.tempReporter.problemsDesc = this.problems.find(el => el.id===this.tempReporter.problemsId)
  168. this.getList();
  169. if (this.hasPerm('reporter:add') || this.hasPerm('reporter:update')) {
  170. this.getAllTools();
  171. this.getAllProblems();
  172. }
  173. },
  174. methods: {
  175. getList() {
  176. if (!this.hasPerm('reporter:list')) {
  177. return
  178. }
  179. this.listLoading = true;
  180. this.api({
  181. url: "/reporter/listReporter",
  182. method: "get",
  183. params: this.listQuery
  184. }).then(data => {
  185. this.listLoading = false;
  186. this.list = data.list;
  187. this.totalCount = data.totalCount;
  188. })
  189. },
  190. getAllTools() {
  191. this.api({
  192. url: "/quality/listTools",
  193. method: "get"
  194. }).then(data => {
  195. this.tools = data.list;
  196. })
  197. },
  198. getAllProblems() {
  199. this.api({
  200. url: "/problems/listProblems",
  201. method: "get"
  202. }).then(data => {
  203. this.problems = data.list;
  204. })
  205. },
  206. handleSizeChange(val) {
  207. //改变每页数量
  208. this.listQuery.pageRow = val
  209. this.handleFilter();
  210. },
  211. handleCurrentChange(val) {
  212. //改变页码
  213. this.listQuery.pageNum = val
  214. this.getList();
  215. },
  216. getIndex($index) {
  217. //表格序号
  218. return (this.listQuery.pageNum - 1) * this.listQuery.pageRow + $index + 1
  219. },
  220. handleRemove(file, fileList) {
  221. console.log(file, fileList);
  222. },
  223. handlePreview(file) {
  224. console.log(file);
  225. },
  226. handleAvatarSuccess(res,file){
  227. let url = res.returnData.fileName;
  228. this.tempReporter.avatar = url;
  229. },
  230.  
  231. showCreate() {
  232. this.tempReporter.name = "";
  233. this.tempReporter.dateReport = "";
  234. this.tempReporter.toolsId = "";
  235. this.tempReporter.problemsId = "";
  236. this.tempReporter.avatar="";
  237. this.tempReporter.carbon="";
  238.  
  239. this.tempReporter.confirm = '1';
  240. this.dialogStatus = "create"
  241. this.dialogFormVisible = true
  242. },
  243. showUpdate($index) {
  244. let reporter = this.list[$index];
  245. this.tempReporter.id = this.list[$index].id;
  246. this.tempReporter.name = reporter.nameReporter;
  247. this.tempReporter.dateReport = reporter.date;
  248. this.tempReporter.toolsId = reporter.tools_id;
  249. this.tempReporter.problemsId = reporter.problems_id;
  250. this.tempReporter.avatar = reporter.imageUrl;
  251. this.tempReporter.carbon = "";
  252. this.tempReporter.confirm = '2';
  253. this.dialogStatus = "update"
  254. this.dialogFormVisible = true
  255. },
  256.  
  257. createReporter() {
  258. this.api({
  259. url: "/reporter/addReporter",
  260. method: "post",
  261. data: this.tempReporter
  262. }).then(() => {
  263. this.getList();
  264. this.dialogFormVisible = false
  265. })
  266. },
  267.  
  268. updateReporter() {
  269. this.api({
  270. url: "/reporter/updateReporter",
  271. method: "post",
  272. data: this.tempReporter
  273. }).then(() => {
  274. this.getList();
  275. this.dialogFormVisible = false
  276. })
  277. },
  278. sendEmail() {
  279. this.api({
  280. url: "/email/sendEmail",
  281. method: "post",
  282. data: this.tempReporter
  283. }).then(() => {
  284. this.getList();
  285. this.dialogFormVisible = false
  286. })
  287. },
  288. }
  289. }
  290. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement