edit.vue 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <template>
  2. <a-modal
  3. :width="1200"
  4. v-model:visible="visible"
  5. :title="title"
  6. :confirm-loading="confirmLoading"
  7. @ok="handleOk"
  8. ok-text="提交"
  9. @cancel="handleCancel"
  10. cancel-text="取消"
  11. :keyboard="false"
  12. :mask-closable="false" >
  13. <a-form autocomplete="off" >
  14. <a-divider orientation="left">基础信息管理</a-divider>
  15. <a-row type="flex">
  16. <a-col :span="7">
  17. <a-form-item label="姓名" name="UserName" :label-col="{span:7}" :rules="[{ required: true, message: '请选择站点人员!' }]">
  18. <label v-if="opCategory==3">{{dataModel.userName}}</label>
  19. <a-select ref="select" v-model:value="dataModel.siteUserID" :options="siteUserList"
  20. :field-names="{ label: 'text', value: 'value' }" :allow-clear="true" > </a-select>
  21. <!-- <a-input v-model:value="dataModel.userName" placeholder=""/>-->
  22. </a-form-item>
  23. </a-col>
  24. <a-col :span="7">
  25. <a-form-item label="日志类型" name="LogTypeName" :label-col="{span:7}" :rules="[{ required: true, message: '请选择日志类型!' }]">
  26. <label v-if="opCategory==3">{{dataModel.logTypeName }}</label>
  27. <a-select ref="select" v-model:value="dataModel.doTypeID" :options="logTypeList"
  28. :field-names="{ label: 'name', value: 'value' }" :allow-clear="false" > </a-select>
  29. <!-- <a-input v-model:value="dataModel.logTypeName" placeholder=""/>-->
  30. </a-form-item>
  31. </a-col>
  32. <a-col :span="10">
  33. <a-form-item label="完成时间" name="WorkTime" :label-col="{span:10}" :rules="[{ required: true, message: '请选择完成时间!' }]">
  34. <label v-if="opCategory==3">{{dataModel.workTime}}</label>
  35. <a-date-picker v-model:value="dataModel.workTime" picker="date" value-format="YYYY-MM-DD" />
  36. </a-form-item>
  37. </a-col>
  38. </a-row>
  39. <a-row type="flex">
  40. <a-col :span="7">
  41. <a-form-item label="所属县区" name="RegionCode" :label-col="{span:7}" :rules="[{ required: true, message: '请选择所属县区!' }]">
  42. <label v-if="opCategory==3">{{dataModel.regionCode}}</label>
  43. <a-select ref="select" v-model:value="dataModel.regionCode" :options="regionList"
  44. :field-names="{ label: 'name', value: 'code' }" :allow-clear="true" @change="getStreetList()" ></a-select>
  45. </a-form-item>
  46. </a-col>
  47. <a-col :span="7">
  48. <a-form-item label="所属街道" name="StreetCode" :label-col="{span:7}" :rules="[{ required: true, message: '请选择所属街道!' }]">
  49. <label v-if="opCategory==3">{{dataModel.streetCode }}</label>
  50. <a-select ref="select" v-model:value="dataModel.streetCode" :options="streetList"
  51. :field-names="{ label: 'name', value: 'code' }" :allow-clear="true" > </a-select>
  52. </a-form-item>
  53. </a-col>
  54. <a-col :span="10">
  55. </a-col>
  56. </a-row>
  57. <a-row>
  58. <a-textarea :auto-size="{ minRows: 4, maxRows: 10 }" v-model:value="dataModel.workContent" :disabled="opCategory==3"
  59. placeholder="完成情况" style="text-align: center;" />
  60. </a-row>
  61. <a-divider orientation="left">其他</a-divider>
  62. <b-upload-file :fileRefId="dataModel.doWorkID" :readonly="false" :multiple="true"
  63. :setFileList="setFileList" :accept="'.pdf,.png,.jpg'" :disabled="opCategory==3"></b-upload-file>
  64. </a-form>
  65. </a-modal>
  66. </template>
  67. <script lang="ts">
  68. import {defineComponent, reactive, ref, toRefs} from "vue";
  69. import {get, save} from "@/api/taskAndLog/dowork";
  70. import BUploadFile from "@/components/file/uploadFile.vue";
  71. import type {SelectProps} from "ant-design-vue";
  72. import {getSysDictionaryList} from "@/api/system/dictionary";
  73. import {getRegionCodeList, getStreetCodeList} from "@/api/system/area/index";
  74. import {getSiteUserDataList} from "@/api/baseSettings/userInfo";
  75. interface InstitutionModel {
  76. dataModel: any;
  77. }
  78. export default defineComponent({
  79. name:'DoWorkEditForm',
  80. components: {BUploadFile},
  81. props: {
  82. loadData: {
  83. type: Function,
  84. default: null
  85. }
  86. },
  87. setup(props) {
  88. const formData = reactive<InstitutionModel>({ dataModel:{}});
  89. const visible = ref<boolean>(false);
  90. const confirmLoading = ref<boolean>(false);
  91. const title = ref();
  92. const opCategory = ref<any>();
  93. const formState = reactive({
  94. total: 0,
  95. selectedRowKeys: [],
  96. loading: false
  97. });
  98. const regionList = ref<SelectProps['options']>();
  99. const streetList = ref<SelectProps['options']>();
  100. const logTypeList = ref<SelectProps["options"]>();
  101. const siteUserList = ref<SelectProps["options"]>();
  102. const fileList = ref();
  103. const setFileList = (files) => {
  104. fileList.value = files;
  105. };
  106. const getRegionList = async function(){
  107. const regionResult: any = await getRegionCodeList();
  108. regionList.value = regionResult;
  109. }
  110. const getStreetList = async function(){
  111. const streetResult: any = await getStreetCodeList(formData.dataModel.regionCode);
  112. streetList.value = streetResult;
  113. }
  114. const getSiteUserList = async function(){
  115. const siteUserResult :any = await getSiteUserDataList();
  116. console.log('siteUserResult',siteUserResult);
  117. siteUserList.value = siteUserResult;
  118. }
  119. const getLogTypeList = async function(){
  120. const logTypeResult :any = await getSysDictionaryList("LogType");
  121. logTypeList.value = logTypeResult;
  122. }
  123. const loadData = (doWorkID: string) => {
  124. get(doWorkID).then((result: any) => {
  125. formData.dataModel = result;
  126. console.log(formData.dataModel);
  127. if (formData.dataModel.regionCode != null){
  128. getStreetList();
  129. }
  130. });
  131. }
  132. const show = (id: any,method:string,category:any) => {
  133. loadData(id);
  134. title.value ="工作日志管理-"+method;
  135. opCategory.value = category;
  136. getRegionList();
  137. getLogTypeList();
  138. getSiteUserList();
  139. visible.value = true;
  140. };
  141. const onSelectChange = (selectedRowKeys: any) => {
  142. formState.selectedRowKeys = selectedRowKeys;
  143. };
  144. const handleOk = () => {
  145. save(formData.dataModel).then(result => {
  146. if (result) {
  147. visible.value = false;
  148. props.loadData();
  149. }
  150. });
  151. };
  152. const handleCancel = () => {
  153. visible.value = false;
  154. };
  155. return {
  156. ...toRefs(formData),
  157. formState,
  158. opCategory,
  159. visible,
  160. title,
  161. confirmLoading,
  162. logTypeList,
  163. siteUserList,
  164. regionList,
  165. streetList,
  166. show,
  167. getRegionList,
  168. getStreetList,
  169. setFileList,
  170. onSelectChange,
  171. handleOk,
  172. handleCancel
  173. };
  174. },
  175. created() {
  176. },
  177. })
  178. </script>