华西海圻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.

161 lines
4.7 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.leader" :name="infoDialog.formData.leaderName" />
  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. leaderName:'',
  51. reamrk:'',
  52. }
  53. export default {
  54. name: "StudyEdit",
  55. props:{
  56. },
  57. components:{
  58. SelectDeptUser
  59. },
  60. computed: {
  61. },
  62. filters:{
  63. },
  64. data() {
  65. return {
  66. infoDialog:{
  67. visible:false,
  68. formData:{},
  69. rules:{
  70. name: [
  71. { required: true, message: this.$t('page.business.study.study.inputName'), trigger: "blur" }
  72. ],
  73. sn: [
  74. { required: true, message: this.$t('page.business.study.study.inputSn'), trigger: "blur" }
  75. ],
  76. leader: [
  77. { required: true, message: this.$t('page.business.study.study.inputLeader'), trigger: "change" }
  78. ],
  79. }
  80. },
  81. };
  82. },
  83. created() {
  84. },
  85. methods: {
  86. changeLeader(val){
  87. this.infoDialog.formData.leader = val.id
  88. this.infoDialog.formData.leaderName = val.name
  89. this.$refs.infoDialogForm.clearValidate('leader')
  90. },
  91. edit(row) {
  92. this.$refs['infoDialogForm'] && this.$refs['infoDialogForm'].resetFields()
  93. this.infoDialog.formData = _.merge({}, EmptyDialogData)
  94. if(row && row.id){
  95. this.$modal.loading()
  96. study_info({id:row.id}).then(({data}) => {
  97. this.infoDialog.formData = data
  98. }).finally(() => {
  99. this.$modal.closeLoading()
  100. })
  101. }else{
  102. }
  103. },
  104. cancel(){
  105. this.$emit('cancel')
  106. },
  107. save(status) {
  108. this.$refs['infoDialogForm'].validate(valid => {
  109. if (valid) {
  110. this.$modal.loading()
  111. this.infoDialog.formData.status = status
  112. study_save(this.infoDialog.formData).then(() => {
  113. this.$emit('save')
  114. }).finally(() => {
  115. this.$modal.closeLoading()
  116. })
  117. }
  118. })
  119. },
  120. }
  121. };
  122. </script>
  123. <style lang="scss">
  124. .content-edit{
  125. background: #f5f5f5;
  126. padding: 0;
  127. .edit-top{
  128. background: #fff;
  129. padding: 10px 20px;
  130. margin-bottom: 10px;
  131. display: flex;
  132. flex-direction: row;
  133. align-items: center;
  134. justify-content: space-between;
  135. .left-top{
  136. flex-shrink: 0;
  137. display: flex;
  138. flex-direction: row;
  139. align-items: center;
  140. img{
  141. height: 16px;
  142. margin-right: 20px;
  143. cursor: pointer;
  144. }
  145. .right-top{
  146. }
  147. }
  148. }
  149. .edit-content{
  150. background: #fff;
  151. padding: 20px;
  152. min-height: 500px;
  153. .edit-form{
  154. width: 800px;
  155. margin: 0 auto;
  156. }
  157. }
  158. }
  159. </style>