index_20190318173111.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. <template>
  2. <div class="project">
  3. <el-button type="primary" class="add" @click="append">增加项目</el-button>
  4. <el-card class="right-card">
  5. <el-table
  6. :data="projectData"
  7. style="width: 100%">
  8. <!--
  9. <el-table-column type="expand">
  10. <template slot-scope="props">
  11. <el-form label-position="left" inline class="demo-table-expand">
  12. <el-form-item label="项目名称">
  13. <span>{{ props.row.name }}</span>
  14. </el-form-item>
  15. <el-form-item label="项目 ID">
  16. <span>{{ props.row.id }}</span>
  17. </el-form-item>
  18. </el-form>
  19. </template>
  20. </el-table-column>
  21. -->
  22. <el-table-column
  23. label="项目编号"
  24. prop="code">
  25. </el-table-column>
  26. <el-table-column
  27. label="项目名称"
  28. prop="name">
  29. </el-table-column>
  30. <el-table-column label="操作" width="80">
  31. <template slot-scope="scope">
  32. <el-button
  33. size="mini"
  34. @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
  35. <!--
  36. <el-button
  37. size="mini"
  38. type="danger"
  39. @click="handleDelete(scope.$index, scope.row)">删除</el-button>
  40. -->
  41. </template>
  42. </el-table-column>
  43. </el-table>
  44. </el-card>
  45. <el-dialog title="新增项目" :visible.sync="dialogFormVisible">
  46. <el-form :model="form" ref="form">
  47. <el-form-item label="项目编码" prop="code" :label-width="formLabelWidth" :rules="[{ required: true, message: '编码不能为空'}]">
  48. <el-input v-model="form.code" autocomplete="off"></el-input>
  49. </el-form-item>
  50. <el-form-item label="项目名称" prop="name" :label-width="formLabelWidth" :rules="[{ required: true, message: '名称不能为空'}]">
  51. <el-input v-model="form.name" autocomplete="off"></el-input>
  52. </el-form-item>
  53. <!--
  54. <el-form-item label="项目状态" prop="status" :label-width="formLabelWidth" :rules="[{ required: true, message: '状态不能为空'}]">
  55. <el-select v-model="form.status" placeholder="请选择状态值">
  56. <el-option label="正常" value="NORMAL"></el-option>
  57. <el-option label="已删除" value="DEL"></el-option>
  58. </el-select>
  59. </el-form-item>
  60. -->
  61. <el-form-item label="项目排序" prop="sort" :label-width="formLabelWidth">
  62. <el-input v-model.number="form.sort" autocomplete="off"></el-input>
  63. </el-form-item>
  64. </el-form>
  65. <div slot="footer" class="dialog-footer">
  66. <el-button @click="resetForm('form')">取 消</el-button>
  67. <el-button type="primary" @click="submitForm('form')">确 定</el-button>
  68. </div>
  69. </el-dialog>
  70. </div>
  71. </template>
  72. <script scoped>
  73. import { getProjectList, addProject, setProject } from '@/api/projectApi'
  74. export default {
  75. data () {
  76. return {
  77. projectData: [],
  78. dialogFormVisible: false,
  79. addFlag: false,
  80. id: '',
  81. form: {
  82. code: '',
  83. name: '',
  84. status: 'NORMAL',
  85. sort: ''
  86. },
  87. formLabelWidth: '120px',
  88. index: ''
  89. }
  90. },
  91. created () {
  92. getProjectList().then(res => {
  93. console.log(res)
  94. this.projectData = res.data.data
  95. });
  96. },
  97. methods: {
  98. // 新增项目
  99. append() {
  100. this.addFlag = true;
  101. this.dialogFormVisible = true;
  102. },
  103. // 编辑项目
  104. handleEdit(index, row) {
  105. this.form.code = row.code;
  106. this.form.name = row.name;
  107. // this.form.status = row.status;
  108. this.form.sort = row.sort;
  109. this.id = row.id;
  110. this.index = index;
  111. this.dialogFormVisible = true;
  112. this.addFlag = false;
  113. },
  114. //删除项目
  115. // handleDelete(index, row) {
  116. // console.log(index, row);
  117. // setProject({
  118. // id: row.id,
  119. // status: 'DEL'
  120. // }).then(res => {
  121. // console.log(res);
  122. // })
  123. // },
  124. // 提交新增
  125. submitForm(formName) {
  126. //验证表单
  127. this.$refs[formName].validate((valid, value) => {
  128. if (valid) {
  129. console.log(this.form);
  130. if(this.addFlag) {
  131. addProject(this.form).then(res => {
  132. this.projectData.unshift(res.data.data)
  133. this.$refs[formName].resetFields();
  134. })
  135. } else {
  136. this.form.id = this.id;
  137. setProject(this.form).then(res => {
  138. console.log(res);
  139. console.log(this.index)
  140. this.projectData.splice(this.index, 1, res.data.data)
  141. this.$refs[formName].resetFields();
  142. })
  143. }
  144. this.dialogFormVisible = false;
  145. } else {
  146. return false;
  147. }
  148. });
  149. },
  150. // 取消
  151. resetForm (formName) {
  152. this.$refs[formName].resetFields();
  153. this.dialogFormVisible = false;
  154. }
  155. },
  156. }
  157. </script>
  158. <style scope>
  159. .project {
  160. padding: 20px;
  161. box-sizing: border-box;
  162. }
  163. .add {
  164. float: right;
  165. margin-bottom: 20px;
  166. }
  167. .right-card {
  168. width: 100%;
  169. margin: 0 auto;
  170. }
  171. .demo-table-expand {
  172. font-size: 0;
  173. }
  174. .demo-table-expand label {
  175. width: 90px;
  176. color: #99a9bf;
  177. }
  178. .demo-table-expand .el-form-item {
  179. margin-right: 0;
  180. margin-bottom: 0;
  181. width: 50%;
  182. }
  183. </style>