taskListDetail.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <template>
  2. <div>
  3. <el-button size="mini" type="text" @click="detailBtn">详 情</el-button>
  4. <el-drawer append-to-body :show-close="false" :visible.sync="dialogFormVisible" size="40%">
  5. <div slot="title" style="font-size: 15px">
  6. 工序节点详情
  7. </div>
  8. <div class="drawer__panel" v-if="detailData">
  9. <el-descriptions v-if="detailData" :column="1">
  10. <el-descriptions-item label="工序内容"><span>{{ detailData.workpresetjson.workname }}</span></el-descriptions-item>
  11. <el-descriptions-item label="操作说明">{{ detailData.workpresetjson.remarks }}</el-descriptions-item>
  12. <el-descriptions-item label="操作人员">{{ detailData.changeby }}</el-descriptions-item>
  13. <el-descriptions-item label="状态">
  14. <el-tag size="mini" v-if="detailData.status == 0">待开始</el-tag>
  15. <el-tag size="mini" type="danger" v-else-if="detailData.status == 1">已完成</el-tag>
  16. <el-tag size="mini" type="warning" v-else>进行中</el-tag>
  17. </el-descriptions-item>
  18. <el-descriptions-item label="是否完成" v-if="detailData.workpresetjson.confirm">
  19. <el-radio-group :disabled="true" v-model="detailData.confirm_value">
  20. <el-radio label="是">是</el-radio>
  21. <el-radio label="否">否</el-radio>
  22. </el-radio-group>
  23. </el-descriptions-item>
  24. <el-descriptions-item label="备注">{{ detailData.remarks }}</el-descriptions-item>
  25. <el-descriptions-item label="文本信息" v-if="detailData.workpresetjson.textedit">{{ detailData.textcontent }}</el-descriptions-item>
  26. <el-descriptions-item label="附件" v-if="detailData.workpresetjson.fileupload"></el-descriptions-item>
  27. </el-descriptions>
  28. <file-item
  29. v-if="detailData.workpresetjson.fileupload"
  30. :isDownLoad="true"
  31. :fileData="detailData.attinfos">
  32. </file-item>
  33. <contentTable v-if="detailData" :data="detailData.workpresetjson">
  34. <tableLayout slot="培训人员" :layout="peopleTable" :data="detailData.trainers" :opwidth="200" :custom="true" :width="false">
  35. <template v-slot:customcol="scope">
  36. <p>{{scope.column.data[scope.column.columnname]}}</p>
  37. </template>
  38. </tableLayout>
  39. <tableLayout slot="培训商品" :layout="productTable" :data="detailData.titems" :opwidth="200" :custom="true" :width="false">
  40. <template v-slot:customcol="scope">
  41. <p>{{scope.column.data[scope.column.columnname]}}</p>
  42. </template>
  43. </tableLayout>
  44. </contentTable>
  45. </div>
  46. </el-drawer>
  47. </div>
  48. </template>
  49. <script>
  50. import contentTable from './contentTable'
  51. import fileItem from '@/SManagement/orderclue/components/file/index2'
  52. export default {
  53. name: "",
  54. props:['data'],
  55. components:{contentTable,fileItem},
  56. data(){
  57. return {
  58. dialogFormVisible:false,
  59. detailData:'',
  60. peopleTable:[],
  61. productTable:[]
  62. }
  63. },
  64. methods:{
  65. async detailBtn () {
  66. let res = await this.$api.requested({
  67. "id": "20230209091103",
  68. "version":1,
  69. "content": {
  70. "sa_workorderid":this.data.sa_workorderid,
  71. "sa_workorder_nodeid":this.data.sa_workorder_nodeid
  72. }
  73. })
  74. res.data[0].attinfos = this.fileType.fileList(this.data.attinfos)
  75. this.detailData = res.data[0]
  76. console.log(this.detailData);
  77. this.dialogFormVisible = true
  78. },
  79. onSubmit(){
  80. console.log(this.form)
  81. this.$refs['form'].validate(async (valid) => {
  82. if (!valid) return false
  83. const res = await this.$api.requested({
  84. "id": "20230208140003",
  85. "version":1,
  86. "content": this.form
  87. })
  88. this.tool.showMessage(res,()=>{
  89. this.$emit('onSuccess')
  90. this.$refs['form'].resetFields();
  91. this.dialogFormVisible = false
  92. })
  93. })
  94. },
  95. },
  96. created () {
  97. this.peopleTable = this.tool.tabelCol(this.$route.name).peopleTable.tablecols
  98. this.productTable = this.tool.tabelCol(this.$route.name).productTable.tablecols
  99. }
  100. }
  101. </script>
  102. <style scoped>
  103. .dialog-footer {
  104. margin-top: 0;
  105. }
  106. .el-select,.el-input,.el-cascader {
  107. width: 100% !important;
  108. }
  109. </style>