华西海圻ELN前端工程
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

167 lines
4.8 KiB

  1. <template>
  2. <div class="content-edit">
  3. <div class="edit-top">
  4. <div class="left-top">
  5. <img src="@/assets/images/back.png" @click="cancel()" />
  6. <div class="left-title">{{$t('page.business.study.study.create')}}</div>
  7. </div>
  8. <div class="right-top">
  9. <el-button @click="cancel()">{{$t('page.business.study.study.cancel')}}</el-button>
  10. <el-button type="primary" @click="save(1)" plain>{{$t('page.business.study.study.save')}}</el-button>
  11. <el-button type="primary" @click="save(3)">{{$t('page.business.study.study.submit')}}</el-button>
  12. </div>
  13. </div>
  14. <div class="edit-content">
  15. <el-form ref="infoDialogForm" :model="infoDialog.formData" :rules="infoDialog.rules" label-width="150px" class="edit-form">
  16. <el-row>
  17. <el-col :span="24">
  18. <el-form-item :label="$t('page.business.study.study.name')+':'" prop="name">
  19. <el-input v-model="infoDialog.formData.name" :placeholder="$t('form.placeholderInput')" maxlength="100" />
  20. </el-form-item>
  21. </el-col>
  22. <el-col :span="24">
  23. <el-form-item :label="$t('page.business.study.study.sn')+':'" prop="sn">
  24. <el-input v-model="infoDialog.formData.sn" :placeholder="$t('form.placeholderInput')" maxlength="100" :readonly="this.infoDialog.formData.id!=''" />
  25. </el-form-item>
  26. </el-col>
  27. <el-col :span="24">
  28. <el-form-item :label="$t('page.business.study.study.leader')+':'" prop="leader">
  29. <SelectDeptUser @change="changeLeader" v-model="infoDialog.formData.leaderObj" />
  30. </el-form-item>
  31. </el-col>
  32. <el-col :span="24">
  33. <el-form-item :label="$t('page.business.study.study.remark')+':'" prop="remark">
  34. <el-input type="textarea" :rows="5" :placeholder="$t('form.placeholderInput')" v-model="infoDialog.formData.remark" maxlength="500" show-word-limit> </el-input>
  35. </el-form-item>
  36. </el-col>
  37. </el-row>
  38. </el-form>
  39. </div>
  40. </div>
  41. </template>
  42. <script>
  43. import { study_info,study_save} from "@/api/business/study/study";
  44. import SelectDeptUser from '../../comps/select/SelectDeptUser.vue';
  45. const EmptyDialogData = {
  46. id:'',
  47. name:'',
  48. sn:'',
  49. leader:'',
  50. reamrk:'',
  51. leaderObj:{
  52. id:'',name:''
  53. }
  54. }
  55. export default {
  56. name: "StudyEdit",
  57. props:{
  58. },
  59. components:{
  60. SelectDeptUser
  61. },
  62. computed: {
  63. },
  64. filters:{
  65. },
  66. data() {
  67. return {
  68. infoDialog:{
  69. visible:false,
  70. formData:{},
  71. rules:{
  72. name: [
  73. { required: true, message: this.$t('page.business.study.study.inputName'), trigger: "blur" }
  74. ],
  75. sn: [
  76. { required: true, message: this.$t('page.business.study.study.inputSn'), trigger: "blur" }
  77. ],
  78. leader: [
  79. { required: true, message: this.$t('page.business.study.study.inputLeader'), trigger: "change" }
  80. ],
  81. }
  82. },
  83. };
  84. },
  85. created() {
  86. },
  87. methods: {
  88. changeLeader(val){
  89. this.infoDialog.formData.leader = val.id
  90. this.infoDialog.formData.leaderName = val.name
  91. this.$refs.infoDialogForm.clearValidate('leader')
  92. },
  93. edit(row) {
  94. this.$refs['infoDialogForm'] && this.$refs['infoDialogForm'].resetFields()
  95. this.infoDialog.formData = _.merge({}, EmptyDialogData)
  96. if(row && row.id){
  97. this.$modal.loading()
  98. study_info({id:row.id}).then(({data}) => {
  99. this.infoDialog.formData = data
  100. this.infoDialog.formData.leaderObj = {
  101. id:data.leader,
  102. name:data.leaderName
  103. }
  104. }).finally(() => {
  105. this.$modal.closeLoading()
  106. })
  107. }else{
  108. }
  109. },
  110. cancel(){
  111. this.$emit('cancel')
  112. },
  113. save(status) {
  114. this.$refs['infoDialogForm'].validate(valid => {
  115. if (valid) {
  116. this.$modal.loading()
  117. this.infoDialog.formData.status = status
  118. study_save(this.infoDialog.formData).then(() => {
  119. this.$emit('save')
  120. }).finally(() => {
  121. this.$modal.closeLoading()
  122. })
  123. }
  124. })
  125. },
  126. }
  127. };
  128. </script>
  129. <style lang="scss">
  130. .content-edit{
  131. background: #f5f5f5;
  132. padding: 0;
  133. .edit-top{
  134. background: #fff;
  135. padding: 10px 20px;
  136. margin-bottom: 10px;
  137. display: flex;
  138. flex-direction: row;
  139. align-items: center;
  140. justify-content: space-between;
  141. .left-top{
  142. flex-shrink: 0;
  143. display: flex;
  144. flex-direction: row;
  145. align-items: center;
  146. img{
  147. height: 16px;
  148. margin-right: 20px;
  149. cursor: pointer;
  150. }
  151. .right-top{
  152. }
  153. }
  154. }
  155. .edit-content{
  156. background: #fff;
  157. padding: 20px;
  158. min-height: 500px;
  159. .edit-form{
  160. width: 800px;
  161. margin: 0 auto;
  162. }
  163. }
  164. }
  165. </style>