Index.vue 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <template>
  2. <div class="hello">
  3. <Header> </Header>
  4. <el-container>
  5. <el-card class="center-card">
  6. <el-button type="text" class="add-cat" @click="addTeam">{{$t('add_team')}}</el-button>
  7. <el-button type="text" class="goback-btn" @click="goback">{{$t('goback')}}</el-button>
  8. <el-table align="left"
  9. :empty-text="$t('empty_team_tips')"
  10. :data="list"
  11. height="400"
  12. style="width: 100%">
  13. <el-table-column
  14. prop="team_name"
  15. :label="$t('team_name')"
  16. >
  17. </el-table-column>
  18. <el-table-column
  19. prop="memberCount"
  20. :label="$t('memberCount')"
  21. >
  22. <template slot-scope="scope">
  23. <router-link :to="'/team/member/'+scope.row.id" >{{scope.row.memberCount}}</router-link>
  24. </template>
  25. </el-table-column>
  26. <el-table-column
  27. prop="itemCount"
  28. :label="$t('itemCount')">
  29. <template slot-scope="scope">
  30. <router-link :to="'/team/item/'+scope.row.id" >{{scope.row.itemCount}}</router-link>
  31. </template>
  32. </el-table-column>
  33. <el-table-column
  34. prop=""
  35. :label="$t('operation')">
  36. <template slot-scope="scope">
  37. <el-button @click="$router.push({path:'/team/member/'+scope.row.id})" type="text" size="small">{{$t('member')}}</el-button>
  38. <el-button @click="$router.push({path:'/team/item/'+scope.row.id})" type="text" size="small">{{$t('team_item')}}</el-button>
  39. <el-button @click="edit(scope.row)" type="text" size="small">{{$t('edit')}}</el-button>
  40. <br>
  41. <el-button @click="attornDialog(scope.row)" type="text" size="small">{{$t('attorn')}}</el-button>
  42. <el-button @click="deleteTeam(scope.row.id)" type="text" size="small">{{$t('delete')}}</el-button>
  43. </template>
  44. </el-table-column>
  45. </el-table>
  46. </el-card>
  47. <el-dialog :visible.sync="dialogFormVisible" width="300px" :close-on-click-modal="false">
  48. <el-form >
  49. <el-form-item :label="$t('team_name')+':'" >
  50. <el-input v-model="MyForm.team_name"></el-input>
  51. </el-form-item>
  52. </el-form>
  53. <div slot="footer" class="dialog-footer">
  54. <el-button @click="dialogFormVisible = false">{{$t('cancel')}}</el-button>
  55. <el-button type="primary" @click="MyFormSubmit" >{{$t('confirm')}}</el-button>
  56. </div>
  57. </el-dialog>
  58. <el-dialog :visible.sync="dialogAttornVisible" :modal="false" width="300px" :close-on-click-modal="false" >
  59. <el-form >
  60. <el-form-item label="" >
  61. <el-input :placeholder="$t('attorn_username')" auto-complete="new-password" v-model="attornForm.username"></el-input>
  62. </el-form-item>
  63. <el-form-item label="" >
  64. <el-input type="password" auto-complete="new-password" :placeholder="$t('input_login_password')" v-model="attornForm.password" ></el-input>
  65. </el-form-item>
  66. </el-form>
  67. <p class="tips">
  68. {{$t('attornTeamTips')}}
  69. </p>
  70. <div slot="footer" class="dialog-footer">
  71. <el-button @click="dialogAttornVisible = false">{{$t('cancel')}}</el-button>
  72. <el-button type="primary" @click="attorn" >{{$t('attorn')}}</el-button>
  73. </div>
  74. </el-dialog>
  75. </el-container>
  76. <Footer> </Footer>
  77. </div>
  78. </template>
  79. <script>
  80. export default {
  81. components : {
  82. },
  83. data () {
  84. return {
  85. MyForm:{
  86. id:'',
  87. team_name:''
  88. },
  89. list:[],
  90. dialogFormVisible:false,
  91. dialogMemberVisible:false,
  92. dialogAttornVisible:false,
  93. attornForm :{
  94. team_id:'',
  95. username:'',
  96. password:''
  97. }
  98. }
  99. },
  100. methods: {
  101. geList(){
  102. var that = this ;
  103. var url = DocConfig.server+'/api/team/getList';
  104. var params = new URLSearchParams();
  105. that.axios.post(url, params)
  106. .then(function (response) {
  107. if (response.data.error_code === 0 ) {
  108. var Info = response.data.data ;
  109. that.list = Info;
  110. }else{
  111. that.$alert(response.data.error_message);
  112. }
  113. });
  114. },
  115. MyFormSubmit() {
  116. var that = this ;
  117. var url = DocConfig.server+'/api/team/save';
  118. var params = new URLSearchParams();
  119. params.append('id', this.MyForm.id);
  120. params.append('team_name', this.MyForm.team_name);
  121. that.axios.post(url, params)
  122. .then(function (response) {
  123. if (response.data.error_code === 0 ) {
  124. that.dialogFormVisible = false;
  125. that.geList() ;
  126. that.MyForm = {
  127. id:'',
  128. team_name:''
  129. };
  130. }else{
  131. that.$alert(response.data.error_message);
  132. }
  133. });
  134. },
  135. edit(row){
  136. this.MyForm.id = row.id;
  137. this.MyForm.team_name = row.team_name;
  138. this.dialogFormVisible = true;
  139. },
  140. deleteTeam(id){
  141. var that = this ;
  142. var url = DocConfig.server+'/api/team/delete';
  143. this.$confirm(that.$t('confirm_delete'), ' ', {
  144. confirmButtonText: that.$t('confirm'),
  145. cancelButtonText: that.$t('cancel'),
  146. type: 'warning'
  147. }).then(() => {
  148. var params = new URLSearchParams();
  149. params.append('id', id);
  150. that.axios.post(url, params)
  151. .then(function (response) {
  152. if (response.data.error_code === 0 ) {
  153. that.geList() ;
  154. }else{
  155. that.$alert(response.data.error_message);
  156. }
  157. });
  158. })
  159. },
  160. addTeam(){
  161. this.MyForm = {
  162. id:'',
  163. team_name:''
  164. } ;
  165. this.dialogFormVisible = true;
  166. },
  167. goback(){
  168. this.$router.push({path:"/item/index"})
  169. },
  170. attornDialog(row){
  171. this.attornForm.team_id = row.id;
  172. this.dialogAttornVisible = true ;
  173. },
  174. attorn(){
  175. var that = this ;
  176. var url = DocConfig.server+'/api/team/attorn';
  177. var params = new URLSearchParams();
  178. params.append('team_id', this.attornForm.team_id);
  179. params.append('username', this.attornForm.username);
  180. params.append('password',this.attornForm.password );
  181. that.axios.post(url, params)
  182. .then(function (response) {
  183. if (response.data.error_code === 0 ) {
  184. that.dialogAttornVisible = false;
  185. that.geList();
  186. }else{
  187. that.$alert(response.data.error_message);
  188. }
  189. });
  190. }
  191. },
  192. mounted(){
  193. this.geList();
  194. },
  195. beforeDestroy(){
  196. }
  197. }
  198. </script>
  199. <!-- Add "scoped" attribute to limit CSS to this component only -->
  200. <style scoped>
  201. .hello{
  202. text-align: left;
  203. }
  204. .add-cat{
  205. margin-left: 10px;
  206. }
  207. .center-card{
  208. text-align: left;
  209. width: 800px;
  210. height: 600px;
  211. }
  212. .goback-btn{
  213. z-index: 999;
  214. margin-left: 600px;
  215. }
  216. </style>
  217. <!-- 全局css -->
  218. <style >
  219. .el-table .success-row {
  220. background: #f0f9eb;
  221. }
  222. .el-table__empty-text{
  223. text-align: left;
  224. line-height: 30px !important;
  225. margin-top: 20px;
  226. }
  227. </style>