index.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <template>
  2. <zj-page-container v-if="orderInfo">
  3. <zj-page-fill class="neibuview">
  4. <zj-form-container
  5. ref="formRef"
  6. :form-data="orderInfo"
  7. :form-rules="formRules"
  8. :form-attributes="{ size: 'mini' }"
  9. >
  10. <!-- 派工信息 创建不需要 -->
  11. <zj-form-module v-if="id" title="派工信息" label-width="90px" :form-data="orderInfo" :form-items="dispatchInfo">
  12. <div slot="internal-bottom" style="text-align: right">
  13. <copy-info text="复制工单信息" :info="dispatchInfo" :order-info="orderInfo" />
  14. </div>
  15. <div slot="right" style="width: 55%; position: relative">
  16. <div class="pgxxTable">
  17. <zj-table
  18. :columns="logColumns"
  19. :table-data="logList"
  20. :table-attributes="{ height: '100%', border: true }"
  21. />
  22. </div>
  23. </div>
  24. </zj-form-module>
  25. <!-- 基本信息 -->
  26. <zj-form-module title="基本信息" :form-data="orderInfo" :form-items="basicInfo" />
  27. <!-- 服务信息 -->
  28. <zj-form-module title="服务信息" label-width="130px" :form-data="orderInfo" :form-items="serviceInfo" />
  29. <!-- 产品信息 -->
  30. <zj-form-module
  31. title="产品信息"
  32. :form-data="orderInfo"
  33. :form-items="workOrderType == 4 ? product_wb : product"
  34. />
  35. <!-- 其它信息 -->
  36. <!-- <zj-form-module title="其它信息" :form-data="orderInfo" :form-items="otherInfo" /> -->
  37. <!-- 派单信息 -->
  38. <zj-form-module title="派单信息" label-width="100px" :form-data="orderInfo" :form-items="pandanxinxi" />
  39. </zj-form-container>
  40. </zj-page-fill>
  41. <!-- 操作按钮 -->
  42. <div>
  43. <div style="box-sizing: border-box; padding: 10px 10px 0" v-if="id">
  44. <!-- 关闭 -->
  45. <close-button />
  46. <!-- 1,保存 -->
  47. <commitSave v-if="~btnRestrict.indexOf(1)" :orderInfo="orderInfo" :orderType="orderType" />
  48. <!-- 2,过程反馈 -->
  49. <processFeedback
  50. v-if="~btnRestrict.indexOf(2)"
  51. resultCodeName="过程反馈"
  52. :orderInfo="orderInfo"
  53. :orderType="orderType"
  54. />
  55. <!-- 3,设为异常 -->
  56. <abnormal v-if="~btnRestrict.indexOf(3)" :orderInfo="orderInfo" :orderType="orderType" />
  57. <!-- 4,加急 -->
  58. <urgent v-if="~btnRestrict.indexOf(4)" :orderInfo="orderInfo" :orderType="orderType" />
  59. <!-- 5,不加急 -->
  60. <unurgent v-if="~btnRestrict.indexOf(5)" :orderInfo="orderInfo" :orderType="orderType" />
  61. <!-- 6,取消工单 -->
  62. <cancelOrder v-if="~btnRestrict.indexOf(6)" :orderInfo="orderInfo" :orderType="orderType" />
  63. <!-- 7,回访 -->
  64. <processFeedback
  65. v-if="~btnRestrict.indexOf(7)"
  66. resultCodeName="回访"
  67. resultCode="回访"
  68. :orderInfo="orderInfo"
  69. :orderType="orderType"
  70. />
  71. <!-- 8,新建工单 -->
  72. <!-- 9,工单驳回 -->
  73. <orderReject v-if="~btnRestrict.indexOf(9)" :orderInfo="orderInfo" :orderType="orderType" />
  74. <!-- 10,激活工单 -->
  75. <activateOrder v-if="~btnRestrict.indexOf(10)" :orderInfo="orderInfo" :orderType="orderType" />
  76. <cloneWorkOrderBtn v-if="~btnRestrict.indexOf(20)" :orderInfo="orderInfo" :orderType="orderType" />
  77. </div>
  78. <div style="box-sizing: border-box; padding: 10px 10px 0" v-else>
  79. <!-- 关闭 -->
  80. <close-button />
  81. <!-- 1,下派服务单 -->
  82. <commitSave :orderInfo="orderInfo" :orderType="orderType" />
  83. </div>
  84. </div>
  85. </zj-page-container>
  86. </template>
  87. <script>
  88. import workOrderLogic from './mixins/workOrderLogic.js'
  89. import basicInfo from './mixins/basicInfo.js'
  90. import dispatchInfo from './mixins/dispatchInfo.js'
  91. import otherInfo from './mixins/otherInfo.js'
  92. import productColumns from './mixins/productColumns.js'
  93. import wb_productColumns from './mixins/wb_productColumns.js'
  94. import serviceInfo from './mixins/serviceInfo.js'
  95. import pandanxinxi from './mixins/pandanxinxi.js'
  96. import copyInfo from './buttons/copyInfo.vue'
  97. import closeButton from './buttons/closeButton.vue'
  98. import commitSave from './buttons/commitSave.vue'
  99. import urgent from './buttons/urgent.vue'
  100. import unurgent from './buttons/unurgent.vue'
  101. import abnormal from './buttons/abnormal.vue'
  102. import cloneWorkOrderBtn from './buttons/cloneWorkOrder.vue'
  103. import processFeedback from './buttons/processFeedback.vue'
  104. import cancelOrder from './buttons/cancelOrder.vue'
  105. import orderReject from './buttons/orderReject.vue'
  106. import activateOrder from './buttons/activateOrder.vue'
  107. export default {
  108. components: {
  109. copyInfo,
  110. closeButton,
  111. commitSave,
  112. urgent,
  113. unurgent,
  114. abnormal,
  115. processFeedback,
  116. cancelOrder,
  117. orderReject,
  118. activateOrder,
  119. cloneWorkOrderBtn
  120. },
  121. mixins: [
  122. workOrderLogic,
  123. basicInfo,
  124. dispatchInfo,
  125. otherInfo,
  126. productColumns,
  127. wb_productColumns,
  128. serviceInfo,
  129. pandanxinxi
  130. ],
  131. methods: {
  132. allVerify(cb) {
  133. this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
  134. cb && cb(valid, invalidFields, errLabels)
  135. })
  136. },
  137. appointVerify(arr, cb) {
  138. this.$refs.formRef.validateField(arr, (valid, invalidFields, errLabels) => {
  139. cb && cb(valid, invalidFields, errLabels)
  140. })
  141. }
  142. }
  143. }
  144. </script>
  145. <style lang="scss" scoped>
  146. .neibuview {
  147. box-sizing: border-box;
  148. padding-left: 16px;
  149. ::v-deep & > .zj-page-fill-scroll {
  150. box-sizing: border-box;
  151. padding-right: 16px;
  152. & > div:nth-child(1) {
  153. margin-top: 20px;
  154. }
  155. }
  156. }
  157. .pgxxTable {
  158. position: absolute;
  159. top: 0;
  160. bottom: 0;
  161. left: 0;
  162. right: 0;
  163. }
  164. .withinLine {
  165. display: inline-block;
  166. ::v-deep .el-button {
  167. margin-left: 0;
  168. margin-right: 10px;
  169. margin-bottom: 10px;
  170. }
  171. }
  172. .redbordererr {
  173. ::v-deep .el-form-item {
  174. margin: 0 !important;
  175. overflow: hidden;
  176. }
  177. }
  178. </style>